From cc51d012de1dc888397584f0b45055c42ce5c258 Mon Sep 17 00:00:00 2001 From: wwarthen Date: Mon, 23 Mar 2015 01:50:45 +0000 Subject: [PATCH] Reintegrate wbw -> trunk --- BuildCommon.cmd | 4 +- BuildImages.cmd | 4 + Doc/ChangeLog.txt | 3 + Images/Blank.tmp | 1 + Images/Build.cmd | 15 + Images/BuildFD.cmd | 1 + Images/BuildFD.ps1 | 33 + Images/BuildHD.cmd | 1 + Images/BuildHD.ps1 | 39 + Images/Clean.cmd | 2 + Images/FixPowerShell.cmd | 29 + Images/ReadMe.txt | 246 + Images/Source/fd0/u0/ASM.COM | Bin 0 -> 8192 bytes Images/Source/fd0/u0/CLRDIR.COM | Bin 0 -> 1619 bytes Images/Source/fd0/u0/CR.COM | Bin 0 -> 6144 bytes Images/Source/fd0/u0/DDT.COM | Bin 0 -> 4864 bytes Images/Source/fd0/u0/DDTZ.COM | Bin 0 -> 7424 bytes Images/Source/fd0/u0/DDTZ.DOC | 564 +++ Images/Source/fd0/u0/DIF.COM | Bin 0 -> 2944 bytes Images/Source/fd0/u0/DIRX.COM | Bin 0 -> 3072 bytes Images/Source/fd0/u0/DUMP.COM | Bin 0 -> 512 bytes Images/Source/fd0/u0/ED.COM | Bin 0 -> 6656 bytes Images/Source/fd0/u0/LBREXT.COM | Bin 0 -> 8576 bytes Images/Source/fd0/u0/LIB.COM | Bin 0 -> 7168 bytes Images/Source/fd0/u0/LINK.COM | Bin 0 -> 15744 bytes Images/Source/fd0/u0/LOAD.COM | Bin 0 -> 1792 bytes Images/Source/fd0/u0/MAC.COM | Bin 0 -> 11776 bytes Images/Source/fd0/u0/MBASIC.COM | Bin 0 -> 24320 bytes Images/Source/fd0/u0/NULU.COM | Bin 0 -> 15616 bytes Images/Source/fd0/u0/PIP.COM | Bin 0 -> 7424 bytes Images/Source/fd0/u0/RMAC.COM | Bin 0 -> 13568 bytes Images/Source/fd0/u0/SID.COM | Bin 0 -> 7936 bytes Images/Source/fd0/u0/STAT.COM | Bin 0 -> 5248 bytes Images/Source/fd0/u0/SUBMIT.COM | Bin 0 -> 1280 bytes Images/Source/fd0/u0/SUPERSUB.COM | Bin 0 -> 2176 bytes Images/Source/fd0/u0/UNARC.COM | Bin 0 -> 4736 bytes Images/Source/fd0/u0/UNCR.COM | Bin 0 -> 8576 bytes Images/Source/fd0/u0/UNZIP.COM | Bin 0 -> 3328 bytes Images/Source/fd0/u0/VIDATT.Z80 | 69 + Images/Source/fd0/u0/WS.COM | Bin 0 -> 7168 bytes Images/Source/fd0/u0/WS.OVR | Bin 0 -> 53248 bytes Images/Source/fd0/u0/WSCHANGE.COM | Bin 0 -> 35328 bytes Images/Source/fd0/u0/WSCHANGE.OVR | Bin 0 -> 22528 bytes Images/Source/fd0/u0/WSCHHELP.OVR | Bin 0 -> 29696 bytes Images/Source/fd0/u0/WSHELP.OVR | Bin 0 -> 25856 bytes Images/Source/fd0/u0/WSMSGS.OVR | Bin 0 -> 13824 bytes Images/Source/fd0/u0/WSPRINT.OVR | Bin 0 -> 150528 bytes Images/Source/fd0/u0/WSREADME.TXT | 880 ++++ Images/Source/fd0/u0/WSSHORT.OVR | Bin 0 -> 512 bytes Images/Source/fd0/u0/WSU.COM | Bin 0 -> 7168 bytes Images/Source/fd0/u0/XSUB.COM | Bin 0 -> 768 bytes Images/Source/fd0/u0/ZAP.COM | Bin 0 -> 9856 bytes Images/Source/fd0/u0/ZDE.COM | Bin 0 -> 16896 bytes Images/Source/fd0/u0/ZDE40.COM | Bin 0 -> 16896 bytes Images/Source/fd0/u0/ZDENST.COM | Bin 0 -> 10624 bytes Images/Source/fd1/u0/ASM.COM | Bin 0 -> 8192 bytes Images/Source/fd1/u0/CLOCKS.DAT | Bin 0 -> 26240 bytes Images/Source/fd1/u0/CLRDIR.COM | Bin 0 -> 1619 bytes Images/Source/fd1/u0/COPY.CFG | Bin 0 -> 3456 bytes Images/Source/fd1/u0/COPY.COM | Bin 0 -> 6912 bytes Images/Source/fd1/u0/COPY.UPD | 43 + Images/Source/fd1/u0/CR.COM | Bin 0 -> 6144 bytes Images/Source/fd1/u0/DATSWEEP.COM | Bin 0 -> 34816 bytes Images/Source/fd1/u0/DDT.COM | Bin 0 -> 4864 bytes Images/Source/fd1/u0/DDTZ.COM | Bin 0 -> 7424 bytes Images/Source/fd1/u0/DDTZ.DOC | 564 +++ Images/Source/fd1/u0/DIF.COM | Bin 0 -> 2944 bytes Images/Source/fd1/u0/DSCONFIG.COM | Bin 0 -> 16384 bytes Images/Source/fd1/u0/DUMP.COM | Bin 0 -> 512 bytes Images/Source/fd1/u0/ED.COM | Bin 0 -> 6656 bytes Images/Source/fd1/u0/FA16.CFG | Bin 0 -> 3072 bytes Images/Source/fd1/u0/FA16.DOC | 264 ++ Images/Source/fd1/u0/FA16A.FOR | 6 + Images/Source/fd1/u0/FA16CFG.TXT | 39 + Images/Source/fd1/u0/FILEATTR.COM | Bin 0 -> 4096 bytes Images/Source/fd1/u0/FILEDATE.CFG | Bin 0 -> 4992 bytes Images/Source/fd1/u0/FILEDATE.COM | Bin 0 -> 4352 bytes Images/Source/fd1/u0/INITDIR.CFG | Bin 0 -> 384 bytes Images/Source/fd1/u0/INITDIR.COM | Bin 0 -> 2048 bytes Images/Source/fd1/u0/LBREXT.COM | Bin 0 -> 8576 bytes Images/Source/fd1/u0/LDDS.COM | Bin 0 -> 3328 bytes Images/Source/fd1/u0/LDP2D.COM | Bin 0 -> 3456 bytes Images/Source/fd1/u0/LIB.COM | Bin 0 -> 7168 bytes Images/Source/fd1/u0/LINK.COM | Bin 0 -> 15744 bytes Images/Source/fd1/u0/LOAD.COM | Bin 0 -> 1792 bytes Images/Source/fd1/u0/MAC.COM | Bin 0 -> 11776 bytes Images/Source/fd1/u0/MBASIC.COM | Bin 0 -> 24320 bytes Images/Source/fd1/u0/NULU.COM | Bin 0 -> 15616 bytes Images/Source/fd1/u0/PIP.COM | Bin 0 -> 7424 bytes Images/Source/fd1/u0/PUTBG.COM | Bin 0 -> 18432 bytes Images/Source/fd1/u0/PUTDS.COM | Bin 0 -> 13056 bytes Images/Source/fd1/u0/RELOG.COM | Bin 0 -> 256 bytes Images/Source/fd1/u0/RMAC.COM | Bin 0 -> 13568 bytes Images/Source/fd1/u0/SETTERM.COM | Bin 0 -> 19840 bytes Images/Source/fd1/u0/SETUPZST.COM | Bin 0 -> 7936 bytes Images/Source/fd1/u0/SID.COM | Bin 0 -> 7936 bytes Images/Source/fd1/u0/STAMPS.DAT | Bin 0 -> 11392 bytes Images/Source/fd1/u0/STAT.COM | Bin 0 -> 5248 bytes Images/Source/fd1/u0/SUBMIT.COM | Bin 0 -> 1280 bytes Images/Source/fd1/u0/SUPERSUB.COM | Bin 0 -> 2176 bytes Images/Source/fd1/u0/TD.CFG | Bin 0 -> 384 bytes Images/Source/fd1/u0/TD.COM | Bin 0 -> 2048 bytes Images/Source/fd1/u0/TERMBASE.DAT | Bin 0 -> 6400 bytes Images/Source/fd1/u0/TESTCLOK.COM | Bin 0 -> 6400 bytes Images/Source/fd1/u0/UNARC.COM | Bin 0 -> 4736 bytes Images/Source/fd1/u0/UNCR.COM | Bin 0 -> 8576 bytes Images/Source/fd1/u0/UNZIP.COM | Bin 0 -> 3328 bytes Images/Source/fd1/u0/XSUB.COM | Bin 0 -> 768 bytes Images/Source/fd1/u0/ZAP.COM | Bin 0 -> 9856 bytes Images/Source/fd1/u0/ZCAL.COM | Bin 0 -> 1280 bytes Images/Source/fd1/u0/ZCNFG.COM | Bin 0 -> 8064 bytes Images/Source/fd1/u0/ZCNFG24.CFG | Bin 0 -> 4608 bytes Images/Source/fd1/u0/ZDE.COM | Bin 0 -> 16896 bytes Images/Source/fd1/u0/ZDE40.COM | Bin 0 -> 16896 bytes Images/Source/fd1/u0/ZDENST.COM | Bin 0 -> 10624 bytes Images/Source/fd1/u0/ZPATH.COM | Bin 0 -> 2176 bytes Images/Source/fd1/u0/ZSCONFIG.COM | Bin 0 -> 5888 bytes Images/Source/fd1/u0/ZSVSTAMP.COM | Bin 0 -> 1792 bytes Images/Source/fd1/u0/ZSVSTAMP.DOC | 118 + Images/Source/fd1/u0/ZXD.CFG | Bin 0 -> 2048 bytes Images/Source/fd1/u0/ZXD.COM | Bin 0 -> 6784 bytes Images/Source/hd0/s0/u0/ASM.COM | Bin 0 -> 8192 bytes Images/Source/hd0/s0/u0/CLRDIR.COM | Bin 0 -> 1619 bytes Images/Source/hd0/s0/u0/CR.COM | Bin 0 -> 6144 bytes Images/Source/hd0/s0/u0/DDT.COM | Bin 0 -> 4864 bytes Images/Source/hd0/s0/u0/DDTZ.COM | Bin 0 -> 7424 bytes Images/Source/hd0/s0/u0/DDTZ.DOC | 564 +++ Images/Source/hd0/s0/u0/DIF.COM | Bin 0 -> 2944 bytes Images/Source/hd0/s0/u0/DIRX.COM | Bin 0 -> 3072 bytes Images/Source/hd0/s0/u0/DUMP.COM | Bin 0 -> 512 bytes Images/Source/hd0/s0/u0/ED.COM | Bin 0 -> 6656 bytes Images/Source/hd0/s0/u0/LBREXT.COM | Bin 0 -> 8576 bytes Images/Source/hd0/s0/u0/LIB.COM | Bin 0 -> 7168 bytes Images/Source/hd0/s0/u0/LINK.COM | Bin 0 -> 15744 bytes Images/Source/hd0/s0/u0/LOAD.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s0/u0/MAC.COM | Bin 0 -> 11776 bytes Images/Source/hd0/s0/u0/MBASIC.COM | Bin 0 -> 24320 bytes Images/Source/hd0/s0/u0/NULU.COM | Bin 0 -> 15616 bytes Images/Source/hd0/s0/u0/NZDEC23D.Z3T | Bin 0 -> 128 bytes Images/Source/hd0/s0/u0/PIP.COM | Bin 0 -> 7424 bytes Images/Source/hd0/s0/u0/RMAC.COM | Bin 0 -> 13568 bytes Images/Source/hd0/s0/u0/SID.COM | Bin 0 -> 7936 bytes Images/Source/hd0/s0/u0/STAT.COM | Bin 0 -> 5248 bytes Images/Source/hd0/s0/u0/SUBMIT.COM | Bin 0 -> 1280 bytes Images/Source/hd0/s0/u0/SUPERSUB.COM | Bin 0 -> 2176 bytes Images/Source/hd0/s0/u0/UNARC.COM | Bin 0 -> 4736 bytes Images/Source/hd0/s0/u0/UNCR.COM | Bin 0 -> 8576 bytes Images/Source/hd0/s0/u0/UNZIP.COM | Bin 0 -> 3328 bytes Images/Source/hd0/s0/u0/VIDATT.Z80 | 69 + Images/Source/hd0/s0/u0/VT100TCP.Z3T | Bin 0 -> 128 bytes Images/Source/hd0/s0/u0/WS.COM | Bin 0 -> 7168 bytes Images/Source/hd0/s0/u0/WS.OVR | Bin 0 -> 53248 bytes Images/Source/hd0/s0/u0/WSCHANGE.COM | Bin 0 -> 35328 bytes Images/Source/hd0/s0/u0/WSCHANGE.OVR | Bin 0 -> 22528 bytes Images/Source/hd0/s0/u0/WSCHHELP.OVR | Bin 0 -> 29696 bytes Images/Source/hd0/s0/u0/WSHELP.OVR | Bin 0 -> 25856 bytes Images/Source/hd0/s0/u0/WSMSGS.OVR | Bin 0 -> 13824 bytes Images/Source/hd0/s0/u0/WSPRINT.OVR | Bin 0 -> 150528 bytes Images/Source/hd0/s0/u0/WSREADME.TXT | 880 ++++ Images/Source/hd0/s0/u0/WSSHORT.OVR | Bin 0 -> 512 bytes Images/Source/hd0/s0/u0/WSU.COM | Bin 0 -> 7168 bytes Images/Source/hd0/s0/u0/WW.Z3T | Bin 0 -> 128 bytes Images/Source/hd0/s0/u0/XSUB.COM | Bin 0 -> 768 bytes Images/Source/hd0/s0/u0/Z3TCAP.Z3T | Bin 0 -> 128 bytes Images/Source/hd0/s0/u0/ZAP.COM | Bin 0 -> 9856 bytes Images/Source/hd0/s0/u0/ZDE.COM | Bin 0 -> 16896 bytes Images/Source/hd0/s0/u0/ZDENST.COM | Bin 0 -> 10624 bytes Images/Source/hd0/s0/u0/alien.dat | Bin 0 -> 3328 bytes Images/Source/hd0/s0/u0/bpbuild.com | Bin 0 -> 8960 bytes Images/Source/hd0/s0/u0/bpcnfg.com | Bin 0 -> 14720 bytes Images/Source/hd0/s0/u0/bpdbug.com | Bin 0 -> 7168 bytes Images/Source/hd0/s0/u0/bpformat.com | Bin 0 -> 3968 bytes Images/Source/hd0/s0/u0/bpswap.com | Bin 0 -> 1920 bytes Images/Source/hd0/s0/u0/bpsysgen.com | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u0/confz4.com | Bin 0 -> 1920 bytes Images/Source/hd0/s0/u0/copy.com | Bin 0 -> 6912 bytes Images/Source/hd0/s0/u0/cp.bin | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u0/emulate.com | Bin 0 -> 3456 bytes Images/Source/hd0/s0/u0/fa.com | Bin 0 -> 3712 bytes Images/Source/hd0/s0/u0/hashini.com | Bin 0 -> 2304 bytes Images/Source/hd0/s0/u0/hdiag.com | Bin 0 -> 9344 bytes Images/Source/hd0/s0/u0/help.com | Bin 0 -> 3072 bytes Images/Source/hd0/s0/u0/iniramd.com | Bin 0 -> 3200 bytes Images/Source/hd0/s0/u0/initdir.com | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u0/instal12.com | Bin 0 -> 8960 bytes Images/Source/hd0/s0/u0/iopinit.com | Bin 0 -> 1152 bytes Images/Source/hd0/s0/u0/ldds.com | Bin 0 -> 3200 bytes Images/Source/hd0/s0/u0/ldnzt.com | Bin 0 -> 3200 bytes Images/Source/hd0/s0/u0/ldp2d.com | Bin 0 -> 3200 bytes Images/Source/hd0/s0/u0/ldr.com | Bin 0 -> 2816 bytes Images/Source/hd0/s0/u0/ldsys.com | Bin 0 -> 3072 bytes Images/Source/hd0/s0/u0/nzcpr.zrl | Bin 0 -> 2944 bytes Images/Source/hd0/s0/u0/park.com | Bin 0 -> 1792 bytes Images/Source/hd0/s0/u0/path.com | Bin 0 -> 2176 bytes Images/Source/hd0/s0/u0/putds.com | Bin 0 -> 13056 bytes Images/Source/hd0/s0/u0/setclok.com | Bin 0 -> 5504 bytes Images/Source/hd0/s0/u0/showhd.com | Bin 0 -> 1408 bytes Images/Source/hd0/s0/u0/sizeram.com | Bin 0 -> 1664 bytes Images/Source/hd0/s0/u0/slowdown.com | Bin 0 -> 640 bytes Images/Source/hd0/s0/u0/speedup.com | Bin 0 -> 2432 bytes Images/Source/hd0/s0/u0/spinup.com | Bin 0 -> 1536 bytes Images/Source/hd0/s0/u0/start.com | Bin 0 -> 1024 bytes Images/Source/hd0/s0/u0/start01.com | Bin 0 -> 1024 bytes Images/Source/hd0/s0/u0/sys.fcp | Bin 0 -> 512 bytes Images/Source/hd0/s0/u0/sys.ndr | Bin 0 -> 256 bytes Images/Source/hd0/s0/u0/sys.rcp | Bin 0 -> 1920 bytes Images/Source/hd0/s0/u0/tcselect.com | Bin 0 -> 2816 bytes Images/Source/hd0/s0/u0/tdd.com | Bin 0 -> 4352 bytes Images/Source/hd0/s0/u0/turbo.com | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u0/valias.com | Bin 0 -> 6144 bytes Images/Source/hd0/s0/u0/z34.rel | Bin 0 -> 2816 bytes Images/Source/hd0/s0/u0/z3tcap.tcp | Bin 0 -> 8576 bytes Images/Source/hd0/s0/u0/z41.zrl | Bin 0 -> 6912 bytes Images/Source/hd0/s0/u0/zcnfg.com | Bin 0 -> 8064 bytes Images/Source/hd0/s0/u0/zcpr33.rel | Bin 0 -> 2560 bytes Images/Source/hd0/s0/u0/zs203.zrl | Bin 0 -> 6912 bytes Images/Source/hd0/s0/u0/zscfg2.com | Bin 0 -> 4992 bytes Images/Source/hd0/s0/u0/zsconfig.com | Bin 0 -> 5888 bytes Images/Source/hd0/s0/u0/zsdos.zrl | Bin 0 -> 4224 bytes Images/Source/hd0/s0/u0/zxd.com | Bin 0 -> 6784 bytes Images/Source/hd0/s0/u1/SAMPKEY.DOC | 134 + Images/Source/hd0/s0/u1/SAMPKEY.ZDK | Bin 0 -> 512 bytes Images/Source/hd0/s0/u1/SAMPKEY.ZDT | 11 + Images/Source/hd0/s0/u1/ZDE10.DOC | 1049 +++++ Images/Source/hd0/s0/u1/ZDE10.FOR | 7 + Images/Source/hd0/s0/u1/ZDE10.NEW | 304 ++ Images/Source/hd0/s0/u1/ZDE10.QRF | 55 + Images/Source/hd0/s0/u1/ZDE10.TOC | 67 + Images/Source/hd0/s0/u1/ZDE13.FOR | 8 + Images/Source/hd0/s0/u1/ZDE13.NEW | 241 + Images/Source/hd0/s0/u1/ZDE16.COM | Bin 0 -> 16896 bytes Images/Source/hd0/s0/u1/ZDE16.DIR | 25 + Images/Source/hd0/s0/u1/ZDE16.FIX | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u1/ZDE16.FOR | 8 + Images/Source/hd0/s0/u1/ZDE16.NEW | 498 +++ Images/Source/hd0/s0/u1/ZDENST16.COM | Bin 0 -> 10624 bytes Images/Source/hd0/s0/u1/ZDEPROP.DOC | 139 + Images/Source/hd0/s0/u1/ZDEPROP.Z80 | 119 + Images/Source/hd0/s0/u1/ZDKCOM13.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s0/u1/ZDKCOM13.DOC | 209 + Images/Source/hd0/s0/u10/z40.hlp | 35 + Images/Source/hd0/s0/u10/z40a.hlp | 67 + Images/Source/hd0/s0/u10/z40b.hlp | 21 + Images/Source/hd0/s0/u10/z40c.hlp | 61 + Images/Source/hd0/s0/u10/z40d.hlp | 70 + Images/Source/hd0/s0/u10/z40e.hlp | 53 + Images/Source/hd0/s0/u10/z40f.hlp | 59 + Images/Source/hd0/s0/u10/z40g.hlp | 52 + Images/Source/hd0/s0/u14/bpcnfg.cfg | Bin 0 -> 512 bytes Images/Source/hd0/s0/u14/bpformat.cfg | Bin 0 -> 1024 bytes Images/Source/hd0/s0/u14/copy.cfg | Bin 0 -> 3456 bytes Images/Source/hd0/s0/u14/emulate.cfg | Bin 0 -> 640 bytes Images/Source/hd0/s0/u14/hdiag.cfg | Bin 0 -> 640 bytes Images/Source/hd0/s0/u14/iniramd.cfg | Bin 0 -> 1152 bytes Images/Source/hd0/s0/u14/initdir.cfg | Bin 0 -> 384 bytes Images/Source/hd0/s0/u14/ldsys.cfg | Bin 0 -> 640 bytes Images/Source/hd0/s0/u14/setclok.cfg | Bin 0 -> 384 bytes Images/Source/hd0/s0/u14/tdd.cfg | Bin 0 -> 384 bytes Images/Source/hd0/s0/u14/zxd.cfg | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u15/00-INDEX.TXT | 358 ++ Images/Source/hd0/s0/u15/ALIAS-1.LBR | Bin 0 -> 74752 bytes Images/Source/hd0/s0/u15/ALIAS-2.LBR | Bin 0 -> 21504 bytes Images/Source/hd0/s0/u15/ALIAS.COM | Bin 0 -> 3840 bytes Images/Source/hd0/s0/u15/ALIAS.HLP | 167 + Images/Source/hd0/s0/u15/ALIAS.ZEX | 64 + Images/Source/hd0/s0/u15/ALIAS0.MAC | 432 ++ Images/Source/hd0/s0/u15/ALIAS1.MAC | 514 +++ Images/Source/hd0/s0/u15/CD.COM | Bin 0 -> 896 bytes Images/Source/hd0/s0/u15/CD.MAC | 152 + Images/Source/hd0/s0/u15/CLEAND15.LBR | Bin 0 -> 16896 bytes Images/Source/hd0/s0/u15/CLEANDIR.COM | Bin 0 -> 1920 bytes Images/Source/hd0/s0/u15/CLEANDIR.MAC | 857 ++++ Images/Source/hd0/s0/u15/CLNDR13B.LBR | Bin 0 -> 21376 bytes Images/Source/hd0/s0/u15/CMD.COM | Bin 0 -> 896 bytes Images/Source/hd0/s0/u15/CMD.MAC | 267 ++ Images/Source/hd0/s0/u15/CMDFILES.HLP | 729 +++ Images/Source/hd0/s0/u15/CMDRUN.COM | Bin 0 -> 256 bytes Images/Source/hd0/s0/u15/CMDRUN.MAC | 51 + Images/Source/hd0/s0/u15/COMMENT.COM | Bin 0 -> 640 bytes Images/Source/hd0/s0/u15/COMMENT.MAC | 196 + Images/Source/hd0/s0/u15/COMPARE.HLP | 149 + Images/Source/hd0/s0/u15/CPSEL.COM | Bin 0 -> 1024 bytes Images/Source/hd0/s0/u15/CPSEL.MAC | 365 ++ Images/Source/hd0/s0/u15/CRC.COM | Bin 0 -> 5248 bytes Images/Source/hd0/s0/u15/CRC.MAC | 915 ++++ Images/Source/hd0/s0/u15/DBRCPREL.LBR | Bin 0 -> 18688 bytes Images/Source/hd0/s0/u15/DEBUGRCP.AQM | Bin 0 -> 19584 bytes Images/Source/hd0/s0/u15/DEBUGRCP.ASM | 1587 +++++++ Images/Source/hd0/s0/u15/DEV.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s0/u15/DEV.MAC | 493 ++ Images/Source/hd0/s0/u15/DEV10.LBR | Bin 0 -> 6528 bytes Images/Source/hd0/s0/u15/DEVICE.COM | Bin 0 -> 2176 bytes Images/Source/hd0/s0/u15/DEVICE.MAC | 577 +++ Images/Source/hd0/s0/u15/DEVICE10.LBR | Bin 0 -> 7552 bytes Images/Source/hd0/s0/u15/DIFF.COM | Bin 0 -> 3200 bytes Images/Source/hd0/s0/u15/DIFF.MAC | 725 +++ Images/Source/hd0/s0/u15/DIFF21.LBR | Bin 0 -> 10624 bytes Images/Source/hd0/s0/u15/DIR.COM | Bin 0 -> 2688 bytes Images/Source/hd0/s0/u15/DIR.MAC | 1465 ++++++ Images/Source/hd0/s0/u15/DIR14.LBR | Bin 0 -> 19840 bytes Images/Source/hd0/s0/u15/DIRS.HLP | 603 +++ Images/Source/hd0/s0/u15/DPGFILE.LBR | Bin 0 -> 23168 bytes Images/Source/hd0/s0/u15/DPROG.COM | Bin 0 -> 2944 bytes Images/Source/hd0/s0/u15/DPROG.HLP | 242 + Images/Source/hd0/s0/u15/DPROG.MAC | 1125 +++++ Images/Source/hd0/s0/u15/DPROG12.LBR | Bin 0 -> 13440 bytes Images/Source/hd0/s0/u15/DU3.COM | Bin 0 -> 11520 bytes Images/Source/hd0/s0/u15/DU3.HLP | 1131 +++++ Images/Source/hd0/s0/u15/DU3.MAC | 4446 ++++++++++++++++++ Images/Source/hd0/s0/u15/DU312.LBR | Bin 0 -> 64896 bytes Images/Source/hd0/s0/u15/ECHO.COM | Bin 0 -> 512 bytes Images/Source/hd0/s0/u15/ECHO.MAC | 181 + Images/Source/hd0/s0/u15/ERASE.COM | Bin 0 -> 2560 bytes Images/Source/hd0/s0/u15/ERASE.MAC | 493 ++ Images/Source/hd0/s0/u15/ERROR1.COM | Bin 0 -> 1536 bytes Images/Source/hd0/s0/u15/ERROR1.MAC | 309 ++ Images/Source/hd0/s0/u15/ERROR2.COM | Bin 0 -> 2304 bytes Images/Source/hd0/s0/u15/ERROR2.MAC | 368 ++ Images/Source/hd0/s0/u15/ERROR3.COM | Bin 0 -> 640 bytes Images/Source/hd0/s0/u15/ERROR3.MAC | 154 + Images/Source/hd0/s0/u15/ERROR4.COM | Bin 0 -> 640 bytes Images/Source/hd0/s0/u15/ERROR4.MAC | 179 + Images/Source/hd0/s0/u15/ERRORX.COM | Bin 0 -> 384 bytes Images/Source/hd0/s0/u15/ERRORX.MAC | 69 + Images/Source/hd0/s0/u15/FILES.BBS | 363 ++ Images/Source/hd0/s0/u15/FINDF.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s0/u15/FINDF.MAC | 1050 +++++ Images/Source/hd0/s0/u15/FINDF26.LBR | Bin 0 -> 22400 bytes Images/Source/hd0/s0/u15/FINDF26A.LBR | Bin 0 -> 18176 bytes Images/Source/hd0/s0/u15/GOTO.COM | Bin 0 -> 768 bytes Images/Source/hd0/s0/u15/GOTO.MAC | 204 + Images/Source/hd0/s0/u15/GRDEMO.LBR | Bin 0 -> 52352 bytes Images/Source/hd0/s0/u15/HELP.COM | Bin 0 -> 3072 bytes Images/Source/hd0/s0/u15/HELP.HLP | 21 + Images/Source/hd0/s0/u15/HELP.MAC | 1207 +++++ Images/Source/hd0/s0/u15/HELPCK.COM | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u15/HELPCK.MAC | 520 +++ Images/Source/hd0/s0/u15/HELPPR.COM | Bin 0 -> 4480 bytes Images/Source/hd0/s0/u15/HELPPR.MAC | 1381 ++++++ Images/Source/hd0/s0/u15/HELPSYS.HLP | 793 ++++ Images/Source/hd0/s0/u15/IF.COM | Bin 0 -> 2304 bytes Images/Source/hd0/s0/u15/IF.HLP | 458 ++ Images/Source/hd0/s0/u15/IF.MAC | 542 +++ Images/Source/hd0/s0/u15/IFSTAT.COM | Bin 0 -> 384 bytes Images/Source/hd0/s0/u15/IFSTAT.MAC | 86 + Images/Source/hd0/s0/u15/IO.HLP | 390 ++ Images/Source/hd0/s0/u15/LDR-UPD.COM | Bin 0 -> 2560 bytes Images/Source/hd0/s0/u15/LDR-UPD.MSG | 16 + Images/Source/hd0/s0/u15/LDR.COM | Bin 0 -> 2688 bytes Images/Source/hd0/s0/u15/LDR.MAC | 606 +++ Images/Source/hd0/s0/u15/LDR15.LBR | Bin 0 -> 13824 bytes Images/Source/hd0/s0/u15/LGET11.LBR | Bin 0 -> 9088 bytes Images/Source/hd0/s0/u15/LLF11.LBR | Bin 0 -> 9728 bytes Images/Source/hd0/s0/u15/LUZ3.LBR | Bin 0 -> 20608 bytes Images/Source/hd0/s0/u15/LX12.LBR | Bin 0 -> 14976 bytes Images/Source/hd0/s0/u15/LX14.LBR | Bin 0 -> 12416 bytes Images/Source/hd0/s0/u15/MCOPY.COM | Bin 0 -> 4224 bytes Images/Source/hd0/s0/u15/MCOPY.MAC | 1072 +++++ Images/Source/hd0/s0/u15/MCOPY44.LBR | Bin 0 -> 24064 bytes Images/Source/hd0/s0/u15/MCOPY45B.LBR | Bin 0 -> 26112 bytes Images/Source/hd0/s0/u15/MENU.COM | Bin 0 -> 3456 bytes Images/Source/hd0/s0/u15/MENU.HLP | 893 ++++ Images/Source/hd0/s0/u15/MENU.MAC | 1510 +++++++ Images/Source/hd0/s0/u15/MENUCK.COM | Bin 0 -> 2560 bytes Images/Source/hd0/s0/u15/MENUCK.MAC | 546 +++ Images/Source/hd0/s0/u15/MKDIR.COM | Bin 0 -> 5376 bytes Images/Source/hd0/s0/u15/MKDIR.MAC | 1020 +++++ Images/Source/hd0/s0/u15/MU3.COM | Bin 0 -> 2944 bytes Images/Source/hd0/s0/u15/MU3.HLP | 175 + Images/Source/hd0/s0/u15/MU3.MAC | 854 ++++ Images/Source/hd0/s0/u15/NDIRS.HLP | 440 ++ Images/Source/hd0/s0/u15/NEWTCAP.Z80 | 170 + Images/Source/hd0/s0/u15/NOTE.COM | Bin 0 -> 128 bytes Images/Source/hd0/s0/u15/NOTE.MAC | 52 + Images/Source/hd0/s0/u15/PAGE.COM | Bin 0 -> 4608 bytes Images/Source/hd0/s0/u15/PAGE.MAC | 1183 +++++ Images/Source/hd0/s0/u15/PATH.COM | Bin 0 -> 1280 bytes Images/Source/hd0/s0/u15/PATH.MAC | 460 ++ Images/Source/hd0/s0/u15/PATH31.LBR | Bin 0 -> 7936 bytes Images/Source/hd0/s0/u15/PPAL.DOC | 361 ++ Images/Source/hd0/s0/u15/PRINT.COM | Bin 0 -> 5376 bytes Images/Source/hd0/s0/u15/PRINT.MAC | 1404 ++++++ Images/Source/hd0/s0/u15/PRINTHLP.LBR | Bin 0 -> 17280 bytes Images/Source/hd0/s0/u15/PROTECT.COM | Bin 0 -> 3584 bytes Images/Source/hd0/s0/u15/PROTECT.MAC | 591 +++ Images/Source/hd0/s0/u15/PWD.COM | Bin 0 -> 1024 bytes Images/Source/hd0/s0/u15/PWD.MAC | 249 ++ Images/Source/hd0/s0/u15/QUIET.COM | Bin 0 -> 512 bytes Images/Source/hd0/s0/u15/QUIET.MAC | 139 + Images/Source/hd0/s0/u15/READ.ME | 434 ++ Images/Source/hd0/s0/u15/RECORD.COM | Bin 0 -> 1024 bytes Images/Source/hd0/s0/u15/RECORD.MAC | 194 + Images/Source/hd0/s0/u15/REG.COM | Bin 0 -> 1024 bytes Images/Source/hd0/s0/u15/REG.MAC | 267 ++ Images/Source/hd0/s0/u15/RENAME.COM | Bin 0 -> 3456 bytes Images/Source/hd0/s0/u15/RENAME.MAC | 593 +++ Images/Source/hd0/s0/u15/RENAME31.LBR | Bin 0 -> 15616 bytes Images/Source/hd0/s0/u15/SAK.COM | Bin 0 -> 896 bytes Images/Source/hd0/s0/u15/SAK.MAC | 245 + Images/Source/hd0/s0/u15/SETFILE.COM | Bin 0 -> 512 bytes Images/Source/hd0/s0/u15/SETFILE.MAC | 108 + Images/Source/hd0/s0/u15/SF.COM | Bin 0 -> 9216 bytes Images/Source/hd0/s0/u15/SF.Z80 | 46 + Images/Source/hd0/s0/u15/SH.COM | Bin 0 -> 3584 bytes Images/Source/hd0/s0/u15/SH.HLP | 420 ++ Images/Source/hd0/s0/u15/SH.MAC | 807 ++++ Images/Source/hd0/s0/u15/SH11.LBR | Bin 0 -> 22272 bytes Images/Source/hd0/s0/u15/SHCTRL.COM | Bin 0 -> 896 bytes Images/Source/hd0/s0/u15/SHCTRL.MAC | 148 + Images/Source/hd0/s0/u15/SHDEFINE.COM | Bin 0 -> 2944 bytes Images/Source/hd0/s0/u15/SHDEFINE.MAC | 659 +++ Images/Source/hd0/s0/u15/SHFILE.COM | Bin 0 -> 512 bytes Images/Source/hd0/s0/u15/SHFILE.MAC | 105 + Images/Source/hd0/s0/u15/SHOW.COM | Bin 0 -> 7936 bytes Images/Source/hd0/s0/u15/SHOW.MAC | 1753 ++++++++ Images/Source/hd0/s0/u15/SHSET.COM | Bin 0 -> 896 bytes Images/Source/hd0/s0/u15/SHSET.MAC | 207 + Images/Source/hd0/s0/u15/SHUTILS2.LBR | Bin 0 -> 21504 bytes Images/Source/hd0/s0/u15/SHVAR.COM | Bin 0 -> 2944 bytes Images/Source/hd0/s0/u15/SHVAR.MAC | 656 +++ Images/Source/hd0/s0/u15/SHVAR11.LBR | Bin 0 -> 13312 bytes Images/Source/hd0/s0/u15/SUB.COM | Bin 0 -> 2560 bytes Images/Source/hd0/s0/u15/SUB.MAC | 1043 +++++ Images/Source/hd0/s0/u15/SYSENV.AQM | Bin 0 -> 640 bytes Images/Source/hd0/s0/u15/SYSENV.ASM | 31 + Images/Source/hd0/s0/u15/SYSENV.LIB | 136 + Images/Source/hd0/s0/u15/SYSFCP.AQM | Bin 0 -> 12032 bytes Images/Source/hd0/s0/u15/SYSFCP.ASM | 945 ++++ Images/Source/hd0/s0/u15/SYSFCP1.LIB | 214 + Images/Source/hd0/s0/u15/SYSFCP11.LBR | Bin 0 -> 16256 bytes Images/Source/hd0/s0/u15/SYSFCP2.LIB | 214 + Images/Source/hd0/s0/u15/SYSIOP.AQM | Bin 0 -> 19328 bytes Images/Source/hd0/s0/u15/SYSIOP.ASM | 1221 +++++ Images/Source/hd0/s0/u15/SYSNDR.AQM | Bin 0 -> 512 bytes Images/Source/hd0/s0/u15/SYSNDR.ASM | 17 + Images/Source/hd0/s0/u15/SYSNDR.LIB | 83 + Images/Source/hd0/s0/u15/SYSRCP.AQM | Bin 0 -> 30080 bytes Images/Source/hd0/s0/u15/SYSRCP.ASM | 2306 ++++++++++ Images/Source/hd0/s0/u15/SYSRCP.HLP | 229 + Images/Source/hd0/s0/u15/SYSRCP1.LIB | 367 ++ Images/Source/hd0/s0/u15/SYSRCP11.LBR | Bin 0 -> 33408 bytes Images/Source/hd0/s0/u15/SYSRCP2.LIB | 368 ++ Images/Source/hd0/s0/u15/SYSRCP3.LIB | 367 ++ Images/Source/hd0/s0/u15/SYSRCP4.LIB | 367 ++ Images/Source/hd0/s0/u15/T3M-HI2.Z80 | 319 ++ Images/Source/hd0/s0/u15/T3T-24-1.Z80 | 507 +++ Images/Source/hd0/s0/u15/TCCHECK.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s0/u15/TCCHECK.MAC | 281 ++ Images/Source/hd0/s0/u15/TCMAKE.COM | Bin 0 -> 6016 bytes Images/Source/hd0/s0/u15/TCMAKE.MAC | 1085 +++++ Images/Source/hd0/s0/u15/TCSEL32.COM | Bin 0 -> 5120 bytes Images/Source/hd0/s0/u15/TCSELECT.COM | Bin 0 -> 2816 bytes Images/Source/hd0/s0/u15/TCSELECT.MAC | 607 +++ Images/Source/hd0/s0/u15/TCSRC14.COM | Bin 0 -> 4864 bytes Images/Source/hd0/s0/u15/TCVIEW.COM | Bin 0 -> 3712 bytes Images/Source/hd0/s0/u15/TCVIEW20.COM | Bin 0 -> 3200 bytes Images/Source/hd0/s0/u15/UNERASE.COM | Bin 0 -> 1664 bytes Images/Source/hd0/s0/u15/UNERASE.MAC | 727 +++ Images/Source/hd0/s0/u15/VF-BOX11.LBR | Bin 0 -> 33536 bytes Images/Source/hd0/s0/u15/VF41.IQF | Bin 0 -> 11008 bytes Images/Source/hd0/s0/u15/VF41H.LBR | Bin 0 -> 27776 bytes Images/Source/hd0/s0/u15/VF42A.LBR | Bin 0 -> 31744 bytes Images/Source/hd0/s0/u15/VFILER.COM | Bin 0 -> 11776 bytes Images/Source/hd0/s0/u15/VFILER.HLP | 477 ++ Images/Source/hd0/s0/u15/VFILER.MAC | 4466 +++++++++++++++++++ Images/Source/hd0/s0/u15/VFILR4-1.LBR | Bin 0 -> 26240 bytes Images/Source/hd0/s0/u15/VFILR4-2.LBR | Bin 0 -> 160512 bytes Images/Source/hd0/s0/u15/VMENU.COM | Bin 0 -> 5888 bytes Images/Source/hd0/s0/u15/VMENU.HLP | 903 ++++ Images/Source/hd0/s0/u15/VMENU.MAC | 2655 +++++++++++ Images/Source/hd0/s0/u15/VMENU24.LBR | Bin 0 -> 77184 bytes Images/Source/hd0/s0/u15/VMENUCK.COM | Bin 0 -> 2688 bytes Images/Source/hd0/s0/u15/VMENUCK.MAC | 551 +++ Images/Source/hd0/s0/u15/VMENUFUN.LBR | Bin 0 -> 9728 bytes Images/Source/hd0/s0/u15/WHEEL.COM | Bin 0 -> 1408 bytes Images/Source/hd0/s0/u15/WHEEL.MAC | 218 + Images/Source/hd0/s0/u15/WILDCAT.TXT | 358 ++ Images/Source/hd0/s0/u15/WYSE.DPG | 133 + Images/Source/hd0/s0/u15/XD.COM | Bin 0 -> 3584 bytes Images/Source/hd0/s0/u15/XD.MAC | 856 ++++ Images/Source/hd0/s0/u15/XDIR.COM | Bin 0 -> 7936 bytes Images/Source/hd0/s0/u15/XDIR.MAC | 1888 ++++++++ Images/Source/hd0/s0/u15/Z3BASE1.LIB | 276 ++ Images/Source/hd0/s0/u15/Z3BASE2.LIB | 273 ++ Images/Source/hd0/s0/u15/Z3FILES.PH1 | 454 ++ Images/Source/hd0/s0/u15/Z3FILES.PH2 | 266 ++ Images/Source/hd0/s0/u15/Z3FILES.PQ2 | Bin 0 -> 9984 bytes Images/Source/hd0/s0/u15/Z3FILES2.PH2 | 266 ++ Images/Source/hd0/s0/u15/Z3FILES2.PQ2 | Bin 0 -> 9984 bytes Images/Source/hd0/s0/u15/Z3HDR1.LIB | 609 +++ Images/Source/hd0/s0/u15/Z3HDR2.LIB | 609 +++ Images/Source/hd0/s0/u15/Z3LDRBUG.LBR | Bin 0 -> 5632 bytes Images/Source/hd0/s0/u15/Z3LOC.COM | Bin 0 -> 896 bytes Images/Source/hd0/s0/u15/Z3LOC.MAC | 212 + Images/Source/hd0/s0/u15/Z3LOC11.LBR | Bin 0 -> 4096 bytes Images/Source/hd0/s0/u15/Z3RES.HLP | 220 + Images/Source/hd0/s0/u15/Z3TCAP.AQM | Bin 0 -> 19200 bytes Images/Source/hd0/s0/u15/Z3TCAP.ASM | 1024 +++++ Images/Source/hd0/s0/u15/Z3TCAP.HLP | 1106 +++++ Images/Source/hd0/s0/u15/Z3TCAP.TCP | Bin 0 -> 7680 bytes Images/Source/hd0/s0/u15/Z3TCAP.TQP | Bin 0 -> 2688 bytes Images/Source/hd0/s0/u15/Z3TCAP22.LBR | Bin 0 -> 12672 bytes Images/Source/hd0/s0/u15/Z3UTIL1.HLP | 989 ++++ Images/Source/hd0/s0/u15/Z3UTIL2.HLP | 764 ++++ Images/Source/hd0/s0/u15/Z3UTIL3.HLP | 237 + Images/Source/hd0/s0/u15/ZCPR3.AQM | Bin 0 -> 44544 bytes Images/Source/hd0/s0/u15/ZCPR3.ASM | 2907 ++++++++++++ Images/Source/hd0/s0/u15/ZCPR3.HLP | 106 + Images/Source/hd0/s0/u15/ZCPR3.INS | 163 + Images/Source/hd0/s0/u15/ZCPR3.IQS | Bin 0 -> 2816 bytes Images/Source/hd0/s0/u15/ZCPR3DIR.BQG | Bin 0 -> 2944 bytes Images/Source/hd0/s0/u15/ZCPR3DIR.BUG | 99 + Images/Source/hd0/s0/u15/ZEX.AQM | Bin 0 -> 30976 bytes Images/Source/hd0/s0/u15/ZEX.ASM | 2286 ++++++++++ Images/Source/hd0/s0/u15/ZEX.COM | Bin 0 -> 4992 bytes Images/Source/hd0/s0/u15/ZEX.ZEX | 181 + Images/Source/hd0/s0/u15/ZEX2.COM | Bin 0 -> 5120 bytes Images/Source/hd0/s0/u15/ZEX31A.COM | Bin 0 -> 4992 bytes Images/Source/hd0/s0/u15/ZGOLF.COM | Bin 0 -> 4224 bytes Images/Source/hd0/s0/u15/ZMLIB.COM | Bin 0 -> 3584 bytes Images/Source/hd0/s0/u15/ZSYSTEM.INS | 115 + Images/Source/hd0/s0/u15/xzrl.com | Bin 0 -> 5120 bytes Images/Source/hd0/s0/u15/xzrl.doc | 51 + Images/Source/hd0/s0/u2/ANAGRAM.COM | Bin 0 -> 1280 bytes Images/Source/hd0/s0/u2/CHAPTER1.DOC | 2 + Images/Source/hd0/s0/u2/CHAPTER2.DOC | 2 + Images/Source/hd0/s0/u2/CHAPTER3.DOC | 2 + Images/Source/hd0/s0/u2/DIARY.DOC | 74 + Images/Source/hd0/s0/u2/DICTSORT.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s0/u2/FIND.COM | Bin 0 -> 1280 bytes Images/Source/hd0/s0/u2/HOMONYMS.TXT | Bin 0 -> 6016 bytes Images/Source/hd0/s0/u2/HYEXCEPT.TXT | 358 ++ Images/Source/hd0/s0/u2/HYPHEN.COM | Bin 0 -> 8192 bytes Images/Source/hd0/s0/u2/LOOKUP.COM | Bin 0 -> 2048 bytes Images/Source/hd0/s0/u2/MAINDICT.CMP | Bin 0 -> 166912 bytes Images/Source/hd0/s0/u2/MARKFIX.COM | Bin 0 -> 3584 bytes Images/Source/hd0/s0/u2/MOVEPRN.COM | Bin 0 -> 4992 bytes Images/Source/hd0/s0/u2/PATCH.LST | 1877 ++++++++ Images/Source/hd0/s0/u2/PRINT.TST | 143 + Images/Source/hd0/s0/u2/READ.ME | 2141 +++++++++ Images/Source/hd0/s0/u2/README | 15 + Images/Source/hd0/s0/u2/REVIEW.COM | Bin 0 -> 5376 bytes Images/Source/hd0/s0/u2/RULER.DOC | 22 + Images/Source/hd0/s0/u2/SAMPLE1.DOC | 17 + Images/Source/hd0/s0/u2/SAMPLE2.DOC | 15 + Images/Source/hd0/s0/u2/SAMPLE3.DOC | 5 + Images/Source/hd0/s0/u2/SPELL.COM | Bin 0 -> 4096 bytes Images/Source/hd0/s0/u2/TABLE.DOC | 17 + Images/Source/hd0/s0/u2/TEXT.DOC | 94 + Images/Source/hd0/s0/u2/TW.COM | Bin 0 -> 3072 bytes Images/Source/hd0/s0/u2/WC.COM | Bin 0 -> 1280 bytes Images/Source/hd0/s0/u2/WINSTALL.COM | Bin 0 -> 20480 bytes Images/Source/hd0/s0/u2/WORDFREQ.COM | Bin 0 -> 2560 bytes Images/Source/hd0/s0/u2/WS.COM | Bin 0 -> 6784 bytes Images/Source/hd0/s0/u2/WS.OVR | Bin 0 -> 52864 bytes Images/Source/hd0/s0/u2/WSCHANGE.COM | Bin 0 -> 34944 bytes Images/Source/hd0/s0/u2/WSCHANGE.OVR | Bin 0 -> 21888 bytes Images/Source/hd0/s0/u2/WSCHHELP.OVR | Bin 0 -> 29056 bytes Images/Source/hd0/s0/u2/WSHELP.OVR | Bin 0 -> 25856 bytes Images/Source/hd0/s0/u2/WSINDEX.XCL | 232 + Images/Source/hd0/s0/u2/WSMSGS.OVR | Bin 0 -> 13440 bytes Images/Source/hd0/s0/u2/WSPRINT.OVR | Bin 0 -> 152704 bytes Images/Source/hd0/s0/u2/WSSHORT.OVR | Bin 0 -> 512 bytes Images/Source/hd0/s1/u0/ASM.COM | Bin 0 -> 8192 bytes Images/Source/hd0/s1/u0/CLOCKS.DAT | Bin 0 -> 26240 bytes Images/Source/hd0/s1/u0/CLRDIR.COM | Bin 0 -> 1619 bytes Images/Source/hd0/s1/u0/COPY.CFG | Bin 0 -> 3456 bytes Images/Source/hd0/s1/u0/COPY.COM | Bin 0 -> 6912 bytes Images/Source/hd0/s1/u0/COPY.UPD | 43 + Images/Source/hd0/s1/u0/CR.COM | Bin 0 -> 6144 bytes Images/Source/hd0/s1/u0/DATSWEEP.COM | Bin 0 -> 34816 bytes Images/Source/hd0/s1/u0/DDT.COM | Bin 0 -> 4864 bytes Images/Source/hd0/s1/u0/DDTZ.COM | Bin 0 -> 7424 bytes Images/Source/hd0/s1/u0/DDTZ.DOC | 564 +++ Images/Source/hd0/s1/u0/DIF.COM | Bin 0 -> 2944 bytes Images/Source/hd0/s1/u0/DSCONFIG.COM | Bin 0 -> 16384 bytes Images/Source/hd0/s1/u0/DUMP.COM | Bin 0 -> 512 bytes Images/Source/hd0/s1/u0/ED.COM | Bin 0 -> 6656 bytes Images/Source/hd0/s1/u0/FA16.CFG | Bin 0 -> 3072 bytes Images/Source/hd0/s1/u0/FA16.DOC | 264 ++ Images/Source/hd0/s1/u0/FA16A.FOR | 6 + Images/Source/hd0/s1/u0/FA16CFG.TXT | 39 + Images/Source/hd0/s1/u0/FILEATTR.COM | Bin 0 -> 4096 bytes Images/Source/hd0/s1/u0/FILEDATE.CFG | Bin 0 -> 4992 bytes Images/Source/hd0/s1/u0/FILEDATE.COM | Bin 0 -> 4352 bytes Images/Source/hd0/s1/u0/INITDIR.CFG | Bin 0 -> 384 bytes Images/Source/hd0/s1/u0/INITDIR.COM | Bin 0 -> 2048 bytes Images/Source/hd0/s1/u0/LBREXT.COM | Bin 0 -> 8576 bytes Images/Source/hd0/s1/u0/LDDS.COM | Bin 0 -> 3328 bytes Images/Source/hd0/s1/u0/LDP2D.COM | Bin 0 -> 3456 bytes Images/Source/hd0/s1/u0/LIB.COM | Bin 0 -> 7168 bytes Images/Source/hd0/s1/u0/LINK.COM | Bin 0 -> 15744 bytes Images/Source/hd0/s1/u0/LOAD.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s1/u0/MAC.COM | Bin 0 -> 11776 bytes Images/Source/hd0/s1/u0/MBASIC.COM | Bin 0 -> 24320 bytes Images/Source/hd0/s1/u0/NULU.COM | Bin 0 -> 15616 bytes Images/Source/hd0/s1/u0/PIP.COM | Bin 0 -> 7424 bytes Images/Source/hd0/s1/u0/PUTBG.COM | Bin 0 -> 18432 bytes Images/Source/hd0/s1/u0/PUTDS.COM | Bin 0 -> 13056 bytes Images/Source/hd0/s1/u0/RELOG.COM | Bin 0 -> 256 bytes Images/Source/hd0/s1/u0/RMAC.COM | Bin 0 -> 13568 bytes Images/Source/hd0/s1/u0/SETTERM.COM | Bin 0 -> 19840 bytes Images/Source/hd0/s1/u0/SETUPZST.COM | Bin 0 -> 7936 bytes Images/Source/hd0/s1/u0/SID.COM | Bin 0 -> 7936 bytes Images/Source/hd0/s1/u0/STAMPS.DAT | Bin 0 -> 11392 bytes Images/Source/hd0/s1/u0/STAT.COM | Bin 0 -> 5248 bytes Images/Source/hd0/s1/u0/SUBMIT.COM | Bin 0 -> 1280 bytes Images/Source/hd0/s1/u0/SUPERSUB.COM | Bin 0 -> 2176 bytes Images/Source/hd0/s1/u0/TD.CFG | Bin 0 -> 384 bytes Images/Source/hd0/s1/u0/TD.COM | Bin 0 -> 2048 bytes Images/Source/hd0/s1/u0/TERMBASE.DAT | Bin 0 -> 6400 bytes Images/Source/hd0/s1/u0/TESTCLOK.COM | Bin 0 -> 6400 bytes Images/Source/hd0/s1/u0/UNARC.COM | Bin 0 -> 4736 bytes Images/Source/hd0/s1/u0/UNCR.COM | Bin 0 -> 8576 bytes Images/Source/hd0/s1/u0/UNZIP.COM | Bin 0 -> 3328 bytes Images/Source/hd0/s1/u0/XSUB.COM | Bin 0 -> 768 bytes Images/Source/hd0/s1/u0/ZAP.COM | Bin 0 -> 9856 bytes Images/Source/hd0/s1/u0/ZCAL.COM | Bin 0 -> 1280 bytes Images/Source/hd0/s1/u0/ZCNFG.COM | Bin 0 -> 8064 bytes Images/Source/hd0/s1/u0/ZCNFG24.CFG | Bin 0 -> 4608 bytes Images/Source/hd0/s1/u0/ZDE.COM | Bin 0 -> 16896 bytes Images/Source/hd0/s1/u0/ZDE40.COM | Bin 0 -> 16896 bytes Images/Source/hd0/s1/u0/ZDENST.COM | Bin 0 -> 10624 bytes Images/Source/hd0/s1/u0/ZPATH.COM | Bin 0 -> 2176 bytes Images/Source/hd0/s1/u0/ZSCONFIG.COM | Bin 0 -> 5888 bytes Images/Source/hd0/s1/u0/ZSVSTAMP.COM | Bin 0 -> 1792 bytes Images/Source/hd0/s1/u0/ZSVSTAMP.DOC | 118 + Images/Source/hd0/s1/u0/ZXD.CFG | Bin 0 -> 2048 bytes Images/Source/hd0/s1/u0/ZXD.COM | Bin 0 -> 6784 bytes Images/Source/hd1/s0/u0/TEST.TXT | 1 + Images/cpmtools.cmd | 5 + Images/diskdefs | 417 ++ ReadMe.txt | 4 +- Sim.cfg | 11 +- Source/Apps/OSLdr.asm | 2 +- Source/BIOS/Build.ps1 | 12 +- Source/BIOS/{ => Old}/bioshdr.inc | 0 Source/BIOS/hbfill.asm | 12 + Source/BIOS/hbios.asm | 655 +-- Source/BIOS/loader.asm | 264 ++ Source/BIOS/setup.asm | 206 +- Source/BIOS/std.asm | 3 +- Source/BIOS/ver.inc | 6 +- Source/BPBIOS/-readme | 116 + Source/BPBIOS/@WBW BPBIOS Errata.rtf | 319 ++ Source/BPBIOS/@WBW Z3ENV.txt | 117 + Source/BPBIOS/Build.cmd | 267 ++ Source/BPBIOS/Clean.cmd | 6 + Source/BPBIOS/ZCPR33/Build.cmd | 15 + Source/BPBIOS/ZCPR33/Clean.cmd | 5 + Source/BPBIOS/ZCPR33/crc.crc | Bin 0 -> 512 bytes Source/BPBIOS/ZCPR33/z33defn.lib | Bin 0 -> 1664 bytes Source/BPBIOS/ZCPR33/z33hdr.lib | 540 +++ Source/BPBIOS/ZCPR33/z33hdr.lib.sav | 539 +++ Source/BPBIOS/ZCPR33/z33hdr1.lib | Bin 0 -> 3584 bytes Source/BPBIOS/ZCPR33/z33hdr2.lib | Bin 0 -> 3456 bytes Source/BPBIOS/ZCPR33/z33hdr3.lib | Bin 0 -> 3584 bytes Source/BPBIOS/ZCPR33/z33hdr4.lib | Bin 0 -> 3584 bytes Source/BPBIOS/ZCPR33/z33hdr5.lib | Bin 0 -> 3456 bytes Source/BPBIOS/ZCPR33/z33mac.lib | 160 + Source/BPBIOS/ZCPR33/z3base.lib | 128 + Source/BPBIOS/ZCPR33/z3base.lib.sav | 226 + Source/BPBIOS/ZCPR33/zcpr33.bin | Bin 0 -> 2048 bytes Source/BPBIOS/ZCPR33/zcpr33.z80 | 4042 +++++++++++++++++ Source/BPBIOS/ZCPR33/zcpr33.z80.sav | 4038 +++++++++++++++++ Source/BPBIOS/bank-dx.cnf | 129 + Source/BPBIOS/boot-dx.cnf | 86 + Source/BPBIOS/bp33.dat | Bin 0 -> 11008 bytes Source/BPBIOS/bp33bnk.dat | Bin 0 -> 11008 bytes Source/BPBIOS/bp33bnkx.dat | Bin 0 -> 12416 bytes Source/BPBIOS/bp33n.dat | Bin 0 -> 11904 bytes Source/BPBIOS/bp33nbnk.dat | Bin 0 -> 12544 bytes Source/BPBIOS/bp33t.dat | Bin 0 -> 11008 bytes Source/BPBIOS/bp33tbnk.dat | Bin 0 -> 12416 bytes Source/BPBIOS/bp33x.dat | Bin 0 -> 11904 bytes Source/BPBIOS/bp33xbnk.dat | Bin 0 -> 12416 bytes Source/BPBIOS/bp34.dat | Bin 0 -> 11904 bytes Source/BPBIOS/bp34bnk.dat | Bin 0 -> 12416 bytes Source/BPBIOS/bp34n.dat | Bin 0 -> 11904 bytes Source/BPBIOS/bp34nbnk.dat | Bin 0 -> 12544 bytes Source/BPBIOS/bp34t.dat | Bin 0 -> 11904 bytes Source/BPBIOS/bp34tbnk.dat | Bin 0 -> 12416 bytes Source/BPBIOS/bp34x.dat | Bin 0 -> 11008 bytes Source/BPBIOS/bp34xbnk.dat | Bin 0 -> 12416 bytes Source/BPBIOS/bp41.dat | Bin 0 -> 17792 bytes Source/BPBIOS/bp41n.dat | Bin 0 -> 17920 bytes Source/BPBIOS/bp41t.dat | Bin 0 -> 17792 bytes Source/BPBIOS/bp41x.dat | Bin 0 -> 19712 bytes Source/BPBIOS/bpbio-dx.z80 | 603 +++ Source/BPBIOS/bpbld1.rsp | 1 + Source/BPBIOS/bpbld2.rsp | 1 + Source/BPBIOS/bpbldzx.cmd | 29 + Source/BPBIOS/bpbuild.com | Bin 0 -> 8960 bytes Source/BPBIOS/byteio.z80 | 144 + Source/BPBIOS/cboot-dx.z80 | 771 ++++ Source/BPBIOS/deblock.z80 | 414 ++ Source/BPBIOS/def-dx.lib | 369 ++ Source/BPBIOS/def-ww-mk4.lib | 80 + Source/BPBIOS/def-ww-sim.lib | 80 + Source/BPBIOS/def-ww.lib | 80 + Source/BPBIOS/def-z33.lib | 370 ++ Source/BPBIOS/def-z33bnk.lib | 370 ++ Source/BPBIOS/def-z34.lib | 370 ++ Source/BPBIOS/def-z34bnk.lib | 370 ++ Source/BPBIOS/def-z41.lib | 369 ++ Source/BPBIOS/defbank | 367 ++ Source/BPBIOS/defboot | 365 ++ Source/BPBIOS/diskdefs | 417 ++ Source/BPBIOS/dpb-8.lib | 106 + Source/BPBIOS/dpb-h.lib | 146 + Source/BPBIOS/dpb.lib | 168 + Source/BPBIOS/dpb2.lib | 258 ++ Source/BPBIOS/dpbhd-dx.lib | 317 ++ Source/BPBIOS/dpbhd-ww.lib | 330 ++ Source/BPBIOS/dpbm-dx.lib | 41 + Source/BPBIOS/dpbram.lib | 139 + Source/BPBIOS/dph.lib | 278 ++ Source/BPBIOS/dphhd.lib | 195 + Source/BPBIOS/dphm.lib | 37 + Source/BPBIOS/fdc-dx.z80 | 1281 ++++++ Source/BPBIOS/floppy.z80 | 252 ++ Source/BPBIOS/forlib.lib | 0 Source/BPBIOS/hard-dx.z80 | 620 +++ Source/BPBIOS/hardhb.z80 | 234 + Source/BPBIOS/hardide.z80 | 469 ++ Source/BPBIOS/hardsim.z80 | 291 ++ Source/BPBIOS/hbios.z80 | 433 ++ Source/BPBIOS/ibmv-dx.z80 | 345 ++ Source/BPBIOS/ibmv-ww.z80 | 211 + Source/BPBIOS/icfg-dx.z80 | 187 + Source/BPBIOS/icfg-z33.z80 | 187 + Source/BPBIOS/icfg-z34.z80 | 187 + Source/BPBIOS/icfg-z41.z80 | 187 + Source/BPBIOS/iio-dx.z80 | 332 ++ Source/BPBIOS/license.txt | 337 ++ Source/BPBIOS/movp112.com | Bin 0 -> 15360 bytes Source/BPBIOS/myterm.z3t | Bin 0 -> 128 bytes Source/BPBIOS/p112boot.doc | 46 + Source/BPBIOS/ramd-dx.z80 | 112 + Source/BPBIOS/sectran.z80 | 117 + Source/BPBIOS/selflp1.z80 | 37 + Source/BPBIOS/selflp2.z80 | 213 + Source/BPBIOS/selrwd.z80 | 250 ++ Source/BPBIOS/tim-dx.z80 | 415 ++ Source/BPBIOS/tim-ww.z80 | 323 ++ Source/BPBIOS/util.z80 | 340 ++ Source/BPBIOS/wboot-dx.z80 | 191 + Source/BPBIOS/z33.zex | 2 + Source/BPBIOS/z34.rel | Bin 0 -> 2816 bytes Source/BPBIOS/z34.zex | 2 + Source/BPBIOS/z3base.lib | 128 + Source/BPBIOS/z41.zex | 2 + Source/BPBIOS/z41.zrl | Bin 0 -> 6912 bytes Source/BPBIOS/zcpr33.bin | Bin 0 -> 2048 bytes Source/BPBIOS/zcpr33.rel | Bin 0 -> 2304 bytes Source/BPBIOS/zcpr33.rel.sav | Bin 0 -> 2560 bytes Source/BPBIOS/zs203.zrl | Bin 0 -> 6912 bytes Source/BPBIOS/zsdos.zrl | Bin 0 -> 4224 bytes Source/Clean.cmd | 2 + Tools/Win32 Disk Imager/QtCore4.dll | Bin 0 -> 2537472 bytes Tools/Win32 Disk Imager/QtGui4.dll | Bin 0 -> 9814016 bytes Tools/Win32 Disk Imager/Win32DiskImager.exe | Bin 0 -> 96256 bytes Tools/Win32 Disk Imager/libgcc_s_dw2-1.dll | Bin 0 -> 107520 bytes Tools/Win32 Disk Imager/libstdc++-6.dll | Bin 0 -> 879630 bytes Tools/Win32 Disk Imager/mingwm10.dll | Bin 0 -> 24110 bytes Tools/rawwritewin/COPYING | 340 ++ Tools/rawwritewin/changes.txt | 18 + Tools/rawwritewin/diskio.dll | Bin 0 -> 21190 bytes Tools/rawwritewin/rawwritewin.exe | Bin 0 -> 204288 bytes Tools/rawwritewin/readme.txt | 5 + 770 files changed, 123221 insertions(+), 484 deletions(-) create mode 100644 BuildImages.cmd create mode 100644 Images/Blank.tmp create mode 100644 Images/Build.cmd create mode 100644 Images/BuildFD.cmd create mode 100644 Images/BuildFD.ps1 create mode 100644 Images/BuildHD.cmd create mode 100644 Images/BuildHD.ps1 create mode 100644 Images/Clean.cmd create mode 100644 Images/FixPowerShell.cmd create mode 100644 Images/ReadMe.txt create mode 100644 Images/Source/fd0/u0/ASM.COM create mode 100644 Images/Source/fd0/u0/CLRDIR.COM create mode 100644 Images/Source/fd0/u0/CR.COM create mode 100644 Images/Source/fd0/u0/DDT.COM create mode 100644 Images/Source/fd0/u0/DDTZ.COM create mode 100644 Images/Source/fd0/u0/DDTZ.DOC create mode 100644 Images/Source/fd0/u0/DIF.COM create mode 100644 Images/Source/fd0/u0/DIRX.COM create mode 100644 Images/Source/fd0/u0/DUMP.COM create mode 100644 Images/Source/fd0/u0/ED.COM create mode 100644 Images/Source/fd0/u0/LBREXT.COM create mode 100644 Images/Source/fd0/u0/LIB.COM create mode 100644 Images/Source/fd0/u0/LINK.COM create mode 100644 Images/Source/fd0/u0/LOAD.COM create mode 100644 Images/Source/fd0/u0/MAC.COM create mode 100644 Images/Source/fd0/u0/MBASIC.COM create mode 100644 Images/Source/fd0/u0/NULU.COM create mode 100644 Images/Source/fd0/u0/PIP.COM create mode 100644 Images/Source/fd0/u0/RMAC.COM create mode 100644 Images/Source/fd0/u0/SID.COM create mode 100644 Images/Source/fd0/u0/STAT.COM create mode 100644 Images/Source/fd0/u0/SUBMIT.COM create mode 100644 Images/Source/fd0/u0/SUPERSUB.COM create mode 100644 Images/Source/fd0/u0/UNARC.COM create mode 100644 Images/Source/fd0/u0/UNCR.COM create mode 100644 Images/Source/fd0/u0/UNZIP.COM create mode 100644 Images/Source/fd0/u0/VIDATT.Z80 create mode 100644 Images/Source/fd0/u0/WS.COM create mode 100644 Images/Source/fd0/u0/WS.OVR create mode 100644 Images/Source/fd0/u0/WSCHANGE.COM create mode 100644 Images/Source/fd0/u0/WSCHANGE.OVR create mode 100644 Images/Source/fd0/u0/WSCHHELP.OVR create mode 100644 Images/Source/fd0/u0/WSHELP.OVR create mode 100644 Images/Source/fd0/u0/WSMSGS.OVR create mode 100644 Images/Source/fd0/u0/WSPRINT.OVR create mode 100644 Images/Source/fd0/u0/WSREADME.TXT create mode 100644 Images/Source/fd0/u0/WSSHORT.OVR create mode 100644 Images/Source/fd0/u0/WSU.COM create mode 100644 Images/Source/fd0/u0/XSUB.COM create mode 100644 Images/Source/fd0/u0/ZAP.COM create mode 100644 Images/Source/fd0/u0/ZDE.COM create mode 100644 Images/Source/fd0/u0/ZDE40.COM create mode 100644 Images/Source/fd0/u0/ZDENST.COM create mode 100644 Images/Source/fd1/u0/ASM.COM create mode 100644 Images/Source/fd1/u0/CLOCKS.DAT create mode 100644 Images/Source/fd1/u0/CLRDIR.COM create mode 100644 Images/Source/fd1/u0/COPY.CFG create mode 100644 Images/Source/fd1/u0/COPY.COM create mode 100644 Images/Source/fd1/u0/COPY.UPD create mode 100644 Images/Source/fd1/u0/CR.COM create mode 100644 Images/Source/fd1/u0/DATSWEEP.COM create mode 100644 Images/Source/fd1/u0/DDT.COM create mode 100644 Images/Source/fd1/u0/DDTZ.COM create mode 100644 Images/Source/fd1/u0/DDTZ.DOC create mode 100644 Images/Source/fd1/u0/DIF.COM create mode 100644 Images/Source/fd1/u0/DSCONFIG.COM create mode 100644 Images/Source/fd1/u0/DUMP.COM create mode 100644 Images/Source/fd1/u0/ED.COM create mode 100644 Images/Source/fd1/u0/FA16.CFG create mode 100644 Images/Source/fd1/u0/FA16.DOC create mode 100644 Images/Source/fd1/u0/FA16A.FOR create mode 100644 Images/Source/fd1/u0/FA16CFG.TXT create mode 100644 Images/Source/fd1/u0/FILEATTR.COM create mode 100644 Images/Source/fd1/u0/FILEDATE.CFG create mode 100644 Images/Source/fd1/u0/FILEDATE.COM create mode 100644 Images/Source/fd1/u0/INITDIR.CFG create mode 100644 Images/Source/fd1/u0/INITDIR.COM create mode 100644 Images/Source/fd1/u0/LBREXT.COM create mode 100644 Images/Source/fd1/u0/LDDS.COM create mode 100644 Images/Source/fd1/u0/LDP2D.COM create mode 100644 Images/Source/fd1/u0/LIB.COM create mode 100644 Images/Source/fd1/u0/LINK.COM create mode 100644 Images/Source/fd1/u0/LOAD.COM create mode 100644 Images/Source/fd1/u0/MAC.COM create mode 100644 Images/Source/fd1/u0/MBASIC.COM create mode 100644 Images/Source/fd1/u0/NULU.COM create mode 100644 Images/Source/fd1/u0/PIP.COM create mode 100644 Images/Source/fd1/u0/PUTBG.COM create mode 100644 Images/Source/fd1/u0/PUTDS.COM create mode 100644 Images/Source/fd1/u0/RELOG.COM create mode 100644 Images/Source/fd1/u0/RMAC.COM create mode 100644 Images/Source/fd1/u0/SETTERM.COM create mode 100644 Images/Source/fd1/u0/SETUPZST.COM create mode 100644 Images/Source/fd1/u0/SID.COM create mode 100644 Images/Source/fd1/u0/STAMPS.DAT create mode 100644 Images/Source/fd1/u0/STAT.COM create mode 100644 Images/Source/fd1/u0/SUBMIT.COM create mode 100644 Images/Source/fd1/u0/SUPERSUB.COM create mode 100644 Images/Source/fd1/u0/TD.CFG create mode 100644 Images/Source/fd1/u0/TD.COM create mode 100644 Images/Source/fd1/u0/TERMBASE.DAT create mode 100644 Images/Source/fd1/u0/TESTCLOK.COM create mode 100644 Images/Source/fd1/u0/UNARC.COM create mode 100644 Images/Source/fd1/u0/UNCR.COM create mode 100644 Images/Source/fd1/u0/UNZIP.COM create mode 100644 Images/Source/fd1/u0/XSUB.COM create mode 100644 Images/Source/fd1/u0/ZAP.COM create mode 100644 Images/Source/fd1/u0/ZCAL.COM create mode 100644 Images/Source/fd1/u0/ZCNFG.COM create mode 100644 Images/Source/fd1/u0/ZCNFG24.CFG create mode 100644 Images/Source/fd1/u0/ZDE.COM create mode 100644 Images/Source/fd1/u0/ZDE40.COM create mode 100644 Images/Source/fd1/u0/ZDENST.COM create mode 100644 Images/Source/fd1/u0/ZPATH.COM create mode 100644 Images/Source/fd1/u0/ZSCONFIG.COM create mode 100644 Images/Source/fd1/u0/ZSVSTAMP.COM create mode 100644 Images/Source/fd1/u0/ZSVSTAMP.DOC create mode 100644 Images/Source/fd1/u0/ZXD.CFG create mode 100644 Images/Source/fd1/u0/ZXD.COM create mode 100644 Images/Source/hd0/s0/u0/ASM.COM create mode 100644 Images/Source/hd0/s0/u0/CLRDIR.COM create mode 100644 Images/Source/hd0/s0/u0/CR.COM create mode 100644 Images/Source/hd0/s0/u0/DDT.COM create mode 100644 Images/Source/hd0/s0/u0/DDTZ.COM create mode 100644 Images/Source/hd0/s0/u0/DDTZ.DOC create mode 100644 Images/Source/hd0/s0/u0/DIF.COM create mode 100644 Images/Source/hd0/s0/u0/DIRX.COM create mode 100644 Images/Source/hd0/s0/u0/DUMP.COM create mode 100644 Images/Source/hd0/s0/u0/ED.COM create mode 100644 Images/Source/hd0/s0/u0/LBREXT.COM create mode 100644 Images/Source/hd0/s0/u0/LIB.COM create mode 100644 Images/Source/hd0/s0/u0/LINK.COM create mode 100644 Images/Source/hd0/s0/u0/LOAD.COM create mode 100644 Images/Source/hd0/s0/u0/MAC.COM create mode 100644 Images/Source/hd0/s0/u0/MBASIC.COM create mode 100644 Images/Source/hd0/s0/u0/NULU.COM create mode 100644 Images/Source/hd0/s0/u0/NZDEC23D.Z3T create mode 100644 Images/Source/hd0/s0/u0/PIP.COM create mode 100644 Images/Source/hd0/s0/u0/RMAC.COM create mode 100644 Images/Source/hd0/s0/u0/SID.COM create mode 100644 Images/Source/hd0/s0/u0/STAT.COM create mode 100644 Images/Source/hd0/s0/u0/SUBMIT.COM create mode 100644 Images/Source/hd0/s0/u0/SUPERSUB.COM create mode 100644 Images/Source/hd0/s0/u0/UNARC.COM create mode 100644 Images/Source/hd0/s0/u0/UNCR.COM create mode 100644 Images/Source/hd0/s0/u0/UNZIP.COM create mode 100644 Images/Source/hd0/s0/u0/VIDATT.Z80 create mode 100644 Images/Source/hd0/s0/u0/VT100TCP.Z3T create mode 100644 Images/Source/hd0/s0/u0/WS.COM create mode 100644 Images/Source/hd0/s0/u0/WS.OVR create mode 100644 Images/Source/hd0/s0/u0/WSCHANGE.COM create mode 100644 Images/Source/hd0/s0/u0/WSCHANGE.OVR create mode 100644 Images/Source/hd0/s0/u0/WSCHHELP.OVR create mode 100644 Images/Source/hd0/s0/u0/WSHELP.OVR create mode 100644 Images/Source/hd0/s0/u0/WSMSGS.OVR create mode 100644 Images/Source/hd0/s0/u0/WSPRINT.OVR create mode 100644 Images/Source/hd0/s0/u0/WSREADME.TXT create mode 100644 Images/Source/hd0/s0/u0/WSSHORT.OVR create mode 100644 Images/Source/hd0/s0/u0/WSU.COM create mode 100644 Images/Source/hd0/s0/u0/WW.Z3T create mode 100644 Images/Source/hd0/s0/u0/XSUB.COM create mode 100644 Images/Source/hd0/s0/u0/Z3TCAP.Z3T create mode 100644 Images/Source/hd0/s0/u0/ZAP.COM create mode 100644 Images/Source/hd0/s0/u0/ZDE.COM create mode 100644 Images/Source/hd0/s0/u0/ZDENST.COM create mode 100644 Images/Source/hd0/s0/u0/alien.dat create mode 100644 Images/Source/hd0/s0/u0/bpbuild.com create mode 100644 Images/Source/hd0/s0/u0/bpcnfg.com create mode 100644 Images/Source/hd0/s0/u0/bpdbug.com create mode 100644 Images/Source/hd0/s0/u0/bpformat.com create mode 100644 Images/Source/hd0/s0/u0/bpswap.com create mode 100644 Images/Source/hd0/s0/u0/bpsysgen.com create mode 100644 Images/Source/hd0/s0/u0/confz4.com create mode 100644 Images/Source/hd0/s0/u0/copy.com create mode 100644 Images/Source/hd0/s0/u0/cp.bin create mode 100644 Images/Source/hd0/s0/u0/emulate.com create mode 100644 Images/Source/hd0/s0/u0/fa.com create mode 100644 Images/Source/hd0/s0/u0/hashini.com create mode 100644 Images/Source/hd0/s0/u0/hdiag.com create mode 100644 Images/Source/hd0/s0/u0/help.com create mode 100644 Images/Source/hd0/s0/u0/iniramd.com create mode 100644 Images/Source/hd0/s0/u0/initdir.com create mode 100644 Images/Source/hd0/s0/u0/instal12.com create mode 100644 Images/Source/hd0/s0/u0/iopinit.com create mode 100644 Images/Source/hd0/s0/u0/ldds.com create mode 100644 Images/Source/hd0/s0/u0/ldnzt.com create mode 100644 Images/Source/hd0/s0/u0/ldp2d.com create mode 100644 Images/Source/hd0/s0/u0/ldr.com create mode 100644 Images/Source/hd0/s0/u0/ldsys.com create mode 100644 Images/Source/hd0/s0/u0/nzcpr.zrl create mode 100644 Images/Source/hd0/s0/u0/park.com create mode 100644 Images/Source/hd0/s0/u0/path.com create mode 100644 Images/Source/hd0/s0/u0/putds.com create mode 100644 Images/Source/hd0/s0/u0/setclok.com create mode 100644 Images/Source/hd0/s0/u0/showhd.com create mode 100644 Images/Source/hd0/s0/u0/sizeram.com create mode 100644 Images/Source/hd0/s0/u0/slowdown.com create mode 100644 Images/Source/hd0/s0/u0/speedup.com create mode 100644 Images/Source/hd0/s0/u0/spinup.com create mode 100644 Images/Source/hd0/s0/u0/start.com create mode 100644 Images/Source/hd0/s0/u0/start01.com create mode 100644 Images/Source/hd0/s0/u0/sys.fcp create mode 100644 Images/Source/hd0/s0/u0/sys.ndr create mode 100644 Images/Source/hd0/s0/u0/sys.rcp create mode 100644 Images/Source/hd0/s0/u0/tcselect.com create mode 100644 Images/Source/hd0/s0/u0/tdd.com create mode 100644 Images/Source/hd0/s0/u0/turbo.com create mode 100644 Images/Source/hd0/s0/u0/valias.com create mode 100644 Images/Source/hd0/s0/u0/z34.rel create mode 100644 Images/Source/hd0/s0/u0/z3tcap.tcp create mode 100644 Images/Source/hd0/s0/u0/z41.zrl create mode 100644 Images/Source/hd0/s0/u0/zcnfg.com create mode 100644 Images/Source/hd0/s0/u0/zcpr33.rel create mode 100644 Images/Source/hd0/s0/u0/zs203.zrl create mode 100644 Images/Source/hd0/s0/u0/zscfg2.com create mode 100644 Images/Source/hd0/s0/u0/zsconfig.com create mode 100644 Images/Source/hd0/s0/u0/zsdos.zrl create mode 100644 Images/Source/hd0/s0/u0/zxd.com create mode 100644 Images/Source/hd0/s0/u1/SAMPKEY.DOC create mode 100644 Images/Source/hd0/s0/u1/SAMPKEY.ZDK create mode 100644 Images/Source/hd0/s0/u1/SAMPKEY.ZDT create mode 100644 Images/Source/hd0/s0/u1/ZDE10.DOC create mode 100644 Images/Source/hd0/s0/u1/ZDE10.FOR create mode 100644 Images/Source/hd0/s0/u1/ZDE10.NEW create mode 100644 Images/Source/hd0/s0/u1/ZDE10.QRF create mode 100644 Images/Source/hd0/s0/u1/ZDE10.TOC create mode 100644 Images/Source/hd0/s0/u1/ZDE13.FOR create mode 100644 Images/Source/hd0/s0/u1/ZDE13.NEW create mode 100644 Images/Source/hd0/s0/u1/ZDE16.COM create mode 100644 Images/Source/hd0/s0/u1/ZDE16.DIR create mode 100644 Images/Source/hd0/s0/u1/ZDE16.FIX create mode 100644 Images/Source/hd0/s0/u1/ZDE16.FOR create mode 100644 Images/Source/hd0/s0/u1/ZDE16.NEW create mode 100644 Images/Source/hd0/s0/u1/ZDENST16.COM create mode 100644 Images/Source/hd0/s0/u1/ZDEPROP.DOC create mode 100644 Images/Source/hd0/s0/u1/ZDEPROP.Z80 create mode 100644 Images/Source/hd0/s0/u1/ZDKCOM13.COM create mode 100644 Images/Source/hd0/s0/u1/ZDKCOM13.DOC create mode 100644 Images/Source/hd0/s0/u10/z40.hlp create mode 100644 Images/Source/hd0/s0/u10/z40a.hlp create mode 100644 Images/Source/hd0/s0/u10/z40b.hlp create mode 100644 Images/Source/hd0/s0/u10/z40c.hlp create mode 100644 Images/Source/hd0/s0/u10/z40d.hlp create mode 100644 Images/Source/hd0/s0/u10/z40e.hlp create mode 100644 Images/Source/hd0/s0/u10/z40f.hlp create mode 100644 Images/Source/hd0/s0/u10/z40g.hlp create mode 100644 Images/Source/hd0/s0/u14/bpcnfg.cfg create mode 100644 Images/Source/hd0/s0/u14/bpformat.cfg create mode 100644 Images/Source/hd0/s0/u14/copy.cfg create mode 100644 Images/Source/hd0/s0/u14/emulate.cfg create mode 100644 Images/Source/hd0/s0/u14/hdiag.cfg create mode 100644 Images/Source/hd0/s0/u14/iniramd.cfg create mode 100644 Images/Source/hd0/s0/u14/initdir.cfg create mode 100644 Images/Source/hd0/s0/u14/ldsys.cfg create mode 100644 Images/Source/hd0/s0/u14/setclok.cfg create mode 100644 Images/Source/hd0/s0/u14/tdd.cfg create mode 100644 Images/Source/hd0/s0/u14/zxd.cfg create mode 100644 Images/Source/hd0/s0/u15/00-INDEX.TXT create mode 100644 Images/Source/hd0/s0/u15/ALIAS-1.LBR create mode 100644 Images/Source/hd0/s0/u15/ALIAS-2.LBR create mode 100644 Images/Source/hd0/s0/u15/ALIAS.COM create mode 100644 Images/Source/hd0/s0/u15/ALIAS.HLP create mode 100644 Images/Source/hd0/s0/u15/ALIAS.ZEX create mode 100644 Images/Source/hd0/s0/u15/ALIAS0.MAC create mode 100644 Images/Source/hd0/s0/u15/ALIAS1.MAC create mode 100644 Images/Source/hd0/s0/u15/CD.COM create mode 100644 Images/Source/hd0/s0/u15/CD.MAC create mode 100644 Images/Source/hd0/s0/u15/CLEAND15.LBR create mode 100644 Images/Source/hd0/s0/u15/CLEANDIR.COM create mode 100644 Images/Source/hd0/s0/u15/CLEANDIR.MAC create mode 100644 Images/Source/hd0/s0/u15/CLNDR13B.LBR create mode 100644 Images/Source/hd0/s0/u15/CMD.COM create mode 100644 Images/Source/hd0/s0/u15/CMD.MAC create mode 100644 Images/Source/hd0/s0/u15/CMDFILES.HLP create mode 100644 Images/Source/hd0/s0/u15/CMDRUN.COM create mode 100644 Images/Source/hd0/s0/u15/CMDRUN.MAC create mode 100644 Images/Source/hd0/s0/u15/COMMENT.COM create mode 100644 Images/Source/hd0/s0/u15/COMMENT.MAC create mode 100644 Images/Source/hd0/s0/u15/COMPARE.HLP create mode 100644 Images/Source/hd0/s0/u15/CPSEL.COM create mode 100644 Images/Source/hd0/s0/u15/CPSEL.MAC create mode 100644 Images/Source/hd0/s0/u15/CRC.COM create mode 100644 Images/Source/hd0/s0/u15/CRC.MAC create mode 100644 Images/Source/hd0/s0/u15/DBRCPREL.LBR create mode 100644 Images/Source/hd0/s0/u15/DEBUGRCP.AQM create mode 100644 Images/Source/hd0/s0/u15/DEBUGRCP.ASM create mode 100644 Images/Source/hd0/s0/u15/DEV.COM create mode 100644 Images/Source/hd0/s0/u15/DEV.MAC create mode 100644 Images/Source/hd0/s0/u15/DEV10.LBR create mode 100644 Images/Source/hd0/s0/u15/DEVICE.COM create mode 100644 Images/Source/hd0/s0/u15/DEVICE.MAC create mode 100644 Images/Source/hd0/s0/u15/DEVICE10.LBR create mode 100644 Images/Source/hd0/s0/u15/DIFF.COM create mode 100644 Images/Source/hd0/s0/u15/DIFF.MAC create mode 100644 Images/Source/hd0/s0/u15/DIFF21.LBR create mode 100644 Images/Source/hd0/s0/u15/DIR.COM create mode 100644 Images/Source/hd0/s0/u15/DIR.MAC create mode 100644 Images/Source/hd0/s0/u15/DIR14.LBR create mode 100644 Images/Source/hd0/s0/u15/DIRS.HLP create mode 100644 Images/Source/hd0/s0/u15/DPGFILE.LBR create mode 100644 Images/Source/hd0/s0/u15/DPROG.COM create mode 100644 Images/Source/hd0/s0/u15/DPROG.HLP create mode 100644 Images/Source/hd0/s0/u15/DPROG.MAC create mode 100644 Images/Source/hd0/s0/u15/DPROG12.LBR create mode 100644 Images/Source/hd0/s0/u15/DU3.COM create mode 100644 Images/Source/hd0/s0/u15/DU3.HLP create mode 100644 Images/Source/hd0/s0/u15/DU3.MAC create mode 100644 Images/Source/hd0/s0/u15/DU312.LBR create mode 100644 Images/Source/hd0/s0/u15/ECHO.COM create mode 100644 Images/Source/hd0/s0/u15/ECHO.MAC create mode 100644 Images/Source/hd0/s0/u15/ERASE.COM create mode 100644 Images/Source/hd0/s0/u15/ERASE.MAC create mode 100644 Images/Source/hd0/s0/u15/ERROR1.COM create mode 100644 Images/Source/hd0/s0/u15/ERROR1.MAC create mode 100644 Images/Source/hd0/s0/u15/ERROR2.COM create mode 100644 Images/Source/hd0/s0/u15/ERROR2.MAC create mode 100644 Images/Source/hd0/s0/u15/ERROR3.COM create mode 100644 Images/Source/hd0/s0/u15/ERROR3.MAC create mode 100644 Images/Source/hd0/s0/u15/ERROR4.COM create mode 100644 Images/Source/hd0/s0/u15/ERROR4.MAC create mode 100644 Images/Source/hd0/s0/u15/ERRORX.COM create mode 100644 Images/Source/hd0/s0/u15/ERRORX.MAC create mode 100644 Images/Source/hd0/s0/u15/FILES.BBS create mode 100644 Images/Source/hd0/s0/u15/FINDF.COM create mode 100644 Images/Source/hd0/s0/u15/FINDF.MAC create mode 100644 Images/Source/hd0/s0/u15/FINDF26.LBR create mode 100644 Images/Source/hd0/s0/u15/FINDF26A.LBR create mode 100644 Images/Source/hd0/s0/u15/GOTO.COM create mode 100644 Images/Source/hd0/s0/u15/GOTO.MAC create mode 100644 Images/Source/hd0/s0/u15/GRDEMO.LBR create mode 100644 Images/Source/hd0/s0/u15/HELP.COM create mode 100644 Images/Source/hd0/s0/u15/HELP.HLP create mode 100644 Images/Source/hd0/s0/u15/HELP.MAC create mode 100644 Images/Source/hd0/s0/u15/HELPCK.COM create mode 100644 Images/Source/hd0/s0/u15/HELPCK.MAC create mode 100644 Images/Source/hd0/s0/u15/HELPPR.COM create mode 100644 Images/Source/hd0/s0/u15/HELPPR.MAC create mode 100644 Images/Source/hd0/s0/u15/HELPSYS.HLP create mode 100644 Images/Source/hd0/s0/u15/IF.COM create mode 100644 Images/Source/hd0/s0/u15/IF.HLP create mode 100644 Images/Source/hd0/s0/u15/IF.MAC create mode 100644 Images/Source/hd0/s0/u15/IFSTAT.COM create mode 100644 Images/Source/hd0/s0/u15/IFSTAT.MAC create mode 100644 Images/Source/hd0/s0/u15/IO.HLP create mode 100644 Images/Source/hd0/s0/u15/LDR-UPD.COM create mode 100644 Images/Source/hd0/s0/u15/LDR-UPD.MSG create mode 100644 Images/Source/hd0/s0/u15/LDR.COM create mode 100644 Images/Source/hd0/s0/u15/LDR.MAC create mode 100644 Images/Source/hd0/s0/u15/LDR15.LBR create mode 100644 Images/Source/hd0/s0/u15/LGET11.LBR create mode 100644 Images/Source/hd0/s0/u15/LLF11.LBR create mode 100644 Images/Source/hd0/s0/u15/LUZ3.LBR create mode 100644 Images/Source/hd0/s0/u15/LX12.LBR create mode 100644 Images/Source/hd0/s0/u15/LX14.LBR create mode 100644 Images/Source/hd0/s0/u15/MCOPY.COM create mode 100644 Images/Source/hd0/s0/u15/MCOPY.MAC create mode 100644 Images/Source/hd0/s0/u15/MCOPY44.LBR create mode 100644 Images/Source/hd0/s0/u15/MCOPY45B.LBR create mode 100644 Images/Source/hd0/s0/u15/MENU.COM create mode 100644 Images/Source/hd0/s0/u15/MENU.HLP create mode 100644 Images/Source/hd0/s0/u15/MENU.MAC create mode 100644 Images/Source/hd0/s0/u15/MENUCK.COM create mode 100644 Images/Source/hd0/s0/u15/MENUCK.MAC create mode 100644 Images/Source/hd0/s0/u15/MKDIR.COM create mode 100644 Images/Source/hd0/s0/u15/MKDIR.MAC create mode 100644 Images/Source/hd0/s0/u15/MU3.COM create mode 100644 Images/Source/hd0/s0/u15/MU3.HLP create mode 100644 Images/Source/hd0/s0/u15/MU3.MAC create mode 100644 Images/Source/hd0/s0/u15/NDIRS.HLP create mode 100644 Images/Source/hd0/s0/u15/NEWTCAP.Z80 create mode 100644 Images/Source/hd0/s0/u15/NOTE.COM create mode 100644 Images/Source/hd0/s0/u15/NOTE.MAC create mode 100644 Images/Source/hd0/s0/u15/PAGE.COM create mode 100644 Images/Source/hd0/s0/u15/PAGE.MAC create mode 100644 Images/Source/hd0/s0/u15/PATH.COM create mode 100644 Images/Source/hd0/s0/u15/PATH.MAC create mode 100644 Images/Source/hd0/s0/u15/PATH31.LBR create mode 100644 Images/Source/hd0/s0/u15/PPAL.DOC create mode 100644 Images/Source/hd0/s0/u15/PRINT.COM create mode 100644 Images/Source/hd0/s0/u15/PRINT.MAC create mode 100644 Images/Source/hd0/s0/u15/PRINTHLP.LBR create mode 100644 Images/Source/hd0/s0/u15/PROTECT.COM create mode 100644 Images/Source/hd0/s0/u15/PROTECT.MAC create mode 100644 Images/Source/hd0/s0/u15/PWD.COM create mode 100644 Images/Source/hd0/s0/u15/PWD.MAC create mode 100644 Images/Source/hd0/s0/u15/QUIET.COM create mode 100644 Images/Source/hd0/s0/u15/QUIET.MAC create mode 100644 Images/Source/hd0/s0/u15/READ.ME create mode 100644 Images/Source/hd0/s0/u15/RECORD.COM create mode 100644 Images/Source/hd0/s0/u15/RECORD.MAC create mode 100644 Images/Source/hd0/s0/u15/REG.COM create mode 100644 Images/Source/hd0/s0/u15/REG.MAC create mode 100644 Images/Source/hd0/s0/u15/RENAME.COM create mode 100644 Images/Source/hd0/s0/u15/RENAME.MAC create mode 100644 Images/Source/hd0/s0/u15/RENAME31.LBR create mode 100644 Images/Source/hd0/s0/u15/SAK.COM create mode 100644 Images/Source/hd0/s0/u15/SAK.MAC create mode 100644 Images/Source/hd0/s0/u15/SETFILE.COM create mode 100644 Images/Source/hd0/s0/u15/SETFILE.MAC create mode 100644 Images/Source/hd0/s0/u15/SF.COM create mode 100644 Images/Source/hd0/s0/u15/SF.Z80 create mode 100644 Images/Source/hd0/s0/u15/SH.COM create mode 100644 Images/Source/hd0/s0/u15/SH.HLP create mode 100644 Images/Source/hd0/s0/u15/SH.MAC create mode 100644 Images/Source/hd0/s0/u15/SH11.LBR create mode 100644 Images/Source/hd0/s0/u15/SHCTRL.COM create mode 100644 Images/Source/hd0/s0/u15/SHCTRL.MAC create mode 100644 Images/Source/hd0/s0/u15/SHDEFINE.COM create mode 100644 Images/Source/hd0/s0/u15/SHDEFINE.MAC create mode 100644 Images/Source/hd0/s0/u15/SHFILE.COM create mode 100644 Images/Source/hd0/s0/u15/SHFILE.MAC create mode 100644 Images/Source/hd0/s0/u15/SHOW.COM create mode 100644 Images/Source/hd0/s0/u15/SHOW.MAC create mode 100644 Images/Source/hd0/s0/u15/SHSET.COM create mode 100644 Images/Source/hd0/s0/u15/SHSET.MAC create mode 100644 Images/Source/hd0/s0/u15/SHUTILS2.LBR create mode 100644 Images/Source/hd0/s0/u15/SHVAR.COM create mode 100644 Images/Source/hd0/s0/u15/SHVAR.MAC create mode 100644 Images/Source/hd0/s0/u15/SHVAR11.LBR create mode 100644 Images/Source/hd0/s0/u15/SUB.COM create mode 100644 Images/Source/hd0/s0/u15/SUB.MAC create mode 100644 Images/Source/hd0/s0/u15/SYSENV.AQM create mode 100644 Images/Source/hd0/s0/u15/SYSENV.ASM create mode 100644 Images/Source/hd0/s0/u15/SYSENV.LIB create mode 100644 Images/Source/hd0/s0/u15/SYSFCP.AQM create mode 100644 Images/Source/hd0/s0/u15/SYSFCP.ASM create mode 100644 Images/Source/hd0/s0/u15/SYSFCP1.LIB create mode 100644 Images/Source/hd0/s0/u15/SYSFCP11.LBR create mode 100644 Images/Source/hd0/s0/u15/SYSFCP2.LIB create mode 100644 Images/Source/hd0/s0/u15/SYSIOP.AQM create mode 100644 Images/Source/hd0/s0/u15/SYSIOP.ASM create mode 100644 Images/Source/hd0/s0/u15/SYSNDR.AQM create mode 100644 Images/Source/hd0/s0/u15/SYSNDR.ASM create mode 100644 Images/Source/hd0/s0/u15/SYSNDR.LIB create mode 100644 Images/Source/hd0/s0/u15/SYSRCP.AQM create mode 100644 Images/Source/hd0/s0/u15/SYSRCP.ASM create mode 100644 Images/Source/hd0/s0/u15/SYSRCP.HLP create mode 100644 Images/Source/hd0/s0/u15/SYSRCP1.LIB create mode 100644 Images/Source/hd0/s0/u15/SYSRCP11.LBR create mode 100644 Images/Source/hd0/s0/u15/SYSRCP2.LIB create mode 100644 Images/Source/hd0/s0/u15/SYSRCP3.LIB create mode 100644 Images/Source/hd0/s0/u15/SYSRCP4.LIB create mode 100644 Images/Source/hd0/s0/u15/T3M-HI2.Z80 create mode 100644 Images/Source/hd0/s0/u15/T3T-24-1.Z80 create mode 100644 Images/Source/hd0/s0/u15/TCCHECK.COM create mode 100644 Images/Source/hd0/s0/u15/TCCHECK.MAC create mode 100644 Images/Source/hd0/s0/u15/TCMAKE.COM create mode 100644 Images/Source/hd0/s0/u15/TCMAKE.MAC create mode 100644 Images/Source/hd0/s0/u15/TCSEL32.COM create mode 100644 Images/Source/hd0/s0/u15/TCSELECT.COM create mode 100644 Images/Source/hd0/s0/u15/TCSELECT.MAC create mode 100644 Images/Source/hd0/s0/u15/TCSRC14.COM create mode 100644 Images/Source/hd0/s0/u15/TCVIEW.COM create mode 100644 Images/Source/hd0/s0/u15/TCVIEW20.COM create mode 100644 Images/Source/hd0/s0/u15/UNERASE.COM create mode 100644 Images/Source/hd0/s0/u15/UNERASE.MAC create mode 100644 Images/Source/hd0/s0/u15/VF-BOX11.LBR create mode 100644 Images/Source/hd0/s0/u15/VF41.IQF create mode 100644 Images/Source/hd0/s0/u15/VF41H.LBR create mode 100644 Images/Source/hd0/s0/u15/VF42A.LBR create mode 100644 Images/Source/hd0/s0/u15/VFILER.COM create mode 100644 Images/Source/hd0/s0/u15/VFILER.HLP create mode 100644 Images/Source/hd0/s0/u15/VFILER.MAC create mode 100644 Images/Source/hd0/s0/u15/VFILR4-1.LBR create mode 100644 Images/Source/hd0/s0/u15/VFILR4-2.LBR create mode 100644 Images/Source/hd0/s0/u15/VMENU.COM create mode 100644 Images/Source/hd0/s0/u15/VMENU.HLP create mode 100644 Images/Source/hd0/s0/u15/VMENU.MAC create mode 100644 Images/Source/hd0/s0/u15/VMENU24.LBR create mode 100644 Images/Source/hd0/s0/u15/VMENUCK.COM create mode 100644 Images/Source/hd0/s0/u15/VMENUCK.MAC create mode 100644 Images/Source/hd0/s0/u15/VMENUFUN.LBR create mode 100644 Images/Source/hd0/s0/u15/WHEEL.COM create mode 100644 Images/Source/hd0/s0/u15/WHEEL.MAC create mode 100644 Images/Source/hd0/s0/u15/WILDCAT.TXT create mode 100644 Images/Source/hd0/s0/u15/WYSE.DPG create mode 100644 Images/Source/hd0/s0/u15/XD.COM create mode 100644 Images/Source/hd0/s0/u15/XD.MAC create mode 100644 Images/Source/hd0/s0/u15/XDIR.COM create mode 100644 Images/Source/hd0/s0/u15/XDIR.MAC create mode 100644 Images/Source/hd0/s0/u15/Z3BASE1.LIB create mode 100644 Images/Source/hd0/s0/u15/Z3BASE2.LIB create mode 100644 Images/Source/hd0/s0/u15/Z3FILES.PH1 create mode 100644 Images/Source/hd0/s0/u15/Z3FILES.PH2 create mode 100644 Images/Source/hd0/s0/u15/Z3FILES.PQ2 create mode 100644 Images/Source/hd0/s0/u15/Z3FILES2.PH2 create mode 100644 Images/Source/hd0/s0/u15/Z3FILES2.PQ2 create mode 100644 Images/Source/hd0/s0/u15/Z3HDR1.LIB create mode 100644 Images/Source/hd0/s0/u15/Z3HDR2.LIB create mode 100644 Images/Source/hd0/s0/u15/Z3LDRBUG.LBR create mode 100644 Images/Source/hd0/s0/u15/Z3LOC.COM create mode 100644 Images/Source/hd0/s0/u15/Z3LOC.MAC create mode 100644 Images/Source/hd0/s0/u15/Z3LOC11.LBR create mode 100644 Images/Source/hd0/s0/u15/Z3RES.HLP create mode 100644 Images/Source/hd0/s0/u15/Z3TCAP.AQM create mode 100644 Images/Source/hd0/s0/u15/Z3TCAP.ASM create mode 100644 Images/Source/hd0/s0/u15/Z3TCAP.HLP create mode 100644 Images/Source/hd0/s0/u15/Z3TCAP.TCP create mode 100644 Images/Source/hd0/s0/u15/Z3TCAP.TQP create mode 100644 Images/Source/hd0/s0/u15/Z3TCAP22.LBR create mode 100644 Images/Source/hd0/s0/u15/Z3UTIL1.HLP create mode 100644 Images/Source/hd0/s0/u15/Z3UTIL2.HLP create mode 100644 Images/Source/hd0/s0/u15/Z3UTIL3.HLP create mode 100644 Images/Source/hd0/s0/u15/ZCPR3.AQM create mode 100644 Images/Source/hd0/s0/u15/ZCPR3.ASM create mode 100644 Images/Source/hd0/s0/u15/ZCPR3.HLP create mode 100644 Images/Source/hd0/s0/u15/ZCPR3.INS create mode 100644 Images/Source/hd0/s0/u15/ZCPR3.IQS create mode 100644 Images/Source/hd0/s0/u15/ZCPR3DIR.BQG create mode 100644 Images/Source/hd0/s0/u15/ZCPR3DIR.BUG create mode 100644 Images/Source/hd0/s0/u15/ZEX.AQM create mode 100644 Images/Source/hd0/s0/u15/ZEX.ASM create mode 100644 Images/Source/hd0/s0/u15/ZEX.COM create mode 100644 Images/Source/hd0/s0/u15/ZEX.ZEX create mode 100644 Images/Source/hd0/s0/u15/ZEX2.COM create mode 100644 Images/Source/hd0/s0/u15/ZEX31A.COM create mode 100644 Images/Source/hd0/s0/u15/ZGOLF.COM create mode 100644 Images/Source/hd0/s0/u15/ZMLIB.COM create mode 100644 Images/Source/hd0/s0/u15/ZSYSTEM.INS create mode 100644 Images/Source/hd0/s0/u15/xzrl.com create mode 100644 Images/Source/hd0/s0/u15/xzrl.doc create mode 100644 Images/Source/hd0/s0/u2/ANAGRAM.COM create mode 100644 Images/Source/hd0/s0/u2/CHAPTER1.DOC create mode 100644 Images/Source/hd0/s0/u2/CHAPTER2.DOC create mode 100644 Images/Source/hd0/s0/u2/CHAPTER3.DOC create mode 100644 Images/Source/hd0/s0/u2/DIARY.DOC create mode 100644 Images/Source/hd0/s0/u2/DICTSORT.COM create mode 100644 Images/Source/hd0/s0/u2/FIND.COM create mode 100644 Images/Source/hd0/s0/u2/HOMONYMS.TXT create mode 100644 Images/Source/hd0/s0/u2/HYEXCEPT.TXT create mode 100644 Images/Source/hd0/s0/u2/HYPHEN.COM create mode 100644 Images/Source/hd0/s0/u2/LOOKUP.COM create mode 100644 Images/Source/hd0/s0/u2/MAINDICT.CMP create mode 100644 Images/Source/hd0/s0/u2/MARKFIX.COM create mode 100644 Images/Source/hd0/s0/u2/MOVEPRN.COM create mode 100644 Images/Source/hd0/s0/u2/PATCH.LST create mode 100644 Images/Source/hd0/s0/u2/PRINT.TST create mode 100644 Images/Source/hd0/s0/u2/READ.ME create mode 100644 Images/Source/hd0/s0/u2/README create mode 100644 Images/Source/hd0/s0/u2/REVIEW.COM create mode 100644 Images/Source/hd0/s0/u2/RULER.DOC create mode 100644 Images/Source/hd0/s0/u2/SAMPLE1.DOC create mode 100644 Images/Source/hd0/s0/u2/SAMPLE2.DOC create mode 100644 Images/Source/hd0/s0/u2/SAMPLE3.DOC create mode 100644 Images/Source/hd0/s0/u2/SPELL.COM create mode 100644 Images/Source/hd0/s0/u2/TABLE.DOC create mode 100644 Images/Source/hd0/s0/u2/TEXT.DOC create mode 100644 Images/Source/hd0/s0/u2/TW.COM create mode 100644 Images/Source/hd0/s0/u2/WC.COM create mode 100644 Images/Source/hd0/s0/u2/WINSTALL.COM create mode 100644 Images/Source/hd0/s0/u2/WORDFREQ.COM create mode 100644 Images/Source/hd0/s0/u2/WS.COM create mode 100644 Images/Source/hd0/s0/u2/WS.OVR create mode 100644 Images/Source/hd0/s0/u2/WSCHANGE.COM create mode 100644 Images/Source/hd0/s0/u2/WSCHANGE.OVR create mode 100644 Images/Source/hd0/s0/u2/WSCHHELP.OVR create mode 100644 Images/Source/hd0/s0/u2/WSHELP.OVR create mode 100644 Images/Source/hd0/s0/u2/WSINDEX.XCL create mode 100644 Images/Source/hd0/s0/u2/WSMSGS.OVR create mode 100644 Images/Source/hd0/s0/u2/WSPRINT.OVR create mode 100644 Images/Source/hd0/s0/u2/WSSHORT.OVR create mode 100644 Images/Source/hd0/s1/u0/ASM.COM create mode 100644 Images/Source/hd0/s1/u0/CLOCKS.DAT create mode 100644 Images/Source/hd0/s1/u0/CLRDIR.COM create mode 100644 Images/Source/hd0/s1/u0/COPY.CFG create mode 100644 Images/Source/hd0/s1/u0/COPY.COM create mode 100644 Images/Source/hd0/s1/u0/COPY.UPD create mode 100644 Images/Source/hd0/s1/u0/CR.COM create mode 100644 Images/Source/hd0/s1/u0/DATSWEEP.COM create mode 100644 Images/Source/hd0/s1/u0/DDT.COM create mode 100644 Images/Source/hd0/s1/u0/DDTZ.COM create mode 100644 Images/Source/hd0/s1/u0/DDTZ.DOC create mode 100644 Images/Source/hd0/s1/u0/DIF.COM create mode 100644 Images/Source/hd0/s1/u0/DSCONFIG.COM create mode 100644 Images/Source/hd0/s1/u0/DUMP.COM create mode 100644 Images/Source/hd0/s1/u0/ED.COM create mode 100644 Images/Source/hd0/s1/u0/FA16.CFG create mode 100644 Images/Source/hd0/s1/u0/FA16.DOC create mode 100644 Images/Source/hd0/s1/u0/FA16A.FOR create mode 100644 Images/Source/hd0/s1/u0/FA16CFG.TXT create mode 100644 Images/Source/hd0/s1/u0/FILEATTR.COM create mode 100644 Images/Source/hd0/s1/u0/FILEDATE.CFG create mode 100644 Images/Source/hd0/s1/u0/FILEDATE.COM create mode 100644 Images/Source/hd0/s1/u0/INITDIR.CFG create mode 100644 Images/Source/hd0/s1/u0/INITDIR.COM create mode 100644 Images/Source/hd0/s1/u0/LBREXT.COM create mode 100644 Images/Source/hd0/s1/u0/LDDS.COM create mode 100644 Images/Source/hd0/s1/u0/LDP2D.COM create mode 100644 Images/Source/hd0/s1/u0/LIB.COM create mode 100644 Images/Source/hd0/s1/u0/LINK.COM create mode 100644 Images/Source/hd0/s1/u0/LOAD.COM create mode 100644 Images/Source/hd0/s1/u0/MAC.COM create mode 100644 Images/Source/hd0/s1/u0/MBASIC.COM create mode 100644 Images/Source/hd0/s1/u0/NULU.COM create mode 100644 Images/Source/hd0/s1/u0/PIP.COM create mode 100644 Images/Source/hd0/s1/u0/PUTBG.COM create mode 100644 Images/Source/hd0/s1/u0/PUTDS.COM create mode 100644 Images/Source/hd0/s1/u0/RELOG.COM create mode 100644 Images/Source/hd0/s1/u0/RMAC.COM create mode 100644 Images/Source/hd0/s1/u0/SETTERM.COM create mode 100644 Images/Source/hd0/s1/u0/SETUPZST.COM create mode 100644 Images/Source/hd0/s1/u0/SID.COM create mode 100644 Images/Source/hd0/s1/u0/STAMPS.DAT create mode 100644 Images/Source/hd0/s1/u0/STAT.COM create mode 100644 Images/Source/hd0/s1/u0/SUBMIT.COM create mode 100644 Images/Source/hd0/s1/u0/SUPERSUB.COM create mode 100644 Images/Source/hd0/s1/u0/TD.CFG create mode 100644 Images/Source/hd0/s1/u0/TD.COM create mode 100644 Images/Source/hd0/s1/u0/TERMBASE.DAT create mode 100644 Images/Source/hd0/s1/u0/TESTCLOK.COM create mode 100644 Images/Source/hd0/s1/u0/UNARC.COM create mode 100644 Images/Source/hd0/s1/u0/UNCR.COM create mode 100644 Images/Source/hd0/s1/u0/UNZIP.COM create mode 100644 Images/Source/hd0/s1/u0/XSUB.COM create mode 100644 Images/Source/hd0/s1/u0/ZAP.COM create mode 100644 Images/Source/hd0/s1/u0/ZCAL.COM create mode 100644 Images/Source/hd0/s1/u0/ZCNFG.COM create mode 100644 Images/Source/hd0/s1/u0/ZCNFG24.CFG create mode 100644 Images/Source/hd0/s1/u0/ZDE.COM create mode 100644 Images/Source/hd0/s1/u0/ZDE40.COM create mode 100644 Images/Source/hd0/s1/u0/ZDENST.COM create mode 100644 Images/Source/hd0/s1/u0/ZPATH.COM create mode 100644 Images/Source/hd0/s1/u0/ZSCONFIG.COM create mode 100644 Images/Source/hd0/s1/u0/ZSVSTAMP.COM create mode 100644 Images/Source/hd0/s1/u0/ZSVSTAMP.DOC create mode 100644 Images/Source/hd0/s1/u0/ZXD.CFG create mode 100644 Images/Source/hd0/s1/u0/ZXD.COM create mode 100644 Images/Source/hd1/s0/u0/TEST.TXT create mode 100644 Images/cpmtools.cmd create mode 100644 Images/diskdefs rename Source/BIOS/{ => Old}/bioshdr.inc (100%) create mode 100644 Source/BIOS/hbfill.asm create mode 100644 Source/BIOS/loader.asm create mode 100644 Source/BPBIOS/-readme create mode 100644 Source/BPBIOS/@WBW BPBIOS Errata.rtf create mode 100644 Source/BPBIOS/@WBW Z3ENV.txt create mode 100644 Source/BPBIOS/Build.cmd create mode 100644 Source/BPBIOS/Clean.cmd create mode 100644 Source/BPBIOS/ZCPR33/Build.cmd create mode 100644 Source/BPBIOS/ZCPR33/Clean.cmd create mode 100644 Source/BPBIOS/ZCPR33/crc.crc create mode 100644 Source/BPBIOS/ZCPR33/z33defn.lib create mode 100644 Source/BPBIOS/ZCPR33/z33hdr.lib create mode 100644 Source/BPBIOS/ZCPR33/z33hdr.lib.sav create mode 100644 Source/BPBIOS/ZCPR33/z33hdr1.lib create mode 100644 Source/BPBIOS/ZCPR33/z33hdr2.lib create mode 100644 Source/BPBIOS/ZCPR33/z33hdr3.lib create mode 100644 Source/BPBIOS/ZCPR33/z33hdr4.lib create mode 100644 Source/BPBIOS/ZCPR33/z33hdr5.lib create mode 100644 Source/BPBIOS/ZCPR33/z33mac.lib create mode 100644 Source/BPBIOS/ZCPR33/z3base.lib create mode 100644 Source/BPBIOS/ZCPR33/z3base.lib.sav create mode 100644 Source/BPBIOS/ZCPR33/zcpr33.bin create mode 100644 Source/BPBIOS/ZCPR33/zcpr33.z80 create mode 100644 Source/BPBIOS/ZCPR33/zcpr33.z80.sav create mode 100644 Source/BPBIOS/bank-dx.cnf create mode 100644 Source/BPBIOS/boot-dx.cnf create mode 100644 Source/BPBIOS/bp33.dat create mode 100644 Source/BPBIOS/bp33bnk.dat create mode 100644 Source/BPBIOS/bp33bnkx.dat create mode 100644 Source/BPBIOS/bp33n.dat create mode 100644 Source/BPBIOS/bp33nbnk.dat create mode 100644 Source/BPBIOS/bp33t.dat create mode 100644 Source/BPBIOS/bp33tbnk.dat create mode 100644 Source/BPBIOS/bp33x.dat create mode 100644 Source/BPBIOS/bp33xbnk.dat create mode 100644 Source/BPBIOS/bp34.dat create mode 100644 Source/BPBIOS/bp34bnk.dat create mode 100644 Source/BPBIOS/bp34n.dat create mode 100644 Source/BPBIOS/bp34nbnk.dat create mode 100644 Source/BPBIOS/bp34t.dat create mode 100644 Source/BPBIOS/bp34tbnk.dat create mode 100644 Source/BPBIOS/bp34x.dat create mode 100644 Source/BPBIOS/bp34xbnk.dat create mode 100644 Source/BPBIOS/bp41.dat create mode 100644 Source/BPBIOS/bp41n.dat create mode 100644 Source/BPBIOS/bp41t.dat create mode 100644 Source/BPBIOS/bp41x.dat create mode 100644 Source/BPBIOS/bpbio-dx.z80 create mode 100644 Source/BPBIOS/bpbld1.rsp create mode 100644 Source/BPBIOS/bpbld2.rsp create mode 100644 Source/BPBIOS/bpbldzx.cmd create mode 100644 Source/BPBIOS/bpbuild.com create mode 100644 Source/BPBIOS/byteio.z80 create mode 100644 Source/BPBIOS/cboot-dx.z80 create mode 100644 Source/BPBIOS/deblock.z80 create mode 100644 Source/BPBIOS/def-dx.lib create mode 100644 Source/BPBIOS/def-ww-mk4.lib create mode 100644 Source/BPBIOS/def-ww-sim.lib create mode 100644 Source/BPBIOS/def-ww.lib create mode 100644 Source/BPBIOS/def-z33.lib create mode 100644 Source/BPBIOS/def-z33bnk.lib create mode 100644 Source/BPBIOS/def-z34.lib create mode 100644 Source/BPBIOS/def-z34bnk.lib create mode 100644 Source/BPBIOS/def-z41.lib create mode 100644 Source/BPBIOS/defbank create mode 100644 Source/BPBIOS/defboot create mode 100644 Source/BPBIOS/diskdefs create mode 100644 Source/BPBIOS/dpb-8.lib create mode 100644 Source/BPBIOS/dpb-h.lib create mode 100644 Source/BPBIOS/dpb.lib create mode 100644 Source/BPBIOS/dpb2.lib create mode 100644 Source/BPBIOS/dpbhd-dx.lib create mode 100644 Source/BPBIOS/dpbhd-ww.lib create mode 100644 Source/BPBIOS/dpbm-dx.lib create mode 100644 Source/BPBIOS/dpbram.lib create mode 100644 Source/BPBIOS/dph.lib create mode 100644 Source/BPBIOS/dphhd.lib create mode 100644 Source/BPBIOS/dphm.lib create mode 100644 Source/BPBIOS/fdc-dx.z80 create mode 100644 Source/BPBIOS/floppy.z80 create mode 100644 Source/BPBIOS/forlib.lib create mode 100644 Source/BPBIOS/hard-dx.z80 create mode 100644 Source/BPBIOS/hardhb.z80 create mode 100644 Source/BPBIOS/hardide.z80 create mode 100644 Source/BPBIOS/hardsim.z80 create mode 100644 Source/BPBIOS/hbios.z80 create mode 100644 Source/BPBIOS/ibmv-dx.z80 create mode 100644 Source/BPBIOS/ibmv-ww.z80 create mode 100644 Source/BPBIOS/icfg-dx.z80 create mode 100644 Source/BPBIOS/icfg-z33.z80 create mode 100644 Source/BPBIOS/icfg-z34.z80 create mode 100644 Source/BPBIOS/icfg-z41.z80 create mode 100644 Source/BPBIOS/iio-dx.z80 create mode 100644 Source/BPBIOS/license.txt create mode 100644 Source/BPBIOS/movp112.com create mode 100644 Source/BPBIOS/myterm.z3t create mode 100644 Source/BPBIOS/p112boot.doc create mode 100644 Source/BPBIOS/ramd-dx.z80 create mode 100644 Source/BPBIOS/sectran.z80 create mode 100644 Source/BPBIOS/selflp1.z80 create mode 100644 Source/BPBIOS/selflp2.z80 create mode 100644 Source/BPBIOS/selrwd.z80 create mode 100644 Source/BPBIOS/tim-dx.z80 create mode 100644 Source/BPBIOS/tim-ww.z80 create mode 100644 Source/BPBIOS/util.z80 create mode 100644 Source/BPBIOS/wboot-dx.z80 create mode 100644 Source/BPBIOS/z33.zex create mode 100644 Source/BPBIOS/z34.rel create mode 100644 Source/BPBIOS/z34.zex create mode 100644 Source/BPBIOS/z3base.lib create mode 100644 Source/BPBIOS/z41.zex create mode 100644 Source/BPBIOS/z41.zrl create mode 100644 Source/BPBIOS/zcpr33.bin create mode 100644 Source/BPBIOS/zcpr33.rel create mode 100644 Source/BPBIOS/zcpr33.rel.sav create mode 100644 Source/BPBIOS/zs203.zrl create mode 100644 Source/BPBIOS/zsdos.zrl create mode 100644 Tools/Win32 Disk Imager/QtCore4.dll create mode 100644 Tools/Win32 Disk Imager/QtGui4.dll create mode 100644 Tools/Win32 Disk Imager/Win32DiskImager.exe create mode 100644 Tools/Win32 Disk Imager/libgcc_s_dw2-1.dll create mode 100644 Tools/Win32 Disk Imager/libstdc++-6.dll create mode 100644 Tools/Win32 Disk Imager/mingwm10.dll create mode 100644 Tools/rawwritewin/COPYING create mode 100644 Tools/rawwritewin/changes.txt create mode 100644 Tools/rawwritewin/diskio.dll create mode 100644 Tools/rawwritewin/rawwritewin.exe create mode 100644 Tools/rawwritewin/readme.txt diff --git a/BuildCommon.cmd b/BuildCommon.cmd index efe4c6d8..54811f78 100644 --- a/BuildCommon.cmd +++ b/BuildCommon.cmd @@ -1,4 +1,4 @@ @echo off setlocal -cd Source -call BuildCommon %* + +pushd Source && call BuildCommon && popd \ No newline at end of file diff --git a/BuildImages.cmd b/BuildImages.cmd new file mode 100644 index 00000000..b1df14c2 --- /dev/null +++ b/BuildImages.cmd @@ -0,0 +1,4 @@ +@echo off +setlocal + +pushd Images && Build && popd \ No newline at end of file diff --git a/Doc/ChangeLog.txt b/Doc/ChangeLog.txt index 31318c29..ffdb3fcb 100644 --- a/Doc/ChangeLog.txt +++ b/Doc/ChangeLog.txt @@ -1,3 +1,6 @@ +Version 2.7.1 +- WBW: Support loading from image file (UNA FSFAT) + Version 2.7.0 ------------- - WBW: Memory page reorganization diff --git a/Images/Blank.tmp b/Images/Blank.tmp new file mode 100644 index 00000000..c2b5240e --- /dev/null +++ b/Images/Blank.tmp @@ -0,0 +1 @@ +åååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååååå \ No newline at end of file diff --git a/Images/Build.cmd b/Images/Build.cmd new file mode 100644 index 00000000..4d38b33c --- /dev/null +++ b/Images/Build.cmd @@ -0,0 +1,15 @@ +@echo off +setlocal + +echo : +echo : Cleaning... +echo : +call Clean.cmd +echo : +echo : Building Floppy Disk Images... +echo : +call BuildFD.cmd +echo : +echo : Building Hard Disk Images... +echo : +call BuildHD.cmd diff --git a/Images/BuildFD.cmd b/Images/BuildFD.cmd new file mode 100644 index 00000000..d04878d9 --- /dev/null +++ b/Images/BuildFD.cmd @@ -0,0 +1 @@ +@PowerShell .\BuildFD.ps1 %* \ No newline at end of file diff --git a/Images/BuildFD.ps1 b/Images/BuildFD.ps1 new file mode 100644 index 00000000..ddb4f8e2 --- /dev/null +++ b/Images/BuildFD.ps1 @@ -0,0 +1,33 @@ +$ErrorAction = 'Stop' + +$CpmToolsPath = '..\Tools\cpmtools' + +$env:PATH = $CpmToolsPath + ';' + $env:PATH + +$Blank = ([byte[]](0xE5) * 1440KB) + +"Creating work file..." +if (!(Test-Path('Blank.tmp'))) {Set-Content -Value $Blank -Encoding byte -Path 'Blank.tmp'} + +"Creating floppy disk images..." +for ($Dsk=0; $Dsk -lt 2; $Dsk++) +{ + "Generating Floppy Disk ${Dsk}..." + copy Blank.tmp fd${Dsk}.img + for ($Usr=0; $Usr -lt 16; $Usr++) + { + if (Test-Path ("Source/fd${Dsk}/u${Usr}/*")) + { + $Cmd = "cpmcp -f wbw_fd144 fd${Dsk}.img Source/fd${Dsk}/u${Usr}/*.* ${Usr}:" + $Cmd + Invoke-Expression $Cmd + } + } +} + +"Moving images into output directory..." +&$env:COMSPEC /c move fd*.img ..\Output\ + +Remove-Item *.tmp + +return \ No newline at end of file diff --git a/Images/BuildHD.cmd b/Images/BuildHD.cmd new file mode 100644 index 00000000..8352803d --- /dev/null +++ b/Images/BuildHD.cmd @@ -0,0 +1 @@ +@PowerShell .\BuildHD.ps1 %* \ No newline at end of file diff --git a/Images/BuildHD.ps1 b/Images/BuildHD.ps1 new file mode 100644 index 00000000..792378d1 --- /dev/null +++ b/Images/BuildHD.ps1 @@ -0,0 +1,39 @@ +$ErrorAction = 'Stop' + +$CpmToolsPath = '../Tools/cpmtools' + +$env:PATH = $CpmToolsPath + ';' + $env:PATH + +$Blank = ([byte[]](0xE5) * (128KB * 65)) + +"Creating work file..." +if (!(Test-Path('Blank.tmp'))) {Set-Content -Value $Blank -Encoding byte -Path 'Blank.tmp'} + +"Creating hard disk images..." +for ($Dsk=0; $Dsk -lt 2; $Dsk++) +{ + "Generating Hard Disk ${Dsk}..." + for ($Slice=0; $Slice -lt 4; $Slice++) + { + "Adding files to slice ${Slice}..." + copy Blank.tmp slice${Slice}.tmp + for ($Usr=0; $Usr -lt 16; $Usr++) + { + if (Test-Path ("Source/hd${Dsk}/s${Slice}/u${Usr}/*")) + { + $Cmd = "cpmcp -f wbw_hd0 slice${Slice}.tmp Source/hd${Dsk}/s${Slice}/u${Usr}/*.* ${Usr}:" + $Cmd + Invoke-Expression $Cmd + } + } + } + + "Combining slices into final disk image hd${Dsk}..." + &$env:COMSPEC /c copy /b slice*.tmp ..\Output\hd${Dsk}.img + + Remove-Item slice*.tmp +} + +Remove-Item *.tmp + +return \ No newline at end of file diff --git a/Images/Clean.cmd b/Images/Clean.cmd new file mode 100644 index 00000000..21d05a7a --- /dev/null +++ b/Images/Clean.cmd @@ -0,0 +1,2 @@ +@echo off +if exist *.tmp del *.tmp /Q diff --git a/Images/FixPowerShell.cmd b/Images/FixPowerShell.cmd new file mode 100644 index 00000000..d0b07aea --- /dev/null +++ b/Images/FixPowerShell.cmd @@ -0,0 +1,29 @@ +@echo off +echo By default, PowerShell is configured to block the +echo execution of unsigned scripts on your local system. +echo This command file will attempt to modify your +echo PowerShell ExecutionPolicy to "RemoteSigned" +echo which means that local scripts can be run without +echo being signed. This is required to use the RomWBW +echo build process. +echo. +PowerShell -command Write-Host "Your PowerShell ExecutionPolicy is currently set to: `'(Get-ExecutionPolicy)`'" +echo. +echo In order to modify the ExecutionPolicy, this command +echo file *MUST* be run with administrator privileges. +echo Generally, this means you want to right-click the +echo command file called FixPowerShell.cmd and choose +echo "Run as Administrator". If you attempt to continue +echo without administrator privileges, the modification +echo will fail with an error message, but no harm is done. +echo. +choice /m "Do you want to proceed" +if errorlevel 2 goto :eof +echo. +echo Attempting to change Execution Policy... +echo. +PowerShell Set-ExecutionPolicy RemoteSigned +echo. +PowerShell -command Write-Host "Your new PowerShell ExecutionPolicy is now set to: `'(Get-ExecutionPolicy)`'" +echo. +pause \ No newline at end of file diff --git a/Images/ReadMe.txt b/Images/ReadMe.txt new file mode 100644 index 00000000..5ea53ad5 --- /dev/null +++ b/Images/ReadMe.txt @@ -0,0 +1,246 @@ +************************************************************ +*** I m a g e M a k e r *** +*** *** +*** Disk Image Generator for RomWBW *** +************************************************************ + +Builders: Wayne Warthen (wwarthen@gmail.com) + +Updated: 2014-02-16 +Version: 2.5.3 + +This is a supplemental toolset for RomWBW that builds +floppy and/or hard disk images that can be used on +RomWBW by writing the image to a floppy or hard +disk (include CF and SD cards). + +In summary, CP/M files are placed inside of a pre-defined +Windows directory structure. A script is then run to +create floppy and/or hard disk images from the directory +tree contents. The resultant images may be copied directly +to floppy or hard disk media or used for SIMH emulator +disk images. + +System Requirements +------------------- + +This ImageMaker scripts run on Microsoft Windows XP +or greater (32 and 64 bit variants of Windows are +fine). + +Other than the contents of the ImageMaker zip archive, +you will need to have Microsoft PowerShell installed. +All variants of Windows XP and later support PowerShell. +It is included in all versions after Windows XP. If you +are using Windows XP, you will need to download it from +Microsoft and install it (free download). + +By default, PowerShell will not run arbitrary scripts +that are not signed. In order to run the ImageMaker +scripts, you will need to tell PowerShell it is OK +to run run "local" scripts that are not signed. +Right-click the file in the ImageMaker archive +called FixPowerShell and choose "Run as Administrator" +and follow the instructions. + +Preparing the Source Directory Contents +--------------------------------------- + +The ImageMaker script expects your files to be found +in the Source directory inside a specific directory +structure. Note that you will see there are some +CP/M files in the Source directory tree in the +distribution. These are simply test files I used +and have no specific meaing. You will probably want +to replace them with your own files as desired. + +If you look at the Source directory, you will find +4 directories. fd0 and fd1 will contain the files +to be placed in the two floppy images gneerated. +hd0 and hd1 will contain the files to be used +to generate the two hard disk images. There +is nothing magic about the fact that there are +two of each kind of image generated. It just +seemed like a good number to the author. A quick +review of the scripts and you will see it is very +easy to modify the number of images generated if +you want. + +For floppy disks, the structure is: + + fd0 --+--> u0 + +--> u1 + | + +--> u15 + +Above, fd0 refers to the first floppy disk image and +u0...u15 refer to the user areas on the disk. You +place whatever files you want on fd0, user 0 in the +fd0\u0 directory. You will notice that not all of the +u0...u15 directories exist. The script does not care +and treats a non-existent directory as a directory with +no files. The fd1 directory is exactly the same as fd0 -- +it is simply the second floppy image. + +At present, the scripts assume that the floppy media +is 1.44MB. You will need to modify the scripts if you +want to create different media. + +For hard disks, the structure has one more level: + + hd0 --+--> s0 --+--> u0 + | +--> u1 + | | + | +--> u15 + | + +--> s1 --+--> u0 + | +--> u1 + | | + | +--> u15 + | + +--> s2 --+--> u0 + | +--> u1 + | | + | +--> u15 + | + +--> s3 --+--> u0 + +--> u1 + | + +--> u15 + +The above uses the same concept as the floppy disk source +structure, but includes an additional directory layer to +represent the first 4 slices of the hard disk. For most +RomWBW builds, s0-s3 would show up as the first 4 hard +disk drive letters, frequently E: to H:. + +No files should be placed in the first two layers of the +tree (hd0 or s0-s3). All files go into the lowest level +of the tree (u0-u15). As above, empty or non-existent +directories are not a problem for the script. Just fill +in or create the appropriate directories. The only constraint +is the the script will only look for two hard disks (hd0-hd1), +4 slices (s0-s4), and 16 user areas (u0-u15). The +number of hard disks and number of slices could be changed +by modifying the generation scripts. + +Building the Images +------------------- + +The image creation process simply traverses the directory +structures described above and builds a raw image each +floppy disk or hard disk. Note that cpmtools is used +to generate the images and is included in the archive +under the Tools directory. + +The scripts are intended to be run from a command +prompt. Open a command prompt and navigate to the +ImageMaker directory. To build the floppy disk +images (fd0 and fd1), use the command "BuildFD". +To build the hard disk images (hd0, hd1), use the +command "BuildHD". You can use the command +"BuildAll" to build both the floppy and hard +disk images in one run. + +After completion of the script, the resultant image +files are placed in the Output directory with names +such as fd0.img and hd0.img. + +Below is sample output from building the +hard disk images: + + | C:\Users\WWarthen\Projects\N8VEM\Build\ImageMaker>BuildHD + | Creating work file... + | Creating hard disk images... + | Generating Hard Disk 0... + | Adding files to slice 0... + | cpmcp -f n8vem_hd0 slice0.tmp Source/hd0/s0/u0/*.* 0: + | cpmcp -f n8vem_hd0 slice0.tmp Source/hd0/s0/u2/*.* 2: + | Adding files to slice 1... + | cpmcp -f n8vem_hd0 slice1.tmp Source/hd0/s1/u0/*.* 0: + | Adding files to slice 2... + | Adding files to slice 3... + | Combining slices into final disk image hd0... + | slice0.tmp + | slice1.tmp + | slice2.tmp + | slice3.tmp + | 1 file(s) copied. + | Generating Hard Disk 1... + | Adding files to slice 0... + | Adding files to slice 1... + | Adding files to slice 2... + | Adding files to slice 3... + | Combining slices into final disk image hd1... + | slice0.tmp + | slice1.tmp + | slice2.tmp + | slice3.tmp + | 1 file(s) copied. + | + | C:\Users\WWarthen\Projects\N8VEM\Build\ImageMaker> + +Be aware that the script always builds the image file +from scratch. It will not update the previous contents. +Any contents of a pre-existing image file will be +permanently destroyed. + +Installing Images +----------------- + +First of all, a MAJOR WARNING!!!! The tools described +below are quite capable of obliterating your running +Windows system drive. Use with extreme caution and +make sure you have backups. + +To install a floppy image on floppy media, you can use +the tool called RaWriteWin. This tool is included in the +Tools directory of the distribution. +This tool will write your floppy image (fd0.img or fd1.img) +to a floppy disk using a raw block transfer. The tool is +GUI based and it's operation is self explanatory. + +To install a hard disk image on a CF card or SD card, you +must have the appropriate media card slot on your computer. +If you do, you can use the tool called Win32 Disk Imager. +This tool is also included in the Tools directory of the +distribution. This tool will write your hard disk +image (hd0.img or hd1.img) to the designated media +card. This tool is also GUI based and self explanatory. + +Use of the SIMH emulator is outside of the scope of this +document. However, if you use SIMH, you will find that +you can attach the hard disk images to the emulator with +lines such as the following in your SIMH configuration +file: + + | attach hdsk0 hd0.img + | set hdsk0 format=HDSK + | set hdsk0 geom=T:520/N:256/S:512 + | set hdsk0 wrtenb + +Making Disk Images Bootable +--------------------------- + +The current generation of these scripts does not make +the resultant media bootable. This is primarily because +there are multiple choices for what you can put on the +boot tracks of the media and that is a choice best left +to the user. + +The simplest way to make a resultant image bootable is +to do it from your running CP/M system. Boot your +system using the ROM selection, then use the COPYSYS +command to make the desired drive bootable. + +You would use a command like the following to make +drive C bootable. + + | B>COPYSYS C:=CPM.SYS + +Notes +----- + +I realize these instructions are very minimal. I am happy to answer +questions. You will find the Google Group 'N8VEM' to be a great +source of information as well. \ No newline at end of file diff --git a/Images/Source/fd0/u0/ASM.COM b/Images/Source/fd0/u0/ASM.COM new file mode 100644 index 0000000000000000000000000000000000000000..a63e5aec663546b7aac7b330a9ebe8be3a46ba33 GIT binary patch literal 8192 zcmeG=e{d65db?{&VB?jvTFcT(mb7az0Tgn8YYb7aK$c`%RF;HfgGo|I+e~OKBqX5| z85;~Fm_l;byKqgKHa{RYy4n~G z`n{D*$jr^%{n=^J%)a-%?|r|&@BPv;it!t%223N05yQ#U#&oQ`qibP!k+|&66)P8u zkyv}ID-;*g(M&Xy4tI#u|JvUtv$ov;{s2?aPixStEK*t2WJ3RBLRU@bWDTOsXo(rc zE$B}3?~@VAbpCFVR66my2|A)Zzn!4+x1(=iZ$;o%1a3v(Rs?QE;8p}~Mc`Hh{x3&B zYGO{0WjC8l*gz@10Zmko*IW%LfhI;7z*kKJK8=-6)oR=9g9W0g}|t)5`BKHeZt z)F{#sGlmQ8YSv^10ooTs(hqe6MVTyR#3Bo!00fT=l&P+aJzpjZENAemHAfkh`+lK^auO^kFuh2N}c1RiLC1lndsTFGEsgBP;uQ>?U+DHOW z!DnFuD?qgR3M=)Mr&ivWLKG)al?^X4xyA_7*uymX7%Z_I$omjnyH+-_@8nSbDP{Cx z!T%z|QI&Xvl?4;fNfZUF#<|kV%xJ+>OV|w5eHgr0ZpUqwRV$)O9A!-Yc&)LFmys)5QYLmY=kLpBV#lUXwI?Gi>5tb$bi+yv+|&6{9?gmBQ}l? z=jB&ThB4GG)7nqfH z7(opVJ*tp&Ce7gMu4B*#ogf^oHkWdlH3xi5e&o2tf1YlT7!1JSDxk{}I(TGlF%$0n zW{3%d0$;BwvHh(XuVle=KuD{~MHx;l=@dhmOtiB#9!-mPi0h$k{Mu4BkrXq@?sPaR zw#DL6F-0Dzi7tYU#M04lS2Dd(%%no$D0?$mBGefbqv>=q{S|aN8j6(B$?mRHcUMX1 zhIFiJmOLCvB$8cXIG)UuRA$&{A|fW+X06-ELS2wj?p0r~T%3`7%s^h(8q{w}7Yt9}L{`zgu#L0Dzo%+l(+z`wXl=i0|X#MA>HiJ$D*AUg{4qnmNF<3sD1ZoFqu!s;=slVd1 zyVOZe^UEJ`fhuqVdi(~5^PGB}LzCQRq9)4M2@0L%@H3ohum)*#rxjGG7Hg0JkO*2J zOV%7H3RVCDgsiXz&e8c18v`+D7Ik-nm7o`BAp-f4bwpxdkk%^4w2F~eIH_76(ehR+ z{yL|wvf}5tF|^96F*3uKF*`YVm98wQK5f<3$=|XD=c4DWT8DhZ3L55d!~k@{O5A9b z-yp^vvucrGwS3$PAzls?WINeU!yw^x<|Fp#paQ zJ2Wr~oPiRGeoXg2*Y{F!B4lfLhX%?bs7M%zimIxFukG>Mw-+DtJ<1)Rof>y}i7jYp zZvk(3XVxJ9ku3*cR*}})u$4g`CbO}#H5nJXLaiuH9ez`v%=&1);iDIR zQ)UH>2eq)p2tJ=rDd63<@$J6H73hi4P-W;o2YSkmERGS|1>2PE$+|b|PSshen&wrU zs=HG6aoq;{!*+JzBLD4+?^qIQ4M(CK@ygfr0 zwD)v%5V}|!n4L~`#k%5Ab9GHE>!DJHHdD2+jZRtSSSSl^VJsDvN{hi_AVsyUeKH%QtJmWr6)##k!m+-6I$DJC#z*glkc;|7I+#LQ1Po=lQj_L!o zG?Q|y5sW-Fca{4nSMB^v`f=T`#mL)vFR$=(c(Zuc{etrOOt|oE!-C`mf79nWSl-MbHzNj=&x!%3r z6Y7Y4bK&A>p|u0boT3DS{E~fK;11Hx)4WgqS34`eW*;7(>{p<3bC7`OPk1t2Zckz-wB6>e-_>r&Isp)e-nNx{6hG(FzCX+aP;Nn z1wy~ZeE{-;7A5!GwjlM=76oRC4G#&@!$LDhQ`Bg#-@duezG3;~Sde;;S`-=dKO{Vt z?0uKf3kMs39XNGDj8>-Dzp@Fp)mDI6U`PYL>ov|Rw17@|Zw@p7S9>PYJn z@+$3I)PlY%l;N4&PVbgo-fhz@=uN_<^MFD44gtvm_(uTXJm>JC9}|MUf7sIhy=?>q z@UboZZ_UC#*wX*THuN2besm8(36WdHU1Qqf(#7IgN8=$!OXF4t*xaDdxY8;AiIaps zuXZ?>Z+1hCLf{ARuN-KpGjPbEF(ZR6{enH@-|GMlMIXq!UHY*pA9O--<=-82X%!a+ zUBG=1cIFm!&K9H(Y7WhH z;iC>+GTQChp&8WOF3l)=T&t46ugwLQNY8=#zqpM8RB15bpU`b@ z<8h3a?{@`LaB0AC9zEj1X?|)>u=`yY_we8j@g)bY;O{uFkwboGAs8h$j2oAVn-)s0 z@f?lAJg(qy1w#^16dT}CF+n$cBmy(BhEY$tv`YDkZjxVK=EamK@ARUySEHeaXsS!= zamg;t1t#gYx%Wj>QxBGbv(R4?f!tpdcO4tKBEpFTYRb|p<+pXg0q7AZ;^g<;J#~~z z3fGrc&^`69*ALZSt+%-yZjXD7`>)*JbbsIdo*P%s%BYaPQ4hIqQNK~&UReowH>msT zN85Y_+#ya5qbKS~7+$Q$f9~)r^v?XqxEO^Q{J9tZ$fGS*H`OC>3Z%Uz;&D$A0xggL zoTtm^aZiEJPeyKLLSHhK$`C}1drIK-dWc?7Y^!yEc%HSF?U1~sL$RLYOIiA-m(6*8}a)QlSvl5vyr29SfM zS2I9cR(F$u%e*BAOHLCtx*;T821roQfRj8}Q~>lO?&eE%LCCI=kOOdu*QAM^UQ+Hw zcR5d09;?UWneSQY33*bU`#cYNdOdqR2Rz^MyyE$uhr|w8|HXrU=Da1Cw4Zvk zmFhCj)ZCF%;*P1MN70))d5Ppx&(U_m@H3B&haqkk31Xfu0mPPoPd!r$b$-iN`M=~N zVu9*rEg-F|tRw^^Lkd3kf{Xe>gi;|fh8+v`Efz+~D0opSq+ta@1l4p_+@;_v9&PT0 zv*Oeo1q>y3vXx2YE6PCf6%T@T+=Kp7oEa^x^F?}DELOkf4TfQf!W#hem!?V;!^&$( z!pX|GOMYCh(%JNWNqQX<%z#M1^gp+)4^9>796ivKSHJHf9=s+> z9No-HEDg6yxU&}h7ihfCTYxKT8N9cSn#2#nz7GY-(cC4kGq3)K7jCEM9dC!&OPiP}m7=KBo@6l{CZV(D0ZeNq&YBaSwD++^Vtx30S%%3)il_0B3)0a9ln+Y?M zwvkpAi+T`mo;-M4dhjH8Qjn6_ElzPL>|q5@uFxXJUGY%x6#d>zvk`+1%=fIH%kQJRGe3$#@BAH6kQRu%i+XZLbRmJmBVRa3&Gd=5RvrSM0)kre4h`RDCsy`8t2BV9W_M5J@+l zBHLf@?|id=7FhH0|@6x{X07JG@i_higWtwKD+o{loygWHB&1)u2wRD{|%zB%aTFs`W zLo>UriqPo>>7M-O0kPi}{cx2n`Z!I7xSK&Bw(LjJ6)e4qrCBV^ zW9c<4<*~Gc`JHbldP8lj(F8T$Q4QKM)w*i7y{DpWFntqV4yYJBq<-@nXRV^uXbdd; zPg9lKO-3seD&5qzDuXDLMw_m)Hr2qS?sA}HTdFw)wmubl74FmPhO!3Dbv9UDTIF4v zq;DqD&(cKYS}2&}ujjv=;@%ofR#j^%+~}U3g6UImr-LDff{8SxvkhgX4pFg{)*97X zX0v4iC{dv_tdKlKZ~U-}hCe#6!e zI2jxkof{U74U0mVFH34W+K0C3TQwo|nF=KZN@Q;JQ$7 RFgWss^26~5s=npH`Zq8hC}98q literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/CR.COM b/Images/Source/fd0/u0/CR.COM new file mode 100644 index 0000000000000000000000000000000000000000..8a824bcc4108a87e72b8e2925f3402628e7f9e60 GIT binary patch literal 6144 zcmaJl3sf7|l`}{hAz7ap#AhB($rB>=fNY@J#-#Hm4H*Kz} z-&j`T=2|)9i+MOtmsZQ5qcDTkIGlJnV}u>gplWT#1$dsl-*JEBNUEc6K$bP`9DJZ zXKHf%Yj(j!FQXDi0io>3lxWX!G_R)NT=5kY5i-S>P-OftEk1}M+(OowMmCzK`(~gd zETs(hPg&7=o$|N=z|C3F@9NZhv29^GJY6n0$^}!oz|4EzK)h|9t1|+1p4&}22`eGi z32HsSadnz<$`+GzJCg9Q)F?Py!F2s?*IllS$=9rVJ^s>PlJVMuT%1 znveil`bjjPn~VM`P07>)8d@hs10WtpDlO;FwNfpqeZ{+A9GI|K_TU`eL-ns=kX0iN02N3 z2vSyAl{L2LVH${}by`X5wt=r~4#mT!5T2vRNfYIq6qV1Qd zV?t8WV?$t>coao{omL}W;Ul9z(8uG-`-aKQVRc~qb6siL?1dB9x&L%#Yu_+Nr0*HV z9O<`_<}UBVCq1!2**leJ`Y}TL)uK{8_oxF+Mvv)&WI~8E`w~rzwl;-Qc>S85m`sq4 zL<56F6FPBnVg+aQma>Ojv?8t4I&p+$8=Iy*+x5UK~RI zO1fX66T)B7aKew7{9mBxf9t=c>sq~L?xp`%z}b`l=>CR)Z?SzzUu1zzv!J41phUwj zQIBT`UFVc2t9QPRR#VP2dO>_0Mc(Z(C>srxg*m0>I%TV&7Y>m`v!BAf1Gm7Q&C8-0 z)s>v)Y6{t_aO&jQ1L`_#B}*^18Q_Axj^rU|dI4`eDGiWu{L1|XCC3nxfpcNb*@FhM z=8T3|XFac+un)@0uwiI{9Qs#v^W_+z0{~t7Kjb-vWG7X`(M8e#O=Wf`j;^NYWL@H@ z+|yhL-@gRhoT3vCjYZT@G7{z27TU_CP6LesJVXQ~h<9VsLj-MApC^9C|fOU2v z#ts38E`foIU6A9-O-xJ{-#~X<{Rjd^nL~X{$T=Y}5FhRvl&?DL89D2!^XCi9MQMJ&fF#O=3=F*>43Skl%Y-n1>|?8UEK~#R)(SYtw&5ra#YU zjI!ynmw@myerk<8#Zj*@2f`VSh+uV{YZlDxXB?ju9bhNrjIfHa!Nq>bCnh5@1j`vG zb$BLBsmZa3Q0)8;?Q*%o5urd`D;Q>mP54t+I0c&V>=L*P|4~Yt>855({HdA^n{jop z%iq%G3;ua*hq#TKaJARJq7%1hGjMTZVQIcdKbyQUAP%vj}G0_ z<@4Ql4PEaGb#-)Nf1neG_If)yKp@QjHg?sj2JgK-?Dh9{dwa2PXGv3SbKzQSEZ7?I zw)#Y?8PZNcDt`gA`1S275c|Em{a6EVUsI>Ar?a^q_mu?pbwaud^;^vizLtQ07vAR$ zdiVM|L411%@A8E@+x=cLrPylDPc6$Q6p)Vz6YTT1bOb_RM!O&H40>Dk_&P%{w=TsO z?+$cy1iIV(tvJ--4Yj58yB*ZJy{p~ViT4I}`EZ~>)B0Ax-s%tS^R+;_+~RF5{4?qn zpf-SJ*c-yPYV$V$reH(R8}eaaPdibxHRXPdS_#z3U`ty&IO}>T4P;eIM;FL#=nZxH z_NLYpKn8`#emc4KJa=+C1_kl}K$U&@@0s5t(wH^AYV}F}FWktsQSOsdoxS$q0=3 z|B>z_vf5Y~Y;gg|UXqpdW{6cf$jrmp(aY@Y1(~Q%QyfDfWvdw!mp>AX)VbqjdR1R) z;oi(5h95yNS6x?@Cav@Q6rCRQJdcV@bpLOJygBFlMsk0%oCOrR%eAfVxL}@haqk=H zba>>5*|g_DB<9ebgGl6Q&kvD^XwO4P%%eRIBQcBi9D)=|z2-TBJg*_;6}$K}@;rq+ zg~(G&B~DKce1`OoSVT8c@%V$R617a0-R*>DO?%D^=^n8F zO1urILIXFE2~oz`Ooi1Fn5!*tr`~5YOH^#9K%BUTij2Nv5ql{REcT@a9h9dIIR~g( zhLV~R$J{-~-hG1sb;Kfg+UUe*kmp%cBi1bqo>uiih+_!-YLr(BBN3m?N=KFy}BOjU>299y<;A+6K!WW z*fMzeU1pW1GsTA>t@%vK@8At~7#@6+!DMWN7Q2LW zORvhj$9^nVuBKc{g#{*r=VmW}xP0|?!KK~`@pX%U)oS4ebpzn)ggmuU$l@pxqn!^U zKEwGS;;qhy5TEWmgm|6vAR2m0(66TEed= zWL{Ptv5QZ_BRLQJ0lT6EZP>weBH9kS2(OwD;dbdJg|ro<;uWb|=s z9;F<&V#~_B0n+PNX0nNXSTi{?D8REdUtS~Ia)ECiYg-8&k(>#A1nVW1|GoG);?GWL z6P75D@017a+)NhXFX*^GX+aE5@B^H95YCm$mdk;q9@eJ4+QBGc1vi;Zp0}6nf&s4f z8kxj0!K6*s0b=RJYRiUY<#1>^$f1FJ407NxoALy>ag4ZT$zdsXp5z{-a+gPNIt*z8 zc$KVaBC!-!k}1755-p_Nyn%GBlVHpONSTjK)B2O=5+|W0%0_Q6JjIyju@p*It z+fIo;MH4G(l(%dn95pyUO;qWDouCFaub#6h>+FUxaOpaGW*)`Pr+m0Q1Y%cQsfYolMY+<+DUFWX@#K8q@L*dUa$wwn@7uOa~8nl7TC8sk1s zBDgQ`w&$K9ZqYVliugqnGC9USJKZ;3Qa*b?NUxD{AvLgHP0!KP;9#O^;--nr^2g2Q|N8M)CVEVhCwz2(^FG6oRC4l5zwtH?-e`arMqIwO8&b zsp&1L(@7kkmblwgrb|>sCL9wP6?k5rgD6gak>o#2Ur2|&n})xc_|^C{gq-|;M$=bg zGcgGL)9{x*pDu$ZPuWZ$VMK<`K*^GoBq}pBE9$h+U?&XjOme>xeXYvbp&aSn{jIWD3NvaS(7)W&&q2-j! zS$kA-S%#IN^ykc~x%Bcv&*@UY&ugvr2w+T#!lfPtdIDi9Va8uFjFB`AIqM7JZT?e| zcwazp|F4A%j%<1oZq8vPJ7bCjkqojCY7#<0b_SowD0%_ye^Wk0J}nuD55qk%#c4BT znh3{ELf)u>D0oyzlju)q#xlk0!*!`=&ZQU$k3xFy?7$}j#<#kGlMAFrXeupHb)Gvy zZp*@{IF#D1d%-+|kqngX|K{5mmmTMs%Q~vv$Ea zt2=WcgV!l(4pJIJ=mH|(wmXVc-j%QN&fF#DQ}9?@4tWs4R!SJaNqIqIXgn2%6Obj^X{{$&7IkeXpIUk>pdn9JSoEx1KO9W#>5rf=r@@^x)jlh2> zD`7MfgZnoV2NsE@G&Go~2TtS{h9*53%mH`cE85UgWlTR5`g~6L#TOh<7A`|%O@11g zoUcc4qb8xkqt^f9Okv{g8I<@3ttaqb8^p#e zZuT>I>J)d8*Z?w=tW54h0&9wcI6z2+#D+F@WK!mg6e3KP{)mNpfGR76Z2!XCw_8SM z```J9kY-DsE`1p$vKLdQRd!b9a94O*fK)II=?x+_O;OYGRGhKo*3M>m);s3WZ*m4-3H9OW1}Ai*c%e1ea-opcr+#3$zXTi_-A=dKr_76+Vy% zZO}{F7B9iH1i`cl`0(FoN%2p1pkT>8#K-VEF&yco&y;2YFqupeoRx4b#U-RIh`U!O zUCK#57FRCt%axb;@hX0b(G%b&IS#|#c2~|f`FcT zjj);@nOZa`cG5{f5usYg=H!tP_~A+>3s_h{8wrnAUNSxgm|V)#oeS(h)|iSNAKby~ z4Oi~qE!NQ|d9`T#IlkLvh{&tgx(pYe8GCMk)MBQv%usdgI6 ziZc;Ki4ZB%ku=GSAt=tH<4J5Kc3mqi?aDTqsA0%mgXHeal}ozRICSkPq5(1rrWvy` z*|<)YJ$FIMlbQbLpDwv~?|IzsoO{l>4^aOs>y1>bqjP^(a#x~9xjVK=xo_Ln&G#tr z28U1#S)7B#N$26-j=RzrLMLvbRVK~Ip1bV;;|D=s4kRhOz+!(=2S%Y zzhNGtJSl%gQ17K?CJK)N<1FPlS#)Uw)Qwc|#?irbM`xd*sz&@3`s370ExIXr0i~{Q zgP|VY@KnvQ@SzPQ$+yDtAtd=%#eZdskAS!WScdw9O+OCw9X9>fHvJW#*Vy!vHvLtg z*RDc5WwVZMDCy6z2qC@0p@*E|r$J={s4Skq&#?=JrA%A=v~|z4B~DwX&5+ZOM7#z` zZfFerZPpUa^-la}$lQh`Mjc@5m7u7#BFPE;;~*!ZCs2@R>Ak37fVC9k`ew`h{^X~Y z_kA74exGgB);mk>!JQ|ZjDZIcP{z7->xx@RyRNv|D1`^u(#bJx6a@#yrfX_yMD1lH z8Z0yC8(^!(G!q3YoZ2tYj1hDK;rsn^@{33xCPfXnAI@PbS zIJ?Tl3&>(X*&rPUbS!4P(SUjQPO=hRbvy`|e@<0d3ZNWUJ6VZaMZ^~&7S+@uIKQwo zZd8SR=y)*TTMbaN)2cO_op`(LicfvT>1%NkyD3WVq$Ia`&89LG?xgUyk^Uehv1-xg zy=LK1NBj>bJR{P=X+o z2fa~7T5I#YbeXxtf{okOYi(IQeZpeqgY=|x7j{wj2k3RsDZXn_stefPZ3T zu2vVs8KSy04kN-6nk$6`bn^Lu7iP0`xB`7@%%p+=0U6tiE{mO?rY9YibN*d=lAero z=xflf;>R*Plj*yzHQ&_%)!JWNB|yqD?ZAR^S)?Te=z-!^P&Tl`akfK^vb-%Njif*W z3Lq)67ORcXQa53D5?(C=mrmh1dJtY)6GVoJ(6&GYYVe}0dCZ|MF9#&FT|4I3UgstH z`u808hpg7@RJ|ybHJ@>O5o!bY_$3wqS5fd^IPj0@eQJx7@}V*Fj|?oUmmHFN%)Cju zKXpj#n0bwKvyS4p)oi}WSVQK^%s_GKI%9s9X*ARDo&tK@+zqYE+`(L@&HG8SiMj4D ztANRA9w&%88r5wqk8ja1Ntoh~7`2`SN(bj5!!{e{2c#5(`C+$1{}m(c{=D0@(gpo0 zmY5=_a-;bqV>#v@VXiyRp6#&VLk<8TfFXx;4-5hv6{@go0U~SjK4G9@^&c>*^tl9v zkqmXHzjG2GJ;#uB@F(NIE*>LJo&amGqHKddrWZ*R7y9t??5gOMRT0kI<~>@5g$aCv z7#%2!NIG_ao21%Sl8U!FU|r+$EIvTNDu?>hYn*m9BA2{w<6U3avf~@Zjhm%gpMExZ z?Y-+Cd{q41k`)NoHR!k{sVLo@iPkuLdt-@Rov}n~Z%?ANtEERtwDu^mwwTi06N7I= ziAN$zSELJGID5KcN>^)4Y47M%Vx38)qbsTO!W(H%D&5hfl57XuJ;2}7qeNoB2LrK4 zYwPZ|PNg*-0nCWf3TC_EZR^+z@;JO;Yflu$M*$}ScoD#jfbCAe>r&#eE~Ra6Qfci4 z8$FTUWP3086eoDS@mR0Y)!n0XcJEU16pjvbB4hBg+dE&3%^e~s1O74^40`iCBU%A-34{a!&&3;JO}-zXS2 z0=wlKIznL<1zu&NnZIHq>wsS&C_~08r5Xp1*HY#uxc{(WMTt0EpKJP50s{4}RN&KlH%yX0g{J z^OrqV)$CS@6&5XJd97sR4?y0J_WRsCaE_@F#k{P?Kvm#8w(C&Mi9MnSV!UB{nC^P|rnZ9*>`AtVHQwC)tDgPeTmk$CkW9N(e|PD26Ins@S+ zs8#TyxtWLCjeaLDF;=bi0Iwb*>QEsM@MU$q0hIRGN)Pb$c1|K(dE#!z@t}T?3`rGF zTZ!=?`LvWjy>P)f3z0qbHzflP^Zx=>Y!sk4p%2xO7NBeXlwYZi0{)82S|+|d!JBzL z??Y5&0g4H(eV5pLR@>?J4Iyc$ssdcn-sADNczvA5Ux)IAF&{N(d46BMfbVqo!Mh0W zLT=h6NPV+u@QZz|_hChvbz*ExOxVdV63Kh#{EW%Dh0cu#%Wm0qPKH zuDk;C5a6qBNQ1=|@WoYiyQT*75Y!R(sGf5-E!VZmE3x{>y@EOTCd|187C(-Q`m>y! zEN#(ED2t^$NWCJCnVcuch}vgvy_{|lCYvJ#S|zTykQTCFdj)c$-*V3G_ms_BG+DSe zgd>qA3wL{d5;-ympEv!0?woe%-5%}n6;1U``8aS3m=b58K1p{j*YFT3o;JVZS&RDA zAyk=y6ush6A42zM^}qEZT zBRoYJFL@SmKbNgr=doy)yg&(%%s9R|Wj6V2jA`|CNFy`u56I)-V)6Mb<^ulP>nIMV0O9 z6**M`6E_6d*@cbzl2D|K>#RB^!ror_@Y-eds$6M6p2!w&q#y<)<253_B|vD5#imAJ zEohA*q?GKJ2KI|kw+7UbeRkvuP&xStCfILzW)F*SC2b{zq}wfiR$83Pk$wG}A}j~k z>ERAozfAV;QLzTLWnkXkgh$0i7`Sl7ylneI*3PI%q!Tj>M(jXaOEMCTC%QYAKKa9c zTa=4)I3co7?8YrP^YS&YoEPB;+_pf@!o}Pifwq| zEU@x2n--hG5G1nRVWy8tc!w#&>WWTsMfwN9axJDP~RCW z;3p+DDL<{gAgvs-|0MmpMBXv!KP5)K6aIqmR|(%cWPDB1Hp%!`lDQcYWe0AJ2m+(^_#%d_+;nN zzb4;bS5uc9__u4Q_p9+0j0lOeb@j)X?M8Qz;oBzfgboC&4VBNw;? zv?K9QNJ(%E#~}tOBMKMwW*9XT4>9KgFgTRX#JLEk(q5l8!bLeQok@m9(iwk3iBcd; z@}W$E%OtrFcYzu9Cw!svsuId174Y@{@_=e+gbEEa8IJaPX(kilRW5>Fv!54HbA~9K z52#=zlte)IluSV7L+J}%+8+s>8-huteKf}?h)awlP?|yMkqFI20$fsQMu=mgQSJh- zpb->Gk3dv1kwD0g(kK*4hBAoDg!~EBr_!o&p36iN0bccki6~DqO8VS6FO9rjAH#$~ zX$qlXZ(8MOE=r@g$_*iimzP(#5Ti0_h%(R6G!thij`262_XWH|YA6lyPn`D-2OtuR siiRnGJ9j2YdC!CK5tx|QJItJO?%A^^l<}f;h>LjrkQoKk|39Dq0ndrudjJ3c literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/DDTZ.COM b/Images/Source/fd0/u0/DDTZ.COM new file mode 100644 index 0000000000000000000000000000000000000000..e30a34c0c31b568fb7d3e9ece2d375524b8905b6 GIT binary patch literal 7424 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 VA`-*10cn8gmj)aQKKRAX{|4B&cRm0B literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/DDTZ.DOC b/Images/Source/fd0/u0/DDTZ.DOC new file mode 100644 index 00000000..e4470528 --- /dev/null +++ b/Images/Source/fd0/u0/DDTZ.DOC @@ -0,0 +1,564 @@ + + DDTZ v2.7 + by C.B. Falconer + edited by George A. Havach + +Introduction: +============ +DDTZ v2.7 is a complete replacement for DDT, Digital Research's +famous Dynamic Debugging Tool, with improved functionality, bug +extermination, and full Z80 support. In general, DDTZ is fully +compatible with the original utility, but it has extra and +extended commands and many fewer quirks. All Z80-specific +instructions can be (dis)assembled, though in Intel rather then +Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U' +commands) both 8080 and Z80 instructions, depending on which CPU +is operating. On startup, the program announces which CPU it is +running on. + +DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test +for a 64180 CPU, since this cannot be done without executing +illegal Z80 instructions, which in turn will crash some +simulators. However v2.7 does not execute any 64180 instructions +internally, only in the subject program. + +This issue supplies the "M" version assembled, to avoid errors +when switching between MSDOS and CPM systems. The command table +is updated accordingly. Most CPM users are also MSDOS users, but +not vice-versa. + +The program is invoked by typing + + ddtz +or + ddtz [d:]filespec + +In the second form, DDTZ will load the specified file into +memory starting at 0100H, unless it's a .HEX file that sets its +own load address. Besides reporting the NEXT free address and +the PC (program counter) after a successful load, DDTZ also shows +the number of memory pages needed for a SAVE. Instead of having +to write all this down, just use the 'X' command at any time to +redisplay these three values for the current application. + +NOTE: loading more code above the NEXT pointer revises these + values. + +As in DDT, when a program is loaded above the area holding the +'A' and 'U' (and now 'W') command code, these commands are +disabled, and the extra memory is released to the user. Thus, +DDTZ can occupy as little as 3K total memory space. Unlike DDT, +however, DDTZ will not overwrite itself or the system on program +loads (except .HEX files). + +At initialization, the stack pointer (SP) points to a return to +DDTZ, just like for the CCP. Thus, programs that normally return +to the CCP will be returned to DDTZ. The 'B' command +reinitializes this condition. + + +The intercept vector copies the BDOS version number, etc., so +an object program does not know that DDTZ is running (except +for BIOS-BDOS vector size). Thus, programs that check the version +number should execute correctly under DDTZ. + +All input parameters can now be entered in any of three formats: + + (1) hexadecimal (as in DDT), + (2) decimal, by adding a leading '#' character, + (3) ASCII, by enclosing between either single or double + quotes; either one or two characters are allowed. + +Leading blanks in command lines and parameters are absorbed. +Either a comma or a (single) space is a valid delimiter. +Either uppercase or lowercase input is accepted. + +The default command (for anything not otherwise recognizable) +is 'H'. This allows convenient calculation, along with the other +features described below. So, to convert a number, just enter +it! + +As in DDT, the prompt character is '-', and the only error +message is the query ('?'), which generally kicks you back to +command mode. + +New Commands (Over DDT): +======================= + +NOTE: letters in parenthesis, e.g. "(U)", show the equivalent + command for DDTZM version (compatible with MSDOS debug). + + @ Sets or shows (with no parameter) the internally stored + "base" value. Also used with the 'S' and 'D' commands as + an optional parameter (though without the '@') to display + memory from an arbitrary base marker (offset). When set to + zero (the default), it does not affect any screen displays. + + B B)egin: resets the USER stack pointer to its initial value, + such that any program that exits by an RET will return to + DDTZ. DDTZ provides a default stack space of + approximately 24 bytes for user programs. + + C C)ompare first_address,last_address,against_address: shows + all the byte differences between two memory areas, in the + format + + XXXX aa YYYY bb + + where XXXX and YYYY are the comparative memory addresses, + and aa and bb are the corresponding byte values. Can be + used to verify the identity of two files by first + loading them into different memory areas with the 'R' + command (see below). + + + W Write: stores the modified memory area to disk under the + (K) filename specified by the 'I' command, overwriting the + original file from which it was loaded (the user is queried + before doing so). By default, the image of memory from + 0100H through the "NEXT" value -1 is saved. "K first_addr, + last_address" overrides this and allows writing ANY memory + area to a file. Almost a necessity for CPM 3.0 (no SAVE!). + K)eep on DDTZ + + X eXamine: redisplays the "NEXT PC SAVE" report at any time. + (Q) Q)uery size on DDTZ. + + S S)earch first_address, last_addr, value: searches the + (W) specified memory area for the value (a 16-bit word, not a + byte) and shows the locations of all such. Very useful for + finding CALL's or JMP's to a particular address, etc. + W)here on DDTZ + + Y Y)our_option parm1,parm2,address: executes an arbitrary + routine at the specified address, with the BC and DE + registers set to parm1 and parm2, respectively. + + Z Displays (but does not alter) the Z80's alternate register + set, including the index registers (disabled if running on + an 8080). On Z80's, automatically included as the last + part of the display by the 'X' command. + + +Based (Offset) Displays: +======================= + +The 'D' and 'E' commands can use a stored base value (offset), +as set by the '@' command. The current @ value may be +overridden for a single execution of these commands by adding the +base as an extra parameter in the command line. The effect is +to add this value to the first/last address and display +accordingly. The address listing on the left becomes XXXX:YYYY, +where XXXX is the offset address and YYYY is the actual memory +address being displayed. For example, if you have a data area +located at 42B7H and wish to preserve easy access, just enter +"@42b7". Now, "d0,3f" will dump memory starting at 4237H. + + +Further Changes from DDT: +======================== + + A A)ssemble now accepts the full Z80 as well as 8080 + instruction set, although it expects them in Intel rather + than Zilog format (see notes below under the 'L' + command). When in doubt, see the mnemnonic list below. + + D D)isplay or D)ump will accept an optional third parameter + to set the base value for a single execution only. Format + has been cleaned up. + + H H)ex_arithmetic on two values also shows their + difference in decimal. With only one value, converts to + hexadecimal, decimal, and ASCII (low-order byte only). + + + N N)ame now allows drive specification (d:...) and sets up + (I) the complete command line, including both FCB's (at + addresses 005CH and 006CH). The tail (stored at 0081H up) + is NOT upshifted. + I)nput on DDTZ + + U U)nassemble now displays the raw hexcode, especially handy + (L) when examining non-code areas. Intel (8080 style) mnemonics + are used, so some disassembled instructions may look + strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become + 'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes + 'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)' + becomes 'PCIX'. + L)ist on DDTZ + + L L)oad now permits loading a file into memory with an + (R) offset, which is added to the default load address of + 0100H. When reading in a .HEX file with a preset bias, + the 'R' command will not transfer control to an invalid + execution point. Another execution of the 'R' command will + reread the input file, e.g.: + + n blah + l + ...modify the code and generally mess about... + l + + The original file is reloaded, and the modifications are + removed. + R)ead on DDTZ + + E E)nter, like D)isplay, now accepts an optional second + (S) parameter to set the base value for a single execution + only. + S)ubstitute or S)et on DDTZ + + T T)rap/trace on termination now shows the complete CPU + state. Traps and traces no longer lock up when a user RST + 7 instruction is executed. Tracing of BDOS/BIOS calls is + heavily trun cated, avoiding clutter and preventing system + crashes. + +NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others + can crash the system. + + R R)egisters also shows what two-byte values the HL and SP + (X) registers are actually pointing to. On Z80's, displays the + alternate register set. + eX)amine on DDTZ + +NOTE: Any use of the 'W' or 'L' command resets the system DMA + transfer address to the standard default value of 0080H. + + +; This is the output of DDTZ when disassembling OPTYPE.TRY +NOP LDA 06A4 MOV M,H +LXI B,06A4 DCX SP MOV M,L +STAX B INR A HLT +INX B DCR A MOV M,A +INR B MVI A,20 MOV A,B +DCR B CMC MOV A,C +MVI B,20 MOV B,B MOV A,D +RLC MOV B,C MOV A,E +EXAF MOV B,D MOV A,H +DAD B MOV B,E MOV A,L +LDAX B MOV B,H MOV A,M +DCX B MOV B,L MOV A,A +INR C MOV B,M ADD B +DCR C MOV B,A ADD C +MVI C,20 MOV C,B ADD D +RRC MOV C,C ADD E +DJNZ 0134 MOV C,D ADD H +LXI D,06A4 MOV C,E ADD L +STAX D MOV C,H ADD M +INX D MOV C,L ADD A +INR D MOV C,M ADC B +DCR D MOV C,A ADC C +MVI D,20 MOV D,B ADC D +RAL MOV D,C ADC E +JR 0134 MOV D,D ADC H +DAD D MOV D,E ADC L +LDAX D MOV D,H ADC M +DCX D MOV D,L ADC A +INR E MOV D,M SUB B +DCR E MOV D,A SUB C +MVI E,20 MOV E,B SUB D +RAR MOV E,C SUB E +JRNZ 0134 MOV E,D SUB H +LXI H,06A4 MOV E,E SUB L +SHLD 06A4 MOV E,H SUB M +INX H MOV E,L SUB A +INR H MOV E,M SBB B +DCR H MOV E,A SBB C +MVI H,20 MOV H,B SBB D +DAA MOV H,C SBB E +JRZ 0134 MOV H,D SBB H +DAD H MOV H,E SBB L +LHLD 06A4 MOV H,H SBB M +DCX H MOV H,L SBB A +INR L MOV H,M ANA B +DCR L MOV H,A ANA C +MVI L,20 MOV L,B ANA D +CMA MOV L,C ANA E +JRNC 0134 MOV L,D ANA H +LXI SP,06A4 MOV L,E ANA L +STA 06A4 MOV L,H ANA M +INX SP MOV L,L ANA A +INR M MOV L,M XRA B +DCR M MOV L,A XRA C +MVI M,20 MOV M,B XRA D +STC MOV M,C XRA E +JRC 0134 MOV M,D XRA H +DAD SP MOV M,E XRA L + + +XRA M JPE 06A4 SLAR M +XRA A XCHG SLAR A +ORA B CPE 06A4 SRAR B +ORA C XRI 20 SRAR C +ORA D RST 5 SRAR D +ORA E RP SRAR E +ORA H POP PSW SRAR H +ORA L JP 06A4 SRAR L +ORA M DI SRAR M +ORA A CP 06A4 SRAR A +CMP B PUSH PSW SLLR B +CMP C ORI 20 SLLR C +CMP D RST 6 SLLR D +CMP E RM SLLR E +CMP H SPHL SLLR H +CMP L JM 06A4 SLLR L +CMP M EI SLLR M +CMP A CM 06A4 SLLR A +RNZ CPI 20 SRLR B +POP B RST 7 SRLR C +JNZ 06A4 RLCR B SRLR D +JMP 06A4 RLCR C SRLR E +CNZ 06A4 RLCR D SRLR H +PUSH B RLCR E SRLR L +ADI 20 RLCR H SRLR M +RST 0 RLCR L SRLR A +RZ RLCR M BIT 0,B +RET RLCR A BIT 0,C +JZ 06A4 RRCR B BIT 0,D +CZ 06A4 RRCR C BIT 0,E +CALL 06A4 RRCR D BIT 0,H +ACI 20 RRCR E BIT 0,L +RST 1 RRCR H BIT 0,M +RNC RRCR L BIT 0,A +POP D RRCR M BIT 1,B +JNC 06A4 RRCR A BIT 1,C +OUT 20 RALR B BIT 1,D +CNC 06A4 RALR C BIT 1,E +PUSH D RALR D BIT 1,H +SUI 20 RALR E BIT 1,L +RST 2 RALR H BIT 1,M +RC RALR L BIT 1,A +EXX RALR M BIT 2,B +JC 06A4 RALR A BIT 2,C +IN 20 RARR B BIT 2,D +CC 06A4 RARR C BIT 2,E +SBI 20 RARR D BIT 2,H +RST 3 RARR E BIT 2,L +RPO RARR H BIT 2,M +POP H RARR L BIT 2,A +JPO 06A4 RARR M BIT 3,B +XTHL RARR A BIT 3,C +CPO 06A4 SLAR B BIT 3,D +PUSH H SLAR C BIT 3,E +ANI 20 SLAR D BIT 3,H +RST 4 SLAR E BIT 3,L +RPE SLAR H BIT 3,M +PCHL SLAR L BIT 3,A + + +BIT 4,B RES 3,D SET 2,H +BIT 4,C RES 3,E SET 2,L +BIT 4,D RES 3,H SET 2,M +BIT 4,E RES 3,L SET 2,A +BIT 4,H RES 3,M SET 3,B +BIT 4,L RES 3,A SET 3,C +BIT 4,M RES 4,B SET 3,D +BIT 4,A RES 4,C SET 3,E +BIT 5,B RES 4,D SET 3,H +BIT 5,C RES 4,E SET 3,L +BIT 5,D RES 4,H SET 3,M +BIT 5,E RES 4,L SET 3,A +BIT 5,H RES 4,M SET 4,B +BIT 5,L RES 4,A SET 4,C +BIT 5,M RES 5,B SET 4,D +BIT 5,A RES 5,C SET 4,E +BIT 6,B RES 5,D SET 4,H +BIT 6,C RES 5,E SET 4,L +BIT 6,D RES 5,H SET 4,M +BIT 6,E RES 5,L SET 4,A +BIT 6,H RES 5,M SET 5,B +BIT 6,L RES 5,A SET 5,C +BIT 6,M RES 6,B SET 5,D +BIT 6,A RES 6,C SET 5,E +BIT 7,B RES 6,D SET 5,H +BIT 7,C RES 6,E SET 5,L +BIT 7,D RES 6,H SET 5,M +BIT 7,E RES 6,L SET 5,A +BIT 7,H RES 6,M SET 6,B +BIT 7,L RES 6,A SET 6,C +BIT 7,M RES 7,B SET 6,D +BIT 7,A RES 7,C SET 6,E +RES 0,B RES 7,D SET 6,H +RES 0,C RES 7,E SET 6,L +RES 0,D RES 7,H SET 6,M +RES 0,E RES 7,L SET 6,A +RES 0,H RES 7,M SET 7,B +RES 0,L RES 7,A SET 7,C +RES 0,M SET 0,B SET 7,D +RES 0,A SET 0,C SET 7,E +RES 1,B SET 0,D SET 7,H +RES 1,C SET 0,E SET 7,L +RES 1,D SET 0,H SET 7,M +RES 1,E SET 0,L SET 7,A +RES 1,H SET 0,M DADX B +RES 1,L SET 0,A DADX D +RES 1,M SET 1,B LXI X,06A4 +RES 1,A SET 1,C SIXD 06A4 +RES 2,B SET 1,D INX X +RES 2,C SET 1,E DADX X +RES 2,D SET 1,H LIXD 06A4 +RES 2,E SET 1,L DCX X +RES 2,H SET 1,M INR [X+05] +RES 2,L SET 1,A DCR [X+05] +RES 2,M SET 2,B MVI [X+05],20 +RES 2,A SET 2,C DADX SP +RES 3,B SET 2,D MOV B,[X+05] +RES 3,C SET 2,E MOV C,[X+05] + + +MOV D,[X+05] DSBC B DADY B +MOV E,[X+05] SBCD 06A4 DADY D +MOV H,[X+05] NEG LXI Y,06A4 +MOV L,[X+05] RETN SIYD 06A4 +MOV [X+05],B IM0 INX Y +MOV [X+05],C LDIA DADY Y +MOV [X+05],D INP C LIYD 06A4 +MOV [X+05],E OUTP C DCX Y +MOV [X+05],H DADC B INR [Y+05] +MOV [X+05],L LBCD 06A4 DCR [Y+05] +MOV [X+05],A RETI MVI [Y+05],2 +MOV A,[X+05] LDRA DADY SP +ADD [X+05] INP D MOV B,[Y+05] +ADC [X+05] OUTP D MOV C,[Y+05] +SUB [X+05] DSBC D MOV D,[Y+05] +SBB [X+05] SDED 06A4 MOV E,[Y+05] +ANA [X+05] IM1 MOV H,[Y+05] +XRA [X+05] LDAI MOV L,[Y+05] +ORA [X+05] INP E MOV [Y+05],B +CMP [X+05] OUTP E MOV [Y+05],C +POP X DADC D MOV [Y+05],D +XTIX LDED 06A4 MOV [Y+05],E +PUSH X IM2 MOV [Y+05],H +PCIX LDAR MOV [Y+05],L +SPIX INP H MOV [Y+05],A +RLCR [X+05] OUTP H MOV A,[Y+05] +RRCR [X+05] DSBC H ADD [Y+05] +RALR [X+05] shld 06A4 ADC [Y+05] +RARR [X+05] RRD SUB [Y+05] +SLAR [X+05] INP L SBB [Y+05] +SRAR [X+05] OUTP L ANA [Y+05] +SRLR [X+05] DADC H XRA [Y+05] +BIT 0,[X+05] lhld 06A4 ORA [Y+05] +BIT 1,[X+05] RLD CMP [Y+05] +BIT 2,[X+05] INP M POP Y +BIT 3,[X+05] OUTP M XTIY +BIT 4,[X+05] DSBC SP PUSH Y +BIT 5,[X+05] SSPD 06A4 PCIY +BIT 6,[X+05] INP A SPIY +BIT 7,[X+05] OUTP A RLCR [Y+05] +RES 0,[X+05] DADC SP RRCR [Y+05] +RES 1,[X+05] LSPD 06A4 RALR [Y+05] +RES 2,[X+05] LDI RARR [Y+05] +RES 3,[X+05] CCI SLAR [Y+05] +RES 4,[X+05] INI SRAR [Y+05] +RES 5,[X+05] OTI SRLR [Y+05] +RES 6,[X+05] LDD BIT 0,[Y+05] +RES 7,[X+05] CCD BIT 1,[Y+05] +SET 0,[X+05] IND BIT 2,[Y+05] +SET 1,[X+05] OTD BIT 3,[Y+05] +SET 2,[X+05] LDIR BIT 4,[Y+05] +SET 3,[X+05] CCIR BIT 5,[Y+05] +SET 4,[X+05] INIR BIT 6,[Y+05] +SET 5,[X+05] OTIR BIT 7,[Y+05] +SET 6,[X+05] LDDR RES 0,[Y+05] +SET 7,[X+05] CCDR RES 1,[Y+05] +INP B INDR RES 2,[Y+05] +OUTP B OTDR RES 3,[Y+05] + + +RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05] +RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05] +RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05] +RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05] + +; These are the result of disassembling 64180OPS.TRY +; These opcodes are available ONLY on the 64180 CPU +; DDTZ will both assemble and disassemble these. +IN0 B,20 TST E MLT B +OUT0 20,B IN0 H,20 MLT D +TST B OUT0 20,H TSTI 20 +IN0 C,20 TST H MLT H +OUT0 20,C IN0 L,20 TSIO 20 +TST C OUT0 20,L SLP +IN0 D,20 TST L MLT SP +OUT0 20,D TST M OTIM +TST D IN0 A,20 OTDM +IN0 E,20 OUT0 20,A OIMR +OUT0 20,E TST A ODMR + +; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY. +; DDTZ will disassemble these, but will not assemble them. +; They use xh/xl (or yh/yl) as separate byte registers. +; Use these at your own risk. +INRX H ACXR H MOVY H,B +DCRX H ACXR L MOVY H,C +MVIX H,20 SUXR H MOVY H,D +INRX L SUXR L MOVY H,E +DCRX L SBXR H MOVY H,A +MVIX L,20 SBXR L MOVY L,B +MOVX B,H NDXR H MOVY L,C +MOVX B,L NDXR L MOVY L,D +MOVX C,H XRXR H MOVY L,E +MOVX C,L XRXR L MOVY L,A +MOVX D,H ORXR H MOVY A,H +MOVX D,L ORXR L MOVY A,L +MOVX E,H CPXR H ADYR H +MOVX E,L CPXR L ADYR L +MOVX H,B INRY H ACYR H +MOVX H,C DCRY H ACYR L +MOVX H,D MVIY H,20 SUYR H +MOVX H,E INRY L SUYR L +MOVX H,A DCRY L SBYR H +MOVX L,B MVIY L,20 SBYR L +MOVX L,C MOVY B,H NDYR H +MOVX L,D MOVY B,L NDYR L +MOVX L,E MOVY C,H XRYR H +MOVX L,A MOVY C,L XRYR L +MOVX A,H MOVY D,H ORYR H +MOVX A,L MOVY D,L ORYR L +ADXR H MOVY E,H CPYR H +ADXR L MOVY E,L CPYR L + + +Command Summary: +=============== + +DDTZM command DDTZ command +============= ============ +@ (base) +A)ssemble first_address A +B)egin {i.e., initialize stack and return} B +C)ompare first_address,last_address,against_address C +D)ump first_address[,last_address[,base]] D +E)nter_in_memory first_address[,base] S)ubstitute +F)ill first_address,last_address,value F +G)o_to [address][,trap1[,trap2]] G +H)ex_arithmetic value1(,value2) H +L)oad_file (offset) R)ead +M)ove first_address,last_address,destination M +N)nput FCBs_command_line I)nput +Q)uit (not avail) +R)egister examine/change [register|flag] X)amine +S)earch first_address,last_address,word W)hereis +T)race_execution [count] T + Untrace_execution [count] (i.e. do count instr) U)ntrace +U)nassemble_code first_address[,last_address] L)ist code +W)rite [first_address,last_address] K)eep +X)amine {i.e. display memory parameters for application} Q)uery +Y)our_option BC:=parm1,DE:=parm2,call_address Y +Z)80_register_display Z + + +If you find this program useful, contributions will be gratefully +accepted and will encourage further development and release of +useful CPM programs. My practice is to include source. + +C.B. Falconer +680 Hartford Turnpike, +Hamden, Conn. 06517 (203) 281-1438 + +DDTZ and its associated documentation and other files are +copyright (c) 1980-1988 by C.B. Falconer. They may be freely +copied and used for non-commercial purposes ONLY. + diff --git a/Images/Source/fd0/u0/DIF.COM b/Images/Source/fd0/u0/DIF.COM new file mode 100644 index 0000000000000000000000000000000000000000..87b89d75568272353e76a85046282781b8a406bd GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/ED.COM b/Images/Source/fd0/u0/ED.COM new file mode 100644 index 0000000000000000000000000000000000000000..a0f0f5410f0542e3e6d05bfcd0fb361d84c73f26 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/LBREXT.COM b/Images/Source/fd0/u0/LBREXT.COM new file mode 100644 index 0000000000000000000000000000000000000000..c0c950e3bc93d8e23bb2c375debc83c719373ed1 GIT binary patch literal 8576 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 Xjkg6C+_HFa8FqO=E#G7E9sd3YUd-_( literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/LINK.COM b/Images/Source/fd0/u0/LINK.COM new file mode 100644 index 0000000000000000000000000000000000000000..e188fb92b474883e1fdd1cc2013d3ac735dadf0d GIT binary patch literal 15744 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/LOAD.COM b/Images/Source/fd0/u0/LOAD.COM new file mode 100644 index 0000000000000000000000000000000000000000..b9601e002cc09df45e29331795412a0f0be8e217 GIT binary patch literal 1792 zcmbtUUu+ab7@xV@Kkaq)%2KFuYT3OzE8PR3=jAMGuXKC6&A<>jV zVhvbnVw6ba!3WR>A@RXzeA7rmeZaJv5~j&SX(A+j!3QZZ_h4c|l&G!W%w1D`c5^p7 zzu)ise)HYTHx~{@jG}*FG$`#Gt{K~kJx1^D=lixBZfRes=9G=Vt9njQ95%cl@B`aO zZ#T-m;~I|Zf>brqZmGH-q8v9}svPoyn&Aj_(T3gR9JAl^Vx|sn_I`E2q;8qP@N6o7kX)s1b zr&952hJOHvs(&yjdg-D+Qt^!uKk#5#NUHh4s8K!OaH$bpEc;c@*jp-lY3qUdh?)rP zPCii0DDK8|?oQN+HF@^Mv+Yq4KPupWWfkVe?gBI-)hg+_1>SJ+Px_Ckc38kw*((v9lz z2zynfagF^DiN|1|W}Hk6w8D5}QHk1da?`mJ^FavP1=_{u)NCgcb~{=AV=Fv9t4BC! z=M!q`T+Cbj&*@h^*r}&$i9fICS>hV^-qPdx4D974F+z~be5nDKedoT;4*5eHl z_hOK&PL48BQTda?=Lzs>XD8Hbf>5(dP)`B1VU02bwG}A6N$Cj1H?GM^A)6p~h+@(L zrvPt)5NdV{{50Ur0&f%e8Ni)u7M7rTfO?Ef%P=Dt3EQ~+eJ4qqC6V7kph-78R zeQO7qjZMNVmCO(TspJk4_Da-hgJ~PlSEKB*x^zkcjAJdWZ}X06@Marf*VUyZDf~#% zrx65f0b%h?DO{3x=iG~Ccaaq|_pOAd(R?%C9qF2eJ_+wiHi&rPmV_PNL`^xLFju4C z5}ubD>)5dtv0|Pi`$*CzQ`vrvH)@U~3z`{g$tT#Tv|=x4au|`#EXgBQP_w;!T|*8( zmF-@l+k~A`>zUK3Q=mPB@3GloR#v%3CmBF`p0F>~Yjaf@jxz}W44xy9Sl~XZ3vbB4 z`0Q^krywI7mGwS?I|;j@F22v%4AjP+Rblz}R?xy#8GpfBg-t6^6Zgy!oFjTc;|X(e z9R17da~aQwzREW`3EvW^uZivoWH-^WK>gYX^er?fHTP%}xS;8cQaTj8pKqnUimZaR zrEUU!U0pn>n1fm#4V;75jinYAA@N1caJ8j1= zl#h--AkQpztN5}gU|JF6%@}2WDd*vN2=Ce9uPB^Zc1YvLHfaxO)O5Ae@CQ+ZJ&Cul zi>mEv?3_wNghH8rn2ac;^<$l=o_Ke>Bk{o)h56ZQ<7d7Zqc5fo)qAwLi>lx*ji32s mjGlO@lG>a25JEp5qvPEuaS5it^Q_Cq&ZMp$uG7T-d;S66tN&L3 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/MAC.COM b/Images/Source/fd0/u0/MAC.COM new file mode 100644 index 0000000000000000000000000000000000000000..f49e835a181bb857bfa4f40c77063233894174dd GIT binary patch literal 11776 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 LleoA4|BnA}sttr@ literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/MBASIC.COM b/Images/Source/fd0/u0/MBASIC.COM new file mode 100644 index 0000000000000000000000000000000000000000..c9ec3cd39f6cf66c899bd0eca759de3275045991 GIT binary patch literal 24320 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 OZ_b|!NSK7;-~R&C%=L`` literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/NULU.COM b/Images/Source/fd0/u0/NULU.COM new file mode 100644 index 0000000000000000000000000000000000000000..fc5594b1e2c4eddb679645296eaeeb9d32991990 GIT binary patch literal 15616 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 E1<9OScK`qY literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/PIP.COM b/Images/Source/fd0/u0/PIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..4b2ce4b689b9be798eec94cd4275aee957c8bd07 GIT binary patch literal 7424 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 m_wA9|X}-1K3}o>b!S^gcP~*X85!S3Fk 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 I|Fz%$1St4NTL1t6 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/SID.COM b/Images/Source/fd0/u0/SID.COM new file mode 100644 index 0000000000000000000000000000000000000000..3b073ba56b94c4941177430d541180dbd706f15a GIT binary patch literal 7936 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/STAT.COM b/Images/Source/fd0/u0/STAT.COM new file mode 100644 index 0000000000000000000000000000000000000000..1de359f27a749da7d3127749f3720426be6fea56 GIT binary patch literal 5248 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/SUBMIT.COM b/Images/Source/fd0/u0/SUBMIT.COM new file mode 100644 index 0000000000000000000000000000000000000000..2e788827b2a45aea667092573f2263b67f9243f2 GIT binary patch literal 1280 zcmbVMOK2Nc6n#%KPeBGx|AC4&ej`ttbd*wOk|=nPRj|^KLR^KUpG_Mxk;ayYJmZYV z`uHQu-INBhDqXa+gl2a29xys?v)EWAUQ*uqpOO&iVF=1E*Iy^l#W`aV+ zbjHed^&kF4+os2CYg{>QIL3tOLQc2vd8=ZSO9h&>E!VNjG+Ts(Jj9`gW9D7ksna9V z<+74BEX#Ijwro$Cd+7<&C_Iz1%JpXz8KJ?%Z6d!V-3>mA1m}dHBL;5}U;c(nCeNy0 zlMN{roCEwV$2S1q7n~>B8c^SJ>N}wB-===#)DJ*C#H-dhz6tnYNb%*LIsOUoBOL$A z@h^aPZcA*EsU);ce!c?VFZ4|^q-~PU*6PKGxbx`(Tot|jEZ80ZgONFMt4nPP@jE&=2%MFpANPIv5gYPA2KyQGuiOr8c|71<5`B4A zI;&Qsez>^@wsr*XkZ?`J1vUz>xDt)&vr<*BNolPHH!!~({w3l$e&_5Jo{q?05!e!N zU%R&%j}v^E#e*55H6(Z>ljsdeYa+G)iwJf~ZLq0d2Up1;xglK%M+sziX;_gea0k6% z64V3_)Id9aPrFX=b>16hOTxr#zJ~810k;jZ#dZ(5F5W`jDqWTLddb7C}nft);VcKm$t1i_JrduzeEjk1dm)J8M#_v~Q*R zaQEJG&OPTl-}&wYC~8j-@w@Ny_RI88J}2u#!~5{a?&jTIA#}^fN5?1!S3mLC9?CxD zu_tMJFKz!s+xHk7u@#C6$W##mhG~Bz-@w{!T=^yFVJEzfr^n7a`3!ZnWBqg={v~s5$*8cguq4nGQC*&h&Wn_XAV5D>?m0);W(;= zM^Ld;zRMY+E(S-?^6kb33PP(t&=3m?56i|zu2Q9I!8lsZ)gVi!6`-i#F%*@N(^73< z{G*ibIcTfBdX)awF$V6x1%5`SxbEYFQi|$`!VqPoOWQBnbQ2Z@&)G?_($FT&O|r!kuYx&(xeRGnk(m$;<`4ve3YNP7cU zNwanju{BVYYp(ly*8uAS_Rg-OQ?s)(v*!+0zGSC59xiY;Cb0)OPc_XJ#T7`f?5Qle z2wx;bmp|aFz$hwqwEkKMj}b!05J+Q&dL5=29!CWckXzAF!e6n|a)gDuoc0Q}-9Ldg zL-VJXt?O3I3!9h#8X5O7fCe;RInttY=H`#%mi?M%zha!k6ZuRgPx|YGoNw}UQIpM1S(EY=8-GM~xKF-d%3Tp%hd=#*(>zaWbkM|6aGgA$*ax?C=J0uu-xaA0*c_#O(}=ix2IX5fW@>@ELik18Pk zH_Iy=(h2|<=M5PT4G;7T!gng_6}-aQp}l)B#`Dpfu4GMYPAUdI)YCVBRoO74wER~b zZg~`$)-Z&+i%eQm-jT7YrT!k8R8wvfMvRZvOZWG84ZihcVEcjIzMdFvALttFAA(TH zfZW(HrEE&lQvi5he{a0G`)EHw+kchUp~(GE!;qMrKwd;b(QL)G8j|JOf24uwK6P)r2% JR0IE+;ZFpd#_0e6 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/UNARC.COM b/Images/Source/fd0/u0/UNARC.COM new file mode 100644 index 0000000000000000000000000000000000000000..8cc907464fefc5bf64db6ef689a1eb58346d2a88 GIT binary patch literal 4736 zcmb7I4R90Joquadt1oM{>lJuy;QZDyWGy?!xQS4NC7+N#8tM;fLueqx2z#-Gg=8cd z*~EzS?&f-T6K>L*`{>-YolGa!>9mt`CwZ9Xn81JaFW8AP4clg5CvD0Mm z?%m#jJ>kAV|0xl-`U4_v8I6X0ebG?ZWH9WH_y$BL#>An1=V4#C?-(!~s*8>dAI8d) zL%w4{=yi_o9rqpv_LfoKiQ#}4aheRf-Gs;4<9Vi~4m`rPIvd8jaJxSe#lAoQD|#Z> zAH)UoptxXOVaK5$?hh-@cpg>a{bD5@J&!kc_24g5<8c!O)p-5dg?oG_MC^-T(H|WY z!#H#d`;LZAi6+Aux8if>io`m1fd>o05RUYPMKOqneIpSuQvI-4a~I@UxmE){J_1qK zDNhSwud{Zyc$(`vT2@&1jSY*Tkthal3Ve8#`ajvhsa^Ps*#A%8JTR53*RHjBerP_T zq4m_SWns6|R&X7})K8S2xMu~kbrgbUry42q8&bnsLKD<}4v^VSz zK9q|!nv(cqq3{V`H0loyJd$-AevozVpx8HrPx%7=et&eVFtrb_xz%+7>(v_?9t-;i z2BTQ;R^uH{IqbE{eJ4IThPy*Y#c&jR>ToMebU!NpJ4(;IW&TiuvJp}v@6_zL&hpn; z0+q;D&2ms9|47TLP>Z}k=F0^=eZSDbt9^GOn zIwfB)F)1_L?joA*L!;Mwf-bwA`g*FfE*$<8=&$ z<=>blVy=dHmVXX8HN<5`qTfBD$xvqbTO=;wZ?cz|Mp~G&BYptcz1&YAAm&pgMyHxc z+=!5vb()9-Hc=H2pVexOH=51nhWA)WjzD?@wUZMfHuVX8y}6@;lJxgw6a9 z2vQC6#iv!|X=t5V;CrWtJPBl`ow#yLleQU%cq)O58l?$|c@DXee2#=r-6%oPS2d_n zf&mz9l&ErOC?nhwGZX>M;@Lb)5jP4Qm7vNSC$IEr=BJZsm}*iTe=>p1R{9fCT@#~! zx09oQV4G)aZ~U69oM+>yxhaXVFfXFywEP_s3{Qc^RAPqNPhUBrv5sGyiOb~*2`2~1xS zo?{+kT`^geTL6+rBWUjZ+y4j~H>Pg+$54&_fqJML8Ypkjk-;vH=ZP(2(W`a+%q^dk2(BK+znHALZ zXI#cgXC)U{l^`-$sqUuic}ekVrp>9h^&-)f0I$n((0<*azFbelobNz5ZG0jl6j4Rb%LKKmR0gM^q`;% z{?7|EsXqPk0qB-k=ubDB@Le#Mo}UQiW}C1fEngw$9h*}-E0(sE))!S(#j9G?Si5~5 zT;SfNRSEn~YW~Xabv!B^*>{+QRl-LN_Wr!Cek1d3BeC4YZ!_je_kO|Uc#{9Bk+TbW zdw^K(bz=^SBI(fOiM9?zFcSv;oWZRZ$ORq(Rxj}H8y6}i zW91n`wx`t4P;D8#scQJd0C8l!Hj8n3VrqIx9ya6}@jY;VUPfr@-9Of++1VzcV|MfG7W&?7uX{) z@kOm*X`6_Bo&J4AMa81IZCaU&Df$y0l@rUg@?YqAf&f2KxB2De+iC9A>B3~Crf$uC z4XbxnaNi3IjNa6>;Sad)G6;o^>Sy1Zt)1P{ekOa+VJ3@}jiSnwWvc0=Om*qXFTj<; zLf3=4)n&?`@>8y|@kR51lFhkzVunC%=~O0Nt$*J7%;^jGH59TS+ac^DhgZc9pyq8sE0zpQ?_9Hcwid+bsVwnFjHRP$t_g zlutKz*mz5JcO`GB*V?R>no6rBDc2XzO{FB~OK{kJ>FAK2Q`^g}sxymc@%`5Y!?fH} z41ZJfz4J40$d#p)-MRtx;+$)S`D3QocyZ8A{${W?EV9OCXg!be)y|(9B4zB9=WQv+@p#Gy(Gz12+08(gOYL zp|@GN#?1V>#E!Uac`erP6!HC;WUoumQbkJXmEZs@&toC0gv>2Lj8MniCK$O5aN~c* zJ~;`e;0zoyJ4@C|+!Etf`nkDZ;mJmLGmt>6JTddJqT+s%Q7gnb?h-s@UMWeI=Us4~ zV8uXr0)I4DU>5!Xj25|F1+#a_VmM~pb%LgxeM2aUS?Rk{8s^(+wJ^)7vVTJrvzy^> zu_-X%e2;bY!u!hhf9&07li9LLnN2|+>_b*bo-}9p;S#8@ON0*PRSrfkQ2M-D(ChPh zhgvTX`t0kO9I3kUWiy<&?dG}LNhqsF{K*_O!Gh5( zy0YE3v%7EC-%q9FR;LJd#J*a zw!ICJzYURZH}{0IA=z#|eedpL`6KUF028U9Fjq#Z;Z74+pPWy@u7(PAEW_y_bugYd z&`TM1F3EpxzE?j_lQC02%n~=Y0&LpsA{0)a@ zf}}Z(Scgbmb?F<9qHosH_a#Mjr?pig)rs=Ij9KCBLL!SOd=eB$dEc%43;%KL=aTlI zqaKIFlOz7H*w0sK2>?{#D0EQ)37!(e5kDZn1{@0GL3lFUxm0a-Zl zZr`I~cu@59i{V;;22p^nks<%^u-K1XxL&!yHw>TzU~F)pfZl{iwE}Nfp~nAivjB4+ zkO2D)1N>Wg=y@2ByKw8%?Jb?24h2hlQP&D%a{(l~u*ZoCct^3kYOb!XZY_Lq12I*cUo6?2G!30s`y{j|BS$!Ht5_6)cC=z-+)D6mh_R z!VeQY+6T@8?pmLc)ejSEvV#EL{h&Imc!7}@QWFq^1JOZr2o{HU7@1a~uHJ;2nws|b zg013F`0U{s4tMy*_KXDgj08L*13lt!S6{R-6$q`XJE%tj? zorbY50?zLb4h2K8Am0fK&9!=A>}oHV$GDIp?CKDsgQ0#Geg@L*>VZUo;vU~AxPwTu zFAAdAwa*VKFb3~kXw_eZ43F0J7KUrYLi;f75yI*~p_>f*LQ!7;_CC<#vZZg7A)Mi>XMK(b>S ze=yq*ZL?=fyG^%elkRR$n$ULBb)X^2hfpkG*U#o{B3cpb#7Pt)H$hPo2MmFhr@ixJ zlizMnPe*$5xpU{5`1!p$EIsx^h(S^LW}G^!QqI8O8tl&Ow?f z&Iwf*68;nTHtGrSYg&kTow&>}=>9o&zm1tjEdEe$Dti(42auM|qO|x$%wCd`W4|@b za?j#GglWh*Q(_1^=u9f{3{;9QWb*^=DLf;kp>*!|I1oIn5F?qDYUVjp=m`ZgAQR*f z@UR2%mBv9g^_V!5S*c>4GO=dqVPt@kBst5a8_p6b=`@M4Oy*zIVu@jnTIdnly%GbG z7rqw!CT10+rw6e*3jhJ<=II0C18S+?< z3e^VYNkXXl@qn{fN+P-fT71YSVeIT{QX~33Lp{c-0b$aXmTd~4S;%s4;{Y;3MnaR9 zR8Au^tPcHBLCQvSDRha@cTW)4Iu@X>JY!Kc03k$DxnYpkLeI+r&-cBS=@a04LTu)yzRP=@`zJKk zo+e!ieM>PL6T4L5vMNmYac|&bodn5GqM1$rJ7CNXj>9KTjhDbsxy86f(m9ndbb*&Z z5CTI{0IcVx@Oa6YZ!5=5xb3U#8CGzfQF2p2>fBWQrw~w59tLij030a9?UO2 zd5SBdI|bM^Q+CQR)lW&u(SS2&sy{>8?9@s3JGIh%P8FXv)k#fh*|+S}V`^uAU{u~4 zkirg;wv0NAmj&i6HFPSJtrYK5$r2s3CzG*RSSd5n8gxai9JVJ93_@|pI7`GV*r_^( zuA?dAqJhLSizqr-lz7HY`5D?zQ%(Zo54b76P%pl&x|>XiO8lXUolP`WVPEe^PK#ei zG@iufUddmnWF9e@1;7Ke(HP8JPD>k^>G3wFI!apoF`Q_u#iqo%TAXN<7jQk$n46-# z!j@79PkVc&4I};*M~vy{Hsg~xN`#%-Ca~M;Fxe|)f1detznocUn6OhzChX<-_Oc4> z!WEdWbg#xRG0?r}uDz*w7is{=j@{l)0@={! z>DudQZU>qx8}5`L{-zcWr^^7g#VLhOdO$+Y_F}HDX-8WsgL*2wd)qpacg zw(V$dldoxyryZEK`q6fezrD4siJ$=8h7>N^;oS|aTiaTYe|M9AXNu8%K>fasR!=+H z1rj+ThI=W zi9bbd9jR{K-2n{Nb^F^rd*&+PoPeD&l3aS8dDH~TJ#`o`Em(X~59h`C)IlNMrGd3k zsRFH2CGf@W6`1H!SQ})ss$j>lS8nR9BZB<_`54ITpFWW7Fu~4bw&Z{sA)4_OSU8SY z*(;zhUcu4zTlxdnuWDw8BLpOVCz~&a-6n6mXn4q>)`$gK8KhQ_90!#%PBUKysrVJG zv;o<9&3uDFR!?B-kxs7X>1=VKf&G!R99<>EU4841q4X#d$q7B6aS`Usdr31vInVr- z^bQ&`=W?VqV-ILRC8YD|K$yMA-%ofgGzc&j2V{*`1+iK?eLzycLBi&SP8g=&5=i%H zicwQ$ag`Q2F1*jBQ|JD>S}7?jvlv4T88~R~69#EnbsE3SJ&s47aG$|tTDtF9r!8*J zN$-~s%C#3$=Bbc)x_Xu`x#_j`zcJFbtQoNR7rw|^1`Jl+mhH_(5B=u!-4`2z6-D?p4 zD>GdEkR8l{Q0^2-e3<~^4nnPSU25yvw^0331>njJTq#?GHj>V@QoxSeMFoOSW^&yW zFy?wvh24~U0NV$sHEN1)OdNG}9X-8K4c*}yL0u@gQS27rG#HpKjA8La<}ci50k#=8 za0l=&pK*slcf(R57R^y7J?Q>D40jlF&*2L9X{^r@RTN+Ga&_(?DOEzLS6b&(N-K~8 zu$Tvlr6O+9i=vWr_&<#>Utsy1Fo+*za{(MUeZNM06Ao(!*h&I7Km|tYM+UrKp?Gu> zDP6|vf}VE4s8Kq^$l=svbxZ13jUNbiETSA@c_twA$KjA&=d{7$Q6#N$B5A#|K&o@H z(n_aUYH;Q;bTl?8ouob57+VDlRNa#)Vk#lQqtgss1EbJ!+W0 zsm^3s0lnbmN*x?i#V4ZYnWcotTr4ZnRKEAPQ_~NokxJaCt`Zza1lU7x#MY{f=jd_E zxYhVcV%;BbcxXld8Gr!v1~I9xIdTe)*HqaEWnrRkyd-euMrOZbLg31At-Bl_Iit@y zFD_(`z^VpRwT7XVlvCVkFxu*}Y?RoXg|Zgd21u%0kYh~rL7VW<5hsXpiBKizEkM_1 z)GvU9u+4!qfRwzEeT@rY_H0B(n6C*31o2)yQ5w0|H$6;wW^cH4- z0up+L=ph(^vxITwl9?UR!)dwDP$dvWGwYoB?$~k z^E-7!4e&cy6-ipcFwj}(!AvyV07>nTFfp55&@*0wETWyM&duS@;1`j8m>UOss9yYr zZiu0tn3*8m>h#uLJkazzM>&=kXxJO|v31AL4sKLWofQ5)j zoyjBc2L7UE2T2kZBJAaqeaw7MKCk4}LS|!b;$h$SjPNPt8|39_5UXTaG&_TV;s8q~@AuEfCbG%Qs{kxmxutwyFm&X|o1n$MJy45;|P z>8pk_9~+qO$Yt}*@>6m-AIeDs6C?%ZH5p{117}pm(*`3GC1tjR&`BN1;4HvN%6yk> z6Ue*zp5^_gml>Gv%ll@PKGAama~3)fq@eR{AvkY$K<6Q4Hs*v%4E!o6rQj<`t_y19 zlZx*cgJLUz`2aR|YANi7bTz0VMC@dT@rvNO)6wrpsrZp)0MqNbq>Sopotjdf%aAfE zug!LiR04cPj^#65trZU&Q|G*r41+r~gE& zvm&grzaeF_T#Z6Y2XG6}R9a&Bc_vBr#O!da>^1=3hVA!Zabb28^ee#hnZPvQ%$;9( zS+Gc8C#LKJ+3C#ZDsXK*w*o&io$gGZrq6tXVHM(23|Q0-u&C{;=cz@&xVjrNcVd`4 za53)2VL|rqQTlKU@Cn1nR4i2w%snWzlQ|83i?F5xgoE1=?G(}Aak(fHm zvL>Fr4~)>OFiI$AI!u<6NMZb>3d)JqB2Ltu$FO`J+%+t|o&ASbv&r4cP-fTB;En8_ zk*sa||A*R?SbZL661=XX=rtkTVGGYqo<6(%kO#b$_`k z>+8z7F#2+1uWYwiFY` z2epBRw8Pucw!J)6ZuWU(-(${`0v`any`t5>3*FhVdp9rvvgySQ9qoHN+UIfBd%b8+ zQ(Je+Gbk@6UYDoM+tIQU?eXk^v6O=gvH8~ON>q362INcmS-=q8dMgjzg18vf)i}@agI-@d@$WplLFU9KLk+8u^Ztr8rAtw9x-Nq_ zmQ8If;98}|yPe3PsSP|f;!u8uGq`c!H+6WB69_jEvi{O?lyaazWHKZ06beOf)Hqu4l2(hn;#LZ0v((Hqw)j~l3PYffGMN~X59uLSEZXjVv&j)Rq z7P84?lE8F?Y9*>5adFJGDCrO_`O%oTINvJ%IdAOoyog#!GVkY_RKdyIaA;?q#D#-9 z^Pn+-SLd0|RZbqulQPa0RK!ci=jAxJKx%wS7!DD%$k8_o(vEn?}KF2wR zppv@V7eY-m z^7!<_0I^WoP79C&UZWB+O&-lts;(c+%hCn^lqZ#qUCQfpr~<;Gr4H4{m+}Nl%zkJ7 z$+67*+ZQ^5RDK{j3Kteq&)NL^>21>oguza@SVf{cpH@;N*2wuRYOg~Vbmt2e6Szi; z^Cc}rf=-Ld7jR1&x760~y%dwA%;gl0V*8_TF%reH-&6+aM~1{R;=L?fw5F3J=~Pw; z#7t%3uSO8T6_xP{dvUz_jFPQZ@NigD0!%m5G{9GXF751rd>}-$D3d{nWBKqmgXTh) z+2zA?Sb^)8^2hC;{_DAS@Id|WqR@h&eGB$37!u%uSJPdwpmPD_X$Q-`OGsCZv%&-1o@ zso(LPY?FM>M=kand8B%-iQI;=+Dmi}Tg2KVK=p5LP4Gv71L&p!C2-aD7 z>Sc(<>sGsxS`18}7g{YzmuR%w+qXJ`TdlWmbU6B5FHU-`!ML^mrL%GCa7^Jy!S-2$ z-vHR;K5P7f)n(}~SKRYi)HkiccVyIeK1Bt(Lx3Z95M;L23L~+1q{V;^1CpYs$W{lRc5>2E z5UefW+h00cThJ3HOgbIVtysTfhu6^?C~D~|ip0qPJE5Nng(GY-U2ydtzYx?EMC}|+ zKb!_4jYR;%Oa=gQ-{CdK$vkQ^GhO>nx+Yr-g8K`4PC}|sL}QWRd++c2K|}9P>W_{+ zS3vO0+VxvZuKsM7mCWsr3x>iG=*H)vPZtakieVTO>EaN{L|rD6LeYCXxUPWiNXsN} z?Po;Dr@c6Ny&!mnj14kGgh2jW!H_V^Cqo&93|!v7hi7mMi$AqZUS_X}@7f04f5hB- za0${-2-VW0RPMfZfE+Pu%Se>#0rBs5SMe5$ZdqQ>4X zWYUu6759j_Hb*$p^Qd?K4*!o_AG!A!7 z(QuVO7gKgsQPF2C+{pXH zQlisYZ_zoehU^7aht6$fvR7M|Xx3Q|&LaqG?I^XYjQ__XikW06)Y;XC<(FqKhBd z!QwEHL~>er6|3i!YzD7j)qENYZg5qiX9f#{>?eQ`K-VFLe?4zJTzw&x7whatH1f-7 z0*e>Xq!vZQt;qgi>g65yI@H8)a88JW)Ded_#kcyyLT4~Y1fHuMB{s@nAMK}N3*i2Hhjr#~s z8#e9#4LpqqpEY=NIA!qY=bs-%9X9@1HhG|G$}YjJvwd(DWDatesX?}6>S_UXWH;Pua~Div{aywo@w xFU?Q=c264!bGY+LSz~i18eDO~Mc3p^k!+~ltevyfQnfR}h7Et!R{DD@{}-JkC7J*L literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/UNZIP.COM b/Images/Source/fd0/u0/UNZIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..afde72047347290bcc1fcee1b9977a3c2572b545 GIT binary patch literal 3328 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/VIDATT.Z80 b/Images/Source/fd0/u0/VIDATT.Z80 new file mode 100644 index 00000000..073bb84f --- /dev/null +++ b/Images/Source/fd0/u0/VIDATT.Z80 @@ -0,0 +1,69 @@ + title WordStar 4.0 Video Attributes Driver + +strngout equ 0283h + +esc equ 1bh +dim equ 1 +blink equ 2 +invert equ 4 +uline equ 8 + + aseg + org 03c1h + +vidatt: + xor a + ld hl,funtbl + ld b,8 +getloop: + rr c + jr nc,getnext + or a,(hl) +getnext: + inc hl + djnz getloop +; + ld hl,string+2 ; attribute #1 on/off indicator + push hl + ld b,4 + ld de,'?!' ; ? = attribute off, ! = attribute on +setloop: + rra + jr nc,attroff + ld (hl),e ; attribute on + jr setnext +attroff: + ld (hl),d ; attribute off +setnext: + inc hl + inc hl + inc hl ; advance to next on/off indicator + djnz setloop +; + pop hl ; hl --> dim on/off + ld a,d ; attribute off + cp (hl) ; dim off? + jr nz,setdim + ld a,e ; attribute on +setdim: + ld (hl),a + ld hl,string + jp strngout ; ws string routine +; +; +funtbl: + defb dim ; strike out + defb invert or blink ; warnings & errors + defb invert ; block + defb uline ; underline + defb blink ; subscript + defb blink or uline ; superscript + defb invert ; menu, headline, bold, double + defb invert or uline ; italics, RET, backspace +; +string: + defb 12,esc,' 2',esc,' 3',esc,' 4',esc,' 5' +; +finis equ $ + end + \ No newline at end of file diff --git a/Images/Source/fd0/u0/WS.COM b/Images/Source/fd0/u0/WS.COM new file mode 100644 index 0000000000000000000000000000000000000000..aa028bc38aa6fdf0e193e2478646f50fc62d9ae1 GIT binary patch literal 7168 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/WS.OVR b/Images/Source/fd0/u0/WS.OVR new file mode 100644 index 0000000000000000000000000000000000000000..5e3c877382f6ad1a01e3e46a76671e1332bb6d4e GIT binary patch literal 53248 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/WSCHANGE.COM b/Images/Source/fd0/u0/WSCHANGE.COM new file mode 100644 index 0000000000000000000000000000000000000000..bc85c1fcd96eb3b2c24c4e5035b30e796a60b873 GIT binary patch literal 35328 zcmeFa30R!f-8Xz@?wMhR0AbN2Kw|D;APa;w2?-=XW@liA8D<6;vXKFX9fq(3NR-5; zrnRfKF0H23XzSBHwvDL^af@Nbq+!~zC5rl>R(X_Io!V-vb`{>=|DJ&)YM$|S+#mqVXbIyM||Fdtmet$-6be%(6uC6lb`As=_c|6Y-8QR8tD>Fr#C~N62j!RYf9l%ma;5?u%@TIr+>iR)#YjCou0n#c2tAdXohNZ^`AIZ zAYT;5^8hEp|G1RY^@|Avh~#j@sZMh0$+458XG}VOj3aOzVG*_RA{P@II4V~Dn)4qO zBSHKrR)qLJ`}dou-$eb6yTC564@CtK70J~9tkD1ObJz8`TLySrUpsXWpI0Ly^+RV@ z8=Q=fWa!8h_M4br2z)lT&1}PGBmW0tvPCif16==)u)Ml`{mYPAqt)pR#&T0drP)$t zwXt|s=dd`84xYEx+5wmA%{Bp^N5E92)4O<=)(kkzGK^%io2r}A(l8^s@BJSYfE_@*kVGsU4zuo7u$8Yk8iVFDD0R zQJ*HdDtvf;{tfyqL@tEqzx5A)*+=uw&4>TyJ{?}bXPjIkV)HA-;wbt2yqLwvW1=~^ zNX?eWmc(D1vO0Zz&c>~a$c)W@D4L(=(A*^}{QmFX|Bo#okEx5Y*=tSuI+keb^BidR4DkbA-q7CVK}Q

+ceni=^40!g-q?xnoMl9 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 pruz)_j~)j4z&CpAZ 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 KfBr%5!2bsQomg@J literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/WSCHHELP.OVR b/Images/Source/fd0/u0/WSCHHELP.OVR new file mode 100644 index 0000000000000000000000000000000000000000..49becf77009ce60d60055f3b4521dbbe49c56cca GIT binary patch literal 29696 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 R%c&G&4dyTS-+$qs{|CUiWVQeR literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/WSMSGS.OVR b/Images/Source/fd0/u0/WSMSGS.OVR new file mode 100644 index 0000000000000000000000000000000000000000..84625d8eae9a83d367a26211819dab455c9c9f19 GIT binary patch literal 13824 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/WSPRINT.OVR b/Images/Source/fd0/u0/WSPRINT.OVR new file mode 100644 index 0000000000000000000000000000000000000000..83bef6ea8955c9a315a55fd6d4cc075c069fd599 GIT binary patch literal 150528 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/WSU.COM b/Images/Source/fd0/u0/WSU.COM new file mode 100644 index 0000000000000000000000000000000000000000..39830fdfe780b64cd83d940e2bb78a5851da0bce GIT binary patch literal 7168 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/XSUB.COM b/Images/Source/fd0/u0/XSUB.COM new file mode 100644 index 0000000000000000000000000000000000000000..15e86abfc94ac7ae15b0db899aec96d711d56e58 GIT binary patch literal 768 zcmaJ-Ur19?82`SZbGy2mb7AblcK>F2M6D4sMuW6^oJmsllHu|`jC9jEbE6uwq?cZL z2z=-{=%I+BkU|FA#fN+0K1^AGK_H?ad+MRr*>|<)&cpe>^EWg|hr`^;SmQvJ9SI37E$JA6N z?XaaxR+^p8=~-q}kFc|QHe;7%{=PB@kp=OJhH|(riuHkN33wm z)TxRl(m_>vMB^N1$^gn(n0*c<>?w~u?3MdO@_84cTHYyhY%JVhpF+WF3H!Mh*F(19 zi7>GV)_X2S6|FT6U%BiLULq>vC)}t&^N~K$Sm*pDpo<_mkX{L-lIFTn8XeI(0X(wb Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/ZAP.COM b/Images/Source/fd0/u0/ZAP.COM new file mode 100644 index 0000000000000000000000000000000000000000..47ffcbb8372e3560e5564daa0b2ea165d31a0930 GIT binary patch literal 9856 zcmc&)eRNdSwLfRR^D)T`WRg21B)Un7$GE=WR!dYfdojbKoE^&0@0AfBnUhq zu=@0|)>D^C<<+nHtcuI7`WkI%r*=INjKN&wzKW|*R-b(}eI-`I07E-cEr$0y_f9?p zySm={=M9jYyJw$s_Bm(oeSZ6Q8O$(jxVgIiTc+&h;0j}Qa~&Fsx8X+-|FK}QwMcIf zd<@ymbO~KXDJ9AFN9~qEA~tUC4)<(m>1K-xf?VYq|M7P}w@iJi8tdf0tzXsCet(z| z*3{Fo`Cj~P3~%o1>S3gMTX)~Czuj%(8})PHfAu$DAqC`%v{cnhLWKu+7tyldZ8XAC z0+cxaKxq+)zAo;j>UVPk71VQpI`pQIuoo*mS)i>A5JIoLyky;R;vB9f^b zEpZ?5_D7_gaVA~y_K(YwajrnU&i#~{h`Q5z@_-dZM zm{0Dd>W@V!S;)ZGm|D0X_i%~$TLWg4AE4r24QkNGY))cSt9(LKy~F=rAi$P)-rv&E z-pX3FE$rLDwZuD-(tFsk@0*H>TliT`Pa!S5dSvGdMP%&-}Y7_X7Og)7}wg4Q*|`;XX!EidS~E zw6dkGtv%u1Ug9tq>%%+ySg+t|iwz9pqj~I=s zd&2j(cWv*T=w%cuy88OMwoP_4mR0X;?_+H}kWIKhF&Psk>mEu>VoiG|ENQG; z^|W_xA!cJ`M|=0(T`fJWSXsEIg)gp`m~~aYu-@=}+ryok!^B)x-HJI9hNl>{Ro1s` z3zHPb(#@Os;!-?}Rc`O;33v8QhD9oAmHFa2p;^$ktDB@c*B16-Uks$47;>A4p>!oN zlGVhRTS1Ja8;FTC5>xI{VkVWuoV$#eORI@xnwj!^MrayI>@Q=ih_MBX1sS^;4+|Mv z#8@$7i}6sxSSe#m8LPlUC1X{LRWnwD2R5I7w5`xu^NEe{-I0mSf@Xa~6RT;st-gxk zVR?O1_1d+!t!}Eu<9xPkc@tY&zn;}queT;1%bG$^U(1>rRulWu`s#H}w=ijaVf`GE ziod1&XG;C*riu+Ks~anqE*m#zS*k1zmV>@Wd~+?EEw5O2^~bsL_Pj{^-TC>klO%s|)WV})8$(#b zo!5)d59}d{u0lEY`2Bv2=xL#zc^Tq>7BJ`&$OzG3L56tN?2$6m6Eg#W41FAK%0=<0 z34x*+r0}q7pUuPWpwcjrurud0T)B?YFi7Tl;V(OnQ&Zq^U zrG>QclRsH@Ti02YsSqT&2*F_$s~eM_M2vgNC7=A=>4QJThfNHAkPc$-x9A`whq(Of zs;_AlphJOQQ2B7!zr>zJ>kd%$l2@IdPmu`F*liso`QknjZ9YIDioT8|1;0zN7Uxrx zrb58?>mUsokX04&L!Mm{i#wfY54>OY{_MQqT~y0MIL1wMFpQ)4J0HXR&_M86QGG30 zuwh%!TAnPQcSTN&S_XpWd7|R>RE}Cbf3QX?KeKxNXg#fdLQh4cIqKmg_4j`9Np67n zk{KJIe&ko5_3^*H&nwHF08sObNvktb{_&A!W_@3F(6H8BQf_&Z@ky5x` zqSp{sdJHO&XvLlgGlce)2b-z-kQlh+^Z7iNeCoSC^|D`#S=DF!>J>lVuXp((`A)s+ z8($yikNf@C^?1{#zUhlGFSig&#R^X3+Xi>o#2-)WGWs?#+-w#eZ`u$c+u%z7Y5meD z46Jf{UUaB=IcP+i8{F~Nn^ekU`a>DYZ7IBqHuJ(MZJ(wsmBG>^s4wB_Bbr4#7Nn=jVVrPavOmmT z#Alnn02db?U8oF*m#on({So$kE*Kn0jt>Q*dfeRQ^vad2>bj!3ZFuY z6LGf|#t)i3QJ46E)pOAm$_U0>O5kq04nYpsI zlU!nH2rWSV+oe|cLvzqjD?J0j19lEOx~b|*t`%Y zpnyJ(R|_Ywz(n`$-NfW>1W=jkwyLG~UScZMZhH-um?xB5yLNOEvpZqPZN0!go!htF z9qz#;-L$JatfLr@ObwD5!OX)X&lr#g`w2T-sfdz`IfCDxG3}gZf6axg1 zO?AYSxr&&ItAPeKtsv&i+laZiiC9R}(h6cJ-ayiAsVT|!>J3$mt5(-H-InxA`&;%A z`=9OBw5qg&K8Ndoug&!x`}6h((grf#vRm?#31Db_7sJ+e^|bb~_D&sW0fFKR4bpUW z0Z4Ui2U3EN$oFYi#~CK1qIsN&o%G0uhke2O0I_kfpXZCVH1!$pV5LW$ora?>8_k1! zc;At;LQI#G-yk_-ni5^om5zU-C`TKLPkB~|;ukEaRf3giVu6^RKAMiOtPyV)<;t{C zBie0S2T%BjT9-CF2#DT^8Gt;?~P|-a%*zZnS~mR#L7Y(!@P>V0MLf zOJHoao4a{UI=|t|9sGJZ!!Pv#8jhQ7No0J{bDU2l83_{M}Cy@#RXn^Adf7su(m6FjPb7-vt1^2U;HaCXzI8;gh}3LH#l)eyR< zkr;r34YMkUVG+l~wZu59i5M4cfWxom(+~>=;MFGZv&BE3SeC48?+o*Y>iLKe?!Gc( z#55PE6$%{ZGE^kf5G%KMYfDGp#BL-PEePJca8dE%lG3F5m8+XJ)Kt_q9&%(jk2$V6 zoX*M_56!qbWB<(QFh>5Cjy!+nz)?NpC{qHDQl|}7=cDkVUps)a#_)(MPQ52X(@@|d z(dI`fL|ix8{1_d;1(<%FT3Mnuv?qJ22YmzZDkbpP#0bnGuG5B~Hh6Kg@i8i{;71P_ zS(IS!N8Q7Kpbi<4W-QZ%_49xMEo`&DcPFq(o3F?ZZ9Nn(f|k>+`i zND}_d!oN(tpKvn7cxTzURc1 zhGhjdQqS`aZu3Se4m%fy97m*du6HzK=g>PDmooPHS%)%pIz04F&QOmfqEEBProQGt z7z&@Nzvrj-vSR=-TCT@!$ci#~@Ty-w!>QhGr+8zaZRCLoP06Od=RkN1r&Y64cmvop zG7Q)e6JEja2!F&rK-X>jga$wI51qC+{?mi=yVu#Ifu- z%uHoSENFUOaL6w^A}4odI4wji%nEvoEFI7TQ>=nTrhMt z3}(Pf+}0rw6vD5@xZ0(BRAs{9z`P9nR>Zj(37cO`gyU(1ikrtl^9zo1>IxqMtSEQn z)aj&iXkpXbknK4!=n(sD1P-t)CbaC$cqnnUk+M zqzj1%AE?~nbzIdv=4A&wMf@ZK=o#G(*m+aS>f_nNXNrDv*f*YBVm)IWci^tPQv*pl zXT&c}CDp0(CR;%-Y@Y%V3;?K`lOzmPvPQ6ILx)n~E#j@N$??aRmN?_^`q-JJoP{!L zWAd##otmK!tn*79;XcmJ+%PJ?-M(_+cGE3?mpU)Iv^!C?XAJ~Da|Op-0EQ^W0MZPPYa<4^scXv?5KEj$DFl%cz5xTy zt^!5X7iOEcwgBs4?ZhYpq_G47W7{~ev!>}N2cu|vZ1t6ulO$cpN7aN$3_^?v7v6rOkxFrkFxe;oz3(JPi8I73T7?I(yNFD zqcj1!E0c109@BCf(4YDP zFG%3yw*~>~NdBJm{5oy*yFfJf`8`P^*{X(Oa8{B%4 zs&TQI6I|@~-5fIJX7fl*vZ{x&IXs?ZSmkVliO#St&rVc7tB(p#lVF}ZTFKneMvvQ* z?;dfEaClI==ZsM@nuITQI&jZb}niA2n!tV%4Fv#Gz&T9iTY6BH~^FWh^ zi3cYJLNA~i3**KPj zc_Yzge8YE-?`fUejjhB6Z}UYPVQ+(5{C9qggcxzxc6INXycu;@=f%)b(*5dG!>8ujn?+w?v9pSn1@ypBV7mY=J#a^nFt8R_-l+*GWGU_ zKO3_v*Cprn=C04Zo@7r@+!OAqQSCa#t$UqLxa(dwop3kha`4fZAiyV>?<-#QWP<#L z6Hn6KcmePvMM!}A#@TqDqTE{!0>ZpYHGHHb-ZtPCJ(-WNcmia261YFFcz+%;zeW)B zp-zOQIOJdUYR5$X5vJAU<;FQ$T4Y+-U= zUgW57Oe|oyFz^m>G2?6aln38y>JNRv+o{envgj&|$jhXOfokOE#7O88OWtM0XY^7- zDE);ucEr^exgjxV3NJXO3f`p^l~vU>gxIbFUi0e1J6Hz_>l*;pyaWUTa4pndqv7>s zM=LQ+5M-Q9n|FIpyAHzOI=$Sd;0^bZ>qxYDYqsNMS_@dF%`JGl*1 zP2eqwLob~RlQ!L+Ai|_gYXG;Bl2cOcSRZ41Y!&OyT2V7dpfH9egZ zm!3ANdc6UB%SYCgX6Q;8UsGD-g`V&+G`*gO@xKDvsFxe3?I|eHg-W0Ue9%3V-vwW; z^Pc7k$X56-45#oYVszo-XyaDO2Y|||Dm2a|COx(Djo~q1b8t-Foo`4PL$gNr*229W z$MZ2}_RdTZ{wP1~jVPpgH;T|Q$Cv!7+=aAv)?~3kd53qV<1fVp-dUsjf?;YgPKfxM z#?bAOA=D83)C4NjC`P@`5fe3XyN)7+o-rzw4XdJ+aj(J?aNL_V3kY`z(4D`nBwB%T{@;qa+7K{s5V1fdrrlWYCZJg-stNw<=A9f(Y{W{^H_j?r}s;vYKkF_J~8DQ zKAe&PR@uel$9Ycdqj233^$EYe%Yhw`4`aI%-)O~-{+biCH4Xx_^-#Tqc!#2Ij4(4^ z0?vK=m@rKKh;^%mzpYZ8#=SHA&PPFl9_05F<|0zeTLdIUXHY{Ab_ef|-r^>e?lsKz^llRJi@Jra*!{XNXs zJHGG3)BbVx;jjIn0=_ku#7sJf$(`EIY%2Vl$f)qD=%d0*Vt@+Ii-lBpT3kSdC;$KE F{~uk{?9TuI literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/ZDE.COM b/Images/Source/fd0/u0/ZDE.COM new file mode 100644 index 0000000000000000000000000000000000000000..9bc493c310e79d8d50a32177d10bcdbcb4b18694 GIT binary patch literal 16896 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 Zx%h1LrVc_oe`n)IvvbR*{2$uV{wMiPr_}%e literal 0 HcmV?d00001 diff --git a/Images/Source/fd0/u0/ZDENST.COM b/Images/Source/fd0/u0/ZDENST.COM new file mode 100644 index 0000000000000000000000000000000000000000..8ccc976739f96507289890bf7df565aba040127e GIT binary patch literal 10624 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 bk5H5$hlbTiaDw7gPg(5kR7w5knkxKXQtb6U literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/CLRDIR.COM b/Images/Source/fd1/u0/CLRDIR.COM new file mode 100644 index 0000000000000000000000000000000000000000..d1f2a7d638df0bd80130b95c717218e485636bbe GIT binary patch literal 1619 zcmaJ>PiP}m7=KBo@6l{CZV(D0ZeNq&YBaSwD++^Vtx30S%%3)il_0B3)0a9ln+Y?M zwvkpAi+T`mo;-M4dhjH8Qjn6_ElzPL>|q5@uFxXJUGY%x6#d>zvk`+1%=fIH%kQJRGe3$#@BAH6kQRu%i+XZLbRmJmBVRa3&Gd=5RvrSM0)kre4h`RDCsy`8t2BV9W_M5J@+l zBHLf@?|id=7FhH0|@6x{X07JG@i_higWtwKD+o{loygWHB&1)u2wRD{|%zB%aTFs`W zLo>UriqPo>>7M-O0kPi}{cx2n`Z!I7xSK&Bw(LjJ6)e4qrCBV^ zW9c<4<*~Gc`JHbldP8lj(F8T$Q4QKM)w*i7y{DpWFntqV4yYJBq<-@nXRV^uXbdd; zPg9lKO-3seD&5qzDuXDLMw_m)Hr2qS?sA}HTdFw)wmubl74FmPhO!3Dbv9UDTIF4v zq;DqD&(cKYS}2&}ujjv=;@%ofR#j^%+~}U3g6UImr-LDff{8SxvkhgX4pFg{)*97X zX0v4iC{dv_tdKlKZ~U-}hCe#6!e zI2jxkof{U74U0mVFH34W+K0C3TQwo|nF=KZN@Q;JQ$7 RFgWss^26~5s=npH`Zq8hC}98q literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/COPY.CFG b/Images/Source/fd1/u0/COPY.CFG new file mode 100644 index 0000000000000000000000000000000000000000..3d5310acb996594e037f794e5af30d815268f1c0 GIT binary patch literal 3456 zcmbtW+iu%N5FOU3pa?MvG(gjPr+!IPC{CQ~Yi&yojK)?WB`#7RC|2YuT9{h0Bo&8! z?+5fh(r@TvKO+J9BR#WAU8p2z-7-MDq;_s+&YaypH-b(4`zyE-=*C8{5&U}Lx8RRU zms-0``kaCX?>%kwn)E3JzhHIPq$?Esj@40R{bV@M#1Hcr;S0AzM$X$t6`Hq zrl7>?q)8u9@Di(TlfHzP3r`!5oAeb0ukdaEJz}B<7l`%(+M?zMST$QW8}tp)Ypiz~ zbeHJz`$V@I^exc=R<|4U9Z`wZod%r{y~OHngA~y#tnM`^Ci<{JbiYAoL_MrFTdj*f zEgs(QfB%H{6FWA~W|=BXVtE*5T3g=X#jefP#oadVX5qv<*Su#6u_&@6=48x69qX`Q zWg~n|OZE>;dTs8#FnOVEsQHo33)y{OV$BHB#k;XS;L_x<&4)Hm#h+}^qPjqI+CGU<4ow<<4K3m_pc!$a3 zHb2f$xgIN^P=mE=G60!mC69ERoOvslFz>bh!Qfa;^&$$hGunTLQ3g)jKn~f8fivj> zvxyE*87<_lD)g{W(-iyM-@LY6UcgLw{yjr))fjqHx>`Z($g{ov)FYy(oi?xUS$luO z=jjHtEM(P(qHDiO%ksH<-hP5NV z*jkVj#iYnn##OP^XB>&1im+!o)v7AN<&t2Iop@Kki3s9Zrc^-RT}_gJE7U2aG|S}_ zt?2(Ut6DxIul*7aA_zT3+t<8xxCCShCj=lweFD2+sB8fYYu-?TD72u++_zOjbKqS} zI2UCSrPWrAVjVej{MTIE*F1%Q3Ev{$I?D=-h}fg&4#eG~UWfY+yS+h&f#q@Uhu(k< zI5bJlQ2knOjg3qQb#%3P-#`}BRnHt%<|XG2YT@Z-YtZ*cD*zvwsfkr4ZnxZVyT#Yk zD0!~i9R}A~rD?nzk_4?((RDX5ZdRPr>hxOeUo}VulyaL#+E1IqSW;STpo+z7SwqRU z8(2TW=B?u`PEvQf01lv)L)qmQp>*j20^vr0|3_~}+a+3^j;o1EF8hQ1t6-L=N1n_w z^jT;tzkxo&d_QX-N+?GXKCICrlq*m+Wu0Yc*%&vVN?lxBIbz+jBsi#MlNt)r;rXQb z@nTGxXZ!ppu0gceT^-P9p&KrbeUS)JQ9=eu@NPsDBY)D@97S{Y!ZO4JHND)dG|APm zr^3@&>IPNXGFKzPY3V~I$R^noa#H$)ris72;TK@zZa>IQh&aD@fQaI7%iC?$aB<`9 z`XRz2L={+opM;eZA|AQC-dU5qT0oU%HUc8uKF*Lw&IL#lg({2kul-c~*OO&M_YXvp zC8vC@q`+T$dfKEwqkJN4Dj8cKpN9%kV53?QU{$Vvo@rYMl*(2vJSSx~WFDs&R#-xN zimdE#?(fq8r{>DerX!#yw8lnRaSp{ox_K(PCaOIL)O&_5E#209c?YsvO-H!+Co@b> m#xoQ?e|7WX_~8brOc6&z_AssW5=SL6!D(QU2#lcr_xuh16pqgT literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/COPY.COM b/Images/Source/fd1/u0/COPY.COM new file mode 100644 index 0000000000000000000000000000000000000000..87c0c2fba8bed0622684a78abd89ef27d3f4dcb3 GIT binary patch literal 6912 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 OD{d7&wMY1r#s2}xY8I;i literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/COPY.UPD b/Images/Source/fd1/u0/COPY.UPD new file mode 100644 index 00000000..3725b0e8 --- /dev/null +++ b/Images/Source/fd1/u0/COPY.UPD @@ -0,0 +1,43 @@ + 11 Dec 88 + +Some changes have been made to COPY since the manual was written. +Comparison of dates with Existence testing ON has been changed to +use the Creation date when no Modified date exists, and print +"Undated" when neither exists, yet both source and destination +disks support file date stamping. Additionally, the /X option +has been re-defined, and a new /R option has been added to +Version 1.4. Please replace Paragraph 4.1.2.9 on page 55 of your +ZSDOS manual with the following two paragraphs describing the new +options. + + +4.1.2.9.1 ERASE SOURCE FILE AFTER COPY. + +When you want to "move" a file from one area to another, the "X" +option may be used. This option causes a file or group of files +to be copied in the manner described by the default or specified +options, but after the copy and optional verify, the source file +or files are erased. You will be notified that the file has been +erased by the status "(X)" being printed on your console. To +minimize the possibility of deleting a good file when errors +exist in the copy, the Verify option should always be active, +either by default, or specified. When Verify is active, any +errors detected will disable the "X" option for that file so that +a good source file will not be deleted. The "X" option has no +configurable value, and is always assumed to be "Off" requiring +the option in the command line list to be effective. + + +4.1.2.9.2 COPY ONLY FILES WHICH EXIST (REPLACE). + +Occasionally, you may wish to update selected files to a destina- +tion in a simpler manner than naming each file, or using the +Inspect option. The "R" (Replace) option, when active, tells +COPY to transfer only files which exist on the destination direc- +tory. If the Archive option (A) is added in conjunction with the +Replace option, only files which have not been archived, AND +already exist on the destination will be archived. It should be +noted that the No Replacement (N) option is incompatible with +both the Replace and Archive options, and is disabled when either +"R" or "A" are active. + \ No newline at end of file diff --git a/Images/Source/fd1/u0/CR.COM b/Images/Source/fd1/u0/CR.COM new file mode 100644 index 0000000000000000000000000000000000000000..8a824bcc4108a87e72b8e2925f3402628e7f9e60 GIT binary patch literal 6144 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 T|5c6uS2g}$)%gEE)%gDb`|RXN literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/DDT.COM b/Images/Source/fd1/u0/DDT.COM new file mode 100644 index 0000000000000000000000000000000000000000..83f8603f93e61057d63c994de083a1fd83e29781 GIT binary patch literal 4864 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/DDTZ.COM b/Images/Source/fd1/u0/DDTZ.COM new file mode 100644 index 0000000000000000000000000000000000000000..e30a34c0c31b568fb7d3e9ece2d375524b8905b6 GIT binary patch literal 7424 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 VA`-*10cn8gmj)aQKKRAX{|4B&cRm0B literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/DDTZ.DOC b/Images/Source/fd1/u0/DDTZ.DOC new file mode 100644 index 00000000..e4470528 --- /dev/null +++ b/Images/Source/fd1/u0/DDTZ.DOC @@ -0,0 +1,564 @@ + + DDTZ v2.7 + by C.B. Falconer + edited by George A. Havach + +Introduction: +============ +DDTZ v2.7 is a complete replacement for DDT, Digital Research's +famous Dynamic Debugging Tool, with improved functionality, bug +extermination, and full Z80 support. In general, DDTZ is fully +compatible with the original utility, but it has extra and +extended commands and many fewer quirks. All Z80-specific +instructions can be (dis)assembled, though in Intel rather then +Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U' +commands) both 8080 and Z80 instructions, depending on which CPU +is operating. On startup, the program announces which CPU it is +running on. + +DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test +for a 64180 CPU, since this cannot be done without executing +illegal Z80 instructions, which in turn will crash some +simulators. However v2.7 does not execute any 64180 instructions +internally, only in the subject program. + +This issue supplies the "M" version assembled, to avoid errors +when switching between MSDOS and CPM systems. The command table +is updated accordingly. Most CPM users are also MSDOS users, but +not vice-versa. + +The program is invoked by typing + + ddtz +or + ddtz [d:]filespec + +In the second form, DDTZ will load the specified file into +memory starting at 0100H, unless it's a .HEX file that sets its +own load address. Besides reporting the NEXT free address and +the PC (program counter) after a successful load, DDTZ also shows +the number of memory pages needed for a SAVE. Instead of having +to write all this down, just use the 'X' command at any time to +redisplay these three values for the current application. + +NOTE: loading more code above the NEXT pointer revises these + values. + +As in DDT, when a program is loaded above the area holding the +'A' and 'U' (and now 'W') command code, these commands are +disabled, and the extra memory is released to the user. Thus, +DDTZ can occupy as little as 3K total memory space. Unlike DDT, +however, DDTZ will not overwrite itself or the system on program +loads (except .HEX files). + +At initialization, the stack pointer (SP) points to a return to +DDTZ, just like for the CCP. Thus, programs that normally return +to the CCP will be returned to DDTZ. The 'B' command +reinitializes this condition. + + +The intercept vector copies the BDOS version number, etc., so +an object program does not know that DDTZ is running (except +for BIOS-BDOS vector size). Thus, programs that check the version +number should execute correctly under DDTZ. + +All input parameters can now be entered in any of three formats: + + (1) hexadecimal (as in DDT), + (2) decimal, by adding a leading '#' character, + (3) ASCII, by enclosing between either single or double + quotes; either one or two characters are allowed. + +Leading blanks in command lines and parameters are absorbed. +Either a comma or a (single) space is a valid delimiter. +Either uppercase or lowercase input is accepted. + +The default command (for anything not otherwise recognizable) +is 'H'. This allows convenient calculation, along with the other +features described below. So, to convert a number, just enter +it! + +As in DDT, the prompt character is '-', and the only error +message is the query ('?'), which generally kicks you back to +command mode. + +New Commands (Over DDT): +======================= + +NOTE: letters in parenthesis, e.g. "(U)", show the equivalent + command for DDTZM version (compatible with MSDOS debug). + + @ Sets or shows (with no parameter) the internally stored + "base" value. Also used with the 'S' and 'D' commands as + an optional parameter (though without the '@') to display + memory from an arbitrary base marker (offset). When set to + zero (the default), it does not affect any screen displays. + + B B)egin: resets the USER stack pointer to its initial value, + such that any program that exits by an RET will return to + DDTZ. DDTZ provides a default stack space of + approximately 24 bytes for user programs. + + C C)ompare first_address,last_address,against_address: shows + all the byte differences between two memory areas, in the + format + + XXXX aa YYYY bb + + where XXXX and YYYY are the comparative memory addresses, + and aa and bb are the corresponding byte values. Can be + used to verify the identity of two files by first + loading them into different memory areas with the 'R' + command (see below). + + + W Write: stores the modified memory area to disk under the + (K) filename specified by the 'I' command, overwriting the + original file from which it was loaded (the user is queried + before doing so). By default, the image of memory from + 0100H through the "NEXT" value -1 is saved. "K first_addr, + last_address" overrides this and allows writing ANY memory + area to a file. Almost a necessity for CPM 3.0 (no SAVE!). + K)eep on DDTZ + + X eXamine: redisplays the "NEXT PC SAVE" report at any time. + (Q) Q)uery size on DDTZ. + + S S)earch first_address, last_addr, value: searches the + (W) specified memory area for the value (a 16-bit word, not a + byte) and shows the locations of all such. Very useful for + finding CALL's or JMP's to a particular address, etc. + W)here on DDTZ + + Y Y)our_option parm1,parm2,address: executes an arbitrary + routine at the specified address, with the BC and DE + registers set to parm1 and parm2, respectively. + + Z Displays (but does not alter) the Z80's alternate register + set, including the index registers (disabled if running on + an 8080). On Z80's, automatically included as the last + part of the display by the 'X' command. + + +Based (Offset) Displays: +======================= + +The 'D' and 'E' commands can use a stored base value (offset), +as set by the '@' command. The current @ value may be +overridden for a single execution of these commands by adding the +base as an extra parameter in the command line. The effect is +to add this value to the first/last address and display +accordingly. The address listing on the left becomes XXXX:YYYY, +where XXXX is the offset address and YYYY is the actual memory +address being displayed. For example, if you have a data area +located at 42B7H and wish to preserve easy access, just enter +"@42b7". Now, "d0,3f" will dump memory starting at 4237H. + + +Further Changes from DDT: +======================== + + A A)ssemble now accepts the full Z80 as well as 8080 + instruction set, although it expects them in Intel rather + than Zilog format (see notes below under the 'L' + command). When in doubt, see the mnemnonic list below. + + D D)isplay or D)ump will accept an optional third parameter + to set the base value for a single execution only. Format + has been cleaned up. + + H H)ex_arithmetic on two values also shows their + difference in decimal. With only one value, converts to + hexadecimal, decimal, and ASCII (low-order byte only). + + + N N)ame now allows drive specification (d:...) and sets up + (I) the complete command line, including both FCB's (at + addresses 005CH and 006CH). The tail (stored at 0081H up) + is NOT upshifted. + I)nput on DDTZ + + U U)nassemble now displays the raw hexcode, especially handy + (L) when examining non-code areas. Intel (8080 style) mnemonics + are used, so some disassembled instructions may look + strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become + 'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes + 'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)' + becomes 'PCIX'. + L)ist on DDTZ + + L L)oad now permits loading a file into memory with an + (R) offset, which is added to the default load address of + 0100H. When reading in a .HEX file with a preset bias, + the 'R' command will not transfer control to an invalid + execution point. Another execution of the 'R' command will + reread the input file, e.g.: + + n blah + l + ...modify the code and generally mess about... + l + + The original file is reloaded, and the modifications are + removed. + R)ead on DDTZ + + E E)nter, like D)isplay, now accepts an optional second + (S) parameter to set the base value for a single execution + only. + S)ubstitute or S)et on DDTZ + + T T)rap/trace on termination now shows the complete CPU + state. Traps and traces no longer lock up when a user RST + 7 instruction is executed. Tracing of BDOS/BIOS calls is + heavily trun cated, avoiding clutter and preventing system + crashes. + +NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others + can crash the system. + + R R)egisters also shows what two-byte values the HL and SP + (X) registers are actually pointing to. On Z80's, displays the + alternate register set. + eX)amine on DDTZ + +NOTE: Any use of the 'W' or 'L' command resets the system DMA + transfer address to the standard default value of 0080H. + + +; This is the output of DDTZ when disassembling OPTYPE.TRY +NOP LDA 06A4 MOV M,H +LXI B,06A4 DCX SP MOV M,L +STAX B INR A HLT +INX B DCR A MOV M,A +INR B MVI A,20 MOV A,B +DCR B CMC MOV A,C +MVI B,20 MOV B,B MOV A,D +RLC MOV B,C MOV A,E +EXAF MOV B,D MOV A,H +DAD B MOV B,E MOV A,L +LDAX B MOV B,H MOV A,M +DCX B MOV B,L MOV A,A +INR C MOV B,M ADD B +DCR C MOV B,A ADD C +MVI C,20 MOV C,B ADD D +RRC MOV C,C ADD E +DJNZ 0134 MOV C,D ADD H +LXI D,06A4 MOV C,E ADD L +STAX D MOV C,H ADD M +INX D MOV C,L ADD A +INR D MOV C,M ADC B +DCR D MOV C,A ADC C +MVI D,20 MOV D,B ADC D +RAL MOV D,C ADC E +JR 0134 MOV D,D ADC H +DAD D MOV D,E ADC L +LDAX D MOV D,H ADC M +DCX D MOV D,L ADC A +INR E MOV D,M SUB B +DCR E MOV D,A SUB C +MVI E,20 MOV E,B SUB D +RAR MOV E,C SUB E +JRNZ 0134 MOV E,D SUB H +LXI H,06A4 MOV E,E SUB L +SHLD 06A4 MOV E,H SUB M +INX H MOV E,L SUB A +INR H MOV E,M SBB B +DCR H MOV E,A SBB C +MVI H,20 MOV H,B SBB D +DAA MOV H,C SBB E +JRZ 0134 MOV H,D SBB H +DAD H MOV H,E SBB L +LHLD 06A4 MOV H,H SBB M +DCX H MOV H,L SBB A +INR L MOV H,M ANA B +DCR L MOV H,A ANA C +MVI L,20 MOV L,B ANA D +CMA MOV L,C ANA E +JRNC 0134 MOV L,D ANA H +LXI SP,06A4 MOV L,E ANA L +STA 06A4 MOV L,H ANA M +INX SP MOV L,L ANA A +INR M MOV L,M XRA B +DCR M MOV L,A XRA C +MVI M,20 MOV M,B XRA D +STC MOV M,C XRA E +JRC 0134 MOV M,D XRA H +DAD SP MOV M,E XRA L + + +XRA M JPE 06A4 SLAR M +XRA A XCHG SLAR A +ORA B CPE 06A4 SRAR B +ORA C XRI 20 SRAR C +ORA D RST 5 SRAR D +ORA E RP SRAR E +ORA H POP PSW SRAR H +ORA L JP 06A4 SRAR L +ORA M DI SRAR M +ORA A CP 06A4 SRAR A +CMP B PUSH PSW SLLR B +CMP C ORI 20 SLLR C +CMP D RST 6 SLLR D +CMP E RM SLLR E +CMP H SPHL SLLR H +CMP L JM 06A4 SLLR L +CMP M EI SLLR M +CMP A CM 06A4 SLLR A +RNZ CPI 20 SRLR B +POP B RST 7 SRLR C +JNZ 06A4 RLCR B SRLR D +JMP 06A4 RLCR C SRLR E +CNZ 06A4 RLCR D SRLR H +PUSH B RLCR E SRLR L +ADI 20 RLCR H SRLR M +RST 0 RLCR L SRLR A +RZ RLCR M BIT 0,B +RET RLCR A BIT 0,C +JZ 06A4 RRCR B BIT 0,D +CZ 06A4 RRCR C BIT 0,E +CALL 06A4 RRCR D BIT 0,H +ACI 20 RRCR E BIT 0,L +RST 1 RRCR H BIT 0,M +RNC RRCR L BIT 0,A +POP D RRCR M BIT 1,B +JNC 06A4 RRCR A BIT 1,C +OUT 20 RALR B BIT 1,D +CNC 06A4 RALR C BIT 1,E +PUSH D RALR D BIT 1,H +SUI 20 RALR E BIT 1,L +RST 2 RALR H BIT 1,M +RC RALR L BIT 1,A +EXX RALR M BIT 2,B +JC 06A4 RALR A BIT 2,C +IN 20 RARR B BIT 2,D +CC 06A4 RARR C BIT 2,E +SBI 20 RARR D BIT 2,H +RST 3 RARR E BIT 2,L +RPO RARR H BIT 2,M +POP H RARR L BIT 2,A +JPO 06A4 RARR M BIT 3,B +XTHL RARR A BIT 3,C +CPO 06A4 SLAR B BIT 3,D +PUSH H SLAR C BIT 3,E +ANI 20 SLAR D BIT 3,H +RST 4 SLAR E BIT 3,L +RPE SLAR H BIT 3,M +PCHL SLAR L BIT 3,A + + +BIT 4,B RES 3,D SET 2,H +BIT 4,C RES 3,E SET 2,L +BIT 4,D RES 3,H SET 2,M +BIT 4,E RES 3,L SET 2,A +BIT 4,H RES 3,M SET 3,B +BIT 4,L RES 3,A SET 3,C +BIT 4,M RES 4,B SET 3,D +BIT 4,A RES 4,C SET 3,E +BIT 5,B RES 4,D SET 3,H +BIT 5,C RES 4,E SET 3,L +BIT 5,D RES 4,H SET 3,M +BIT 5,E RES 4,L SET 3,A +BIT 5,H RES 4,M SET 4,B +BIT 5,L RES 4,A SET 4,C +BIT 5,M RES 5,B SET 4,D +BIT 5,A RES 5,C SET 4,E +BIT 6,B RES 5,D SET 4,H +BIT 6,C RES 5,E SET 4,L +BIT 6,D RES 5,H SET 4,M +BIT 6,E RES 5,L SET 4,A +BIT 6,H RES 5,M SET 5,B +BIT 6,L RES 5,A SET 5,C +BIT 6,M RES 6,B SET 5,D +BIT 6,A RES 6,C SET 5,E +BIT 7,B RES 6,D SET 5,H +BIT 7,C RES 6,E SET 5,L +BIT 7,D RES 6,H SET 5,M +BIT 7,E RES 6,L SET 5,A +BIT 7,H RES 6,M SET 6,B +BIT 7,L RES 6,A SET 6,C +BIT 7,M RES 7,B SET 6,D +BIT 7,A RES 7,C SET 6,E +RES 0,B RES 7,D SET 6,H +RES 0,C RES 7,E SET 6,L +RES 0,D RES 7,H SET 6,M +RES 0,E RES 7,L SET 6,A +RES 0,H RES 7,M SET 7,B +RES 0,L RES 7,A SET 7,C +RES 0,M SET 0,B SET 7,D +RES 0,A SET 0,C SET 7,E +RES 1,B SET 0,D SET 7,H +RES 1,C SET 0,E SET 7,L +RES 1,D SET 0,H SET 7,M +RES 1,E SET 0,L SET 7,A +RES 1,H SET 0,M DADX B +RES 1,L SET 0,A DADX D +RES 1,M SET 1,B LXI X,06A4 +RES 1,A SET 1,C SIXD 06A4 +RES 2,B SET 1,D INX X +RES 2,C SET 1,E DADX X +RES 2,D SET 1,H LIXD 06A4 +RES 2,E SET 1,L DCX X +RES 2,H SET 1,M INR [X+05] +RES 2,L SET 1,A DCR [X+05] +RES 2,M SET 2,B MVI [X+05],20 +RES 2,A SET 2,C DADX SP +RES 3,B SET 2,D MOV B,[X+05] +RES 3,C SET 2,E MOV C,[X+05] + + +MOV D,[X+05] DSBC B DADY B +MOV E,[X+05] SBCD 06A4 DADY D +MOV H,[X+05] NEG LXI Y,06A4 +MOV L,[X+05] RETN SIYD 06A4 +MOV [X+05],B IM0 INX Y +MOV [X+05],C LDIA DADY Y +MOV [X+05],D INP C LIYD 06A4 +MOV [X+05],E OUTP C DCX Y +MOV [X+05],H DADC B INR [Y+05] +MOV [X+05],L LBCD 06A4 DCR [Y+05] +MOV [X+05],A RETI MVI [Y+05],2 +MOV A,[X+05] LDRA DADY SP +ADD [X+05] INP D MOV B,[Y+05] +ADC [X+05] OUTP D MOV C,[Y+05] +SUB [X+05] DSBC D MOV D,[Y+05] +SBB [X+05] SDED 06A4 MOV E,[Y+05] +ANA [X+05] IM1 MOV H,[Y+05] +XRA [X+05] LDAI MOV L,[Y+05] +ORA [X+05] INP E MOV [Y+05],B +CMP [X+05] OUTP E MOV [Y+05],C +POP X DADC D MOV [Y+05],D +XTIX LDED 06A4 MOV [Y+05],E +PUSH X IM2 MOV [Y+05],H +PCIX LDAR MOV [Y+05],L +SPIX INP H MOV [Y+05],A +RLCR [X+05] OUTP H MOV A,[Y+05] +RRCR [X+05] DSBC H ADD [Y+05] +RALR [X+05] shld 06A4 ADC [Y+05] +RARR [X+05] RRD SUB [Y+05] +SLAR [X+05] INP L SBB [Y+05] +SRAR [X+05] OUTP L ANA [Y+05] +SRLR [X+05] DADC H XRA [Y+05] +BIT 0,[X+05] lhld 06A4 ORA [Y+05] +BIT 1,[X+05] RLD CMP [Y+05] +BIT 2,[X+05] INP M POP Y +BIT 3,[X+05] OUTP M XTIY +BIT 4,[X+05] DSBC SP PUSH Y +BIT 5,[X+05] SSPD 06A4 PCIY +BIT 6,[X+05] INP A SPIY +BIT 7,[X+05] OUTP A RLCR [Y+05] +RES 0,[X+05] DADC SP RRCR [Y+05] +RES 1,[X+05] LSPD 06A4 RALR [Y+05] +RES 2,[X+05] LDI RARR [Y+05] +RES 3,[X+05] CCI SLAR [Y+05] +RES 4,[X+05] INI SRAR [Y+05] +RES 5,[X+05] OTI SRLR [Y+05] +RES 6,[X+05] LDD BIT 0,[Y+05] +RES 7,[X+05] CCD BIT 1,[Y+05] +SET 0,[X+05] IND BIT 2,[Y+05] +SET 1,[X+05] OTD BIT 3,[Y+05] +SET 2,[X+05] LDIR BIT 4,[Y+05] +SET 3,[X+05] CCIR BIT 5,[Y+05] +SET 4,[X+05] INIR BIT 6,[Y+05] +SET 5,[X+05] OTIR BIT 7,[Y+05] +SET 6,[X+05] LDDR RES 0,[Y+05] +SET 7,[X+05] CCDR RES 1,[Y+05] +INP B INDR RES 2,[Y+05] +OUTP B OTDR RES 3,[Y+05] + + +RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05] +RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05] +RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05] +RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05] + +; These are the result of disassembling 64180OPS.TRY +; These opcodes are available ONLY on the 64180 CPU +; DDTZ will both assemble and disassemble these. +IN0 B,20 TST E MLT B +OUT0 20,B IN0 H,20 MLT D +TST B OUT0 20,H TSTI 20 +IN0 C,20 TST H MLT H +OUT0 20,C IN0 L,20 TSIO 20 +TST C OUT0 20,L SLP +IN0 D,20 TST L MLT SP +OUT0 20,D TST M OTIM +TST D IN0 A,20 OTDM +IN0 E,20 OUT0 20,A OIMR +OUT0 20,E TST A ODMR + +; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY. +; DDTZ will disassemble these, but will not assemble them. +; They use xh/xl (or yh/yl) as separate byte registers. +; Use these at your own risk. +INRX H ACXR H MOVY H,B +DCRX H ACXR L MOVY H,C +MVIX H,20 SUXR H MOVY H,D +INRX L SUXR L MOVY H,E +DCRX L SBXR H MOVY H,A +MVIX L,20 SBXR L MOVY L,B +MOVX B,H NDXR H MOVY L,C +MOVX B,L NDXR L MOVY L,D +MOVX C,H XRXR H MOVY L,E +MOVX C,L XRXR L MOVY L,A +MOVX D,H ORXR H MOVY A,H +MOVX D,L ORXR L MOVY A,L +MOVX E,H CPXR H ADYR H +MOVX E,L CPXR L ADYR L +MOVX H,B INRY H ACYR H +MOVX H,C DCRY H ACYR L +MOVX H,D MVIY H,20 SUYR H +MOVX H,E INRY L SUYR L +MOVX H,A DCRY L SBYR H +MOVX L,B MVIY L,20 SBYR L +MOVX L,C MOVY B,H NDYR H +MOVX L,D MOVY B,L NDYR L +MOVX L,E MOVY C,H XRYR H +MOVX L,A MOVY C,L XRYR L +MOVX A,H MOVY D,H ORYR H +MOVX A,L MOVY D,L ORYR L +ADXR H MOVY E,H CPYR H +ADXR L MOVY E,L CPYR L + + +Command Summary: +=============== + +DDTZM command DDTZ command +============= ============ +@ (base) +A)ssemble first_address A +B)egin {i.e., initialize stack and return} B +C)ompare first_address,last_address,against_address C +D)ump first_address[,last_address[,base]] D +E)nter_in_memory first_address[,base] S)ubstitute +F)ill first_address,last_address,value F +G)o_to [address][,trap1[,trap2]] G +H)ex_arithmetic value1(,value2) H +L)oad_file (offset) R)ead +M)ove first_address,last_address,destination M +N)nput FCBs_command_line I)nput +Q)uit (not avail) +R)egister examine/change [register|flag] X)amine +S)earch first_address,last_address,word W)hereis +T)race_execution [count] T + Untrace_execution [count] (i.e. do count instr) U)ntrace +U)nassemble_code first_address[,last_address] L)ist code +W)rite [first_address,last_address] K)eep +X)amine {i.e. display memory parameters for application} Q)uery +Y)our_option BC:=parm1,DE:=parm2,call_address Y +Z)80_register_display Z + + +If you find this program useful, contributions will be gratefully +accepted and will encourage further development and release of +useful CPM programs. My practice is to include source. + +C.B. Falconer +680 Hartford Turnpike, +Hamden, Conn. 06517 (203) 281-1438 + +DDTZ and its associated documentation and other files are +copyright (c) 1980-1988 by C.B. Falconer. They may be freely +copied and used for non-commercial purposes ONLY. + diff --git a/Images/Source/fd1/u0/DIF.COM b/Images/Source/fd1/u0/DIF.COM new file mode 100644 index 0000000000000000000000000000000000000000..87b89d75568272353e76a85046282781b8a406bd GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/DUMP.COM b/Images/Source/fd1/u0/DUMP.COM new file mode 100644 index 0000000000000000000000000000000000000000..03a77c3ca8b8bebcda6664c086872b01db043691 GIT binary patch literal 512 zcmXX@L2DC16n<~bu4H9*8)6LA%cPr&iAY)`)lveLL@18>AyNbnIV6HP70IEO(YK`!-p4oZ`##yTvE#b4CQAW{9MI{t&zjaD7R5=qCS|aj0YqPpO3+r-)ccYO2i- zP=3S1@Brt<)-_m+Zq|nB{X_9(ZVwVq!FD1qEsglqi&YP*k1DLZ{g!E*Zm6$S8kJg;kzB4ema~5{lcWA{)7GRhH8}2`3dI5y57ezdS%G>R zF6zRzWD0DPK*;!IWraCiW+7YxJC^Z`B6BU?1Y0Nmiu6d@1~+o~&tSnb6caxR$~@_v zsi_m6vP(c(0ssLh6W>=X{0edhUOvA`MGu}HUwW-#{3G07-qmA5z5|}qMMj6BU-apZ xW(*MNbb53*!t|&h#yQUz?{@faaNl%-d_HgSUtkF%)=zlG^$yq2P3n9C{{b^Cz8e4l literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/ED.COM b/Images/Source/fd1/u0/ED.COM new file mode 100644 index 0000000000000000000000000000000000000000..a0f0f5410f0542e3e6d05bfcd0fb361d84c73f26 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/FA16.CFG b/Images/Source/fd1/u0/FA16.CFG new file mode 100644 index 0000000000000000000000000000000000000000..b7974d36f9365eafc8c00f30228a4a87dade2d77 GIT binary patch literal 3072 zcmcgu%Wfk@6s>lQI%&y*4Gaq&7qiJop3Gz>AApriq>*M4#|esuUB|9=muOct-PQ5< zJNN-Ug&kWyfi*t?=T?)*kMQu82->x^9baMfAS)w!NPm$Kq2F|Ir$>2eJ4}#GmX9 z+GnwNBI56GI*G;SA}(>djl~xt{spIDEWQ-+?>Jq@;wur0_MqL5#n&Q!fm0_rI5>z1 z&-t6TulqMQLpn7&Q`4qOtungh3=R$l=~U7&nT%dO?Ia1`y27=~Qo>HsPmPkcSR93? zH5!dz1)~v++}(OyNvX*+wrs33TN@2w)Gy}gqNX}GbE;(B6t-rowb3<<&SaM28w$<} zr6pShBhCwt_)j&x+^UIzKrYr+>aIauAzrGYDC`NnB1AI<^x11`V0 zE7W+$ogMaPu)i>L#+W_|vcvv_^Er8J>QdTae+&EDT*`t5m9cVcH?Qun=gtgeI-yHl zEH-U9zz%zE()FUYa`w=8w|yV>{c4=6`+u$1cUQcZwE#roBk`AbD^uL-*U#SIGdwp< zrI9J0{V~fxhUl_nCeu}mo;{;C8QEOY52u5nXDv}yq*GGhp0vI77|c~sQ0iGZ3B0qW zlQ^o=%uM7F!Wf#RKL-B051sd=eF}Wx#j2UCdnE5M0P`GgRim}i(@xUpiLB^!@cdnm z!{ajY7;g?B8K1p1L|qi$Mbz6I{J6(OpLKyg%1I~5WhH5xYPyqT&2(DG3C)$wT}op! zo27a}JTuh2>IT0@fOQGb$N|*%VQ>?f!(CI$4RJskB}>89IMdyNLdoz42N$O6?=OMC zHB@DlZcI}X-!=s@nKFdv290x51DB;2j>~0qlC3&iA#k)=$!JvxnCCSH3BomF6WV9N z3kJw!87Upw?mDMVG=> zF!JPs#e)_vd(0_&^n2{PlLR58xb16r%OC{ToP*P3!niF=Q_;Pe zNW+MhMY;%Bq37Q-?K_DZ!dFMHT#mV#g21lur9Zd}@OrPAshEACx#rHMAoGN>%FMtN z`FdA+e-I52%R*Rn*%?iplABDcW06b8f%ky*ZK8$vc zg4TGFrDa(ekcb!9Hr};lodO&zIp=UCKcus=kmz_2(N!X>gibgg5E_PInXUz=*GU3q zOn~mgW!q(0h3>d{?S=)x8hXPzyo%_=4wjxqbt%UxQ%o&4Nb9)10gm&}F9s`oov3b3 zF;A!NB!}}{jdPltrU1KwmU5oKvFjP8&PhLttJFP!dy4d~l^#RIouq@G8jEMyOz+dm zq5!2<6|gRGD>f;#!JQuAhZXOPpe*Rp6#Vzp)A-G$bPe6(!DS9Oz>w!dI7woku-Iri z3K{S)4_0Z;(X{LVPFg%`cPr2dm44h-gs@jLld2{RF4F{e+&HTdHDy%USveDKp gCUuhKR!O(S8mrZT&3mi6@zbEYgG!u|_}`zu0V!{R{{R30 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/FA16.DOC b/Images/Source/fd1/u0/FA16.DOC new file mode 100644 index 00000000..08b46875 --- /dev/null +++ b/Images/Source/fd1/u0/FA16.DOC @@ -0,0 +1,264 @@ + + FILEATTR + Version 1.6 + + Gene Pizzetta + January 18, 1992 + A ZSDOS utility, copyright (c) 1988 by Carson Wilson. + + +FILEATTR (FA) is a utility that allows rapid settin, resetting, +or displaying of file attributes under ZSDOS, ZRDOS, and CP/M +2.2. Several additional features are available under ZCPR3, +including error flag setting, error handler invocation, an +enhanced display, and better error detection. + +FA will not run under CP/M 3.0 or Z3PLUS. + +USAGE: + + FILEATTR {dir:}{afn} {{/}options} + +If a DIR or DU specification is not given, the current directory +is assumed (under vanilla CP/M only the drive is significant). +If no ambiguous or unambiguous filename is given, all files +("*.*") are matched. + +If no attribute options are given, FILEATTR merely displays the +current state of each file's attributes. Files are displayed in +the order that they appear in the directory. + +Once operation begins, FA cannot be aborted by the user. If a ^C +is entered at the keyboard, all screen output stops, but file +attribute operations continue to completion. If that was not the +case, attributes might be set on some entries for a file and not +on others. Nevertheless, suppressing screen output speeds things +up a bit. + +OPTIONS: A leading slash is required unless the option list is +the second parameter on the command line. Options may be +separated by spaces, commas, or nothing at all. + +ATTRIBUTE OPTIONS: These options set (turn on) corresponding +attributes on files matching the file specification. Attributes +not specified by an attribute option remain unchanged. + +If the option is preceded by a minus ("-") or by an "N", the +corresponding attribute is reset (turned off). + + 1 F1. This is a user attribute which has no predefined + meaning. + + P Public (f2). Under ZSDOS, when this attribute is set, + a file is available from any user area of the disk on + which it resides. A file cannot be made public if + another file with the same name exists in any other + user area on that drive. In that case FA will issue an + error message and leave the attribute off. + + D Inhibit access datestamp (f3). Under ZSDOS, when this + attribute is set, the file's access datestamp will not + be updated, which may speed file access slightly. If + the attribute is turned off, normal access datestamping + resumes. + + 4 F4. This is a user attribute which has no predefined + meaning. + + W Wheel protect (f8). Under ZSDOS, when this attribute + is set, the file becomes read-only when the wheel byte + is off and cannot be erased. If the wheel byte is on, + the file can be erased normally. + + R Read only (t1). When this attribute is set, the file + cannot be erased or modified by most programs. + + S System (t2). When this attribute is set, the file + becomes a "hidden" file that will not be found by most + directory programs or by most well-behaved utilities + that accept ambiguous filenames. (FA must find system + files, of course.) + + A Archive (t3). When this attribute is set, it signals + some archival programs that the file has not been + modified since it was last backed up. If a file is + modified, ZSDOS and ZRDOS turn this attribute off. + CP/M does not fully support this attribute, however. + +OTHER OPTIONS: These options affect only the screen display. + + Q Quiet mode. Console output is suppressed unless there + is an error. All other operations are performed + normally. + + X Screen paging off. With this option, screen paging is + turned off. The screen can still be paused by pressing + any key except ^C. + +ERRORS: Under ZCPR3, errors will cause FA to set the program +error flag and to invoke the error handler. The error flag will +be set to the following values: + 2 invalid directory specification + 4 miscellaneous (conflicting file, no files on disk) + 10 no matching files found (no error handler) + 18 Disk read-only + 19 Invalid option + +For error code 10 (no matching files found), the error flag is +set, but the error handler is not called. + +In addition, under ZCPR 3.3 and above, an invalid directory +specification will abort FA to the error handler, but no message +is printed. + +The following error messages may be seen: + +Conflicting entry, can't set public attribute + If there are files with the same name in other user areas of + the disk, the public attribute cannot be set. + +No files on disk + The disk directory is empty. + +Bad Option: /o + The command line option shown is unknown to FILEATTR. + +Drive R/O + The drive is set to read-only by the operating system and + attributes cannot be changed. + +CP/M version 2.x required + FILEATTR will not run on this system. + +BIOS write error near directory sector n + An error occurred at or near the given directory sector, + which is expressed as a decimal offset from the beginning of + the directory. + +BIOS set track detected - FA aborting + A background program is attempting to modify the current + track setting. The background program must be removeed + before running FA again. + +Not Wheel + Under ZCPR3 the wheel byte must be set before FILEATTR can + be run. + +CONFIGURATION: While no installation is necessary, all options +can be set as defaults, if you prefer, using ZCNFG. The +configuration options are fully explained on the ZCNFG help +screens. + +It is best not to change the name of the configuration file. Its +special name assures that ZCNFG will always find the correct CFG +file, even if the name of FA has been changed or if more than one +version of FA is online. + +HISTORY: + +Version 1.6 -- April 14, 1991 -- Gene Pizzetta + Now displays target DU and directory name in summary. Fixed + bug that caused "GO" to be displayed as program name, if it + was re-invoked with the GO command. + +Version 1.5 -- March 27, 1991 -- Gene Pizzetta + Now calls CP/M version checking routine (it was there, but + it wasn't called). Changed error codes: 10, no matching + files found. "No files on disk" error now gets + miscellaneous error code (4). Error 10 does not invoke + error handler. Not released. + +Version 1.4 -- March 20, 1991 -- Gene Pizzetta, Howard Goldstein + Code to check module data byte (S2) was replaced by Howard + Goldstein's elegant solution which uses a "true" extent + number: ((data_mod * 32) + extent). Entering a ^C no + longer really aborts FILEATTR; instead FA immediately prints + "Wait..." on the screen, turns off paging, turns on quiet + mode, sets the results flag, and finishes what it was doing. + All this is to prevent unexpected results when only some of + a file's directory entries are changed. All errors + including a conflicting file found during a PUBLIC request, + now set the program error flag and invoke the error handler + so an active SUBMIT or ZEX script can be aborted. The error + flag will have the following values: 2, invalid directory; + 10, no files on disk; 18, disk is read-only; 19, invalid + option; 4, all other errors. If no matching files are + found, the program error flag will be set to FFh, but the + error handler will not be invoked. A few other code changes + were made, including a check for CP/M-Plus, under which + FILEATTR will not work. Not released. + +Version 1.3 -- February 22, 1991 -- Gene Pizzetta + Corrected bug that caused faulty operation on large files: + The module data byte (S2) byte was not being checked, so + such files appeared 2 or more times in the directory display + and the public routine was often not finding conflicting + files. Added configuration byte and command line option (X) + for screen paging (paging is suppressed in quiet mode). + Made quiet mode responsive to ZCPR quiet flag and changed Q + command line option to toggle. Usage screen reflects + current effect of X and Q toggles. Attribute configuration + area changed to be compatible with ZCNFG TOGL3 routine. + Actions of D and ND options reversed so they work the same + as the others. Added configuration byte for printing + summary line even in quiet mode, as suggested by Howard + Goldstein. Removed blank lines from screen display, + allowing three more filenames to be shown. Removed tabs + from usage screen so PRINT and PSTR are not needed. + Eliminated leading zero from user number display. Now + prints "file" instead of "files" in summary when only 1 + matching file is found. Ditto for attribute(s) altered. + +Version 1.2 -- November 30, 1988 -- Carson Wilson + Fixed bug of no program name display when FILEATTR's name + was 8 characters long. + +Version 1.1 -- October 30, 1988 -- Carson Wilson + Now wildcards the command forms "FA d: /options" and "FA d: + options." + +Version 1.0 -- September 26, 1988 -- Carson Wilson + If a filespec is given, no leading slash is required before + the options. Link with version 4 libraries. Removed /X + option--ZSDOS 10T always closes the first extent when a file + is written to. Changed summary to read "files matched". + +Version 0.9 -- July 7, 1988 -- Carson Wilson + Increased length of search FCB (AMBFIL) by one byte. Set up + AMBFIL as '?' + 35 binary 0's. ZRDOS and CP/M zero the + drive byte (FCB+0) during search next calls, so reinitialize + it to '?' before rescanning the directory. PROGID now + prints stored name on GO/JUMP. + +Version 0.8 -- June 26, 1988 -- Carson Wilson + Use SYSLIB PRINT for help display. VPRINT does not expand + tabs. Now traps disk track changes at the BIOS level. + Allows '-' as well as 'N' for "negate option." Auto- + wildcards FCB1 for attribute set as well as display. + +Version 0.7 -- May 24, 1988 -- Carson Wilson + Cosmetic changes to help, display. Made public routines + faster by 1/2 directory scan average. Consolidated file + attribute setting/resetting routines for efficiency and + clarity. + +Version 0.6 -- May 14, 1988 -- Carson Wilson + Changed "Publ" to "Publc" and "Priv" to "Privt". Added Q + and X options, made options installable. Added test for bad + ZCPR directory & chain to error handler. + +Version 0.5 -- May 4, 1988 -- Carson Wilson + Fixed bug at CHKRO inherited from MAKE.ASM. Uses Bridger + Mitchell's FRESET to reset disks. Uses ZCPR invocation name + in signon, help, etc. Added F4 attribute. Now includes all + valid ZSDOS attributes. Help now fully "smart" under ZCPR. + Reworked VID3.Z80 and VID4.Z80 from VLIB11 and moved them + into FA.Z80 (see end of file). Put STNDOUT mode ON by + default at beginning of each attribute display sequence for + faster ZCPR displays. + +Version 0.4 -- April 27, 1988 -- Carson Wilson + Tests for matching files at other user areas before setting + the public attribit. + +Version 0.3 -- April 26, 1988 -- Carson Wilson diff --git a/Images/Source/fd1/u0/FA16A.FOR b/Images/Source/fd1/u0/FA16A.FOR new file mode 100644 index 00000000..e9ed3d43 --- /dev/null +++ b/Images/Source/fd1/u0/FA16A.FOR @@ -0,0 +1,6 @@ +An update and bug-fix of FILEATTR (FA), a ZSDOS utility that +allows rapid setting, resetting, or displaying of file attributes +under ZSDOS, ZRDOS, and CP/M 2.2. Several additional features +are available under ZCPR3, including error flag setting, error +handler invocation, and an enhanced display. Version 1.6A adds +documentation; otherwise, same as 1.6. diff --git a/Images/Source/fd1/u0/FA16CFG.TXT b/Images/Source/fd1/u0/FA16CFG.TXT new file mode 100644 index 00000000..4067b9ba --- /dev/null +++ b/Images/Source/fd1/u0/FA16CFG.TXT @@ -0,0 +1,39 @@ + +Option Q -- If the ZCPR quiet flag is set, FILEATTR will always default to +quiet mode. To make quiet mode the default at all times, even when running +under CP/M, set this configuration option to "Yes". Whatever is selected +here can be toggled with the command line "Q" option. + +Option X -- A "Yes" will cause FILEATTR to page screen output by default. +A "No" will default to continuous scrolling. The chosen default can be +toggled with the command line "X" option. Screen paging is always turned +off in quiet mode. + +Option R -- As distributed, FILEATTR prints nothing to the screen when it +is operating in quiet mode. If this configuration option is "Yes", the +results summary line that gives the number of matching files found and the +number of attributes changed will be printed even in quiet mode. + +Option S -- Enter the number of lines on your video display screen. Under +ZCPR 3.3 and higher, the number of screen lines for paging is obtained from +the environment descriptor. This configuration parameter is used only if +running under CP/M. + + + Attribute Configuration Options + +As distributed, FILEATTR will not change any file attribute unless +explicitly commanded to do so by a command line option. To configure +FILEATTR to turn a file attribute ON or OFF by default, toggle the +appropriate configuration selection. + +For example, to make FILEATTR set all matching files to Public by default, +change the "Public attribute" setting to "Turn On". Then FILEATTR will set +the specified files to Public unless the /NP command line option is given +(which would cause the files to be set to Private). Since there is no +command which tells FILEATTR not to change an attribute, however, the +program will now insist on turning the Public attribute either on (default) +or off (through the /NP option). + +Most users will have neither need nor desire to change the configuration +default as distributed which will "Leave As-Is" all matching files. diff --git a/Images/Source/fd1/u0/FILEATTR.COM b/Images/Source/fd1/u0/FILEATTR.COM new file mode 100644 index 0000000000000000000000000000000000000000..4527d090a1a012fe5c9c4921aa301b86ecd061b2 GIT binary patch literal 4096 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 AU;qFB literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/FILEDATE.COM b/Images/Source/fd1/u0/FILEDATE.COM new file mode 100644 index 0000000000000000000000000000000000000000..11b836168de7354b0c5c4f6635fd70a198f5f3e0 GIT binary patch literal 4352 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/INITDIR.CFG b/Images/Source/fd1/u0/INITDIR.CFG new file mode 100644 index 0000000000000000000000000000000000000000..96baa98657a97513b17249dd40b51c8a43ffbf81 GIT binary patch literal 384 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 b`43^#`GY1WKoi9u)NE=3j)P6?`O)|fx%@N! literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/LDP2D.COM b/Images/Source/fd1/u0/LDP2D.COM new file mode 100644 index 0000000000000000000000000000000000000000..40220f1733ff886d939c04b823edb5b71ef3d585 GIT binary patch literal 3456 zcmds3eQXow8Gqh8`y6}ChvS0IfzkJJv@teuoFInDz)fR5f&eFrLn@LDVv-~An%Ks6 z2q}phCRN)XR7GWM+SW29)*vcZoHW9KQ4tA@IlxWekNp5DO;vRyv>#EW@dtTdW zvsL?Zn%39xUGDMo`FnrwbI)8Q0r-e(0Vp#I)}WpUnHobTpV|aOdrK&{^aOXc2WeM$ zM4`cCXe34tL_-5gd^7D<;wA4Y`eiG?JD16PmKeZ#NvP4^q)*!Jf0tN4 zTCwM(bzo0jqr9BDnwh0(J-Eg6;x8PcR0j4tDMyv$2m2mZz~$<89q9{;wq_0%D+cxb zX7aonX7tva8)~`-f;aLSw_Be#Kod3o6MXQsKxT9Z`})(E<7l^$$n;U!ckH zm_og$VnB!?7Q3fv!!Btzkd zGEfM|^l8I^l1V{7oJdlpAC4rFq2Xa=pk%p9zjKv-r!o>fsr&~E3m`JIYbczc;Y2e9 z$!yZD3ff&kG~^G^o+50RXcxxY_iypgf})A`cfn!Nj3&n#?YDwhjwbbV_ed-`PU~UL zV<#EVGc8eE>-YqJ-T(mVb zK%=o_I2vKOyWQ^4v1mMr)*ybh!lN0Xxt#o(3e6SdSB@BJm=G5<+ZXAN#^XwVk}|?a z6lQJo`t{V8{I<_1 ziC_=Ndn6#{gS&FFe4Np{(_1~CbDD_0-$=}}ITYOerg7o3lo+r|Bsw}cL=!ROC?jj2 z$KQSsNr&h1xwsO-@{8<@DX}y-uLFHx)rfo%kYVf?Af|OcPZ$?Eikp}H)YgRoaT}R{7U`}GY^I$`;ZV^q zHkHE-y@79RdX{Z}1wqj79nBxk+`#a6+2-r}c_K|&mKcV3x1av`lH<#h_e|8V6p)ve z?pT*RW^4{Qb1osr<)wAvpHWNiQ3LVsHRRUPBf)uer%|(ZS2IoW%r7CkAUnbp{2V$54_2V?qh! z4Q<*V*_mPh6r&VRj>MG}4;$lwzMnt^s9Saix|dP9tfu6nGq=!C{4i@ZfgNkep**8z zH1^tJo#Q!nwQ9x|rujbl+K-MaN9p76IA#bJpL_V0NlJo(jF4CH< z+F_8^0***O0rCXsm+-A%eGRb7rDxUmr8Lx@V}n-hD=ra>HIHq(=A z`UC5$;Jg5}1mu)_{(9;)Rl5#Ua2A3!{}`n2!Ee03Y&JkUc3=ta+uxmE@WG6uX1eJE ztPreEgMG|3#)daRaK&ATs*ll@`B?M5^OZuzn6BRYI;-mOwu))2%nc&vHfUG5{buVs zTy~*Nd&s3TJE=!|iHH))wT+x$thOP2H*(?{CU}X^Y8zYZzcLNLN7P4;K3q|=HG6F} zmmFU|rTu`*2Rz)(0Wxel)9!=s?5(k(Y_P_*fVb$x&ioUe?b)MiL0aVO-I+Z3-Fc3Z zCntAa_0(pcfn2zcTs7giX?D=8G=eXVjCP*mscsYR+ibpcMlei|$yJ}&Y&+FVE{je! zkQc8x)~1$Uj{4y2;ORV9a40X!>&1Js=?w0RoYUXX-^fj?3)tJ`+{6`HmJy8FeUeib zFqn0OUzCP&CWmoZ-XY$%FK4uiT;JZwFy7j&18jcq zJho5bQ#vz-0Z(Y_xSV?Dx$AfKsWaFEz_3W_=*OpK)p=pXuxRl-zG-Pc^=({dW>wuk zN^+zR%Bea?URl{*S$U@2EKjRXt$%6*ehQa=Jzu%;83!*KU@p(it>?2+BQMam zsRQq6Vnhnp@JM6VS~!Y3WNqY$fHI~ey-j%(O|Nb@Qncwn}@mpHbT|6 zS^%m5%!aBdeBi2y8BjujGe8x}p$xxMg)3BHyECAyWr{-)E(24=wXvlII1ZjIJp4B= F{{%7;Rh0k$ literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/LIB.COM b/Images/Source/fd1/u0/LIB.COM new file mode 100644 index 0000000000000000000000000000000000000000..45d7fb2174c2338bacf03402a9acccc94ee11086 GIT binary patch literal 7168 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 Xjkg6C+_HFa8FqO=E#G7E9sd3YUd-_( literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/LINK.COM b/Images/Source/fd1/u0/LINK.COM new file mode 100644 index 0000000000000000000000000000000000000000..e188fb92b474883e1fdd1cc2013d3ac735dadf0d GIT binary patch literal 15744 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/LOAD.COM b/Images/Source/fd1/u0/LOAD.COM new file mode 100644 index 0000000000000000000000000000000000000000..b9601e002cc09df45e29331795412a0f0be8e217 GIT binary patch literal 1792 zcmbtUUu+ab7@xV@Kkaq)%2KFuYT3OzE8PR3=jAMGuXKC6&A<>jV zVhvbnVw6ba!3WR>A@RXzeA7rmeZaJv5~j&SX(A+j!3QZZ_h4c|l&G!W%w1D`c5^p7 zzu)ise)HYTHx~{@jG}*FG$`#Gt{K~kJx1^D=lixBZfRes=9G=Vt9njQ95%cl@B`aO zZ#T-m;~I|Zf>brqZmGH-q8v9}svPoyn&Aj_(T3gR9JAl^Vx|sn_I`E2q;8qP@N6o7kX)s1b zr&952hJOHvs(&yjdg-D+Qt^!uKk#5#NUHh4s8K!OaH$bpEc;c@*jp-lY3qUdh?)rP zPCii0DDK8|?oQN+HF@^Mv+Yq4KPupWWfkVe?gBI-)hg+_1>SJ+Px_Ckc38kw*((v9lz z2zynfagF^DiN|1|W}Hk6w8D5}QHk1da?`mJ^FavP1=_{u)NCgcb~{=AV=Fv9t4BC! z=M!q`T+Cbj&*@h^*r}&$i9fICS>hV^-qPdx4D974F+z~be5nDKedoT;4*5eHl z_hOK&PL48BQTda?=Lzs>XD8Hbf>5(dP)`B1VU02bwG}A6N$Cj1H?GM^A)6p~h+@(L zrvPt)5NdV{{50Ur0&f%e8Ni)u7M7rTfO?Ef%P=Dt3EQ~+eJ4qqC6V7kph-78R zeQO7qjZMNVmCO(TspJk4_Da-hgJ~PlSEKB*x^zkcjAJdWZ}X06@Marf*VUyZDf~#% zrx65f0b%h?DO{3x=iG~Ccaaq|_pOAd(R?%C9qF2eJ_+wiHi&rPmV_PNL`^xLFju4C z5}ubD>)5dtv0|Pi`$*CzQ`vrvH)@U~3z`{g$tT#Tv|=x4au|`#EXgBQP_w;!T|*8( zmF-@l+k~A`>zUK3Q=mPB@3GloR#v%3CmBF`p0F>~Yjaf@jxz}W44xy9Sl~XZ3vbB4 z`0Q^krywI7mGwS?I|;j@F22v%4AjP+Rblz}R?xy#8GpfBg-t6^6Zgy!oFjTc;|X(e z9R17da~aQwzREW`3EvW^uZivoWH-^WK>gYX^er?fHTP%}xS;8cQaTj8pKqnUimZaR zrEUU!U0pn>n1fm#4V;75jinYAA@N1caJ8j1= zl#h--AkQpztN5}gU|JF6%@}2WDd*vN2=Ce9uPB^Zc1YvLHfaxO)O5Ae@CQ+ZJ&Cul zi>mEv?3_wNghH8rn2ac;^<$l=o_Ke>Bk{o)h56ZQ<7d7Zqc5fo)qAwLi>lx*ji32s mjGlO@lG>a25JEp5qvPEuaS5it^Q_Cq&ZMp$uG7T-d;S66tN&L3 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/MAC.COM b/Images/Source/fd1/u0/MAC.COM new file mode 100644 index 0000000000000000000000000000000000000000..f49e835a181bb857bfa4f40c77063233894174dd GIT binary patch literal 11776 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 LleoA4|BnA}sttr@ literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/MBASIC.COM b/Images/Source/fd1/u0/MBASIC.COM new file mode 100644 index 0000000000000000000000000000000000000000..c9ec3cd39f6cf66c899bd0eca759de3275045991 GIT binary patch literal 24320 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 OZ_b|!NSK7;-~R&C%=L`` literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/NULU.COM b/Images/Source/fd1/u0/NULU.COM new file mode 100644 index 0000000000000000000000000000000000000000..fc5594b1e2c4eddb679645296eaeeb9d32991990 GIT binary patch literal 15616 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 E1<9OScK`qY literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/PIP.COM b/Images/Source/fd1/u0/PIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..4b2ce4b689b9be798eec94cd4275aee957c8bd07 GIT binary patch literal 7424 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/PUTDS.COM b/Images/Source/fd1/u0/PUTDS.COM new file mode 100644 index 0000000000000000000000000000000000000000..c0ceba64c60b85f2ad07b98694b6f5158529ce22 GIT binary patch literal 13056 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 vohFDw_uM@gql}Dk2Kn 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 I|Fz%$1St4NTL1t6 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/SETTERM.COM b/Images/Source/fd1/u0/SETTERM.COM new file mode 100644 index 0000000000000000000000000000000000000000..eca19bf92d4eaecca331c64bae8faafc0336ab45 GIT binary patch literal 19840 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/SETUPZST.COM b/Images/Source/fd1/u0/SETUPZST.COM new file mode 100644 index 0000000000000000000000000000000000000000..35e4b5893b722ae52ead1900011c8b40d0d0d70e GIT binary patch literal 7936 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/STAMPS.DAT b/Images/Source/fd1/u0/STAMPS.DAT new file mode 100644 index 0000000000000000000000000000000000000000..23cd9bd71c1b894ef50a2586e531e643e136ade0 GIT binary patch literal 11392 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/STAT.COM b/Images/Source/fd1/u0/STAT.COM new file mode 100644 index 0000000000000000000000000000000000000000..1de359f27a749da7d3127749f3720426be6fea56 GIT binary patch literal 5248 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/SUBMIT.COM b/Images/Source/fd1/u0/SUBMIT.COM new file mode 100644 index 0000000000000000000000000000000000000000..2e788827b2a45aea667092573f2263b67f9243f2 GIT binary patch literal 1280 zcmbVMOK2Nc6n#%KPeBGx|AC4&ej`ttbd*wOk|=nPRj|^KLR^KUpG_Mxk;ayYJmZYV z`uHQu-INBhDqXa+gl2a29xys?v)EWAUQ*uqpOO&iVF=1E*Iy^l#W`aV+ zbjHed^&kF4+os2CYg{>QIL3tOLQc2vd8=ZSO9h&>E!VNjG+Ts(Jj9`gW9D7ksna9V z<+74BEX#Ijwro$Cd+7<&C_Iz1%JpXz8KJ?%Z6d!V-3>mA1m}dHBL;5}U;c(nCeNy0 zlMN{roCEwV$2S1q7n~>B8c^SJ>N}wB-===#)DJ*C#H-dhz6tnYNb%*LIsOUoBOL$A z@h^aPZcA*EsU);ce!c?VFZ4|^q-~PU*6PKGxbx`(Tot|jEZ80ZgONFMt4nPP@jE&=2%MFpANPIv5gYPA2KyQGuiOr8c|71<5`B4A zI;&Qsez>^@wsr*XkZ?`J1vUz>xDt)&vr<*BNolPHH!!~({w3l$e&_5Jo{q?05!e!N zU%R&%j}v^E#e*55H6(Z>ljsdeYa+G)iwJf~ZLq0d2Up1;xglK%M+sziX;_gea0k6% z64V3_)Id9aPrFX=b>16hOTxr#zJ~810k;jZ#dZ(5F5W`jDqWTLddb7C}nft);VcKm$t1i_JrduzeEjk1dm)J8M#_v~Q*R zaQEJG&OPTl-}&wYC~8j-@w@Ny_RI88J}2u#!~5{a?&jTIA#}^fN5?1!S3mLC9?CxD zu_tMJFKz!s+xHk7u@#C6$W##mhG~Bz-@w{!T=^yFVJEzfr^n7a`3!ZnWBqg={v~s5$*8cguq4nGQC*&h&Wn_XAV5D>?m0);W(;= zM^Ld;zRMY+E(S-?^6kb33PP(t&=3m?56i|zu2Q9I!8lsZ)gVi!6`-i#F%*@N(^73< z{G*ibIcTfBdX)awF$V6x1%5`SxbEYFQi|$`!VqPoOWQBnbQ2Z@&)G?_($FT&O|r!kuYx&(xeRGnk(m$;<`4ve3YNP7cU zNwanju{BVYYp(ly*8uAS_Rg-OQ?s)(v*!+0zGSC59xiY;Cb0)OPc_XJ#T7`f?5Qle z2wx;bmp|aFz$hwqwEkKMj}b!05J+Q&dL5=29!CWckXzAF!e6n|a)gDuoc0Q}-9Ldg zL-VJXt?O3I3!9h#8X5O7fCe;RInttY=H`#%mi?M%zha!k6ZuRgPx|YGoNw}UQIpM1S(EY=8-GM~xKF-d%3Tp%hd=#*(>zaWbkM|6aGgA$*ax?C=J0uu-xaA0*c_#O(}=ix2IX5fW@>@ELik18Pk zH_Iy=(h2|<=M5PT4G;7T!gng_6}-aQp}l)B#`Dpfu4GMYPAUdI)YCVBRoO74wER~b zZg~`$)-Z&+i%eQm-jT7YrT!k8R8wvfMvRZvOZWG84ZihcVEcjIzMdFvALttFAA(TH zfZW(HrEE&lQvi5he{a0G`)EHw+kchUp~(GE!;qMrKwd;b(QL)G8j|JOf24uwK6P)r2% JR0IE+;ZFpd#_0e6 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/TD.CFG b/Images/Source/fd1/u0/TD.CFG new file mode 100644 index 0000000000000000000000000000000000000000..ab44bab9d44838b1af78092d43cc2d2e46a36243 GIT binary patch literal 384 zcmaivF;BxV6ohTD5KB?#ZZ{?pO8)>GuWX)3hm0<9QcI~FC9Y5hejg)$iRV-uP*pg4 z@}1v(@9ROPvzEF1mQvB9SPA(oKV_~|mSteogqPqu*PkX6UGR%TWwQPiXYXG@ZXO47 z2AODQIFIdV3Zpe11yQAS)ig`ZZE*L7*DxJTM4|PDXmd#lE~^g~!4GG=U!nH{zl;ez zb?`cFhCvK{&qfR|L$s4;2JCJ8u$DJ$FJ#X5h&(R=roUWUXdXlKgoahZ`1ThylD$~D L>X@*~mH10PTKHJ_ literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/TD.COM b/Images/Source/fd1/u0/TD.COM new file mode 100644 index 0000000000000000000000000000000000000000..552aba678865288f446c7e45d8aac620858940a8 GIT binary patch literal 2048 zcmcgsO>7fa5MIaFyLJ|L`z zkOgWbk+@X7^Z=9}^@gloN_(hG4{ae92sc_3s!~NoIark~Arz@rWy%39owu7NK+{8e z=(GGhZ)U!kdE@zBdA)6POaIV58$tBHHykCF_@@c|3TcFATh`H^+4MX`f7`-(Z6(G|Z?VI1>C_@sq0=_s?_@GD zJbb{9Mw78b5{VKTjbR}pBZ)tzW+Xn16cI_PfRqVP<|T1l;&T2rcZYi=V$`QQam7n1oG!UF=ra9MF2 z<;3)Iw$zv?C>cQ&Re2@EYPRRfL#Y+ltOo7Dcg*F&>2z4r(AdNTo6E5>L|H2}?$Yo` zpH=TFDD*xoGw(lvBtFY2&@zciEbm;{wc=p8{;xNMeB`~7%q==;z3T8?QE{_~;42uiB?yeKIs**{`A7nwaqAG22v zQAUzEsh3FoC&w?eLqF>L5%&8e40(~+pnIHH3GyuboH1>6lK#d4ldgY4>32x_5+(u0 zf8{KX+AM)RM-^vBZJw8aK_#?-y-YR1&=>&W8uK99rq58m1;8%@?vR*4^q2$L>1}3c zm7>q%pzJhpYsTW;4CY;tc?Ih1eHV*p4-^~O1+_+>0&j6n`ji8Bcz!v=T40Z}_f-?@ zf!jn}dYyzjl=rTq5eBhmsnQQ0t@C|B;&%5-5=;*aFYu0oX6ID}y4)`)(0WBobJ|AP z;t>;%hhwqufdfGnt!ay_Oh4Y^0&rR#m(smCtD!6qhvSR;jZT#y* zp>#Wd6a0Z4Dp#FTiGu|rwDo$R0NNe%b#LuZCRhswZ@3ap!WE0pJ+AtGoix_>w*2he zZnVzV{8yZ3#3=FcxVHVfs+G2N(&(7ij6?IMj6;>$+%>;l-AAa2@1-3xbE?%%^8th)D%`0!+D>vi9Q zf`J&j;kq91HI2xE!S1NkfEAv@K&tJtpWC6d`qbugRJDS&DXhI+zGtubFHpxq`H)<# z)chBzeBf9B#OBR=wP*-ZgQ_t1eLxteeNS{m(U+g%{Sn?jG;6Egz0s(6!maJSPnL!? z-~OAmPM2-q^w*P&#}*`91BJj5u~3?1?A03;I!@u&36mwR$_hHnqZ1Q6pZ#kv&9@Uj jO&(X-LC{k~wD7XW4V6aSxS)fc7LcukHs2!g|E)g(%`&K( literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/TERMBASE.DAT b/Images/Source/fd1/u0/TERMBASE.DAT new file mode 100644 index 0000000000000000000000000000000000000000..358d61c0adb85b8e8e8681526ec91950f03b953f GIT binary patch literal 6400 zcmd^D>rd1`5MLC<2T_pM$@th0en1V-o+1$AhvOZQaPr2BiG?Hle@Vf#wh^WIO?6`s0t}9%y+>&wKGEZB>=@I$n)FM;-6~ANr zX+5y376S8#?+_Oh5`QJt??4 zo=d-tnvjzqPz3jv(RBVHr)Co4r_?xmGQvh(-I-D;@9}}< zAPlxetTy>SJX0%4>i;l+`j`hy{B{3t6mNQOf2LA#ws$;|P5f);Uzwko;y!JAmP**_taZJCF zznD9^DE~c>QsZuI)1`7yc6=B z2eU7w@nBYNFVpQ0TgtW|VsCVj-;w>v-_+Ck9qy_&+^P4SrPW9LM=Tbt)NFsX!o=~f z$@#a>Ip4f|#V>l|{0kQl{N+{cJb5>(cp$5NsE2l_qGMFMus_Cdy8Ta{g|R9+K(!-I z<6`=6&UsE{huh=BW8={qMg03?{a^EQL;MFUsi36R311LrKEbSL!i=MEKPwLi93al2 zp3MG2FDCoLepVK(Vw}RyIBr*A;`_XFPzr;Zy2=0P{G<6<3P;xVMXUc|!h#90LYTB* zQs7V2|3TxThvJeC1tvcK6Qei|apD!q3Z;fAB#$mCpa7{(q3mn(`m%ofo@h;m?}3 z{y8r{)A+8Hp|v4CZd=3Sq5?4Ie~N#){o~@FKEEmdC5?ajd(SF&uXuUytM7V&*n|eu zfBL$bjepN?{G(rhrucW-`oG!vr&gAh`IyBQ0@us)be+H9|K}AX)`HlINZ*Cz$5ftU znRu-J*Z1c-c3_#w;=V8Sac7l#*AL1bU*8m;fARyxWdDEd{P%8nVX)7~(vrQ||B3%S Z-0)7sZp8bDE{Q?0~8L0pO literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/TESTCLOK.COM b/Images/Source/fd1/u0/TESTCLOK.COM new file mode 100644 index 0000000000000000000000000000000000000000..d547e2b820b2d59591a532f0f7079576ccaa8100 GIT binary patch literal 6400 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/UNZIP.COM b/Images/Source/fd1/u0/UNZIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..afde72047347290bcc1fcee1b9977a3c2572b545 GIT binary patch literal 3328 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/XSUB.COM b/Images/Source/fd1/u0/XSUB.COM new file mode 100644 index 0000000000000000000000000000000000000000..15e86abfc94ac7ae15b0db899aec96d711d56e58 GIT binary patch literal 768 zcmaJ-Ur19?82`SZbGy2mb7AblcK>F2M6D4sMuW6^oJmsllHu|`jC9jEbE6uwq?cZL z2z=-{=%I+BkU|FA#fN+0K1^AGK_H?ad+MRr*>|<)&cpe>^EWg|hr`^;SmQvJ9SI37E$JA6N z?XaaxR+^p8=~-q}kFc|QHe;7%{=PB@kp=OJhH|(riuHkN33wm z)TxRl(m_>vMB^N1$^gn(n0*c<>?w~u?3MdO@_84cTHYyhY%JVhpF+WF3H!Mh*F(19 zi7>GV)_X2S6|FT6U%BiLULq>vC)}t&^N~K$Sm*pDpo<_mkX{L-lIFTn8XeI(0X(wb Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/ZAP.COM b/Images/Source/fd1/u0/ZAP.COM new file mode 100644 index 0000000000000000000000000000000000000000..47ffcbb8372e3560e5564daa0b2ea165d31a0930 GIT binary patch literal 9856 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 F{~uk{?9TuI literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/ZCAL.COM b/Images/Source/fd1/u0/ZCAL.COM new file mode 100644 index 0000000000000000000000000000000000000000..a5add2413e79d8c8c8accd826b6685a1f3046e77 GIT binary patch literal 1280 zcmb7ET}&fY6u#4$xn;&qX{|zACAp=^W(o_oXkch)H{H?&$+q2;zl0b|?bf9cDJc*a zS-R*N*XV<5qQ=L4@j*?*2Tk1v)TVaR5hkIA8c2Mwscm8ih9+B0#I>$&I)40=Lm(L^k{5Kqh@ zN4K40y@~ndWcb~hA4M(9$D;99lD;STdR_8TwK^`h1%w-m!@;2qmt^@ecr$#g=iHny(UwXF0N zd1SAzev9ta^0;H;1MTH?sIz@|M^Jra)!i2f04li)MeReY#%z!yJ38uX{@&kfNUt#~ z!)FVnQtH;gP`Xb{S#R1;I-fBY6uYLpydl6dfLBe&%etR3rK{<@5+_!#%S>KIq8!UUE3~$pK5au0%q4>tQgEP!~Y{A{zz0*oSC;DiL!lHcAgW< z(h^k`f7nj*P1em6f8s*NR@jP-jm^_N5L0QZ(iDBuUKiaQ*4%8Rn5$Q>hqWqv_-dI# zNo+$TYJfwUB)L#-w8~qG*Y>#p`5fzXE=0RDr9P+bc5ENh+0Fr%%Ky!QRzIUIkp<>mG%*c zzY0pf22Ab4uq0ND#~s7i)R#}m77=^JO1CEaqf#g6RDmn{ExPy@rYwp0KlXpFe*v3Q B$G!jn literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/ZCNFG.COM b/Images/Source/fd1/u0/ZCNFG.COM new file mode 100644 index 0000000000000000000000000000000000000000..ae423dc59d53e7def68c3b0c74ea91027ec46b18 GIT binary patch literal 8064 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 literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/ZCNFG24.CFG b/Images/Source/fd1/u0/ZCNFG24.CFG new file mode 100644 index 0000000000000000000000000000000000000000..1bfe49bfa7213e2c60ceddfbcee0cfc53b214406 GIT binary patch literal 4608 zcmbVP+in}l5gkeavKZ`qz#>3UNgiSWv>aIuVEDzL$)Q&OO)BKjfn*qqCfOuAo(p$+ zMiM_F-<6l$f7(;kJ=9Qk@({|fAWm0x)u~gbYW{QD;h%XY>fE3HK1@2nAA-|gJ3%n% z1b+-pqmv-G{Vw=((D`uk>9lte{19~hjqgUk3;q;zemSwH{Z8t|ntPdTN-QQHK&$ZgfT0Ww9w$MgzT8bz0HT zq`KPgH2vg$PUyTp`EY#kgzYDHx=huc)-d?5*7OtG58of#-?IJfWjy{!s;-LXCbyMJ zQ(6}#-S)4im(<+O_B5W*v3-y2dugT1TvfRI#av9=5!uEA?BBh9Vn1U0Ws%zgp^r?i zE$wtkvt_Au-nyH8!2ac{b#1=;3l30KqTnTr_*?x1W9lDK29k3KDZ8|5T#Z5icq2FG>C`2`6!{` z)hMRq<~p7+5fWUo^2L_gNwxJurE_b53Ds7wXt75nm`Z8mkOD%?YbXPiWf9bbuSP_=3xrdx?lj>Wj>?kZ1HGK|!w!y2C6`EK2mq&W zMV2vMDM&!J1`C#Y1v((RN0_<p~^*N43A$r1fL~ouo7+pip4%SijZs>T z)L2>-04WO1+Ck?S*^~s&!2;L553rkY#9Mreut8UEbQ}dcLy>Y&Z-sktvOop6r4hEG z{`HFw-aQ;%RU8A~k!#clkU}k-zbMoXdRYstYPj+$a{1zw4+NEW=t&$$NLXQbYQE@n zk3&%i_?$Offi6&B^`hQv;FJ&1U^XCJJQyUXx>;_4iUidbvhyf>6NONz-YAKu<6aUI zI{evSdi61WF`vcLGcN2Llo5msQyTGEoocXMM}d6X zdj78tR@?wl$hDF-U@bFi1G}aXf%P{!5W%#<sBDLchMs5- zQq&d##L#jvWv`KPe-nnb;q#-97#@9d^heu}=@9xzPotxQ(qM2f<f%*%3IFbUxfI*3+(H*m77G}?Zrgm*=(UIoRv5I(Y=X%?x*Eqb zx{jwb>rdlYHoms{azj_(W=eT2)k7EYyt8hSV2jF3j;Ejl1Z3Zq1a#hEsNboy2HQpR zK(|th+N=mnepKJeU;~0`3c+RO@$I*lQ5ffUrYxk?poC*NxC4P=`SFo~V;IM3qltSF z3`9M)I^B_#)r>m{0}L}FWj!3Clq;QKXQ}*7v8&4+Cb8|3MB8Y4hNhPBq6n#)tj?kk zAY8nZ3o`Y`IHU0P=yu za@9TH2V~QGfQ|2MjxC#*r3eLvR* z>7s{Vd*#OY4h_m1wJc4IOp9I$+=nQ6pJ5%sq5>Foi5_^ADtIgnDg>n#KVB~qWYk2L z@fLx|(*mLaj7|P@fbb1lUdmjn%NePzQ`#P4mJR2r?#Z-m6vI9IG`O0+`8*tdIv*yV zi9R8(;rO%v>lwh-&|u<2JQx`Gm*5Ykea!-M2J%R7?hy~dMu8v4nkkWwEEceCaBE7! zOIv{)nTBhHMHKr7);m9XcuBGvORcn$o7#*Xduu#d&y4;-9yGv|m?JXCiq0Hxt2k+oMUsf7UHV7~$+t~d7knl}dllWEkkTJg~@b`Xw zcdv~iSq&jjSzqTzz*^Y}WMl47nGA?-f%l5GPcCs&A*b8Ehrg-{zvm$sP|GFHEdgjC zvuz>lVVmuGX0#emXxbtQeDTuJT04=3zgf1CM+{7bWpT|l1{EK1H+V5m^_^n*#p}8I F{04;9o2LK( literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/ZDE.COM b/Images/Source/fd1/u0/ZDE.COM new file mode 100644 index 0000000000000000000000000000000000000000..9bc493c310e79d8d50a32177d10bcdbcb4b18694 GIT binary patch literal 16896 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 Zx%h1LrVc_oe`n)IvvbR*{2$uV{wMiPr_}%e literal 0 HcmV?d00001 diff --git a/Images/Source/fd1/u0/ZDENST.COM b/Images/Source/fd1/u0/ZDENST.COM new file mode 100644 index 0000000000000000000000000000000000000000..8ccc976739f96507289890bf7df565aba040127e GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/ASM.COM b/Images/Source/hd0/s0/u0/ASM.COM new file mode 100644 index 0000000000000000000000000000000000000000..a63e5aec663546b7aac7b330a9ebe8be3a46ba33 GIT binary patch literal 8192 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 RFgWss^26~5s=npH`Zq8hC}98q literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/CR.COM b/Images/Source/hd0/s0/u0/CR.COM new file mode 100644 index 0000000000000000000000000000000000000000..8a824bcc4108a87e72b8e2925f3402628e7f9e60 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/DDTZ.COM b/Images/Source/hd0/s0/u0/DDTZ.COM new file mode 100644 index 0000000000000000000000000000000000000000..e30a34c0c31b568fb7d3e9ece2d375524b8905b6 GIT binary patch literal 7424 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 VA`-*10cn8gmj)aQKKRAX{|4B&cRm0B literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/DDTZ.DOC b/Images/Source/hd0/s0/u0/DDTZ.DOC new file mode 100644 index 00000000..e4470528 --- /dev/null +++ b/Images/Source/hd0/s0/u0/DDTZ.DOC @@ -0,0 +1,564 @@ + + DDTZ v2.7 + by C.B. Falconer + edited by George A. Havach + +Introduction: +============ +DDTZ v2.7 is a complete replacement for DDT, Digital Research's +famous Dynamic Debugging Tool, with improved functionality, bug +extermination, and full Z80 support. In general, DDTZ is fully +compatible with the original utility, but it has extra and +extended commands and many fewer quirks. All Z80-specific +instructions can be (dis)assembled, though in Intel rather then +Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U' +commands) both 8080 and Z80 instructions, depending on which CPU +is operating. On startup, the program announces which CPU it is +running on. + +DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test +for a 64180 CPU, since this cannot be done without executing +illegal Z80 instructions, which in turn will crash some +simulators. However v2.7 does not execute any 64180 instructions +internally, only in the subject program. + +This issue supplies the "M" version assembled, to avoid errors +when switching between MSDOS and CPM systems. The command table +is updated accordingly. Most CPM users are also MSDOS users, but +not vice-versa. + +The program is invoked by typing + + ddtz +or + ddtz [d:]filespec + +In the second form, DDTZ will load the specified file into +memory starting at 0100H, unless it's a .HEX file that sets its +own load address. Besides reporting the NEXT free address and +the PC (program counter) after a successful load, DDTZ also shows +the number of memory pages needed for a SAVE. Instead of having +to write all this down, just use the 'X' command at any time to +redisplay these three values for the current application. + +NOTE: loading more code above the NEXT pointer revises these + values. + +As in DDT, when a program is loaded above the area holding the +'A' and 'U' (and now 'W') command code, these commands are +disabled, and the extra memory is released to the user. Thus, +DDTZ can occupy as little as 3K total memory space. Unlike DDT, +however, DDTZ will not overwrite itself or the system on program +loads (except .HEX files). + +At initialization, the stack pointer (SP) points to a return to +DDTZ, just like for the CCP. Thus, programs that normally return +to the CCP will be returned to DDTZ. The 'B' command +reinitializes this condition. + + +The intercept vector copies the BDOS version number, etc., so +an object program does not know that DDTZ is running (except +for BIOS-BDOS vector size). Thus, programs that check the version +number should execute correctly under DDTZ. + +All input parameters can now be entered in any of three formats: + + (1) hexadecimal (as in DDT), + (2) decimal, by adding a leading '#' character, + (3) ASCII, by enclosing between either single or double + quotes; either one or two characters are allowed. + +Leading blanks in command lines and parameters are absorbed. +Either a comma or a (single) space is a valid delimiter. +Either uppercase or lowercase input is accepted. + +The default command (for anything not otherwise recognizable) +is 'H'. This allows convenient calculation, along with the other +features described below. So, to convert a number, just enter +it! + +As in DDT, the prompt character is '-', and the only error +message is the query ('?'), which generally kicks you back to +command mode. + +New Commands (Over DDT): +======================= + +NOTE: letters in parenthesis, e.g. "(U)", show the equivalent + command for DDTZM version (compatible with MSDOS debug). + + @ Sets or shows (with no parameter) the internally stored + "base" value. Also used with the 'S' and 'D' commands as + an optional parameter (though without the '@') to display + memory from an arbitrary base marker (offset). When set to + zero (the default), it does not affect any screen displays. + + B B)egin: resets the USER stack pointer to its initial value, + such that any program that exits by an RET will return to + DDTZ. DDTZ provides a default stack space of + approximately 24 bytes for user programs. + + C C)ompare first_address,last_address,against_address: shows + all the byte differences between two memory areas, in the + format + + XXXX aa YYYY bb + + where XXXX and YYYY are the comparative memory addresses, + and aa and bb are the corresponding byte values. Can be + used to verify the identity of two files by first + loading them into different memory areas with the 'R' + command (see below). + + + W Write: stores the modified memory area to disk under the + (K) filename specified by the 'I' command, overwriting the + original file from which it was loaded (the user is queried + before doing so). By default, the image of memory from + 0100H through the "NEXT" value -1 is saved. "K first_addr, + last_address" overrides this and allows writing ANY memory + area to a file. Almost a necessity for CPM 3.0 (no SAVE!). + K)eep on DDTZ + + X eXamine: redisplays the "NEXT PC SAVE" report at any time. + (Q) Q)uery size on DDTZ. + + S S)earch first_address, last_addr, value: searches the + (W) specified memory area for the value (a 16-bit word, not a + byte) and shows the locations of all such. Very useful for + finding CALL's or JMP's to a particular address, etc. + W)here on DDTZ + + Y Y)our_option parm1,parm2,address: executes an arbitrary + routine at the specified address, with the BC and DE + registers set to parm1 and parm2, respectively. + + Z Displays (but does not alter) the Z80's alternate register + set, including the index registers (disabled if running on + an 8080). On Z80's, automatically included as the last + part of the display by the 'X' command. + + +Based (Offset) Displays: +======================= + +The 'D' and 'E' commands can use a stored base value (offset), +as set by the '@' command. The current @ value may be +overridden for a single execution of these commands by adding the +base as an extra parameter in the command line. The effect is +to add this value to the first/last address and display +accordingly. The address listing on the left becomes XXXX:YYYY, +where XXXX is the offset address and YYYY is the actual memory +address being displayed. For example, if you have a data area +located at 42B7H and wish to preserve easy access, just enter +"@42b7". Now, "d0,3f" will dump memory starting at 4237H. + + +Further Changes from DDT: +======================== + + A A)ssemble now accepts the full Z80 as well as 8080 + instruction set, although it expects them in Intel rather + than Zilog format (see notes below under the 'L' + command). When in doubt, see the mnemnonic list below. + + D D)isplay or D)ump will accept an optional third parameter + to set the base value for a single execution only. Format + has been cleaned up. + + H H)ex_arithmetic on two values also shows their + difference in decimal. With only one value, converts to + hexadecimal, decimal, and ASCII (low-order byte only). + + + N N)ame now allows drive specification (d:...) and sets up + (I) the complete command line, including both FCB's (at + addresses 005CH and 006CH). The tail (stored at 0081H up) + is NOT upshifted. + I)nput on DDTZ + + U U)nassemble now displays the raw hexcode, especially handy + (L) when examining non-code areas. Intel (8080 style) mnemonics + are used, so some disassembled instructions may look + strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become + 'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes + 'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)' + becomes 'PCIX'. + L)ist on DDTZ + + L L)oad now permits loading a file into memory with an + (R) offset, which is added to the default load address of + 0100H. When reading in a .HEX file with a preset bias, + the 'R' command will not transfer control to an invalid + execution point. Another execution of the 'R' command will + reread the input file, e.g.: + + n blah + l + ...modify the code and generally mess about... + l + + The original file is reloaded, and the modifications are + removed. + R)ead on DDTZ + + E E)nter, like D)isplay, now accepts an optional second + (S) parameter to set the base value for a single execution + only. + S)ubstitute or S)et on DDTZ + + T T)rap/trace on termination now shows the complete CPU + state. Traps and traces no longer lock up when a user RST + 7 instruction is executed. Tracing of BDOS/BIOS calls is + heavily trun cated, avoiding clutter and preventing system + crashes. + +NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others + can crash the system. + + R R)egisters also shows what two-byte values the HL and SP + (X) registers are actually pointing to. On Z80's, displays the + alternate register set. + eX)amine on DDTZ + +NOTE: Any use of the 'W' or 'L' command resets the system DMA + transfer address to the standard default value of 0080H. + + +; This is the output of DDTZ when disassembling OPTYPE.TRY +NOP LDA 06A4 MOV M,H +LXI B,06A4 DCX SP MOV M,L +STAX B INR A HLT +INX B DCR A MOV M,A +INR B MVI A,20 MOV A,B +DCR B CMC MOV A,C +MVI B,20 MOV B,B MOV A,D +RLC MOV B,C MOV A,E +EXAF MOV B,D MOV A,H +DAD B MOV B,E MOV A,L +LDAX B MOV B,H MOV A,M +DCX B MOV B,L MOV A,A +INR C MOV B,M ADD B +DCR C MOV B,A ADD C +MVI C,20 MOV C,B ADD D +RRC MOV C,C ADD E +DJNZ 0134 MOV C,D ADD H +LXI D,06A4 MOV C,E ADD L +STAX D MOV C,H ADD M +INX D MOV C,L ADD A +INR D MOV C,M ADC B +DCR D MOV C,A ADC C +MVI D,20 MOV D,B ADC D +RAL MOV D,C ADC E +JR 0134 MOV D,D ADC H +DAD D MOV D,E ADC L +LDAX D MOV D,H ADC M +DCX D MOV D,L ADC A +INR E MOV D,M SUB B +DCR E MOV D,A SUB C +MVI E,20 MOV E,B SUB D +RAR MOV E,C SUB E +JRNZ 0134 MOV E,D SUB H +LXI H,06A4 MOV E,E SUB L +SHLD 06A4 MOV E,H SUB M +INX H MOV E,L SUB A +INR H MOV E,M SBB B +DCR H MOV E,A SBB C +MVI H,20 MOV H,B SBB D +DAA MOV H,C SBB E +JRZ 0134 MOV H,D SBB H +DAD H MOV H,E SBB L +LHLD 06A4 MOV H,H SBB M +DCX H MOV H,L SBB A +INR L MOV H,M ANA B +DCR L MOV H,A ANA C +MVI L,20 MOV L,B ANA D +CMA MOV L,C ANA E +JRNC 0134 MOV L,D ANA H +LXI SP,06A4 MOV L,E ANA L +STA 06A4 MOV L,H ANA M +INX SP MOV L,L ANA A +INR M MOV L,M XRA B +DCR M MOV L,A XRA C +MVI M,20 MOV M,B XRA D +STC MOV M,C XRA E +JRC 0134 MOV M,D XRA H +DAD SP MOV M,E XRA L + + +XRA M JPE 06A4 SLAR M +XRA A XCHG SLAR A +ORA B CPE 06A4 SRAR B +ORA C XRI 20 SRAR C +ORA D RST 5 SRAR D +ORA E RP SRAR E +ORA H POP PSW SRAR H +ORA L JP 06A4 SRAR L +ORA M DI SRAR M +ORA A CP 06A4 SRAR A +CMP B PUSH PSW SLLR B +CMP C ORI 20 SLLR C +CMP D RST 6 SLLR D +CMP E RM SLLR E +CMP H SPHL SLLR H +CMP L JM 06A4 SLLR L +CMP M EI SLLR M +CMP A CM 06A4 SLLR A +RNZ CPI 20 SRLR B +POP B RST 7 SRLR C +JNZ 06A4 RLCR B SRLR D +JMP 06A4 RLCR C SRLR E +CNZ 06A4 RLCR D SRLR H +PUSH B RLCR E SRLR L +ADI 20 RLCR H SRLR M +RST 0 RLCR L SRLR A +RZ RLCR M BIT 0,B +RET RLCR A BIT 0,C +JZ 06A4 RRCR B BIT 0,D +CZ 06A4 RRCR C BIT 0,E +CALL 06A4 RRCR D BIT 0,H +ACI 20 RRCR E BIT 0,L +RST 1 RRCR H BIT 0,M +RNC RRCR L BIT 0,A +POP D RRCR M BIT 1,B +JNC 06A4 RRCR A BIT 1,C +OUT 20 RALR B BIT 1,D +CNC 06A4 RALR C BIT 1,E +PUSH D RALR D BIT 1,H +SUI 20 RALR E BIT 1,L +RST 2 RALR H BIT 1,M +RC RALR L BIT 1,A +EXX RALR M BIT 2,B +JC 06A4 RALR A BIT 2,C +IN 20 RARR B BIT 2,D +CC 06A4 RARR C BIT 2,E +SBI 20 RARR D BIT 2,H +RST 3 RARR E BIT 2,L +RPO RARR H BIT 2,M +POP H RARR L BIT 2,A +JPO 06A4 RARR M BIT 3,B +XTHL RARR A BIT 3,C +CPO 06A4 SLAR B BIT 3,D +PUSH H SLAR C BIT 3,E +ANI 20 SLAR D BIT 3,H +RST 4 SLAR E BIT 3,L +RPE SLAR H BIT 3,M +PCHL SLAR L BIT 3,A + + +BIT 4,B RES 3,D SET 2,H +BIT 4,C RES 3,E SET 2,L +BIT 4,D RES 3,H SET 2,M +BIT 4,E RES 3,L SET 2,A +BIT 4,H RES 3,M SET 3,B +BIT 4,L RES 3,A SET 3,C +BIT 4,M RES 4,B SET 3,D +BIT 4,A RES 4,C SET 3,E +BIT 5,B RES 4,D SET 3,H +BIT 5,C RES 4,E SET 3,L +BIT 5,D RES 4,H SET 3,M +BIT 5,E RES 4,L SET 3,A +BIT 5,H RES 4,M SET 4,B +BIT 5,L RES 4,A SET 4,C +BIT 5,M RES 5,B SET 4,D +BIT 5,A RES 5,C SET 4,E +BIT 6,B RES 5,D SET 4,H +BIT 6,C RES 5,E SET 4,L +BIT 6,D RES 5,H SET 4,M +BIT 6,E RES 5,L SET 4,A +BIT 6,H RES 5,M SET 5,B +BIT 6,L RES 5,A SET 5,C +BIT 6,M RES 6,B SET 5,D +BIT 6,A RES 6,C SET 5,E +BIT 7,B RES 6,D SET 5,H +BIT 7,C RES 6,E SET 5,L +BIT 7,D RES 6,H SET 5,M +BIT 7,E RES 6,L SET 5,A +BIT 7,H RES 6,M SET 6,B +BIT 7,L RES 6,A SET 6,C +BIT 7,M RES 7,B SET 6,D +BIT 7,A RES 7,C SET 6,E +RES 0,B RES 7,D SET 6,H +RES 0,C RES 7,E SET 6,L +RES 0,D RES 7,H SET 6,M +RES 0,E RES 7,L SET 6,A +RES 0,H RES 7,M SET 7,B +RES 0,L RES 7,A SET 7,C +RES 0,M SET 0,B SET 7,D +RES 0,A SET 0,C SET 7,E +RES 1,B SET 0,D SET 7,H +RES 1,C SET 0,E SET 7,L +RES 1,D SET 0,H SET 7,M +RES 1,E SET 0,L SET 7,A +RES 1,H SET 0,M DADX B +RES 1,L SET 0,A DADX D +RES 1,M SET 1,B LXI X,06A4 +RES 1,A SET 1,C SIXD 06A4 +RES 2,B SET 1,D INX X +RES 2,C SET 1,E DADX X +RES 2,D SET 1,H LIXD 06A4 +RES 2,E SET 1,L DCX X +RES 2,H SET 1,M INR [X+05] +RES 2,L SET 1,A DCR [X+05] +RES 2,M SET 2,B MVI [X+05],20 +RES 2,A SET 2,C DADX SP +RES 3,B SET 2,D MOV B,[X+05] +RES 3,C SET 2,E MOV C,[X+05] + + +MOV D,[X+05] DSBC B DADY B +MOV E,[X+05] SBCD 06A4 DADY D +MOV H,[X+05] NEG LXI Y,06A4 +MOV L,[X+05] RETN SIYD 06A4 +MOV [X+05],B IM0 INX Y +MOV [X+05],C LDIA DADY Y +MOV [X+05],D INP C LIYD 06A4 +MOV [X+05],E OUTP C DCX Y +MOV [X+05],H DADC B INR [Y+05] +MOV [X+05],L LBCD 06A4 DCR [Y+05] +MOV [X+05],A RETI MVI [Y+05],2 +MOV A,[X+05] LDRA DADY SP +ADD [X+05] INP D MOV B,[Y+05] +ADC [X+05] OUTP D MOV C,[Y+05] +SUB [X+05] DSBC D MOV D,[Y+05] +SBB [X+05] SDED 06A4 MOV E,[Y+05] +ANA [X+05] IM1 MOV H,[Y+05] +XRA [X+05] LDAI MOV L,[Y+05] +ORA [X+05] INP E MOV [Y+05],B +CMP [X+05] OUTP E MOV [Y+05],C +POP X DADC D MOV [Y+05],D +XTIX LDED 06A4 MOV [Y+05],E +PUSH X IM2 MOV [Y+05],H +PCIX LDAR MOV [Y+05],L +SPIX INP H MOV [Y+05],A +RLCR [X+05] OUTP H MOV A,[Y+05] +RRCR [X+05] DSBC H ADD [Y+05] +RALR [X+05] shld 06A4 ADC [Y+05] +RARR [X+05] RRD SUB [Y+05] +SLAR [X+05] INP L SBB [Y+05] +SRAR [X+05] OUTP L ANA [Y+05] +SRLR [X+05] DADC H XRA [Y+05] +BIT 0,[X+05] lhld 06A4 ORA [Y+05] +BIT 1,[X+05] RLD CMP [Y+05] +BIT 2,[X+05] INP M POP Y +BIT 3,[X+05] OUTP M XTIY +BIT 4,[X+05] DSBC SP PUSH Y +BIT 5,[X+05] SSPD 06A4 PCIY +BIT 6,[X+05] INP A SPIY +BIT 7,[X+05] OUTP A RLCR [Y+05] +RES 0,[X+05] DADC SP RRCR [Y+05] +RES 1,[X+05] LSPD 06A4 RALR [Y+05] +RES 2,[X+05] LDI RARR [Y+05] +RES 3,[X+05] CCI SLAR [Y+05] +RES 4,[X+05] INI SRAR [Y+05] +RES 5,[X+05] OTI SRLR [Y+05] +RES 6,[X+05] LDD BIT 0,[Y+05] +RES 7,[X+05] CCD BIT 1,[Y+05] +SET 0,[X+05] IND BIT 2,[Y+05] +SET 1,[X+05] OTD BIT 3,[Y+05] +SET 2,[X+05] LDIR BIT 4,[Y+05] +SET 3,[X+05] CCIR BIT 5,[Y+05] +SET 4,[X+05] INIR BIT 6,[Y+05] +SET 5,[X+05] OTIR BIT 7,[Y+05] +SET 6,[X+05] LDDR RES 0,[Y+05] +SET 7,[X+05] CCDR RES 1,[Y+05] +INP B INDR RES 2,[Y+05] +OUTP B OTDR RES 3,[Y+05] + + +RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05] +RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05] +RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05] +RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05] + +; These are the result of disassembling 64180OPS.TRY +; These opcodes are available ONLY on the 64180 CPU +; DDTZ will both assemble and disassemble these. +IN0 B,20 TST E MLT B +OUT0 20,B IN0 H,20 MLT D +TST B OUT0 20,H TSTI 20 +IN0 C,20 TST H MLT H +OUT0 20,C IN0 L,20 TSIO 20 +TST C OUT0 20,L SLP +IN0 D,20 TST L MLT SP +OUT0 20,D TST M OTIM +TST D IN0 A,20 OTDM +IN0 E,20 OUT0 20,A OIMR +OUT0 20,E TST A ODMR + +; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY. +; DDTZ will disassemble these, but will not assemble them. +; They use xh/xl (or yh/yl) as separate byte registers. +; Use these at your own risk. +INRX H ACXR H MOVY H,B +DCRX H ACXR L MOVY H,C +MVIX H,20 SUXR H MOVY H,D +INRX L SUXR L MOVY H,E +DCRX L SBXR H MOVY H,A +MVIX L,20 SBXR L MOVY L,B +MOVX B,H NDXR H MOVY L,C +MOVX B,L NDXR L MOVY L,D +MOVX C,H XRXR H MOVY L,E +MOVX C,L XRXR L MOVY L,A +MOVX D,H ORXR H MOVY A,H +MOVX D,L ORXR L MOVY A,L +MOVX E,H CPXR H ADYR H +MOVX E,L CPXR L ADYR L +MOVX H,B INRY H ACYR H +MOVX H,C DCRY H ACYR L +MOVX H,D MVIY H,20 SUYR H +MOVX H,E INRY L SUYR L +MOVX H,A DCRY L SBYR H +MOVX L,B MVIY L,20 SBYR L +MOVX L,C MOVY B,H NDYR H +MOVX L,D MOVY B,L NDYR L +MOVX L,E MOVY C,H XRYR H +MOVX L,A MOVY C,L XRYR L +MOVX A,H MOVY D,H ORYR H +MOVX A,L MOVY D,L ORYR L +ADXR H MOVY E,H CPYR H +ADXR L MOVY E,L CPYR L + + +Command Summary: +=============== + +DDTZM command DDTZ command +============= ============ +@ (base) +A)ssemble first_address A +B)egin {i.e., initialize stack and return} B +C)ompare first_address,last_address,against_address C +D)ump first_address[,last_address[,base]] D +E)nter_in_memory first_address[,base] S)ubstitute +F)ill first_address,last_address,value F +G)o_to [address][,trap1[,trap2]] G +H)ex_arithmetic value1(,value2) H +L)oad_file (offset) R)ead +M)ove first_address,last_address,destination M +N)nput FCBs_command_line I)nput +Q)uit (not avail) +R)egister examine/change [register|flag] X)amine +S)earch first_address,last_address,word W)hereis +T)race_execution [count] T + Untrace_execution [count] (i.e. do count instr) U)ntrace +U)nassemble_code first_address[,last_address] L)ist code +W)rite [first_address,last_address] K)eep +X)amine {i.e. display memory parameters for application} Q)uery +Y)our_option BC:=parm1,DE:=parm2,call_address Y +Z)80_register_display Z + + +If you find this program useful, contributions will be gratefully +accepted and will encourage further development and release of +useful CPM programs. My practice is to include source. + +C.B. Falconer +680 Hartford Turnpike, +Hamden, Conn. 06517 (203) 281-1438 + +DDTZ and its associated documentation and other files are +copyright (c) 1980-1988 by C.B. Falconer. They may be freely +copied and used for non-commercial purposes ONLY. + diff --git a/Images/Source/hd0/s0/u0/DIF.COM b/Images/Source/hd0/s0/u0/DIF.COM new file mode 100644 index 0000000000000000000000000000000000000000..87b89d75568272353e76a85046282781b8a406bd GIT binary patch literal 2944 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/ED.COM b/Images/Source/hd0/s0/u0/ED.COM new file mode 100644 index 0000000000000000000000000000000000000000..a0f0f5410f0542e3e6d05bfcd0fb361d84c73f26 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/LBREXT.COM b/Images/Source/hd0/s0/u0/LBREXT.COM new file mode 100644 index 0000000000000000000000000000000000000000..c0c950e3bc93d8e23bb2c375debc83c719373ed1 GIT binary patch literal 8576 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 Xjkg6C+_HFa8FqO=E#G7E9sd3YUd-_( literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/LINK.COM b/Images/Source/hd0/s0/u0/LINK.COM new file mode 100644 index 0000000000000000000000000000000000000000..e188fb92b474883e1fdd1cc2013d3ac735dadf0d GIT binary patch literal 15744 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/LOAD.COM b/Images/Source/hd0/s0/u0/LOAD.COM new file mode 100644 index 0000000000000000000000000000000000000000..b9601e002cc09df45e29331795412a0f0be8e217 GIT binary patch literal 1792 zcmbtUUu+ab7@xV@Kkaq)%2KFuYT3OzE8PR3=jAMGuXKC6&A<>jV zVhvbnVw6ba!3WR>A@RXzeA7rmeZaJv5~j&SX(A+j!3QZZ_h4c|l&G!W%w1D`c5^p7 zzu)ise)HYTHx~{@jG}*FG$`#Gt{K~kJx1^D=lixBZfRes=9G=Vt9njQ95%cl@B`aO zZ#T-m;~I|Zf>brqZmGH-q8v9}svPoyn&Aj_(T3gR9JAl^Vx|sn_I`E2q;8qP@N6o7kX)s1b zr&952hJOHvs(&yjdg-D+Qt^!uKk#5#NUHh4s8K!OaH$bpEc;c@*jp-lY3qUdh?)rP zPCii0DDK8|?oQN+HF@^Mv+Yq4KPupWWfkVe?gBI-)hg+_1>SJ+Px_Ckc38kw*((v9lz z2zynfagF^DiN|1|W}Hk6w8D5}QHk1da?`mJ^FavP1=_{u)NCgcb~{=AV=Fv9t4BC! z=M!q`T+Cbj&*@h^*r}&$i9fICS>hV^-qPdx4D974F+z~be5nDKedoT;4*5eHl z_hOK&PL48BQTda?=Lzs>XD8Hbf>5(dP)`B1VU02bwG}A6N$Cj1H?GM^A)6p~h+@(L zrvPt)5NdV{{50Ur0&f%e8Ni)u7M7rTfO?Ef%P=Dt3EQ~+eJ4qqC6V7kph-78R zeQO7qjZMNVmCO(TspJk4_Da-hgJ~PlSEKB*x^zkcjAJdWZ}X06@Marf*VUyZDf~#% zrx65f0b%h?DO{3x=iG~Ccaaq|_pOAd(R?%C9qF2eJ_+wiHi&rPmV_PNL`^xLFju4C z5}ubD>)5dtv0|Pi`$*CzQ`vrvH)@U~3z`{g$tT#Tv|=x4au|`#EXgBQP_w;!T|*8( zmF-@l+k~A`>zUK3Q=mPB@3GloR#v%3CmBF`p0F>~Yjaf@jxz}W44xy9Sl~XZ3vbB4 z`0Q^krywI7mGwS?I|;j@F22v%4AjP+Rblz}R?xy#8GpfBg-t6^6Zgy!oFjTc;|X(e z9R17da~aQwzREW`3EvW^uZivoWH-^WK>gYX^er?fHTP%}xS;8cQaTj8pKqnUimZaR zrEUU!U0pn>n1fm#4V;75jinYAA@N1caJ8j1= zl#h--AkQpztN5}gU|JF6%@}2WDd*vN2=Ce9uPB^Zc1YvLHfaxO)O5Ae@CQ+ZJ&Cul zi>mEv?3_wNghH8rn2ac;^<$l=o_Ke>Bk{o)h56ZQ<7d7Zqc5fo)qAwLi>lx*ji32s mjGlO@lG>a25JEp5qvPEuaS5it^Q_Cq&ZMp$uG7T-d;S66tN&L3 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/MAC.COM b/Images/Source/hd0/s0/u0/MAC.COM new file mode 100644 index 0000000000000000000000000000000000000000..f49e835a181bb857bfa4f40c77063233894174dd GIT binary patch literal 11776 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 LleoA4|BnA}sttr@ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/MBASIC.COM b/Images/Source/hd0/s0/u0/MBASIC.COM new file mode 100644 index 0000000000000000000000000000000000000000..c9ec3cd39f6cf66c899bd0eca759de3275045991 GIT binary patch literal 24320 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 OZ_b|!NSK7;-~R&C%=L`` literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/NULU.COM b/Images/Source/hd0/s0/u0/NULU.COM new file mode 100644 index 0000000000000000000000000000000000000000..fc5594b1e2c4eddb679645296eaeeb9d32991990 GIT binary patch literal 15616 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 E1<9OScK`qY literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/NZDEC23D.Z3T b/Images/Source/hd0/s0/u0/NZDEC23D.Z3T new file mode 100644 index 0000000000000000000000000000000000000000..5f905f8af06e1beb7b93c164300987524c30eb03 GIT binary patch literal 128 zcmWFw(KR$Ma8Uq*$OaKs2^L`n1_tS9YY*vYFCeX&shVP~n&JUudIPaxE|36WIKvmn x@d0A6VwYS715k1c3_01kS%npeiREQ^r6nLm3;;NS8WR8j literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/PIP.COM b/Images/Source/hd0/s0/u0/PIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..4b2ce4b689b9be798eec94cd4275aee957c8bd07 GIT binary patch literal 7424 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 m_wA9|X}-1K3}o>b!S^gcP~*X85!S3Fk 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 I|Fz%$1St4NTL1t6 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/SID.COM b/Images/Source/hd0/s0/u0/SID.COM new file mode 100644 index 0000000000000000000000000000000000000000..3b073ba56b94c4941177430d541180dbd706f15a GIT binary patch literal 7936 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/STAT.COM b/Images/Source/hd0/s0/u0/STAT.COM new file mode 100644 index 0000000000000000000000000000000000000000..1de359f27a749da7d3127749f3720426be6fea56 GIT binary patch literal 5248 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/SUBMIT.COM b/Images/Source/hd0/s0/u0/SUBMIT.COM new file mode 100644 index 0000000000000000000000000000000000000000..2e788827b2a45aea667092573f2263b67f9243f2 GIT binary patch literal 1280 zcmbVMOK2Nc6n#%KPeBGx|AC4&ej`ttbd*wOk|=nPRj|^KLR^KUpG_Mxk;ayYJmZYV z`uHQu-INBhDqXa+gl2a29xys?v)EWAUQ*uqpOO&iVF=1E*Iy^l#W`aV+ zbjHed^&kF4+os2CYg{>QIL3tOLQc2vd8=ZSO9h&>E!VNjG+Ts(Jj9`gW9D7ksna9V z<+74BEX#Ijwro$Cd+7<&C_Iz1%JpXz8KJ?%Z6d!V-3>mA1m}dHBL;5}U;c(nCeNy0 zlMN{roCEwV$2S1q7n~>B8c^SJ>N}wB-===#)DJ*C#H-dhz6tnYNb%*LIsOUoBOL$A z@h^aPZcA*EsU);ce!c?VFZ4|^q-~PU*6PKGxbx`(Tot|jEZ80ZgONFMt4nPP@jE&=2%MFpANPIv5gYPA2KyQGuiOr8c|71<5`B4A zI;&Qsez>^@wsr*XkZ?`J1vUz>xDt)&vr<*BNolPHH!!~({w3l$e&_5Jo{q?05!e!N zU%R&%j}v^E#e*55H6(Z>ljsdeYa+G)iwJf~ZLq0d2Up1;xglK%M+sziX;_gea0k6% z64V3_)Id9aPrFX=b>16hOTxr#zJ~810k;jZ#dZ(5F5W`jDqWTLddb7C}nft);VcKm$t1i_JrduzeEjk1dm)J8M#_v~Q*R zaQEJG&OPTl-}&wYC~8j-@w@Ny_RI88J}2u#!~5{a?&jTIA#}^fN5?1!S3mLC9?CxD zu_tMJFKz!s+xHk7u@#C6$W##mhG~Bz-@w{!T=^yFVJEzfr^n7a`3!ZnWBqg={v~s5$*8cguq4nGQC*&h&Wn_XAV5D>?m0);W(;= zM^Ld;zRMY+E(S-?^6kb33PP(t&=3m?56i|zu2Q9I!8lsZ)gVi!6`-i#F%*@N(^73< z{G*ibIcTfBdX)awF$V6x1%5`SxbEYFQi|$`!VqPoOWQBnbQ2Z@&)G?_($FT&O|r!kuYx&(xeRGnk(m$;<`4ve3YNP7cU zNwanju{BVYYp(ly*8uAS_Rg-OQ?s)(v*!+0zGSC59xiY;Cb0)OPc_XJ#T7`f?5Qle z2wx;bmp|aFz$hwqwEkKMj}b!05J+Q&dL5=29!CWckXzAF!e6n|a)gDuoc0Q}-9Ldg zL-VJXt?O3I3!9h#8X5O7fCe;RInttY=H`#%mi?M%zha!k6ZuRgPx|YGoNw}UQIpM1S(EY=8-GM~xKF-d%3Tp%hd=#*(>zaWbkM|6aGgA$*ax?C=J0uu-xaA0*c_#O(}=ix2IX5fW@>@ELik18Pk zH_Iy=(h2|<=M5PT4G;7T!gng_6}-aQp}l)B#`Dpfu4GMYPAUdI)YCVBRoO74wER~b zZg~`$)-Z&+i%eQm-jT7YrT!k8R8wvfMvRZvOZWG84ZihcVEcjIzMdFvALttFAA(TH zfZW(HrEE&lQvi5he{a0G`)EHw+kchUp~(GE!;qMrKwd;b(QL)G8j|JOf24uwK6P)r2% JR0IE+;ZFpd#_0e6 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/UNARC.COM b/Images/Source/hd0/s0/u0/UNARC.COM new file mode 100644 index 0000000000000000000000000000000000000000..8cc907464fefc5bf64db6ef689a1eb58346d2a88 GIT binary patch literal 4736 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/UNZIP.COM b/Images/Source/hd0/s0/u0/UNZIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..afde72047347290bcc1fcee1b9977a3c2572b545 GIT binary patch literal 3328 zcmai04QvzF9lx`47u)gO^N|7Pq>y*Mm0fHS+-nHo6gw->BF6X_AB84kC?!tFNNjMN zx}=HQsngH|T|0?sn^aBJq)wVNHBg$Gk2WQO6i((?%?K-9t<{>GYIuga%ycbrvj3e! z7?rj?%lF>7kgJ{;K_z0w}ekK4iUsH0|Z`-*I^yZY>dwQ@z>+J3c^x^Jc z3Fd2RtCW&rdmnCpI`m9nDSo;?@}L=_D)$^sXq{9kX!yxT>SbJq*KA&k@gpl&da<;5 z18%5=h!M&zVjAOep^Vh_Q5Te6;wHvsrH7C|VKl2<3FzDkp>>@rK=?PyT?F@if<+od zG-Ds&uMYM1bOgT@!JXZ~4&7T=^aL0iaRHdC+Be(iUwaRW)6Y$x7M`OJxy~r&!@7hI1p*M&yoZEq1(KYqcw%FmeNmOD)_KTZ)v_ zDu74(CP~=_}bO*a2e8c>iVfirAEFWRCqm*)(nIxq< z!>|LQs&f=DfhB&4Ze)Rxj%vVqJRA;%@g6V{0US(}?DD_Xj?%&rra{TDaf}Q!{5`)4iNOJ3C+&yok%PD@dZO>Su-H zoAP3%wBZ z=kKxj#msKj1m2}Z{`0|+c^4-P)#SWN5C0i}6m+1TF4c&izv`@Vgo#Un`xcvP%d-O~ z-Wq`}I?OcqtJJ{}kLwnTsp{O;JS+T?iN)~(?ggSRQwj!j&^N$LJdMj^4WT7OOa&eH zQj{qSPS$kgxvR(-O^dFjr~s`|?yg6os~+VGT7q`p24e+Q$G=^|FR(*#JnyYZGiELw zr3XjeJb}w}FN`$EdKwOS>%N|bxKuR^HLACGC$%Ho9SLBgavz53W^F$OV~Oy^a% z7veb2m@!9=!Qt*U(KIa{Sc=qFZI8`mHkLcZPJS zNFYg90tr`_aTCi(!gL^aj5PThXL84ctLT7e$9J^~%5@%{9g;N!Wi4EL8S2Bx)Y(fF z)Y(Db2(AT@!8rb`PNM5Bm0S2vg^Q>mHq8hGmMj8E)cWw02TbvoT_2!Y?&>mUO#EH5 z`wGHV1wa>4?(--M=A1ED3j`U@ZSmT`Bd7BR;*ld=hu?6)TxSrj_M7-d5b(dE-Jtko zKFkgYXV6cgUX$41H}lm#yij=?tySVE(c+lu5_9X%AhX%5y=2w>R8H!yo=aHVrw|mo zUI6N1!l+cJR;N0ifhNth)uXX^Zk3m;9!m^J+_T3eW>~vm6`@zj$_hT4efIdpfytU3 zdU9jH09p<@1{{JmP>qvsYZcdQNcEXgVRI^z7DW+M#wRlVGB|s4p){?{Z%QXqG1Dop zId#AUGJWEKha6vwRq$6*on$IVtl8iiLy4w@6O`q%D3#&Lh?FyxDW;3o($75xC9^6O zGZ#nAO-rz)7&E0tP2PvLreZ{)7$Z_qB43OWDX}Qd$Jqe@;mcCaqSFIMQB!H_yv=Ey=PNoBRocq&`$CyEhr zf}5HtI+J`-`5Rjknk3(+<@eA~%_J$mixPj7M^Oq2532V3j7|79krF<9RGVFWydu?4 zq#~r2v}*Hh+K+7zEU0ma#YWnaSoyN!ZeecaiRQ&<^}q?7R`n1-EQ-!mtxx|DB5zb# zz7Pkmpu@+K&TLs4yglh%ScH@7KM?}*3!F{G$fG#pQ*|bO9|Cj++ln#rG%kb4sSgVO z#Sot0liDR)sj{0Pd2z|9ybIqyt9~Y}p@OH3eCx&dk@6k_iA+lPcm;5B>qk+oqc~;- z0-U&^0xEdA1zR$PLK4b<6fGc}Yc`}ss80S>{YJJ3!SxKTV-~+#?j_`Yg0={~1h*Jz z9y@JjiGy)$iA}q)nQb{Z4?d~4RJgYQo33Dqs_7Pq8kJ1!3@|=F7&ln2+er)DT(~#v zq#0(o9!!@vnf&F44jmF+W1yRz+&d)^;Y~Ytn}yfARjXr!aXWYG-Uiks^h{Ak1S#uZKXNwc4HjGur@qJC$`7;g!*_rNW20M;8yHw%m(3-8$rH|7q;=KGI< z=hkzpxrI-Mp15w5M@;O@@)qzO_E4&Az6mC5R;8#YVcGOHB38rDo_sru3dPl$@KH3jxSUbQ5rKai04~sP&rMNZH@ozR4p;iC@ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/VIDATT.Z80 b/Images/Source/hd0/s0/u0/VIDATT.Z80 new file mode 100644 index 00000000..073bb84f --- /dev/null +++ b/Images/Source/hd0/s0/u0/VIDATT.Z80 @@ -0,0 +1,69 @@ + title WordStar 4.0 Video Attributes Driver + +strngout equ 0283h + +esc equ 1bh +dim equ 1 +blink equ 2 +invert equ 4 +uline equ 8 + + aseg + org 03c1h + +vidatt: + xor a + ld hl,funtbl + ld b,8 +getloop: + rr c + jr nc,getnext + or a,(hl) +getnext: + inc hl + djnz getloop +; + ld hl,string+2 ; attribute #1 on/off indicator + push hl + ld b,4 + ld de,'?!' ; ? = attribute off, ! = attribute on +setloop: + rra + jr nc,attroff + ld (hl),e ; attribute on + jr setnext +attroff: + ld (hl),d ; attribute off +setnext: + inc hl + inc hl + inc hl ; advance to next on/off indicator + djnz setloop +; + pop hl ; hl --> dim on/off + ld a,d ; attribute off + cp (hl) ; dim off? + jr nz,setdim + ld a,e ; attribute on +setdim: + ld (hl),a + ld hl,string + jp strngout ; ws string routine +; +; +funtbl: + defb dim ; strike out + defb invert or blink ; warnings & errors + defb invert ; block + defb uline ; underline + defb blink ; subscript + defb blink or uline ; superscript + defb invert ; menu, headline, bold, double + defb invert or uline ; italics, RET, backspace +; +string: + defb 12,esc,' 2',esc,' 3',esc,' 4',esc,' 5' +; +finis equ $ + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u0/VT100TCP.Z3T b/Images/Source/hd0/s0/u0/VT100TCP.Z3T new file mode 100644 index 0000000000000000000000000000000000000000..13b150ee7dc5cab08301f23000e3bdae0bf992ba GIT binary patch literal 128 zcmWFw(KR$Ma8Uq*$OaKs2^L`n1_tS9YY*vYFCeX&shVP~n&JUudIPaxE|36WIKvmn v@d0A6VwYS71569PM8#5L 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/WS.OVR b/Images/Source/hd0/s0/u0/WS.OVR new file mode 100644 index 0000000000000000000000000000000000000000..5e3c877382f6ad1a01e3e46a76671e1332bb6d4e GIT binary patch literal 53248 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/WSCHANGE.COM b/Images/Source/hd0/s0/u0/WSCHANGE.COM new file mode 100644 index 0000000000000000000000000000000000000000..bc85c1fcd96eb3b2c24c4e5035b30e796a60b873 GIT binary patch literal 35328 zcmeFa30R!f-8Xz@?wMhR0AbN2Kw|D;APa;w2?-=XW@liA8D<6;vXKFX9fq(3NR-5; zrnRfKF0H23XzSBHwvDL^af@Nbq+!~zC5rl>R(X_Io!V-vb`{>=|DJ&)YM$|S+#mqVXbIyM||Fdtmet$-6be%(6uC6lb`As=_c|6Y-8QR8tD>Fr#C~N62j!RYf9l%ma;5?u%@TIr+>iR)#YjCou0n#c2tAdXohNZ^`AIZ zAYT;5^8hEp|G1RY^@|Avh~#j@sZMh0$+458XG}VOj3aOzVG*_RA{P@II4V~Dn)4qO zBSHKrR)qLJ`}dou-$eb6yTC564@CtK70J~9tkD1ObJz8`TLySrUpsXWpI0Ly^+RV@ z8=Q=fWa!8h_M4br2z)lT&1}PGBmW0tvPCif16==)u)Ml`{mYPAqt)pR#&T0drP)$t zwXt|s=dd`84xYEx+5wmA%{Bp^N5E92)4O<=)(kkzGK^%io2r}A(l8^s@BJSYfE_@*kVGsU4zuo7u$8Yk8iVFDD0R zQJ*HdDtvf;{tfyqL@tEqzx5A)*+=uw&4>TyJ{?}bXPjIkV)HA-;wbt2yqLwvW1=~^ zNX?eWmc(D1vO0Zz&c>~a$c)W@D4L(=(A*^}{QmFX|Bo#okEx5Y*=tSuI+keb^BidR4DkbA-q7CVK}Q

+ceni=^40!g-q?xnoMl9 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 pruz)_j~)j4z&CpAZ zyI<3Fklf33o-gM0Th?zp`?qD`t}|(W9P@HpN~(eGjmu2 z{-SPU%q|wH17F44W}&bQLb|?9-R6jy1|{)tVwq<0D5mMPv)`c}J7rei9?7Q6W6Rt< zZ08HZMmAL)=vl#J(J$dUmXkEoX(MaeMMtT{=v&LRJMJ{ID>!OiS9KtU<1G-MxA(qI0VPK ze_5#$?%6!;)ZTz?v@q+_Sk9~-{hW#Bc+N~(SXJ_Qr#jeP%sWf3>lt3h{`hAoL;cCB zgK=ZTB>x!%dgnqivaRTh5pRhzY#d$2yqamqDGubZ(O3so@%x%Cmjj4=`Sru<~cs~tZv{9dZ22z|N2Ci z$wFEi*!s_Fs4J4_P$v#qslqTCsD=(j!fLk5&Rh4}*#h>+f#~AEM%@uN)=<1X*4N#w z&VapsQF53OX6Vlxy#0|H3P)n`$lW)!s72{b+u0$v^TS@JIww0mnm2M}6zEM_9WrYJ zn?8h3$3jurB2Wi$_#XD_%KfR{=E?@;9;MV%LaLgGKFZsLmxLSC?3ytZbLwurU3lNy zs}2b2z{RPYm4;WCsQ7#Qla`ncANnFx1uQ|dKx z3i;*QK+Q+7Hyz#aL`+DqL;@15po!0Aq8D0OXhValIQ+EFIH>3dxII`DE2}iSKH;QJ(0Lt>}Fkr z)tCh^e9aeYs5{b&6{&O5VP%~a-iN28J<=OzYI}@hR;HM7-*WcIAjn$HGcu|tbeQRF z`vF?!zz?AV@o2k>5JkSipZIbOC1O1|YxQZO{%oTqtzVJWezYFIz<*cPPk7@SHOw0E z{x;RE-&ouIE$p)H?jbs8rA!+lT*zAk#R7KFS9F-@#Tq&o35OC1)k_pBrdQ}PjjVlv z$w+UeSa%E~RUd|Fwi$+YO0$My(FoO2Ta0y-%c#*u*%(03zXv@Isjm)tLSN0=o{gqf z3|bvPX4BRHG(L7cS>V6f+Rm_;Lqq3HgV&ug(paC{2SX4_rHGY5>M4vFeo4*_q6Ok#$B_*fc$l_bcF?Rh zgf~Gch)JFWBv;uy^GVnssI;{kR(m5hVul9HWhy$WtmHP@yV@HMm}ZW$=ISawG3`6%HZC-(=)XD8iIU(^LJ<3WY!jtXpAter`Ml zg^?LpA$T?gH8p7EodOMvfko`W$>(Tr>B-mW$8>V)Wjf8Rj=Bi*H0?k|jCU@X$Baxa zZI&K+PzD)URo@YBuctsu8x5Ps8erekX?t`P6HeB*qP?|M+DoTK?P5Ab`fE6j6{>Fz z*5lB#NmCVmDC;eZ+OiOb=BIu<4qCG0zNTMjX{)D&`qtL^n^pNURDZahrib8h4H(Iz zAooX2N~!B6%53}k8lHuOiDR+$NY=55a7S-nqT`d*b%%y6ScN2fo}pzC55135Yx${^ z9DWIBRp;-!mC3AH5WMu*c)I~2)9GdU6TAv9<2+6e{~pJd64rB-9+rGw`#74l zX2DNvoIPHv{ouL=O)A**O!z4>iqp@n$dI2sGou!TEAc^A5+C$fl%~;j8&Lup>g;0?l8* zBrsVKHcZ-@==Oih?QBnAiq_eav)mQ!izV17@jGkn$sg)BqX{-p&`!@Ww;TA>r#4YE z)*B5a%6i{demG(b744^${5tgqvaeKs+NE?~s!)8~;`)$qz~~k56ofuyjvzwA?1{t? z|6#U0mhd0WbVth%i~Zd#eh>Tj`fKagH6bAa6h{HN1R+7LSfFX%*=uKbANt~nkU9~I z2U~-5xUYB5VfaFDj32&=y7^BvtGhZ9hxdfq51{9B=)n_|=<^Oi4MEVg9QZ@FK7t|b zU9q0SaLCyWqMwjyKpepBfsA7&8{oEo^C}8=N8$`c`Va2%^yU`?O4f-tN1wubXyaMEX8;PSBEj;agaPR#MyvbY73n;=Nk(QY)8f0CDzF zUd}(_jx>wj8pY=1j3j^dchQ}5So&Z(t)u!-lh4-%uKLg>pgQry0k8+;{1{7MFUaJu zc-Y9h$}rFpY%UBt%qIVMGlpf^XAGqaD*$ms^=~ln1|Ddz11Wy(utb{_*n6ux(LZ52 zhZQ`?cyVBlQ_QU(#YXka2ZIi z=-xF=u8FIN;wL!R*ds9lr1DScX$S!9K6KE6qRxKdb01RBeL4`D=WW8UMQ<3Q-r28G z&qIYg{I@g??h?Ed3|Nu@i8e$BUoeIdL(yQm=nT{A=*w)TP#1zMPt8?A3LwYB5Y}sw z6J9hK+0$1cU%ulbipIwxDki!@yVTdPu3`0ZLMsSk5bQZf)NGeYBq0C zWvRt?C*ECHW3>p)dPTWyEUf)Jpbz$A_FYuMVLhNvok{!!B^j@|RQ@=2@%L+}ub1P) zMXw)GWyQW=$O9PC*~w$hxsa4^Yd%v;J$_{Sh~AC8f&Fr zF)XFgxgw);7%n&-At14}=;O0Ua3F0Ndp#seEqV|2Y zJ<{}mFrOgo%758J-FJ3}V+XNjFVw7{1S8&-5&iKPmbwxBum`>1k8mV@z!OQ2czlbg zmrVhsC(7jaMECSC>HdBsiunOMjL=%0k)3g;QYtb?LCTpnJZmZd#GGEW3N+;)e53C$ z_Qam^6zrIdFde(B&a#oBX&`Q+VBo?qkhh^>!aD(W@!6nd0M0?fz2r39@kem8+&!9r z-=eXYa?E@}`zyM+95m0ab8*Tc^O-9hoN~at`0i|XZetq-FRSAilu6kuI<=WP4g+Ih zZC~Cz)+3K9>WTJrcHikK60n1?6m#-xGn9G(nsdL#eIh_N&^>RYbHngM3otTivhyi` zIGaAXSs*<4YqO6N_#5$(c`TVOrdH`^JV(vZI)e9qB-)|QxGYE)*|W!4i~{A^@jxBp zqCjXcXX*t?+e44xt_jfd0a7z5%ZFVBXHmcp4jc5a4Jay~a^< z21;4nYw(MPk0BdycJzooH%f3Dn0Rr%!Y|B_1CSS3!5sF%bS4pAq>@19b-Qa>FHNV+ z!b*l=8Ho~R9Od%V+0<*Rh_zBLjE7*W;jvkl7Zb+Y<6q1Oc#3D&9E zIgbK7@2*p4yzCM}`yV+oX#CYCaovC-@Y6@@016733mhLpRdVa?b?gsSlH*vH*nj8F z?R6|A$Y^|5W~i=XAE@iw;PGvB)D`WFba&j;5@fH(|Moy}aBziw@inabj?Hwi2S|1Y z`#WJfSrjCZl~2W>e*tj}%OLnV%&ZceVh0_t6GC*y7-1LebHe<<=Gf(_+~eB7^}k!k zpdI9i-JHtpM&AJXIz`lgjjii5>nNoAqLqC=1?ATdF z%q48k6ViNP_@sVqz%C3wMjp2>6oyUp$^{At%yEI{wb|idyJ7r@U8E=AaoFTW8JO~C zJl!%u)C4Rd%qF-@mZsjgKnwT=hx#1f>(7BQ=D-s$b7BHCA1*V++%6z@rK!cs{<$;H z>2v*BZDYmJpV;`|8@HAZel}qqLx_@t+(X33$k@effoBPCro<89jWaIe`i#@KHM^OR zU1jjrvkJLl9va1@ua?&l+Kl6u89a~08`PIG0e{PU{HZo?ARJJJj5!~d`;rD^{6X#h zpdiad*e+hPFr`m0?65;2I|)E1Vn89K7d{Im$|0f;^e~DzvFP zSHYeH8dn$wP;;>W2~=)7hd(A6qlkEa2B}>hZyO`%d0xjdbh4Q#oqEEAN3f#c512GZ zzkF;m`J#Y2lP(^dh=$y+l$M4JE32@0pN7FDp0%X0rTl6U4k5t;0w^p%@aHIl@Qn?R zntFzffeZdEGrx;KIrN`AVh|+4EC`?omi91gTXm4*YyJ%64!xalM)2Um>l`<&mV|#$68;$^{4rdtE3(-xuLYh4mCQ`o`WswLgWh$if7i$3 zebJlbZ5e0i3G68Qg#B*Hn1c{3X&EBMShDO?{hbfdkuTz72$6nW>@kzVm_C_)uLwb1#M0c!fFOz zVE*Pk77kx<8C>!1Zp7oVxh}BhF04}4usC>yB6iq{Pf1MF)g7h4J@?+*0L(~(mPqSv z>XSYOE@r(}q-i);C;(b?vjAxDB!TQm-d&8lzE%)mTa~<|4XvNa(R0D5-PNbsuZohXQ_ZAv>GkT%%^PFlGh?kvJ zL_QA82447tyb$Y-_=n31M@<}p_fO?o43AGY9rQoY!XFsL&O|st&AJBD9rC+_=pJcM zvz-Pk9wQ=LyD)60Qw+fftOkf63W%UH1c>=ec^EU@p38f5eSkl*8&FS_vE@YuEIg=X z{d_*;a4uAYj6=UAY2XKXZ8g7!Z`_~gYm0lNZpd^KS}@n+toR9bw_GRQ8msMcnnQlR?on z?ATrO>?zK(?B4+-5!X))Fd|?)h&>5x`YrYW`+7To8==^R2RSq?3N&yYs`NiIj)vDC5h?17^m-F) zXjvxi8HU)Q@KSpMf%C%q%+$=yLz__n)!o(Etxnu?4+Y}G)?neLdp^-XNe+$*zLh%j^tB{O$7YrmToh2l}#t`jz z%fOsa+`$%?P@{mMM>kVyN!=&RoDL`|+(5PHxq-0P z8~TA2lS0R#yk$CH1UTaQo7npUb%e5|9wb3dgrM^Wm%c;OXT=#sGJ4Zt?q#?JuDM=y z#mXk|cgjxAXut*ggX!6HKP;FF)Q@DwH%ijY-ZMZ8_uNodSt}NTM}2i3g|S8zc`@| zcM$j|DxEwMybYa@KU^?w4SGe9!$LI9fs=AvB+7?CsF4~IsRNa9OdCENg8$*}%m&9Z z;kK>8%}`RPCy#41trFELgA=o1B;?@uarP6OG`Pg#SYtzHqy97G(^5WvlwL5q6_$RY z(FY4P$t=O&xQgX7l!$lu^_}ZD1zEVEY~!WxV*YPz;=M|sBK7#^b!1O3 z;2;!6f$-R7I?{_Oy;;s!b3R=h4GK6si=8b2%xHo{ZtsNO(cRYz^U||w=`uPX0)Zbn z{)jG&=s_-bQMSpO2P~xnFn`>qF)rT4g$(D|KrVCC#e%u9se+!r2P~dL%mqI^u!Kxu zieeoJnr6vlT`?%Sq8CgCWiQ3tdl<+P+z{dcsH*3>E)-Kk6ClT-xDY{?>4m&9J$Taa=%qe$;7wXcSsARRTxC~& z_Yck@Ya#@-&^w zA;r2%C(qAw+0z%Ee43^?e`GL{gYp_w4pQc!8(S)?o1_e6V%JBuRtI1=cWv9LPVBlJ z4=|3qe(zc}yX&{{03*1o=>zJ_u5VtA(sw+JT&EUy{cH5VuI-BMQ0I0%jviRCT{rDy zmwnf-@d&fE>-1JW>RrotybJ&TpIbRj+4a*MD2wOjt%?s6(024FLm|<5rxHJbhpm}kd zCi7$0fo9sS$vk)+X#Q{LVKNu51G^B04<7+VO#0k4*oSVH^#6Db_Tl6QH0f_%gMD}w4@~&>Yh@oU zf-m@VTd$RU_yKyE@ZY&s_ThhhKTNrO+U6ZX3jfQBs-17pR`g5JmIQ!r$7n-2n5-|3YGD=T|dius_X$i`_Kh~@Dbqb2H z;ejd@aj5Xu{?r#(8->!SXGe;Es`ou{M{+rAWupiLe(oW#WqSy4S3em*7xtAfDgSNiUUUd!qnimkRkfHrXD0; z`4*C1COs)yykP(42@Z*^fH|@*o&FQJ7|0*ZeW*&IF!W>aINP_zj zdX>*U3(&OD`aX`k*Dg%HT%}OJMyK;HH8nK}kbf40iU~oT0WR_sah(Q8y}wZ)76;GA zef(KePv~x7OefF#DDya8huP70c5tU`0)Vtb!F{4sdh9%3mFNj4DA)`in7a;I=BPwC zqGT&Ze4=^JEzN2+g!BqZx`3UtYY{;3LkAO$z{(p$8}&H@b{=W%2)z^Bd+gR`ihmiE zsxoL_P*jvRqT`sE#OgOnpkUvZwLn9=2G11qS>>&%<0z>PWY5V+ePK)mA|+;&@)qk=r@ zL-54h4eu?QBX*?=c7+=yG7X95BY)a?%-xlbAq64{DMIA)QVN_)Q;01(BX@d^pjtxP z+;{*bF;I1!TykitzlE0igB0uQaZ0Bk_Na$ZMjB}^hX){P<{3Bv0{50{W#-twqABm| z6o6OVa0gcyfb+F}(X8s5iS(HGMJ{KO6 z%~H$fPouVpJxFz2rss8{Wri2ohC)2IF|hOo7l@y?vNH`(0$3-1A59n*liLdZ^X?5V zKFCG2%1eCEU+1;<(x1Sr$n(?Ehd=ybI?q|m(N#7sqEz6y{{^b^zmAV3;0b4*MEV__ zoud3+c5s~nDdy=ZzO&-c=_&NmMOQ^1#dV7&b$kk=+%4ey1(Mk{oRXcN%)dmZ(OGns zCsT$qjI9Xc_35+F(yQgOoaWe-_k>R+V~pYAhAslZt3R8PifCg1iW941!Vqg1(7Al> zO;rp!gGRR$U(!u5x)=(X0K<9hI2NvS(804i4~L|BnsHI>_%fYkt&V;^9lyMPi4SKG zsr3}izu`4ERqgJ}!uppj*3`4^8%oL)Jl2C%;exRX4J3??nJ-B3T!|$lVxXBcX^pvg`8u_MdD%x&21lvzqXUy?V3&HdMX z>U}}wn6P4UM)F{7Q%|w;5v{ls!I=o8&sW!ucGtohF#H-oFr3`?oGKJnK(^N1UFdn} zwB8iJB1p?F02N)vbz>$|6VycBzk!sO+`cq@)<~sR8>$qDTbT?trf>m-@jW4u0vkA7 zs1mP2fqoV0@~cpeUxh0Cs@+mkhPp3ykfd-7w%ve1oq7(^bMe&MjML;-0j5lT{yV}a zZhl@Mj?` zL+yC8JTYKCW)dJ|EL<}2C19I;&*n<~H6F^!(wPjDX+Sq{i2zFWpjgdGetDcZ3$-BV z8^AtflWCia2>3FWwxyDlu=6Tq7nu|9E5b{}DJcKC7DOD}6A9l|fB4AV0G{QZfBntv zv75U)Z*E2%-f>|B-@4H>5UB#IO3{R@;%BrT=cf1=4*wXfE%3#!5QpIIf~D!i{5 zT~|5EO5!}O- z5)QjnJee*N`3YSV{Y+B8#+DdU&ifY!aSDfwe0CXZ6vp*XNFZnAHAk}1VD|(s=vt6nJL}NODLYC)A{S%$}~r>B|9Q4`GhIWYMB!_$ zvm0L1yV?zp5ab>HpEDZe#s5P$8XrbgNGx&NzMEUxZf*|qf9vDT_3ApG=X{Ct6)`(^ zT2}N;a@W^Jb-y-%3-IpPQx^|@4)LH2hPCS83w!!awsfi2d;_XoN3NQ~2$Th&kPG6# z^^J;M5+rfC-cSszwu%?o+k?AzNb2mKTh=A$@Gt2wkk*(4BB;jyx<-l!ZdxNQtl}3C zpv;^SK$6sJioV#$u{0FV8=@ppjfURTr{L3!@O56AmVm{(z~W8yF_{W>Y)ZP}*Uifh zJSf%NxW5!??DYGY?Zx>M5%x71Qxwq3cnL$;1|JXO?(LP$4C3fpEa=3ZU=KC2qZ{#Q zoG ztBiuK^fVG&6oh@elybH(X=FLpI_tVy4z>8l7lK$$EBD>S;;-@29@&*&jhFAyry9C6O{Sjq77Stzk`pO9z+g`*f20j{1^Y z>CJJ|)GLC{sr6qLZ<^EUmjrs{LR}*ZHroPdW)z+ZZd!1~0RJ?=7QjDnHrW&81i9LB zVgMHqMuBIsH^|or)D~b%^45&n0yGLI!KDd!02J?)!FU&Yuv`>0AzLoLY4D1d+tY6O}*5_Qn9*}J`)J3Ku)p;2&mM=7^iHe{z}5clT= zKIf0r@wtPOPQ8ZwHRhbbMF6?7g6lj$SF>ZlQRT7#06)o3mcYd4&!XCFRWU$STHul@ z!kr<$=gK!|9!IqV-!4F~X{7&$2T$=2tIW$yF8xhC24x;xs*U@+fPi!m#@q?-b9xH8 ztOPDa_M7+rbL?BgBG47Z(?ZTWRaJed$K;0UbY=NGlS0^-2bk@ht~YGSIjM zT44)Uvq{Eb3rEgd+L1Tj5|P3K)`iF>q@i@6;<@1ZN~Pm^O0rZqOTOj-oZ`Ad8!uD! zL!irb3j@qV0L=6aC-=fQ--m)u#DXe*PzW-FRg1eTYHR?%*Z^F@jblxx)KUtT_Lgpy zEIM$tavcS}z_lj;5TJiYnI!PaD-21nbL<`y^dA=-NmUa6N*3Zw$4afNt|?KHSd?pF zbl^8x|M7b9{p4(}L=k8@zxrBf1292FE9#zb<6smX`b)Su$a}%qC<+_=vZ%FPuB~A# zX8bsQE6+Ba3tWVtHKwM% z0w9(RefAX@;=?h6OP`n2SDDTWw8UT5i7eFMR{(6|Y|CGE)DvgR8`0W=)6&V2H5awL zo80boY_C3aYxz<(|2i6!@0di)5Mb0vly6$A*}GRz45cF@4ymsga0Y%3cgSsTF0!b2 z`8|pt-c|pyk>L3Ro{+l+4&X*)d}NJlXk$Q+|7qik=A3-P->6SRB7&g~G@!l%7@I!o ziut%e0PQRxm7jrXxEnAAxRrlUWX%%ZGZEomf)^2D)`1Cv-dP?0V<}u>jg5;kF5dF_ z#`{-nr71*Fe-j1t<#^;4sr6kx%eEM_fS zsni=UHCN-};c{3G&-U~bd@fR$|AvplYiGPsY%YY@#BCy28cSajMrx0+{c`?R+A3_sra*-3L5#F!SAH7Igf^u#iZd2#x2Bu<}(OJN_yb^z01 z>gM71j;~jKO{xptus0MsozR5A2h|UG5)>c|8M^P KfBr%5!2bsQomg@J literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/WSCHHELP.OVR b/Images/Source/hd0/s0/u0/WSCHHELP.OVR new file mode 100644 index 0000000000000000000000000000000000000000..49becf77009ce60d60055f3b4521dbbe49c56cca GIT binary patch literal 29696 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 R%c&G&4dyTS-+$qs{|CUiWVQeR literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/WSMSGS.OVR b/Images/Source/hd0/s0/u0/WSMSGS.OVR new file mode 100644 index 0000000000000000000000000000000000000000..84625d8eae9a83d367a26211819dab455c9c9f19 GIT binary patch literal 13824 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/WSPRINT.OVR b/Images/Source/hd0/s0/u0/WSPRINT.OVR new file mode 100644 index 0000000000000000000000000000000000000000..83bef6ea8955c9a315a55fd6d4cc075c069fd599 GIT binary patch literal 150528 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/WSU.COM b/Images/Source/hd0/s0/u0/WSU.COM new file mode 100644 index 0000000000000000000000000000000000000000..39830fdfe780b64cd83d940e2bb78a5851da0bce GIT binary patch literal 7168 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/WW.Z3T b/Images/Source/hd0/s0/u0/WW.Z3T new file mode 100644 index 0000000000000000000000000000000000000000..004cc957de530cb7f514fad115d83dd0a428540f GIT binary patch literal 128 zcmWFw(KR(PRe*r_1_4$H7GVYk2I**P59w$lFCarTQ#Hj}HN^wS^af(XTp*DPR$}N2 z;`;yz1F%AuTm}PEa}yxnEDuQ78)pIy(lp=$5;pum9XZ*#S%npeiREQ^r6oW<2mk;N CgBZU6 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/XSUB.COM b/Images/Source/hd0/s0/u0/XSUB.COM new file mode 100644 index 0000000000000000000000000000000000000000..15e86abfc94ac7ae15b0db899aec96d711d56e58 GIT binary patch literal 768 zcmaJ-Ur19?82`SZbGy2mb7AblcK>F2M6D4sMuW6^oJmsllHu|`jC9jEbE6uwq?cZL z2z=-{=%I+BkU|FA#fN+0K1^AGK_H?ad+MRr*>|<)&cpe>^EWg|hr`^;SmQvJ9SI37E$JA6N z?XaaxR+^p8=~-q}kFc|QHe;7%{=PB@kp=OJhH|(riuHkN33wm z)TxRl(m_>vMB^N1$^gn(n0*c<>?w~u?3MdO@_84cTHYyhY%JVhpF+WF3H!Mh*F(19 zi7>GV)_X2S6|FT6U%BiLULq>vC)}t&^N~K$Sm*pDpo<_mkX{L-lIFTn8XeI(0X(wb Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/Z3TCAP.Z3T b/Images/Source/hd0/s0/u0/Z3TCAP.Z3T new file mode 100644 index 0000000000000000000000000000000000000000..b5befb8c21a28b4c27d50723d90072953b669444 GIT binary patch literal 128 zcmWFw(KR(PRe*qq21Zs17GVYk2I*)cFX?CxAg!9InqsY*0%96?0}1n7kR*@)Un7$GE=WR!dYfdojbKoE^&0@0AfBnUhq zu=@0|)>D^C<<+nHtcuI7`WkI%r*=INjKN&wzKW|*R-b(}eI-`I07E-cEr$0y_f9?p zySm={=M9jYyJw$s_Bm(oeSZ6Q8O$(jxVgIiTc+&h;0j}Qa~&Fsx8X+-|FK}QwMcIf zd<@ymbO~KXDJ9AFN9~qEA~tUC4)<(m>1K-xf?VYq|M7P}w@iJi8tdf0tzXsCet(z| z*3{Fo`Cj~P3~%o1>S3gMTX)~Czuj%(8})PHfAu$DAqC`%v{cnhLWKu+7tyldZ8XAC z0+cxaKxq+)zAo;j>UVPk71VQpI`pQIuoo*mS)i>A5JIoLyky;R;vB9f^b zEpZ?5_D7_gaVA~y_K(YwajrnU&i#~{h`Q5z@_-dZM zm{0Dd>W@V!S;)ZGm|D0X_i%~$TLWg4AE4r24QkNGY))cSt9(LKy~F=rAi$P)-rv&E z-pX3FE$rLDwZuD-(tFsk@0*H>TliT`Pa!S5dSvGdMP%&-}Y7_X7Og)7}wg4Q*|`;XX!EidS~E zw6dkGtv%u1Ug9tq>%%+ySg+t|iwz9pqj~I=s zd&2j(cWv*T=w%cuy88OMwoP_4mR0X;?_+H}kWIKhF&Psk>mEu>VoiG|ENQG; z^|W_xA!cJ`M|=0(T`fJWSXsEIg)gp`m~~aYu-@=}+ryok!^B)x-HJI9hNl>{Ro1s` z3zHPb(#@Os;!-?}Rc`O;33v8QhD9oAmHFa2p;^$ktDB@c*B16-Uks$47;>A4p>!oN zlGVhRTS1Ja8;FTC5>xI{VkVWuoV$#eORI@xnwj!^MrayI>@Q=ih_MBX1sS^;4+|Mv z#8@$7i}6sxSSe#m8LPlUC1X{LRWnwD2R5I7w5`xu^NEe{-I0mSf@Xa~6RT;st-gxk zVR?O1_1d+!t!}Eu<9xPkc@tY&zn;}queT;1%bG$^U(1>rRulWu`s#H}w=ijaVf`GE ziod1&XG;C*riu+Ks~anqE*m#zS*k1zmV>@Wd~+?EEw5O2^~bsL_Pj{^-TC>klO%s|)WV})8$(#b zo!5)d59}d{u0lEY`2Bv2=xL#zc^Tq>7BJ`&$OzG3L56tN?2$6m6Eg#W41FAK%0=<0 z34x*+r0}q7pUuPWpwcjrurud0T)B?YFi7Tl;V(OnQ&Zq^U zrG>QclRsH@Ti02YsSqT&2*F_$s~eM_M2vgNC7=A=>4QJThfNHAkPc$-x9A`whq(Of zs;_AlphJOQQ2B7!zr>zJ>kd%$l2@IdPmu`F*liso`QknjZ9YIDioT8|1;0zN7Uxrx zrb58?>mUsokX04&L!Mm{i#wfY54>OY{_MQqT~y0MIL1wMFpQ)4J0HXR&_M86QGG30 zuwh%!TAnPQcSTN&S_XpWd7|R>RE}Cbf3QX?KeKxNXg#fdLQh4cIqKmg_4j`9Np67n zk{KJIe&ko5_3^*H&nwHF08sObNvktb{_&A!W_@3F(6H8BQf_&Z@ky5x` zqSp{sdJHO&XvLlgGlce)2b-z-kQlh+^Z7iNeCoSC^|D`#S=DF!>J>lVuXp((`A)s+ z8($yikNf@C^?1{#zUhlGFSig&#R^X3+Xi>o#2-)WGWs?#+-w#eZ`u$c+u%z7Y5meD z46Jf{UUaB=IcP+i8{F~Nn^ekU`a>DYZ7IBqHuJ(MZJ(wsmBG>^s4wB_Bbr4#7Nn=jVVrPavOmmT z#Alnn02db?U8oF*m#on({So$kE*Kn0jt>Q*dfeRQ^vad2>bj!3ZFuY z6LGf|#t)i3QJ46E)pOAm$_U0>O5kq04nYpsI zlU!nH2rWSV+oe|cLvzqjD?J0j19lEOx~b|*t`%Y zpnyJ(R|_Ywz(n`$-NfW>1W=jkwyLG~UScZMZhH-um?xB5yLNOEvpZqPZN0!go!htF z9qz#;-L$JatfLr@ObwD5!OX)X&lr#g`w2T-sfdz`IfCDxG3}gZf6axg1 zO?AYSxr&&ItAPeKtsv&i+laZiiC9R}(h6cJ-ayiAsVT|!>J3$mt5(-H-InxA`&;%A z`=9OBw5qg&K8Ndoug&!x`}6h((grf#vRm?#31Db_7sJ+e^|bb~_D&sW0fFKR4bpUW z0Z4Ui2U3EN$oFYi#~CK1qIsN&o%G0uhke2O0I_kfpXZCVH1!$pV5LW$ora?>8_k1! zc;At;LQI#G-yk_-ni5^om5zU-C`TKLPkB~|;ukEaRf3giVu6^RKAMiOtPyV)<;t{C zBie0S2T%BjT9-CF2#DT^8Gt;?~P|-a%*zZnS~mR#L7Y(!@P>V0MLf zOJHoao4a{UI=|t|9sGJZ!!Pv#8jhQ7No0J{bDU2l83_{M}Cy@#RXn^Adf7su(m6FjPb7-vt1^2U;HaCXzI8;gh}3LH#l)eyR< zkr;r34YMkUVG+l~wZu59i5M4cfWxom(+~>=;MFGZv&BE3SeC48?+o*Y>iLKe?!Gc( z#55PE6$%{ZGE^kf5G%KMYfDGp#BL-PEePJca8dE%lG3F5m8+XJ)Kt_q9&%(jk2$V6 zoX*M_56!qbWB<(QFh>5Cjy!+nz)?NpC{qHDQl|}7=cDkVUps)a#_)(MPQ52X(@@|d z(dI`fL|ix8{1_d;1(<%FT3Mnuv?qJ22YmzZDkbpP#0bnGuG5B~Hh6Kg@i8i{;71P_ zS(IS!N8Q7Kpbi<4W-QZ%_49xMEo`&DcPFq(o3F?ZZ9Nn(f|k>+`i zND}_d!oN(tpKvn7cxTzURc1 zhGhjdQqS`aZu3Se4m%fy97m*du6HzK=g>PDmooPHS%)%pIz04F&QOmfqEEBProQGt z7z&@Nzvrj-vSR=-TCT@!$ci#~@Ty-w!>QhGr+8zaZRCLoP06Od=RkN1r&Y64cmvop zG7Q)e6JEja2!F&rK-X>jga$wI51qC+{?mi=yVu#Ifu- z%uHoSENFUOaL6w^A}4odI4wji%nEvoEFI7TQ>=nTrhMt z3}(Pf+}0rw6vD5@xZ0(BRAs{9z`P9nR>Zj(37cO`gyU(1ikrtl^9zo1>IxqMtSEQn z)aj&iXkpXbknK4!=n(sD1P-t)CbaC$cqnnUk+M zqzj1%AE?~nbzIdv=4A&wMf@ZK=o#G(*m+aS>f_nNXNrDv*f*YBVm)IWci^tPQv*pl zXT&c}CDp0(CR;%-Y@Y%V3;?K`lOzmPvPQ6ILx)n~E#j@N$??aRmN?_^`q-JJoP{!L zWAd##otmK!tn*79;XcmJ+%PJ?-M(_+cGE3?mpU)Iv^!C?XAJ~Da|Op-0EQ^W0MZPPYa<4^scXv?5KEj$DFl%cz5xTy zt^!5X7iOEcwgBs4?ZhYpq_G47W7{~ev!>}N2cu|vZ1t6ulO$cpN7aN$3_^?v7v6rOkxFrkFxe;oz3(JPi8I73T7?I(yNFD zqcj1!E0c109@BCf(4YDP zFG%3yw*~>~NdBJm{5oy*yFfJf`8`P^*{X(Oa8{B%4 zs&TQI6I|@~-5fIJX7fl*vZ{x&IXs?ZSmkVliO#St&rVc7tB(p#lVF}ZTFKneMvvQ* z?;dfEaClI==ZsM@nuITQI&jZb}niA2n!tV%4Fv#Gz&T9iTY6BH~^FWh^ zi3cYJLNA~i3**KPj zc_Yzge8YE-?`fUejjhB6Z}UYPVQ+(5{C9qggcxzxc6INXycu;@=f%)b(*5dG!>8ujn?+w?v9pSn1@ypBV7mY=J#a^nFt8R_-l+*GWGU_ zKO3_v*Cprn=C04Zo@7r@+!OAqQSCa#t$UqLxa(dwop3kha`4fZAiyV>?<-#QWP<#L z6Hn6KcmePvMM!}A#@TqDqTE{!0>ZpYHGHHb-ZtPCJ(-WNcmia261YFFcz+%;zeW)B zp-zOQIOJdUYR5$X5vJAU<;FQ$T4Y+-U= zUgW57Oe|oyFz^m>G2?6aln38y>JNRv+o{envgj&|$jhXOfokOE#7O88OWtM0XY^7- zDE);ucEr^exgjxV3NJXO3f`p^l~vU>gxIbFUi0e1J6Hz_>l*;pyaWUTa4pndqv7>s zM=LQ+5M-Q9n|FIpyAHzOI=$Sd;0^bZ>qxYDYqsNMS_@dF%`JGl*1 zP2eqwLob~RlQ!L+Ai|_gYXG;Bl2cOcSRZ41Y!&OyT2V7dpfH9egZ zm!3ANdc6UB%SYCgX6Q;8UsGD-g`V&+G`*gO@xKDvsFxe3?I|eHg-W0Ue9%3V-vwW; z^Pc7k$X56-45#oYVszo-XyaDO2Y|||Dm2a|COx(Djo~q1b8t-Foo`4PL$gNr*229W z$MZ2}_RdTZ{wP1~jVPpgH;T|Q$Cv!7+=aAv)?~3kd53qV<1fVp-dUsjf?;YgPKfxM z#?bAOA=D83)C4NjC`P@`5fe3XyN)7+o-rzw4XdJ+aj(J?aNL_V3kY`z(4D`nBwB%T{@;qa+7K{s5V1fdrrlWYCZJg-stNw<=A9f(Y{W{^H_j?r}s;vYKkF_J~8DQ zKAe&PR@uel$9Ycdqj233^$EYe%Yhw`4`aI%-)O~-{+biCH4Xx_^-#Tqc!#2Ij4(4^ z0?vK=m@rKKh;^%mzpYZ8#=SHA&PPFl9_05F<|0zeTLdIUXHY{Ab_ef|-r^>e?lsKz^llRJi@Jra*!{XNXs zJHGG3)BbVx;jjIn0=_ku#7sJf$(`EIY%2Vl$f)qD=%d0*Vt@+Ii-lBpT3kSdC;$KE F{~uk{?9TuI literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/ZDE.COM b/Images/Source/hd0/s0/u0/ZDE.COM new file mode 100644 index 0000000000000000000000000000000000000000..9bc493c310e79d8d50a32177d10bcdbcb4b18694 GIT binary patch literal 16896 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/bpbuild.com b/Images/Source/hd0/s0/u0/bpbuild.com new file mode 100644 index 0000000000000000000000000000000000000000..9ffe859eb710f9316ffdf1eea4974514f7be4f6d GIT binary patch literal 8960 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 Cat{^& literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/bpcnfg.com b/Images/Source/hd0/s0/u0/bpcnfg.com new file mode 100644 index 0000000000000000000000000000000000000000..73b023becf63b990484f2ac42c9d662095bd0c12 GIT binary patch literal 14720 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 RDETt9TGN>IMt}DA{{=>u2kZa< literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/bpdbug.com b/Images/Source/hd0/s0/u0/bpdbug.com new file mode 100644 index 0000000000000000000000000000000000000000..e6790eae9830c86065a3500099c8c38aad1442a5 GIT binary patch literal 7168 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/bpformat.com b/Images/Source/hd0/s0/u0/bpformat.com new file mode 100644 index 0000000000000000000000000000000000000000..508779caf5bc9a380edbc3cc13ef77da3eb67160 GIT binary patch literal 3968 zcmc&%eQZ^l9rHUCNaTa;?yuA&&V5eS zPHLz9GtG(a$GPX8bIyn4O<>;+Da+i*wCJf zPLef~ME!_stZAj2!jb*{7=0ub3U$}zqYoVzplk0ZHdKj`umrhq7ZPsR zbEnm(IkAJ_wMc!%uJTs(1ERiUR@bRe&|&xk*(+;RaHLxHhs+# z_jbWJ?tP5Nd&valt3Xqkz#$j#W~c0WbuGzyJn;6I|(#9VaO)k!~<-(Z9Vh7 zf4=V}LOF8DU8MQs$zz~bI6<%xfq@~uqMxKMrPMuT&E6oXv|?cma>Y4hzgS)R7wR;bgNTtaTnafWPG4e2(%hY)fk^)c5m^gYq!*25=GENhD2W$}7hbZyPEDTpZzXdTbEh*4 z9({^{*EpSe&Cc1N$!$2wqM6t>ga=}ga3~arP%tp~ZS{&n{DZ066Yuc68uwh7v}VV0 zjamAkH$cRD4J_6eQdb@_9yYXYwIls?{Hd4qd0fC~{_n;eCCY7lLn@jO{&Z;(A?Uxr zQO4-7uI@2q)}Jj{Rnf#^Xq05dNrGu9qyU2!z@RyPeAvU^g3*0N&$_~0bvFT#nqf~? zyx#z}cN%a7@Q-_s6Ymqm`y^4j90mOagw*;n`3W*6>3oJ}F#eckJ!oN(DIX`p9uF)J z3kH})$?!Prln(;C1*jil5CsZ5UtA@TRHUP>ve|jQM|4r&EjK%8b_WRPARGKL(WV-4V!_wDK)1o zM4)(rOb@Vt-%UE=8FLSWHirQ}`8y;t+MMe=Nv59!9#|@1s++!fkTbAVX4oJ(R^I~{ zcK9%-XT%|vR<7CA7i^pn`iZj@HqJJ6&HkAVy=X#LO*m`9e>dTR2^UQmnK3qFy%}e0 z*d-$G3P||hGDpm2bG7-$X2h45A;E4&i>zjBStVd=g@A1~qs~ybOlOqJ^}4<8B3kOU zBKIOITE>~NW4QzKOmBJKt+#$%DC!o4-1@Q#p*Zf{OT;b| zFVwJWU8s?kUfd!H;{GpCEEl&-)&rX|pR|xV&5{%yj06TDy+V$qyF=l@!4cXQjP7HZ zmmY`)RzudM+eQXr{)3Q!S)zsC!q(0{`AAM@GJKXH88>*L=H*9deJ;(Yf&1hWhqADe_-W@3BzKr}{o1?cdeKp@24=Tgxi ziX!N7z9z3Fg(>QWH@0A`D;IASUGYLAEo083Mrd2lvj@D%#)NGR$0(~R8iV0zH3i4C zg!<_AdFz(nU>vSvT$=?lc5dH|kH8#k~QmjYM=pkp2= zSlBhPa9ohCly+`pVF8>Skzg!9TO;9;5T>7L(2lC{42K6+#%Lta>klz+#sUj0A90nH zm9(j?t))!_TuYHS@A{@l1Pp`fMSg~;)jX33kI($#hVcHu5FGk*-y``H8M|-_zstC6 zw$_lpH=qS>AO>uJHXvV$K4xcdfc9yn5`ucD1&Rd7Gv^v!mz*ukdZ~5KNHhqi1y?un z;7P5BAU071D+AFeUDvd=y{XN|#71NONUWN!>)xPE{ktHrs3@|Ut3b}aV4DJ`^*ajd z>vYrO+7mNX64oB^_wGZGmep4r+8d(PDfEGWzYjs42C9z&D=WmLUb&M%odqw&iWL?6 zh|q<^uVGvUFPN|s{K={BagwOnT~$>@H~1Oa;laQFLvOKq*a6O-LWuERo-lYZg z*6_l;r2a3KXr;@iA*{I?A&}XUPUbd)6`M(dW%D7)K7B~C#DA4BOBQE0^d|bKukL4( zVY*vt(W;wYW{$yZNNPx>eMUF}R8C>}Y4TQGtz@|Ct=h^|T7$h=j)ZEyb}WC0g_Nm*x3Xy{!jnmarwXh#E(gQVsbXCF6JbQ2V2l=?sRHK zSvXfZ58on^!(@qPMhjFj!R7Gq*XB~ntgr%2E$3#13RHQRKXOJgX%+HsW|WGLKbKGnR>^G#+Y3axTChphf>|;aEcDNW+`7Rz|2R^UF|TX(QQ)xi zx17pszQ?BnC37>%Y*IC%#LR?}o=vvEa3TQ;@;(BraN!#HIYk|G)MW7aseVV&r&k~5 z6BCM0mt+GVE6LeBS7x%P&pUjpf!(Bs(a6L*zW~_@WhryYJ3n_U=JN`H{GpwI(3=qT zXzC3|(o{_6@9tAo$K5t))Rbc`l~7g}e^6cf=~MkjC#dE0k()j$8OG1mHiPgZu&)S! z2>eQQ3GdXi;otNy6#5WrZLB@2-pvC@3FUe**S4*tSge+VeqsU^xAFh7zVIlvD;wywM`&{Yyv6Ur8I86OIu)r zQZRuKe`#X;qr~v3#()fUDFI2SO-V0!0wbwe_=B}60h=aHQ(Tz2_}*?)5)$M6alYR3 zJm-0z^WJ-tbC~XBYumdRgd8lQ=M45rhF;<5W&^EZzaY=kRV>r&>Ljh9z#fTg-0K^x zAYDtHjrC;NQsUk1CoeadjHnnshL;}0?yX35U9ZtO8074ZsY&uIy`(R;Y{9likF7Da znamYps*7;Yc8U!^Z893_>gq_l93k2v%>g+~oK7e4?T|x}K+sPh3iQcQz3mW+3G_L3 zIkLTn=w5xFd#^mv`l&aK2v5Us(K z#j5T)z*G8_6xhnBjZ&{1?EAm4AK_HT7VK<>JoD~ud=wNGvhJSppuKkQaE)LocQ%CV zn{b`I3p*+q^GnE@-zIbcfZo-=)e8HeFVOq?R3|u^?{RPRZA$V`B~=B zyq>ihhSN?%#AIX;UChF$g3O}BB(h5){jxvM>+2_d(#}9I5DCaZBJU)Ty)qfxH5{G} z1;X!=KCN8BCL@tUWY7n9scj8A$&9i6QY0dU!en4KT+t4R1cGJukS0?jw0rFh_D(w} zBAejU!I10^`36WJOhQtFG$i%zj`();OJsMjPYRLlmd*`iZy>U(Ok!{Au#;YSU;vyj z8I5G)a4_N;?fd&n(vK zCToGL0rpJWO4d$iJFUR`G@`YBy~gnbqV-9{`lk^tSNYHe(iaF1_WOn*FGzhr3Wt4u zNqgP)AH&Lnm=Ir)hBu(`q3Ru1-(EBRlUGqmTCGp3?zCE&j;B{BHU_PJCH*2ll^QzT zHhg9zAhP*<7wfTiA)55)%wJ)}%`+BU;o7alWb(pHcPV0{Q};Xv`_} zBbNV@e#-K{)Aw1vNH4Mc{W4t1bP3ypLWy2wCkkUq-hBo;zQW0~Y(7)$Ig5Et>%YdS zI7fYlRMcAFP2r2st-xxl_@>$JfQ$gE&upO*E+O z~=Hhz(%7K1Af3eo`eWR}Su;0R;i}Jc!%VD6B_!CtOZ-_#Jt5B5dquV&n2+g%d z{^!gB*N5{P|2ovRPi-Xn8(vUfkE@uWF$FT2D`)gz71-3O+qT^&^;Y`spEODo6O+2sH3V3fgJ`3Nj5TO$vO;7Bs}-S2G3rfkDIq zgHfh9k{wgf%#$y{4@R8F;n=-{DiJxbK&bv>BCBM~i&63uL&j`JWh+F^8WVQP-;F7d zr~-9q)*-8>yLf^a@-%12ii;c^@~|Iwcpe{XgY^q$gnqeeNR@*LQY=JA6-JND46ZGn zxN7sGfu>n(!GN` rQ%ZGs^xAwv0olHBb^on<+u;)E>sYHt`REb&@yWS=vYgHKzxuxc_?5Y+ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/bpsysgen.com b/Images/Source/hd0/s0/u0/bpsysgen.com new file mode 100644 index 0000000000000000000000000000000000000000..79d77ca314004c972fe5c16aa3da1f0ad87ccb24 GIT binary patch literal 2048 zcmbVNUu;uV7(Z>-d(P@wT2a%2fzuV@wP77>ljsdp)^03>KU=7PF#e?J?x3OTt@qxV z6-nWR5aW{%h8G{?f$WhHAd3=`wM~^fJb{MP=!;sH&cN(LW2T10;&)pLh4G-?EWJD5 z{l4G%{m%F2K)v(-++*pL+lgW*=}IxF?$QMn{88+XMH5lJwihVLqmgm=sqfKQf0J(`?cGHClgH^hJyweav3cyiZ7h2Y$nRuv&SA#}C#p=l52JKX5B8*M-E;Sh zLJalv;+{S{l&;b2tH#NxtlcQ|U@*cyAt@cxKNKk++)Gu7Dkr0fH{Yc|jIcDR zS?8R_@3sLTxR1ob;H@-*#-hqe8jaJjdN2aaueY&F1l$A~j*roVEGi0>MKvkMb=-&) zSEKQy==1pyyFhBDTQw{F1GZp4wmD7gl$jmiviCTl7f)pm7y-s=84wi+39C^l-sE^R zNIytMRpl{5Kml@~B~64rJVlQ_VL8?k`#ja&|4sF(SJgeZfA_;ISF6jhv{a1K)aOJi-dP*n~`PAYl;#5T?o6zjna z7aydXhEj1gJSk8LscCFCI&IYLJVgd@7+;AD6r5fc?bUp#)AAiNNf+@P2*!mZyu3$kIeYrQ?!J8^yGtaSA~9so4JI zNCDwcXka+Bxz86I-VKOdbVyX2LE`{Qw?|_lfIY>pSLt#j;1p=3)kTB)=|A4T4%Mjd ze!U7C{|1)Bba%JtsuO~$NyNe_$U{`2C&XC7YC)Q}-EjK)Ek6$pm(~P}VJ7>Y-Wh?B zM!O;n`hXqe=04^+z1VL7x1*l@i=7)Vyec6c`#Tz@Q&ZWO%~$8{akaL$O%5XpRz`X3 zM#yFV`|>qtgECA9wi1_i4LT5VqxNFH?Dgs(Y&{;>&0fQqJab|8I-bcYT*+}3xiSUw zt&Y@!$?yC25)pX(CB41Uh9EAmQwPcvoHu~)6we7!#5}}t7}-{^2sd}1b5rEnYrieI z7ag6*%gE{LJm*S##-(cot&AxxRdu z4+W7a%xFt~E7+hjFOjOoJ|#K0vM!L^G|Br->;}nz$HEz>VJScCZ`0RR4Nf%teeI*W d3&*r_k>yCCq?M)f=iuIz=AR^>nTUV!{s(e3yM+J% literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/confz4.com b/Images/Source/hd0/s0/u0/confz4.com new file mode 100644 index 0000000000000000000000000000000000000000..483d89633e9cc0f9af45866d7bfb43868b0203dc GIT binary patch literal 1920 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 ifC}FmVb9WuS1v*7{5?xxcf8JJIQg#Q7CUHwb| literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/cp.bin b/Images/Source/hd0/s0/u0/cp.bin new file mode 100644 index 0000000000000000000000000000000000000000..463cc66849aaac140a4e65fa6061aea3e9776477 GIT binary patch literal 2048 zcmbtUU2GIZ9G~N^d+nXw-u0ji#o#R4kflT@8#ym$Z?Q_L_|=9|n+D}Hp&FAKc+j+f zUW?JFG2zujNHoUyAjT7;oW{!60qzn;XXko%MnQ9-cS^9zX;y2Dga5ItJfe>xo;x()p&e{BeD+Om~AH*@!v z!EFx~w~Y++?ko-s_HNCWHfrUUu*TG9N$Z}*g zDA6}v>gQ*B=ngy66oq;{0KfLQQf$pXdot&EfVF-eAfJkN&Oa3?{?G({zd*p@l~}If2Vc2U?PqnEouy( zw@?}{T5(M!_#~v^IapenA2kEWv5?%wL!XO%td@3?oo>$P1+5~zfxE^n$ro74e3{X& zU9v73WZD$+4WPMqwC7nI=^H?fuHwcLs{^2FjSR5US#Hw}JfC!7r~TZr;7JWd6$UW# zJGd5Pn*(}=?&RZ<`8Wcll_Sh4s$odf>1o$>Xiq^zK8IX%Zf6;xB^s+>prYfS=$w0e z!E$@f79?@O7Aae#ZL!uCNn6}vi*8$3&fNA9_NTy!82;tiU97`_l4)-+C7f9!2nj^y zaX{Q*tkDiJABtuKF|c0h5}~fx@Sb2WxIYozpJ;qK(a;~cw8zPNvL8S+iVzq8;Tu7B zb*U>+g+@|JK@sWtQt#gjiox2|;eGO(uC=^7ysvikNILTAm8Tp?*?!tx$T(T^Afp!w zHV(=?ndbQzhqka&P>N%Yc93Pwiv_x_FgLgz0x&{f-P#vx7fB^nn>19FK{O=O37f z)ZoRA;a~MQiTvh(Y&TeRwBt+-M-MS2(0+`BVtQo0T_(%XBfsl%wTW2y{bWLR{As z7EPpNt%YCwSsl6#tgPqwCD&2H@r^o!253c?w8DJ$jExCA|G&cj| zLT}}cbq)Kn=2;iyVW1%>^ZTOF5W50>36d1^bCn`!Sxe1nrhUxf*AxVwjF?I^Rp|w{ zLQ>iBo1n_F$bh=t7R`n#LPkh58O`*x8^EowD+q@HJp4}7g2V&B#)rah++28>1t)_?9rw<4!u*D6${10}VMYP@13<=6wr802};^3^iqQRI8_eFLwl z0*GZ*8sd@%mcTp#wlJQRVXorc#7}3-z;ZG#GENAsQ%c%J$k3+IvC+pzC5w&9OvzLM z0YY|Q9tTQ5gdX%~^f2>9VEDniNDu-V^i{ z7s8`IaLL;F11_A*x60U~lLg$ZAs@aO*c2+gSd#6z18zz(@D2`y4#LUT;R<1G3* z^Z6z5AYYXpC|6Fb94jxdF}SW~z@>JW(aVKO#ykvz1k89p0?0m1>NGL{7lh&U>)2CJ zbU(_p=8T4b9>YIRm{2+B384RePLWR@7W^mO3f;uPi6nu^LKQ--ke}#FWe=|F&dN{9 zK&56cH{UKV^a)uG)k8)TT*zqgWq_7FdTMVu?!y-Wxb@j|qOE#mp+LZ>6`}yCFT>xY SY$(CzC&s?Bd^u<6pX(3!X)+4{ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/emulate.com b/Images/Source/hd0/s0/u0/emulate.com new file mode 100644 index 0000000000000000000000000000000000000000..8134ff2f3b1077d69695baff586c04808be5b6f3 GIT binary patch literal 3456 zcmcImZ){uD6~8ZW{NFcm+?MA=E!TN1eQ`+Q7%6+aflJc-DX7#fX}hXvL2mLI42~Vy z4ozt=mDZ{srb%cTXp{C~d;v{jZ3hH13R8{eDzD)(g658GFkynDQO^R8xpWl0?A+(H znbduqCEs`dopXQZoZmV3WNIyyQ?-*hrIqC}K2hJfq}?j?iK(2#_W1i zGzbEJ2@sY?c3_VcxuIKXdk8xZBhLnov!U{NIfDF$kbDHE$!6MWu0bW>q@)rjYmQ?O zD`x)@Os7ra)-@PwJM`mY)6wxYzqXCx@@NEmEXbYm@5CMfxyz$FaBIu(nKLKpU(HSh za}5lGf``3h*a-j^o)wK}mruUiWtcg;Y!VIkLoc-~i46+}E_WG(g%tFrpyxCow;aYV z1d!P9mo7t~$v=eCV$DCKv$J#6&HwG6W8p}I48*1(_?;t3Wy*uR;EAtR+$A_$-id=o zfa2YO!FdZW$wT;!V;#LKx}~@KdPGUG@O2WVgMMm;FlBYBtg>z>7M~0y^^lBAPff+* zNoAY>|B{b~6J(sFg{MY6#*zbKr?yXQ*SblA{3zm^lqQKa5fu5gVw<;%o9uvH^I)l7evn{V{EaK&d)(4$&hf=+%*NwOUehA9NQ%dCcZM(-u<--KxeslM9f>i`PqNHuS?SJndjYbcH z3?t30oy?P~ENP2IZx_|^oWw2jz>u!a92<6FoY09*NnaGNRT|hBzJ}rNwR%9 z9#^8b3Ijl3B`k59P?Y_B#}cHgtBZt=KrS$s)rv3wl5FMD@9wgJ z$m;ciROcZ?zqHZMZ1-K>YBq8?dexR88$2gjm3mHWHh3=9dS(N^bZy0hP_;-uu@x$e z@o*{WmyTYWVJtJgA-zZ!^R4h}NfR&3ulWza)M~squzLr&pP&N$5i6)W+EIaN9170> z!$JwDfF4|{ppfwVduu3lg{z6bJrv!VB*7_2kAV>IJCsn!P#9RgT9UmMZgwtU5FK0( zvZRd2aAm#k#*DuS8##>5`J3^z6~7bb=&#Hfxf!P~9#6m5!_Yu*ID%&Ah(4%;YW%s` zAU9$AZ^?%k@$bt{oDMu7V(^t{0Ugaa`-$xwr~LSx2g);Laktwt*}mwf!E`3>FAt@C|%a`ar>ypEj>$nBiNTs_=w zMoc%^nr;;2S8>o%{-x2N4><=cWh&r2W4)8NdFF605}IxpF?(e-eG3Dlq1H7z^cDU? z1Q__!B{o}vhsivcbY0-9o*`Q*eKB966E@K-aAuS*pD!$`@OadJ#VR}z#YUq!wfrpH zUPf?%(DZespyr*MQ8o_Nw;|mXq7hhmH1_(U3Wln)bMwx6*{Uc;texoM!Z^1{`2jzzPk7ZNQ#|$Js;n?6M;lsHYW2Cava-D0|4B zGp-b?ca77S{Vpps^oRCJA)|J!{Pb?$cc&(vNfYz=+3Nu!8qQtv4TG{-wK_{*us;L; zidv=h?A2GPQj`8wA%S_WnhORD?2L+H(PHfwu$JH6nLinW=3^6`muM$PFMuK2e3HfmO%J6JsOWV_^Sm#|y1wM%A;)KDr2 z{ND;EZf=D`uJ|O6c8711W|fSZQ(Aw;R0_6BjqQ@XU9z-GMoUTH|FrFv1XI3FGy9r? zrFLCuyVSt8EU)fJu?<+O^I1!GmY)(K#n_qCaNot2)JFI%H(q*f>-!IEy~X64jQ)Rr{{!1=uwMWG literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/fa.com b/Images/Source/hd0/s0/u0/fa.com new file mode 100644 index 0000000000000000000000000000000000000000..64c6410d3140bb8f6e9a15ea78e5533f35e1d17f GIT binary patch literal 3712 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 S)Bl0?#MOlp>U!_|58&Th;}Smr literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/hashini.com b/Images/Source/hd0/s0/u0/hashini.com new file mode 100644 index 0000000000000000000000000000000000000000..f68c0d49161989c179509866a858744102a89aa8 GIT binary patch literal 2304 zcmZWqU2NOd6~2sPl9!1*DNZvg0kR`2>(~U2YIR66AywiO#j7y+;P_aH3n_$QV8fci2$mraF-no>m zxQGB!f(fywoImZ1x zzCqm!G$0Kdx~;2O{S6H!%oEyE!+8;hq#(?n+8M<%Zi zUmGI$1S!?lV%K%dshz~dJ+Fi34|?P0nYAE-NaR1nTQu<%Vh!R_KpHY^40yL3BPyPs z8t5MwfSGyKDoitw$lK)Hp{4jc{^EtQpjgubGs=KE#XPHbT0mwXtk6u@QEnANQu z?5lIi(qGpw_!f2FV@*hOin3dhkbrw%47P5%hXod6Kss~g3=G}U3$|{|`E4mcQO{=K zRSkw-983?TB7i0V3Htl{VazgTG%bTITr8@K9q>-YL&D~$dsV#s!QF4WZbT=V>4!8# zNf;k%YjyVvx;7!M-4J@4=`FgNSUth6X8Ie7q{6go6-@Pbng4|%pMxlW=y(s5l>?)_ zzlsJQ@JF$A{H0{WeO6?xNk)_d$v+jN{10$_x$0gJ1Jc>EXJ59Ea+t@Xl4P)_mNsLX z)*|kc5FyRV$t=W1-teh2%S2G{MS#RkFB-Ob zD-n<=aq~Q4!&D|QJ@vYoWzMEyDmFbe2Df1nukmT5(k)a^Rx9i~LHnUiuwh0sb;f3F zxMpUweW0;1v|{zy4Of3;nq7oq3?uBs)QKdM*gdqX=XMeLGJSX;qs^)dS-UNSeU35- z7WbaBM<>)whP4RG1j8xlV@7>=j8deuUy-72&%<|63*Ui-$??ZgnP^d;j}*BFSy;&D zEv-;sJ{JrF*^B(m;R3d8KW;3Bpg2kLStPbSuNU@=ur(v5jV+$MJo5Y%$l*3>W1)aB zwh1##gmVj)1}e;E)j77d=MqKZ|Ju3xmR3%+b<=>nW#;m>KMIim_Cm)ShD26Sr4m=Z z^Qnj|*d4aSsni+~Wbf5&R1vp!gCs*p*Nf*5gv+a;)!=gqzxu@LQTbkDZMJ942+-6u zcU)Xt`04%d9skenqPeQfaloZuLv zpI-9DpYFn?XbEM`AM!wX!i#|z{pfD1OAeRtz57USG`O{NB$6W~-0JqX+&>B*w;=*i zGy*A+Bly>~wc{)~yioGSacP78X9qt!a<4ZA{8GF@W$I0WfP=q*{t#O9sB#bv20veN z*ceR;pZW8#J^o%Ya6*`K27akBFq-!p)JIC~5!wehH<-M42TMm-1S4>NPra_YF~K{* zZt6e1H$UIF>F`iG673CcJ4?lA@S*SU?ghGDik9Kqb*I9~L_SsFP7wKIg*!=Pxxz(= ze5AsiBJ$x1_ah?n6|SGiWW8~kBXoJ)A^tBCiLmd_lc~Y$?S;qhk&nbu`QzF>_g|tS zMmdqxnt!cVch3{jXyI2{`5rHpHr~Rb@R(sVcz?6*)Iz7o%GY8o)JIO|rQ07Ue7F>y zHUCz18nuwpUb_>d)wsgg?fV0?TPU3KwvvXCcxbM=H4{0UY<$gk!%T8Lt2c=t@@^e piSD(fQFA|IDKyOA{T2&rt~;&T>2(^~A>r4mn~o(tUeC_T{{cqM9!>xN literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/hdiag.com b/Images/Source/hd0/s0/u0/hdiag.com new file mode 100644 index 0000000000000000000000000000000000000000..69bbd0a829f4a367b77ffde036dd207fc3ec9385 GIT binary patch literal 9344 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 KOIGmzxc@JfG7ZZB literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/help.com b/Images/Source/hd0/s0/u0/help.com new file mode 100644 index 0000000000000000000000000000000000000000..1a497527a7a677d2154c863c63e98a16b22bd604 GIT binary patch literal 3072 zcmcgudu&tJ8NYsAAK!azYz*bvTicUd2saKfd5lNh_|hyS;gJWAt`EYaQDZ??6IUT@ z2?PUe08Nv|rfq*!sZ`bXtX0=d)Z7T0y>o9t*aof+%UG&eHqWO>6<-G&C8>^s+G zt;GMcqI=KxopXNQ?|a^)1EvG*-2=~LTPiFJp#INhjPDaH=Z<0f7#ku&!4 z=}ibWcrkwGEZsJ@WK!JKx(Mf4Z{jU%pWVJHk{OY_CceAMOd=v^66Cx9Lfsk@`I?|g zB*v7r19gu-tm92C^HP(_4^Ej#)C~ zFi)O9Yt*Y)rO-On$&qKfYV@s(Y{p z$HwrENc3gHa}Ex`;i3Yx!3f1_m4@avS*Vje{P1`iFBI6W0@7784XG=spt`9Omzbvl zwkfi?si|hFP_y-`^i?zSe6H1;kezH*-or8tSxpbwS;&ZtLP2!X(iTKo zXIm2jPamteFtKs8A3p-byCNgQ11=}~X z8sz|-R7BXvJI6*MlTJb4TpVO4-o}E3P0Sf^qaOU}H%mqYRd)!iX2lL>e2NbOeB3Jk zrG5kB)tk&h!rV)G{dz?1^Yx8ro&sad#F)pe49%~)08yY4{UEA3Ndx?kl1Al+&X0OIeg22#4gN}k}=GWoL=mJHOXVuV40Q?;2YrbU4~t0nvbhXp*9o_19ka!tp-8v zV4gs&P4Ru#p8KWk%fij;H4oQ-hpWIt4>*XxK`Xh&XBGJ) zaO}9|i-%V#SD+R>uF#;mhSqKMLWi&Py8mOK1+%p7mi)<}hC%iDlnw#c zB!Ed@wkh!@)*`dexzvZ7A4J7yvt}5IBN5ye`A#H?`$msL4RlYw7>SHTMuIH1ic*9I zFB!8OI=rqGeWSqI9g%sSx6t4p=J{HP`(nc*EW!q=F@(S9+;q$Y1Xn6v_oB{bhw6h1 zHG3S$#4AC$+(&Y&EatEZZNzr26e#cY+@(Gz(%y$ zpPUUfpzEr~bB^QBvCm9tvmXX~La$Nmj~tJUPvM@E(I|6Gv$K4WzX?jbz#3a;pT>uN z#e8|_vLy5D{Ua%pejQcGUR2SU{9{RmIez2|>8HkSG4MSpbWzGb8&9e>(&6}YIakn& zf!8GYUy#o7(Dx;OQWeP+6uKmle%OYj>Y!RAZy>p}uG#NRX6ZUrqzAFt?59H#e`4Lj@;01WR-y;7b|H#H4u4=h|uJ;se!PfasV82Up znI>~k%c`U>K5>QdxqB*^t!9dYf!|Bh*LbTc<~>cEF9)YgP~ayVDJNbmq$&_}2TWO) zcVWSammpr%dUipzLUw%h=cNp+x5uH3w-r53&KGZcRf2&q!yXqTkB#$rE=nc~SAL6k z5kYV-6+*8{gO2jgc&j0roUoOuK=62r$12oals0pUdx>|QP{tMa=OFOb+LCt~JMs+< zILH@DOk0X85axq;QIV^8&u=6i#mP&;))lNwtKjBKLd(4-nXffd5e|@l3aSrWTwTm7 z3XlB1#co#7xk8Uk8PF2RLQc;WOe;Bu{2@zL%Pkt(>Y$ys=+IX47JbV$9R|aUSnf(o z<*tlGs8C6&g3D7RABcqx?0{If$u$9&%e&L;AD{B>jARTEg(>J-)g11HzF(`F28)4= zlq`RZW z=~7D1ly~cleM+z9i<#%)lmCJEoXZ8zQ~~UO(&Yo83ge7z4OV)YTJw}A-1|R38hX%|4SMgs^x@qwM literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/iniramd.com b/Images/Source/hd0/s0/u0/iniramd.com new file mode 100644 index 0000000000000000000000000000000000000000..1a61578f92f990d8cbd94f9179463e5cb181b928 GIT binary patch literal 3200 zcmcguUu;v?89z5R&b57yv1Q1v!f0>&oO{mq|NDODJ11Aq9NpE{b(ld2F&$kUhk~6Uf;yXECh+rmz3vT&{@q${X6RiD z{ic<+u&0Z3E7tpu?DTdy143~D}_RdeLiG{BZx9ay-(;>xP~2`6TO&je#c zY67#^Qr+0tNV<|4-RS;!GEJJBn@O}knaadRh6qr>Snf`>{}`HixG2Mdu2@n|ldf z`e71|A^Hop^qQWdb{nECoZ}d>IUuBc(n(NNjV)TvgNc+JjZKgP$<%N(laXVP_ed%^ zAj>fl9hn%9POO=zSWu6Ea_L!6pjBwCK=7%7;R`Mdc5(>OS6K+A;OFqPw5urGWD9x5 zj?8`=4$rrEnSJeb=p{}R{TuOD)tC2H-MVnX{=qrlU)Y63hM>~5BDg*SiQo;Iq84_V zY}JDANks=v6Xb_XeTUOLAl>pnCYge*&HC2Yi~^5$OI7@w#%{5ITNUtvR!9VWN0+K1 zfPqIik0HMm+|)wC7JxS)Qp6Vm1a@bl!=q^ujK$O1N@TJ#R(PbG#yEWK?Q~x`8X_7f5lUO{Z zM>j!|gHVdf$><1oSAZK&pKd0kN8{6uCwM*#rRtYSdQ={W55}Q<$q`-8Kyr9EIuav^ z_=voNK({Rz22)4eVUpb9qnlb|{?F$#wgbRCE%WSz&;6CVa&wG3_(9+5Z?znxH|Fo__4M@~?CTBn^+x)zrR@wjn~>8_ zVO|q%S_dliHu&ZanDO*a%$qEW+MKI?BkMp!;L(}(7{zpkFjeZYAH&NWyr^v z>GBg#Bt#%t8tzv+I&6-6^!ikg{!#Bdo;B}c@$_f{0G2rgXJ=SWr=vqqnXq1yN=6QX z@~$Ll)lj9i60KMV*Mg1!vC?6*(tbRGbbLJWCiJ-2I&evu;f4yD*0@pWTrbu-P_9Kg z<*Qf9(~dthG9}=)F}x%286mJm2-FDyK?rOW0{h{{O5S#xnaL@MJ%2+=dYP?R!GeFL z_$|!z@2*)v@#=kw6q7Zpk~vX5NDMv;RwFQ3u^NJj!}j+TXh~t}W1(4v`5!_v?CWtd z7to$U>6+GV=3vKh61nyWqDH7gd!X$pdyrTZKE*IrSe)*6GS1325`-%~9i464e;@3D zEB%vx!V?Uiw0=@&#}o3MPpsRXSiibNr_4)BWqRJcyrg8s>iL$rvdTzKwMyCq7w=}( zDAmwEaLe8$g;Fzrm*&mPZ+_ z8=5r5==Urp3k)~B{9p4mo^NdOKD^j|R`n9&d=R{UhqEzf78Hnt6E%ObqUO(sXQ$`N zvxTtxyLfWSWR$FVM<$Z0kCGW(Ti65gGK)d95$C;Ga2B@EIKSj=QZ^cyg(G+?Q-N7-tq2 zmKE5vxnNPQThU43<#ug5KMN14nT2Vk9Khgqzybr*DQz%G+b~O>Vmd26}^AUYt>ySH88w`|#4x`Dwylo4gkwlJV*dZ#yWPRLZw5 z@Jx9&958BnmKDfR^v~+Ko3~Ct#pyDqfj{}mWvz8Bftzj?J64eE%i!Gi@mhxezw>_q DTIKjj literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/initdir.com b/Images/Source/hd0/s0/u0/initdir.com new file mode 100644 index 0000000000000000000000000000000000000000..fd46387a3e305d6c16d222e30bed786493fd7a1b GIT binary patch literal 2048 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/iopinit.com b/Images/Source/hd0/s0/u0/iopinit.com new file mode 100644 index 0000000000000000000000000000000000000000..f6f4291af49a874f2f0d9093dded6fc8b3a5c21a GIT binary patch literal 1152 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 MbpZA3`QNR70@=U=wg3PC literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/ldnzt.com b/Images/Source/hd0/s0/u0/ldnzt.com new file mode 100644 index 0000000000000000000000000000000000000000..521fc3aa23d4d1d625098aca84b0901cfff24208 GIT binary patch literal 3200 zcmds3e@q+q6@Oo!eTUrwcCxfbvL^3v5*!;YkZzj85--IiKuHY3gsP6#;Fts4g3q&$ z5LU2~YEu7PrfC06-5>p9nzTQbbZLgvZj}fk!%1%%(?CPo4>4vW=G`PFrJC9Z_P(~2 zM4Q(Crd9je{@(fB`}z64_wLQtvc*lb$pBS?=!sg{nA8%JLiuCB%pZ%@u2}TNo+$Pw z$2E)^@$odC(c?o}rV$6U47R8()h@)ao}S7iM@9|wg^ys%@n8_~;uLnOr`0xnlK75d zSbbRy>qaIyHdgI&fnS7>mB^U?!R1To`3Ar z6_tHZm-_$(Z|?oIIb5=$jnX%7`DCRE>h9-!ZY2zLrvs5dU?A}7U{c=QYJ-)U5v$wD zURGh&YAdQxuS!<5SyHY*&g-4MX9?TF9ZSf0w~z7*?Z<^usMtG^N$XjymB&c44!^xyE ziqZD|bG@->Kgqc8TsA(UVcBXVKCYceWJ2TstrJa6Wj~Bj4J(Edddi3=Q`%6;9OuWQ zXDT8k{$$ob&Yw(WjriD@HdK*(g1_$x{yuG7zoh*K2^SDD*gu-gVlvx`pa_!ro@jm~ z%J%Iu7%Rg@j`owiu79yd5=bKEmgsYtJECuo`JpIRlSmV`kEe|(Y=Zft_R{}|ZeWJ{ z5x+>#Hi5jc-G@z&w3l4ucvjSXKgq`O$W4Av!A2bTEl+kOB07gxR6*^DxqgGTEak{?|O#kcb1f3WMcfH zmMP&72mpm{y%Cf0o}HbVL!?ap+hY~sc&eciM;Xt=1ZhkenBb?c!2It7zrdz%<34}0 zWStjb=KA#af~;tr2iFa&uU=sDuQ`arJAM1kYYyvtqf}1vd#w&dhPsINv;xd|_Qj&t zJIr&tFSu)==$Dw)?O@KiA`yN)>{x#64@Xr?=@TQPm`ziH@=T4y!aZjx))Ls(MYTUbO@Qhjo7ENyx+`U9nPFZ%!$jl^R1Tx@OFRe4 z?}qZZCG_$1STde6c$+k4~Kby5bNLr^yvnB>EiCr6bCQ4?QiFUp@9&IAsh2SLqQC>IdY&2){b&ym3$LpVKQ2Sm0 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/ldp2d.com b/Images/Source/hd0/s0/u0/ldp2d.com new file mode 100644 index 0000000000000000000000000000000000000000..502032c2d81b284562b0c6e20e0f9ccb933809fc GIT binary patch literal 3200 zcmds4eM}qY8Gqh8`;6W4VO-c5Qu-d(76-#&5>*45cnQu25s5*V&=s}>2Or=Te2#q- zXuu-Vs_lC`WL`^i&0X0EemDW-Rr2#EIn~08$>(mq2Pg~pD+9ST;Lz3e+n$Gvu>L3y_lK<=ZBo=Wm#NO3t^i8(!P_LaMZPDiPO`Y6r`ykS7h( z|Hyw*i%dHmipQnKdZRAy|&&E|c z9o5Ha=y?Cx-oa2m>Nx1xWOz)aMX$l|qMa# zWAe1+^qxvVKAO}ilaI!ddU#?&jqGVYCg1m%e4je0y{7&b4F@1Hw0}IBq|syt1&OyA z?+V6ULA2yg)4?Ka7-&EGJM}Sts6kQ1cqn)r#;)M0GJYY5rKr+Ok59(+S=tP%EtbM_ zP}6CG#Sy-M&^Cj(lkcO=kE|C$WO(kGyN>2=AGIu2)>fiT<5#>me!nQ}_0rC8glcg; zs>N9BilT%sXbBy)L42{yXIP=5l>D3u9cAQao;XU_5EoQC6&ukK33WuLjPF{4@jHn| zXmD!sf|@Ac;PnEgZeAL+rJcLGWzV58@h=~l2!vw|dwCS`9GOCkF`bUE>PxWt2fmRf zb606?qt9jz2{3gnDr*noyGzGTu4kkHS2D(NY)ov5vFaD4k+D1v^MuSoN^V?O_)jY-U!O zzh1O~DI@GfG$wGh0CC+6@PrYew^+ICBV8{##2T^*TI9MKX`+2MGJ=TjoX@|Uxq>C7#xwI}lEo3(ut%OOqbLqB57AVrA2vQ6a zoYoSrGAcesECvUF^l3}BP+ku&%W@XO+iMog422mG*otAD0+ZT?TkK>4V3E1KT*eoleQ;mv5n>_+Hj&12<-n!}&})TUUy+b&gE7j6A#iZFm{B8JLNaO-tg-q4d=ysjf&0rY*A_c-Sph|52bq#9Mh7;MGH%eBq`7%#3<85 zTVJ4O!no46w;zQ6&(Yb^OFK_t(+^!=-mdr%->#&tG1m(%x) zxk~`qGLT+W(w|5yzRCS>!^V|k^&qT%tq?^$^ai?EL~$+;SK+7dTet_}(|n-h?+< z@qXhIApTAPky9+jA+Fo*jBweFE+fvZXAV=JL5L{fyzw>>td%Y#&f7$+ViSbWN*5dK zSBU}OC+UX|-`h=RYfidqmOP)EF>1Md(8t}3kO|x69zT5fWQ_~w#%f#}c+=(%=b!Yo zXU|uI^jXe5kjay~RU9Qx%^$wztIs|Ux#%#tX2TPo-9xj|Bre|>ql)9H=@K8fT>kZp zU|F1&D?W6&4yQA@EE=gJuV436r?%hF{P2~rOL?wfP~MjJi90LnnTv8<&Y5qSZ{-%# z8@R^GIo!HSGJ@5ZAi4AgI&)4EbU}%W?Zs9P&x@wpPpW|#KeuOY-!^+`^H{g#L*fJX zcE;Gx4WFEk;;qLSVY|5R1NS^Wt!Jju;YH)SX#CF6U*0*DUcR*^fMt_3(D!Fn(rd!5 zWz*sN;HINz=1Vv(ucXbu-yuha!QPYFly3YJX3NWa%F8eJ*yY9aGy9&Y!%yMzIKy+Z z%N|~|z-o$Hz08$?vy9}h(kwOB^TGNzxI$xFzEE}cNI|i}0+aw<0DPnty70w?&Lb80 ocLCrsSS%=ld<9y#f(3=}5Dyg;7AQ^w0TjjYEI>oy$Hy=K0&aR8BLDyZ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/ldr.com b/Images/Source/hd0/s0/u0/ldr.com new file mode 100644 index 0000000000000000000000000000000000000000..97b25ac08b7a59bec800fecb3a2569c7e25ab1c2 GIT binary patch literal 2816 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/nzcpr.zrl b/Images/Source/hd0/s0/u0/nzcpr.zrl new file mode 100644 index 0000000000000000000000000000000000000000..b8cc645f810cf131287d00ec673478850c5ace7d GIT binary patch literal 2944 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 VhF2)64!>j3kq&?Z>{NN@ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/park.com b/Images/Source/hd0/s0/u0/park.com new file mode 100644 index 0000000000000000000000000000000000000000..1fcd8bd22302b7adfbed247777b021c29ceebdc3 GIT binary patch literal 1792 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/showhd.com b/Images/Source/hd0/s0/u0/showhd.com new file mode 100644 index 0000000000000000000000000000000000000000..d66fb1f1421d98ea21a7a53e022b5e96b50fa3f6 GIT binary patch literal 1408 zcmb7E&2Jk;6d&Wv#&+X;a7q+FPcbx3Q-35#Rk4EAxK3jPiJdwM5>+XSy-rsC*swc< zxJ}^#G$+KNS0w%eA|d2+WI1SCO=u)i(Mv@YB?6)xd@!O7ta-C>qPF6~NIN^T^ZUK` ze($~6>M6&2uTMe(TFyI!Sp8xeKhLe1usNDO za_O->2~>dErrhyV0^Ta+G`BmJx;TAl(%zs$zR@-?E3NzhuiCiw;o)ICT9OOuakywD zf@TA>`nIFTL;BwL&Fv4&wfq32l?>B#BQ&eanLNOoKoH>D=ReWAV|QOZeg>wbeO?o? z{DxdqhP)ntSRoJT1vSUuQikb*`Kgb8LlJi0IXRk?q7J|FR`);RQ<&yMv4WP#AMtPj zQ?h~XaGdZ&t^p>NnNngW$IqR{Rb<(gjKIh<(V|;lBq>c+qQrk{Xp?jwj;5r68HxYg zCfviU#^eI{$@amODe26N6iG>rX0zfvxcrcWAAg{tV8nr)24je9?c+|wGbJxWT-6P% zGdg@aKf)uj1W+IV%dM-5AxPr|6bm1gnPQwsob&M)Mb;B%fn0Ab1@_{Cg6T-B*A)SM z+QD%MN2N*Ta)!d5M?6y#QYEAjb&IA6(7I_WNGFo-CgK=9rf#tymqB!rT*B^1#ULvh zIH&1gEGii_rz%;<+C47573I8Inuk~@g<<|@|J!u7pn&KJkPWm8+M=S%Oc0H-!IWaq z>p_v}a*4^y5nQ`l0oh^!#sUE>xsv&qDX^$(^SWFFRoojn!|<{d%H9)3C}eX4<5&w@ zPz@+5h9S=@co`0EtV-q?2MP9L$KM}MzCwQAuDKd6iF7u5zWuV&fyH)&ANOrK_)D~> zdyse0p5L5e&Jr=>b?Txw`D?W9THi7|n>GQvqi>VA$`xo^^S6Ju5uU{4y3FcFbcdg# zJ7%rXiH%mZMFNU<$_h4UdwSY~6aSIc zAFZ3g=IyiLzdxV9SpnDD%3o3Nx3wZ%u^HP9A@h*-I(Ko2S`TflIHT4>)Y>7{x6sa? z&4bHh;ln;?Upp~^F*NuE@#m;Fc-(%Qd!JeIFV>BFd)F{xeon$@cePtzV9vE2vkS*w P*T&a_n->O6^8d%bGmG7w literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/sizeram.com b/Images/Source/hd0/s0/u0/sizeram.com new file mode 100644 index 0000000000000000000000000000000000000000..d40948b41541cd67ae2078b4daef9c82e970e70c GIT binary patch literal 1664 zcmbtUVQ5=b6uxiCeJ{5JR*!7J<&fb5JH5ZXGTs8_M8M#G_KK(Ym}W9d&4p4ji)Bn1aQrec0o%` zz$sHpYGwuihC4!?07oOxGcy5^4v(9#q?28zOn0#BPUfXSlge^-Q|Nr1-nuEsGGcn% z?tVShz5_dyF-&y|W(*GeLafJjXTVcHvSs#>7!9))snm@UyCSY6oU->k6(}h#upX&d zr&|F+4iFZjePQ-0#WnmP?4PZPZ-H>{#-Ya9Lyh(DgQuzKa87Y%P?h;c7>N8(`;&bdV z=TADW8Iv$%#?z+l`NCef=i-J5h?%Hi^2p{M=-trX4nt${6dcp1rjx3vhOja)dx2L- zwh~^F`DDKtfUt@aML3RD=_xIx8j#e-;-;pjAf8I_l2bt+x80z(lj@Y7&LA9rgffsy zX7-RYoz_w&8foM3u)^A~-jJP?8K13@%5Uy^loF_u=<6z_;DVsY*owSppHPO-U8m|y(zJ0~Mz zw2eJW&&b1D*$+4ylE-~=23Z|d;rv-uO@gVziCJ}Q##AAIIKEGU0tt;|D=W~v1vVV{LUArAOOms`l)V!Y3H zTAx@v6`&j!8t0;YU zAXan)8XLvd?<(Gr}*`=WTbcy+1q?$e_8e$~GfXd?dX=UCmJS^Q7k zV58!OwOT$vvT_a_rDdy9r!>`LR27eMx8hdnDw0AgF8I;o*-nVQZ!_Udsk<))d9u%W)oJ!WJSS^%W6KqLrb>qao7E9~PR;c>Uk;va~OkB)?YhnI=6cp!;+mSxJ zF>l|ERgS literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/slowdown.com b/Images/Source/hd0/s0/u0/slowdown.com new file mode 100644 index 0000000000000000000000000000000000000000..b44928ab21ee2c3258f36c72b3cc0e241c0e6256 GIT binary patch literal 640 zcmbV|!Ak-`6vk)Q$XGJ6F52mB29?xkbP36V(&$jSC}jj4wj6E2-HF+?=;9%Q>K6So z1wjN|lJM9c;GsiBREMxrG_z(zm!NleJZ8S{_xPTAB-NM{TSFfa^->yI9}9ZI5(-s9 z1^UQ`)2Gbi#O$44K|%4<-;n(;a=W+h0>(qV-S2h32L)?~l6o#jyErG@ka<_n)oI6H6LovMZ1wCf(Lc zkfCMAu*e8369!{A3Zmxm9G;;&g!vTYQxpKL%(kdaVoe)?7Aavcvf)s+3p3?HffG2| zH7wbBk;@^wkj^F2xs;3LZE|$H!!Q|-dwC2YUf_{z2Tb=1Qq*bXzyPzlHRu2nS0OErPigWE zs~7_W80V=)Fm{i^?IP@;4TfbqdZ|S67>h+;r$K+#KpSw)F>2dC>6uqi$DfA(2|fYD CW0h6_ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/speedup.com b/Images/Source/hd0/s0/u0/speedup.com new file mode 100644 index 0000000000000000000000000000000000000000..55867834adb84a9e402c7664ee3b34fecb21cf8c GIT binary patch literal 2432 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/start.com b/Images/Source/hd0/s0/u0/start.com new file mode 100644 index 0000000000000000000000000000000000000000..81c0858fd8fa315fb2e2db03663fa18211520e08 GIT binary patch literal 1024 zcmc(c-%FEG7{|}v^KNbP2m2BBZlb(;793{DO0eP37{1#W=(e^wbAlCwS3yt_lkBzb zq^tgd?z-w?SMm~)6hrB}aKr_Zu&WoFH}8#$HdE-WvngfZeTTz&etr0!=RBv>Vag9h z5;+qvqQGx6(S2Cz#%SK+_X-=R|g9;Q}tyS<85CashYcw{txzr46Y7(wc-WEyzNHPX*w0P2-$ zr-zzBz4uqA$ZWC}(^#=CBQ^nwdE6K{i4IsKHiZ4^dU9{cV(S~_*D#M9N9KhO8Udos z-riwtTiRPP?tC_$Z0+45b^jdyRKd_U2x{a9U%Kl}j?7+Hb}KnFhjjY7TQBdDYQ_Jk zhkgD|$?H51JUN8e?A4N&T6@YGdm20bGP>8<)nsU{hi%5`XLDWM&I`cP1&+C6w5$6} IN$C&z8@G{Rr~m)} literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/start01.com b/Images/Source/hd0/s0/u0/start01.com new file mode 100644 index 0000000000000000000000000000000000000000..6f0d3af4e51fd3b4888770c30b5e37efa6dd2bc0 GIT binary patch literal 1024 zcmchU%WD%s9LFa+o0y~z@{qboY1ujvhSY{=p_VSK#JmW!Nt&doZJ{biPlBK#E!M5x ziYNa9Z=O8lR2C@~CA2sTQyL*f>S?LzWiO4G)D~Qwq&_P2>@dvy9-sNnZ+=s3GfnqL zlX(*`V!&@R(S2C#=BE3_&}br*&8DN#$V6HU4Gl`u*>Eg=S?mqJ@1Cu-S#&!WYv8ZXL-q#v6VW zLL;Jn;*1Hk!Wl938D}Kb7uwB$WbS>4(B&Q%x+i<7JGZ}`5ly^2;M&5#dxWHfiTw75bTL2Aul z26#$Ua-R7B)XJ514>f~Y_m6gw?Wt;9W67F~SO+NPalQAKcfdTcF6>v!a~#YwrfB`DgjZ3WmM_sFH7d@wPWLG;>wiE$7iJ z(&@`iy|hazW&eXN_W3(Suk$SM9q+=w4?>gQ58@HW{a%&UJJ; T&jC*dIOdMgj?PmhBY)7J=%8f7 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/sys.fcp b/Images/Source/hd0/s0/u0/sys.fcp new file mode 100644 index 0000000000000000000000000000000000000000..26f1cf6d6ebea8c11b19770d8c92e91e8485d886 GIT binary patch literal 512 zcmXAlO=uHA9K|O|yVWFJU4t^Nh_j4`(Siwn1c^ps0tdM(Igy(IWl0Qr}!noi=1NHE1pN7G@rO1b5vm z_1%BqJQBgp6*uc!hdA|COdBVbP+XzdfhoQ-qXwY}*m(eU{xjbrtK=|lqOb;r=s;IG cP#bn|8Vr>hdHgV0qR$r{Hpg8*fTfQA0uUwJ3;+NC literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/sys.ndr b/Images/Source/hd0/s0/u0/sys.ndr new file mode 100644 index 0000000000000000000000000000000000000000..b4c382aaadc7c8b36a9ad088bb2007a2cd8d0a5c GIT binary patch literal 256 zcmZvWOAf*?3`FbUS9Jkb@EL#$B&I-AQ%6bJ^!^7y-4r7+%cp10P!mJ#*@e1iuh{{n zQ!$%70p3&6>JT=w+7zg+)nBNE=ukZT#CJi{^J z=xhZxl3I;3SSK^AAzUR^8*xDtlfn(^r0|cD^YLtIq?g-3jA${IP~^v8e=LW^=qwq{ zXnYQ1L_b1A59>lhIr%(;+kLpZ&GWM?e4@h%;3o2Uu43AV$e<=1MPVJ^^QbLn5F634 zWM&!NBN_EB%ozRT4fU=?t2Kn9cl}y0dQVV;x_qcgS@-4 zvNCndXN{oXrQZ3OvR+#v6?uwe*6ea$6fMhgqgy3DO+b5^5rYtswAnbRQ)7}jUY%yl z=-;o?u@cg(;e}=dP7rL8TvnCI-Ln7Y?6H3Ps45_2A6KI=gtqq$Zy&fd3sd`bY8PQh zJ4V&v@z7Q0Bgb{sKBYRw)if*(j}L^d_QBlwYv^0)ej3a*_P+~IM54%3+gthNw1JBdYM$NnTj+R+MLg%i@Ot;klEI%U z#hG#u@((lqONwRzwCO8Lpiq#f3q_?3oN*p(iJ)GFYiQ88T0rh5T+zH4IO&j#5H`PI zayON65;Rp&hPwlU{b&0oK$TQnA&ssTR&4Vkm%)$U_Z`!V#1dt)O1B z%@?lvfMyMZ1y=`UrA5fV4}LAdZCT@E+OL7|1~s6|renMjz=|0G6zge}oENLv3fp&h z8^CB>4c+v5Lb3UxnAsnOhyOM<@U01@r5`mu$+ZMf;~zPJaVOIZ2kIri=M-|Zz**N0 zBad^dF;aRqQzI@GWZS@CUk<5?KPriFIKeTOg@P+CCFwaY08|uzs>F=ajX3`VP$>>g4mhvpiB|C5fwM^n z!iAc0n5J+m#GbeRmjjFd zw3S*dL@wlq$xt5h##)kLm<6IzX=uzhJbu$BTAnJb1@tqT0pR6$n5zf9VW&|akr-cq zb|p)iuEao7{8w3comh*^-ALZoT=f9KmV`wZECo5C*aKQ}UWU%KK+k$@9u(BB`54;q|1^fD*=pj5XsZ1oM5!YB3YP>_zjsmgB-1yj#%_FC?* z2L0igDgKMKTSsNW6rfV17okw9)3jw3`;~=uDl-)d?NHErCuJzdWU&G2Ziy8wIb%Xr zXnjI#{pYb~-%nJ_G*Ik4clg}Ha+2AIOyN`{D|8j^T+1vfGTqm? gYmU|~Q;tk5KS{i5LWVysi^s6`MPukSWQZX2Kl>ebQ2+n{ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/tcselect.com b/Images/Source/hd0/s0/u0/tcselect.com new file mode 100644 index 0000000000000000000000000000000000000000..723f89ae2d72ccb8320f8ed597d0e093b1813ae9 GIT binary patch literal 2816 zcma)8eQZ5c7Ie;wJJjU_@mm|s_XvPs(DoEEI`xd=Q-s)^{O+Ps|snVtSZrlp{h|`wLqVD z?z4lVR+VN&=iYlhe&^itabJp(FCiYG4nVgszAo~?H9Zx06 z@X)X;w+OEI#&^i?|NcJfS<+w&BlbV_#vubLN92%LK7~eZIGqG0|_hph=bRi^* z!Wt?`&1Rdb-O^{ezg{&svUhyOVu*)49fh3=ftEuE1Sd;H6>Emkr6d(^F!=oVIJD79! zS>$a+qRXP^kC-kB;U;Zj{b46mY&T0e^1P1eZV`@TI;D}_srh6KN;rNjrE2ly31raw zw&g`ZUww!!OK#L%Vo0|I{rgVO1+-G*E>K0PdNv@A&sxNcI=wFaJI+FpIO~8ai?*95 zm1vAis%lC_M*kfQDlupO$GDIQeuNp^zlE?PSjXU?{}UYe1OuEyMp-Wa{@U3k>(4vG zy-VNleTvUqf7SVDBrMW5MEX3I_1`%`o9^U5w8nf)zicy^bLc@uZ8sz|0ip!^-p6n6 zz;rA2UAH#@JU}M*O%O=@kqK6s$%VKEDM0j>B7G5C&TH1DYnJcEn=Wgc31rZ0xZWMV zanThCdoRNhs^hVZ=%^1Nt`F`t+9iZO!V#gBZhBFmuS;;fz{eP})k;>)&I@UW1vQ>o zt8qLX0>2z)xx=@)(Pb_tLz@@6vq>AnOKHIHL@p~*2oW(4vlW>2u$ z&wZu+?zs8|fTyiCz*rlA-8vBHl#+QP2s}{Po-TL<+RxyFHxvc#V1L#Rt!xoJWqS_< z*eil^!CN?Zn~g(_wf7@}{u?gb1m+5xvpzOwmpEv)SGnR}nBX>s_Ur!;S2>xoL+}SlS*Zl?;#^O~?WG1EyoZCIV>j8{WQY4WXyG!g@S(dnZ;tS84{%5I zBYZY*9_Q(wdHPe{?*~Dpv;byD-ENS>6KBDez_wfr@VT*KjL$Vf_iV8Xh3?xz*nEzs zLKcqH%T;5gQd$gthMA|&@L$b8Fl@iSTv@oH|D4ZU1yU$ia|R=0M%LP*U*Q38bZp9> z-3F((ctDK+3Uwhs3*6+53J{Ngyhr@|{n=VMZ}bCm!~#bRc2gG`ohtX`%_cwP^2x|M zUHTye??Q!x5V#9LEvm-3D}P_S%0jF3a#G*w`5xh=^`EEpA*G*;N)U2${Mu43?> zSZs()5V|X}=7grZ2OCylfT*_{N1_#TJo7O7yYfZ_o^H(+w1Ce#WBO-iNK&bCRmY*x-)x$%OepO+S|!pa(j*`Akd z*AmlrW_z}6V$5Gi#h*#5=dI{_*4clq9<{r%=I|jQ?N|LfQQ7Tdk(aA^qY?O*w3s)q POIwCe-FR2}|NZ|D7*cLB literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/tdd.com b/Images/Source/hd0/s0/u0/tdd.com new file mode 100644 index 0000000000000000000000000000000000000000..ab792279ad092446faff06c7f5be78f96d00ed63 GIT binary patch literal 4352 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 Nb8D=wviraN{sSSbl7#>O literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/valias.com b/Images/Source/hd0/s0/u0/valias.com new file mode 100644 index 0000000000000000000000000000000000000000..a2cb87bdb7a7918a09d2ca61c7f3fcce08f3d2a5 GIT binary patch literal 6144 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/z34.rel b/Images/Source/hd0/s0/u0/z34.rel new file mode 100644 index 0000000000000000000000000000000000000000..0e9d52365dce2737f4fe80afa872417b0c7302ba GIT binary patch literal 2816 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 AhyVZp literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/z3tcap.tcp b/Images/Source/hd0/s0/u0/z3tcap.tcp new file mode 100644 index 0000000000000000000000000000000000000000..0862d65d7d8a88d9f248701d68525a5a6df5ad8c GIT binary patch literal 8576 zcmc&(-ER{|5FZGRXq-}72ntym=H(DHBDuRb5M))&#WAr<10i-@qCB7@cLlfps^d`L zA&RQ1s`}LSsg+vwU+wJPuDxE|I9z<`LXw-?-TBSV&dtuudLDZ9Xa3%vA2i#D=&h}l zFxPDC?bq<$vK`S|;q$Q3LD!c3m1_8Xt68O2)W3l)%~Orji;kkA{zb2!&S(?7R;w1` z!a|7N7bP0jqc=FI(VMx=Vvk;sELZ(T$FJkk63NC}ZY_tIr8^P9>1Ja$Y<1AFqX9j7 zS&Ye*mo;e+*YY{6l$W~iB3jL+{;FSVKHm?Kbi>8C6Bu-WdsD0TccdcjNDn@4-knr&L0;=hUcT0Lx|BURd^-Draz@7F_oTq%=s z#2%C$Z9U4N!}nV;R|7SYa<;!bpRZ=bebt`_mD z?NS~!eow-7^A#?;_HDT(&b&4o5k}lRB1%62OwDd0r^|Px|oLx&v(8PCyQU zubodE{|vxP4?Y1|bsF$7FmL;3G}uQ9hdIz2wcd zdjhaBu$#bcjS{xYtA`)O7uP4Q3H#UWufxGfge026SMiL*_#3SDpVr*rAM^wN!0+%I z{5nQusmA>7O)W5m+U3ta*MUz2mXY3C>qfdapddaNAak{XP>c@Ccz~T_;CP+ z%rWC%ssBl`zqB=P&BHj%UV+*1A#7rIoAI{9X9Y&l$0;1aW_-`_-P9P{$x;C1k_-t) zKxRI{@hRY7hX45n*tfBDeAGlUe^L71ak9=p4IITRMxU84Nfv$UPcr_9@O$~0j6byV zpC3PoxqmS8L8*UoKVMsI<$%Z;KO=7tL%l<%X!)ebKh^$U1NI>aFi#=?qv-QGu&YCv z#TcOBi+oq&A6$cjF8)C>p}&w;$LC4!f2=>o%8oZh$LDG0fb|~&Dd6Bb93-&;qF$iY z57hdl?@KiI;~FyS6$(G!=lxj=*muWM=sS)w>mv$ZoIf{w`UHYqE7&HFd?TO`;6||W zjsQc3oAnrlPoI4E^h+-K0x;`8Z~MO?3pio7S#Nq9pCZ9k%KmcB36Ta*H|twU|73sn zHTN5AQuwzrn8k_S_Sesf6^TCymqqk7dm`q?nB0$F!I|_l&wox0->et@@XJp>6aFk6 zIVu6Y0B7LrF_sc*h*_U}+y0V0|GV{1Sr6s=|08)D;eSpc1MA|;ie!X8erot;y?3zw z6HEWWtS@tXGPYBTKh1hJ*Z&xdMf$%_$Iqg*D6;XV{HT8Z_651FL!)%^g+rz!pTLwKB|+q{oRPrP?NmD1~vQ=|AMdG|D>-(^>-ux zPfP*k{gt#8Rr?S-Pup(ueRs3s`sZ%e=C?q0)_x=YIB$+Jupxcsec8;!)cKomc^WRt z=qu6c9{|VK@8>u^i9AX8y!w?eI^i4lf$IBvsm1@VnD{qDlkvLE`$uX2Yz~-J^{rsb l3UZKO2xQ)Oo;f>qj#i?dzmxzZX8wT2{i@V|JY~k1^)GJ^h=KqB literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/z41.zrl b/Images/Source/hd0/s0/u0/z41.zrl new file mode 100644 index 0000000000000000000000000000000000000000..ed10dfadce1be4513b38abe9c9947ac8e1928b10 GIT binary patch literal 6912 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 I|1W?42b(p@&Hw-a literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/zcnfg.com b/Images/Source/hd0/s0/u0/zcnfg.com new file mode 100644 index 0000000000000000000000000000000000000000..ae423dc59d53e7def68c3b0c74ea91027ec46b18 GIT binary patch literal 8064 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/zcpr33.rel b/Images/Source/hd0/s0/u0/zcpr33.rel new file mode 100644 index 0000000000000000000000000000000000000000..7c0a2567317e7d184145252a650170ae13fe22df GIT binary patch literal 2560 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/zs203.zrl b/Images/Source/hd0/s0/u0/zs203.zrl new file mode 100644 index 0000000000000000000000000000000000000000..11be02dd0bc0d634f1f707e9d6a4d56e8e789ad8 GIT binary patch literal 6912 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 BoWTG9 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/zscfg2.com b/Images/Source/hd0/s0/u0/zscfg2.com new file mode 100644 index 0000000000000000000000000000000000000000..de8955ff4ae5d380538bd323a8d94bcd0c7de73a GIT binary patch literal 4992 zcmahNZEPFm`Oa~jPk&r}jm|-Z*KtuVj_sswp}|{C6E|tAwQ&|_2~9|gQ(qEO$Bt~L zX&{*X0P&B3H1=cKkHHV7O+Y)=HmqZ)i4~Shdu3%x#WY!3h+K^Yqq$&K(e|?Eeb08B zP>GX#cklarzR&kLSxxuvZtv`+sk52bd3M)%)_k1R7#^oAhP&=H=d-L;LrJe2>nmyL z=2l&e^o3EbpWDgkn&GWJ%$mm(Ma10Hs ziybTq>p}zeLDV%d6bhb19l?+gD~RnTkZ!>rX!3?bQz$kOi~ED&ylgXp9tg%xAV{z0igd!t(g1!<#OFV?F<)F5%TsyK z0J7Uq8;V5HA>j-M*VXE2NB(dCc_L$DemDV@WNS!*t>+g>E(93kQ_pXh`-pKxSlI_j z?h3OqYHlWi${QOS(NQ=u8ugzR@_7p~aX^K@uTcaDTB2Bv_{`yOcp~B9;K)Q2o4%On zh|1=qpR(Xxw*zij>1X&|x^2Y5kzlQ)r!S&x{D9Y?gI4U~DnzB_ zqdn{&3PBZFC+gfpv>S+U6|<8n)(cq=o>Z=NqTWqJdw__fLPzk75J05P9f^!!vUQ^4 zn}{9*qSA_3$i@vs!<&d6$7d?mzNr}0KGYhIV-?pWo!&&W7fae$n6PU2S|sA@7~LPz42In*oOl ziL(KoKA>t)+-XBR?Nc=far|;v)qqC~90nxec|G_81Nv1BxZhB)93(m|=;Z_akK}&7 zO+JijNV1ZM;`Yftv<%{EO>i(Mm0hhphl&LWPGhDh>AIe)&FA-f$+(7yT7>5io8SE^ z6~CXFxCbz~W$q`{SbMhbP<#6kC14(?{|{>nqCx4spfnFkepRC6I&Wy-_IWeplS zxwA(0phrsZN`j7{s4&XW4JajnMo`p%0$!>>73Ea&awWV%x9b+-6UtZsffZ9K3^Xn1 zE}7@gv*H<|^?RT$1-g<|OJ(X3otmU!-IRKp=DsOTzqMM~x@gtPjf*FAvS;y8o!pJ; zr0s^%IRPRbl3J%u{!=G+5NOFzfzts)D=^edp!xZ+P%SakfT3Lkx~WNED2<_g1!!qE zz)%&2`V?rft{(H{fR+`mc z8`ATi$aYjAx%3Q0aYng6GZ0|;homzE_O8^ZL_l;c6_bH~vaKdfVrUs@q#?Wn*8O&$ z;)4B%;w0E887}k2QDiNGt?ft$!iw3_Rs;D~n>t>R>a7Gy@82?NMlmK^*vhae` z>P9!pxkg#J6`Al6@$_3Lw}f9U&9y+duLJYJt^ifsLlEdYij?^a1S2Poc^j*ea`|I2}GiYyL}#$~L9V&$4e%f}f`@O)e)5T5Qi;DnY;h`x9B&&Oai3 zphs=bzkdR#^34(~dQOz>nSo&z8DP86{a}Bum>Hm{hdbrA#YO`ddk*eH`WwI&OSR)( z3Lh!K0J6idPGv=i6zNNSvu;(Q46E2U*+w;2nE;u58Nia&~Wa#c&2Y!J`w6C2=qIU@2^P!#B6?LHMH;DMB>R%3+P+1)HfTyzveL{E`$rIpH^0Zb9eN#}XV%#R z?{<{KHqlmey(0aBSy{6}Jmh4gzcbvw3Awn`YdLON&A~j7UA-Zu zU4LS&AF;`KCcTsyxWaN8{G4OwlV3Aw>t)t8!!GqDX80}A>s!BFyRj^$t=CxYi}ccb zX5d4%ZicUx?lG02j57=JqkOgeG*Zst+X zMV)bFMT_o=>7`sfCg9b~S;|!ZK06QZ2NJTm<;gUorA!Iu1=f;qUc|RcEVG3&F*7V( zMrF=xbkYf<;qJ2Q0_&~J{6?cDOIiz{*(?}OQ^p)KnrB$@2a!e>vqUY1?_i-(E3XXi%H?J7~BN>@H zYo=B6LvYSNU$G=Ei}(+&rFm%!HG5-5%#ptq+*M%RtT^v3lb&Q}VRu?GvM<0dE9O5> z;WL$dn!?7d7dbjN?{%v&ZdSbYqU`@ne*SN_PJp4MgDj4@$SW^fX)3ZJ>fySj|M<0? M*Z1!fsUN)l4`NrEfB*mh literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/zsconfig.com b/Images/Source/hd0/s0/u0/zsconfig.com new file mode 100644 index 0000000000000000000000000000000000000000..2cc26074d3a82cceb46051ba57b80ea5e03363d7 GIT binary patch literal 5888 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u0/zxd.com b/Images/Source/hd0/s0/u0/zxd.com new file mode 100644 index 0000000000000000000000000000000000000000..16469ed0a864e404d7b9074a3c67154ba5fdda45 GIT binary patch literal 6784 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u1/SAMPKEY.DOC b/Images/Source/hd0/s0/u1/SAMPKEY.DOC new file mode 100644 index 00000000..911c4a11 --- /dev/null +++ b/Images/Source/hd0/s0/u1/SAMPKEY.DOC @@ -0,0 +1,134 @@ +SAMPKEY.DOC: +Sample Macros for ZDE, 01 June 90 by Carson Wilson. + +This file describes the sample macros contained in SAMPKEY.ZDK +and SAMPKEY.ZDT. As distributed, ZDE contains no Macro Key +definitions. I have included the SAMPKEY.* files both to give +you an idea of the versatility available through ZDE's macro +capability and to provide you with some useful choresaving +routines. Many of the sample Macros come directly from the ZDE +Manual, and illustrate the use of conditional testing, jumps, and +control key entry from within Macros. In addition to being +educational, most of these "sample" Macros do useful work. While +you may (and should) define ZDE's Macros to do anything you wish +(or nothing, if you wish), I think you may find one or more of +these samples useful just as they are. + +To install the macros in SAMPKEY.ZDK (or any .ZDK file) into your +copy of ZDE, just type "ZDENSTAL ZDE SAMPKEY.ZDK." Then exit +ZDENSTAL with the ave option. This produces a working copy of +ZDE.COM with Macro Keys 0 to 9 as defined in the .ZDK file. + +To alter or replace the Macros in SAMPKEY.ZDK, first edit the +text file SAMPKEY.ZDT with ZDE. Then translate SAMPKEY.ZDT into +a new macro file with the command "ZDKCOM SAMPKEY.ZDT." You can +also translate .ZDK files back into .ZDT files if you wish; see +ZDKCOM.DOC for more information. + +The following briefly describes each of the Macros in the SAMPKEY +files: + + +MACRO 0 - SWAP CHARACTERS. + + Macro Text: + q^S^S^G^D^U^U^D^G + + Purpose: + Swaps the character behind the cursor with the previous + character. Useful for catching typos. + + +MACRO 1 - SOFTEN PARAGRAPH. + + Macro Text: + q^QS^X^[=^M]^S^V ^V^D^[![ + + Purpose: + "Softens" Hard Carriage Returns from the line the cursor + is on to the end of the paragraph. This allows + reformatting with ^B of files from other word + processors. + + +MACRO 2 - MOVE TO START OF SENTENCE. + + Macro Text: + q^[~.1^S^[1^[~.<^[2^D^[= 2^[=^M2 + + Purpose: + Moves the cursor to the beginning of the sentance the + cursor is currently on. + + +MACRO 3 - MOVE TO START OF PARAGRAPH. + + Macro Text: + q^QS^S^S^[= [^D^D + + Purpose: + Moves the cursor to the beginning of the paragraph the + cursor is currently on. + + +MACRO 4 - REFORM AND RETURN. + + Macro Text: + q^B^QP + + Purpose: + Reformat beginning with the line the cursor is on and + return cursor to current location. Useful when + revising text in the middle of a paragraph. + + +MACRO 5 - BROWSE FILE. + + Macro Text: + n^[;^C^[![ + + Purpose: + Move through file a screen at a time. Press ESC to + stop. + + +MACRO 6 - DELETE WORD LEFT. + + Macro Text: + n^A^T + + Purpose: + Erases the word to the left of the cursor. + + +MACRO 7 - UNDERLINE WORD RIGHT. + + Macro Text: + n^V^PS^F^PS + + Purpose: + Brackets the word to the right of the cursor with the + control code ^S, causing the word to be underlined when + printed (NOTE: printer must be installed). + + +MACRO 8 - SWAP LINES. + + Macro Text: + q^QS^KB^S^X^KK^S^E^E^KV + + Purpose: + Swaps the current line with the previous line, moving + the cursor with it. Can be used to move a single line + up any distance within your file. + + +MACRO 9 - HELP MESSAGE. + + Macro Text: n^QE^QS^N^N0=SwCh 1=Soft 2=SentBg 3=ParaBg + 4=Reform 5=Browse 6=DelLft 7=Undl 8=SwLn 9=Hlp + ^[;^[;^[;^Y^Y^QP + + Purpose: + Briefly displays help message at top of screen. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/SAMPKEY.ZDK b/Images/Source/hd0/s0/u1/SAMPKEY.ZDK new file mode 100644 index 0000000000000000000000000000000000000000..9bb5971f19b75fde7a5b4938fd85f9d0cf498033 GIT binary patch literal 512 zcmZPy;Fvs_okdiXg`I!mWeI6p-dJHV1u+(B#b~kF|MU!nr46O)^lYS!Sfp(gjDXTc zToW$~3j;aPEG*1T69d?0TQdU{Gc}5^O%n)a6A0#=c$wQtSc2PIn3a_~EPkS^U@#w_ zfo*WPbB2PUZE${CiGq=BaB5zOQ@Vn&Z9rmCB9LKX8" or "<", +are SEARCH LOOPS. They will continue to move the cursor right +(">") or left ("<") AS LONG AS the character at the cursor matches +(ESC-=) or doesn't match (ESC-~) the specified character. Both +search loops terminate automatically at the beginning or end of +the file. Example: ESC=_> moves right as long as the current +character is a space. + ESC-+, followed by 0..9, CHAINS to another macro key, +allowing you to build macros strings longer than the storage limit +of any one key. It does not "call" the key; there is no +returning. Example: ESC+9 chains to Key 9. + ESC-; (semicolon) gives a brief pause, presumably so the user +can see what's happening on screen. + Macro programs are stored just like any other macro string +(usually with "N"o repeat count). If you program in an endless +loop, you will at some point have to abort with ESC. Don't make +macro programs "Q"uiet until you're sure they work. + Example: here is a good macro program (best stored as a Quiet +Key) to move the cursor to the start of the current sentence: + + ESC~.1, ^S, ESC1, ESC~.<, ESC2, ^D, ESC=_2, ESC=^M2 + +You could write this out in programmer's pseudo-code as: + + If not "." goto label1 + Move left ;move left if already on period +label1: While not "." move Left ;move left to previous period +label2: Move right ;now move back right + If " " goto label2 ; as long as you see a space + If "^M" goto label2 ; or a Return + (all done) + + +7. General Information. + +7.1. Disk Space. + + ZDE isn't disk-bound; if you run out of disk space, just +insert another disk (always keep a blank FORMATTED disk around). +Alternatively, you can use the ESC-F and ESC-E commands to purge +unneeded files. [If you have small disks, you can also install +ZDE not to preserve BAK files.] + Let ZDE's filesize limits encourage you to break work up into +files of 50K or less; larger files make inefficient use of floppy +disks. + +7.2. Error Messages. + + Press ESC or Space to continue. "Error" alone means the +command used just won't work in this situation. (Example: a block +command was used with no block marked.) More specific errors are: + + "Out of Memory" - the file, block, or key string won't fit in + RAM. + "Invalid Key" - an illegal command key sequence was pressed. + "I/O Error" - file not found, disk full, empty/invalid + drive, etc. +"Cannot Reformat" - word too long, or margins invalid. + "Not Found" - the object of a search was not found. + "Syntax Error" - a macro programming command was misused. + +7.3. File Modes. + + ZDE has three FILE MODES: "W"ordStar document, "A"SCII +document, and "N"on-document. The basic difference concerns the +format of disk files. + In "W" mode, ZDE reads and writes WordStar-compatible files. +ZDE can edit a WordStar document, except that any right +justification will be lost. WordStar can edit any ZDE "W" file in +Document mode. + In "A" or "N" mode, ZDE reads and writes text as standard +ASCII 7-bit characters, a universal format accepted by virtually +all software. The only difference between "A" and "N" modes lies +in the default settings on loading a new file. Typically "A" mode +is used for word processing, and "N" mode for programming and +other technical applications. + +DEFAULTS FOR: Margins Tabs Hard CR disp. +------------ ------- ---- ------------ +"A"SCII or "W"ordStar mode ACTIVE VARIABLE [ON] +"N"on-document DISABLED HARD OFF + + The file mode option can be specified along with the filename +at any ZDE file function prompt, allowing you to mix WordStar and +ASCII disk files as needed (see Invoking ZDE, above). You can +also change the current mode with the ^K-N function by entering a +new mode (e.g., "[W") with or without a filename. + [ZDENSTAL allows you to select a default file mode, to be +used when no mode is specified (originally this is "A"). Further, +you can specify two filetype masks for automatic mode selection +(e.g., all "ASM" files as "N" mode) to override that default.] + NOTE ON ASCII FILES - The "A"SCII-document file format used +since VDE 2.50, to allow accurate formatting and WordStar +compatibility, distinguishes between HARD and SOFT CRs (see +Wordwrap, above). Consequently, if you edit an ASCII file created +by other software (including earlier versions of VDE), it may +appear to be full of hard CRs, making text impossible to reformat. +There are two easy ways to solve this problem: first, you can use +^Q-A to find "^M"s and selectively replace them with " ^M". +Alternatively, the following Macro (best stored as a Quiet macro +Key) does a good job of "softening up" paragraphs for reformatting: + + ^QS,^X,ESC=_],ESC=CR],^S,^V_^V,^D,ESC![ + +7.4. Hyphenation (^O-H). + + ZDE can't introduce hyphens, but it does recognize them in +the text, treating them as a legitimate place to break a line, so +if you have a long word close to the margin, you can insert a +hyphen where you'd like the word to be broken. + Similarly, ZDE can't unhyphenate. If it is trying to +reformat and finds a hyphen at the end of a line, it will pause to +ask you what to do with it. You will see the prompt "Chg?" in the +header, and can: + Press "Y" to remove the hyphen and space, joining the word; + "N" to leave the hyphen, but still join the word; + "ESC" to leave both the hyphen and the space alone. +Typically you would choose "Y" for "soft" hyphens that you +introduced to break up a word ("intro-duction"); "N" for hard +hyphens that are part of a word ("vis-a-vis"); and "ESC" for +punctuation (dashes "--", etc.). After your choice, reformatting +will proceed automatically. + You can toggle hyphenation on and off with ^O-H. If off, +hyphens are not treated differently from any other text character. +[The ^O-H default can be changed with ZDENSTAL.] + +7.5. Interruption. + + If ZDE is interrupted by messages from other software (BIOS +error, resident utilities, etc.), it may lose control of the +screen. The best way to return it to normal is by blanking and +restoring the screen (^O-Z, ESC). + +7.6. Prompts. + + First, ZDE has several simple prompts requiring you to +confirm an action by typing "Y" or "N": + + "Abandon changes?" - warns the file you want to Quit has + been changed. +"Unchanged; save anyway?" - reminds the file you want saved isn't + changed. + "Delete original?" - do you want to delete block copied + from 2nd file? + "Chg?" - do you want to change this instance of + a string? + +Then, there are a few special purpose prompts: + + "Repeat count:" - enter (optional "Q" and) repeat count + for Macro. + "Key number:" - enter (optional "N/Q" and) key number + for Key. + "Rdy" - press any key to print next page (ESC + quits). + +Finally, there are a variety of prompts for either numeric or +string input, like "Column:" or "Find string:". You are expected +to type in a string (up to 65 characters). The following control +keys operate: + + Correct mistake: BS (^H), ^S, or Del + Erase entire entry: ^X + Abort operation: ^U + +Note that to get any of these codes, or a CR, into the string +itself, you must precede it with ^P (this includes ^P). Examples: +to find a line beginning with a "*" (find "^M,*") type + + ^Q-F, ^P-CR, *, CR. + +Now to get this into a Macro with ESC-M, you would have to type + + ESC-M, ^Q-F, ^P-P, ^P-CR, *, ^P-CR, CR. + +7.7. WordStar Compatibility. + + In most respects ZDE operates much like WordStar; one big +difference is the absence of a "No-File" menu. You are always in +edit mode; use ^K-L to select a new file to edit. + If the keys ^J, ^K, ^L are in use as CP/M arrow keys, you +must use ZDE's original command set to substitute for them as +follows: + + Block prefix (^K-)... ESC- + Help menu (^J)....... ESC-H + Repeat find (^L)..... ^\ + + If these keys are NOT installed as arrow keys, they retain +their WordStar functions. Then, of course, ZDE lacks some +WordStar commands, and has some of its own. Aside from these, +there are the following differences in common commands: + +COMMON USE WORDSTAR 4 ZDE ZDE NOTES +Hide block ^K-H ^K-U Actually unmarks block. +Erase disk file ^K-J ^K-E +Set Place Mark ^K-0..9 ^P-Z Not individually numbered. +Go to Place Mark ^Q-0..9 ^Q-P Cyclic. + +COMMON COMMAND WORDSTAR 4 USE ZDE USE + ^^ Soften hard CR Transpose upper/lowercase + ^K-N Column block mode Rename current work + ^O-D Display ^P codes Display hard CRs + ^O-F Ruler from text Flush right + ^O-P Preview mode Page length + ^Q-U Repeat align Repeat undelete + +Note that ZDE does not implement WordStar "dot commands" in text, +though in "W" mode it avoids printing them. + + +8. Disclaimer. + + You use ZDE at your own risk. The author accepts no +liability for any damages resulting from its use or misuse. +Direct problem reports and suggestions to the author; include a +stamped return envelope for a reply if desired. Thanks to the +many users of ZDE whose feedback has led to improvements and bug +fixes in the past. + + Carson Wilson Sysop: Antelope Freeway RAS + 1359 W. Greenleaf 312-764-5162, Chicago + Chicago, IL 60626 24 hours, 3-12-2400 baud + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE10.FOR b/Images/Source/hd0/s0/u1/ZDE10.FOR new file mode 100644 index 00000000..79b4dd02 --- /dev/null +++ b/Images/Source/hd0/s0/u1/ZDE10.FOR @@ -0,0 +1,7 @@ +Z-System Display Editor is Eric Meyer's famous VDE improved and +enhanced for Z-System. ZCPR named directory and line queue +capabilities, preserves file datestamps and runs faster under ZSDOS, +improved install program and documentation, and key compiler +included. Over twenty flaws in VDE 2.66 corrected. Also runs under +vanilla CP/M 2.2 and CP/M Plus. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE10.NEW b/Images/Source/hd0/s0/u1/ZDE10.NEW new file mode 100644 index 00000000..4c568f0d --- /dev/null +++ b/Images/Source/hd0/s0/u1/ZDE10.NEW @@ -0,0 +1,304 @@ + New in ZDE + + Z-System Display Editor + + Version 1.0 10 Mar 89 + + ZDE and its documentation are copyright 1989 by Carson Wilson, + all rights reserved. They may not be circulated in any + incomplete or modified form without written permission of the + author. Any commercial use of ZDE, defined as any situation + where the duplicator receives revenue by duplicating or + distributing ZDE by itself or in conjunction with any hardware + or software product, is expressly prohibited unless authorized + in writing by Carson Wilson. + + + CONTENTS + + 1. Functional Enhancments. + 1.1. File Datestamp Capability. + 1.2. Named Directory Capability. + 1.3. Line Queue Capability. + 1.4. Other Enhancements. + 2. Bugs Fixed. + 3. ZDENSTAL. + 4. Notes to DosDisk Users. + 5. Planned Enhancements. + 6. Development History. + + +1. Functional Enhancments. + +1.1. File Datestamp Capability. + + Under ZSDOS, the Create date and time of files edited with +ZDE are maintained across editions. If .BAK files are being +created, the create dates of new files will be the same as their +.BAK files. Note that if a file with the name of a block being +saved with ^KW or ESC-W already exists, the saved block will have +the same Create stamp as the (previously) existing file. I hope +to address this side-effect in future versions by prompting before +erasing existing files during ^KW commands. + +1.2. Named Directory Capability. + + ZDE will now accept ZCPR named directories when loading, +renaming, and erasing files, and when requesting a directory +listing with the ^KF command. The named directory (if available) +is also displayed as part of the current file name in the status +line. + Since ZCPR directory names can occupy up to eight columns on +the status line, it was necessary to move the rest of the status +line over by eight columns. I was able to gain an extra column by +putting only one space between the filetype and the "[x" +specifier, but the result is that if your terminal displays less +than 55 columns the current column number will not be visible in +your status line. + This is unfortunate, but the status line is already about as +compressed as possible. To include all of the information I would +have to add a second status line for narrow terminals, which would +add a good deal of code and complexity to what is already a +complicated program. Since most CP/M terminals (including my own) +have 80 columns, I have decided in favor of the majority in this +instance. + You may also notice that the ^QA prompt "Chg? (Y/N/*)" has +been shortened to "Chg?" and the "Wait..." message is now "Wait". +These changes were also necessary because of the decrease in +available space on the status line. + +1.3. Line Queue Capability. + + A third functional enhancment is the new ^QQ command, which +causes ZDE to skip to line numbers stored in ZCPR's user-defined +message bytes. Under ZCPR3, up to eight line or page numbers may +be passed to ZDE. The original idea was to use the interface to +produce a Turbo Pascal-like integrated environment for program +development, but the interface is certainly not limited to +programmers. + The numbers are stored in ZCPR's 16 user-defined message +bytes, and ZDE treats these bytes as a packed array of up to eight +elements. ^QQ causes ZDE to cycle through the array, going to the +stored locations sequentially until the end of the array or a zero +element is reached, at which point ZDE returns to the first stored +location. + The numbers are stored as inverted 2-byte hex words (LSB +first), so for example to store the lines 12, 44, and 108 a +program would set the 16 user-defined bytes as follows: + + 0C 00 2C 00 6C 00 00 00 00 00 00 00 00 00 00 00 + +In this example, when ZDE reaches the fourth word (00 00) it +returns to the start of the array and goes to line 12 (0C 00). + Any ZCPR program, or even an alias (using Jay Sage's powerful +ARUNZ parameters) can now give ZDE the locations of up to eight +line numbers of interest. With a little imagination we could +probably create an integrated text search/edit environment which +searches multiple files for a string and points ZDE to the exact +location of each match for editing. Thanks to Cameron Cotrill and +Al Grabauskas for suggesting this feature. + +1.4. Other Enhancements. + + In response to a suggestion by Phil Newman, ZDE now properly +accepts and displays user areas between 16 and 31. While I do not +normally suggest storing files in these areas because many CP/M +programs do not handle them properly, they are useful occasionally +on very large disks or for security purposes, and are supported by +ZCPR and ZSDOS, so I have included them in ZDE. + For NewWord compatibility, I have changed the "To Mark" +command from ^QP to ^QZ. This is also better mnemonically, since +the "place mark" command is ^PZ. + The search and replace functions now match upper or lower +case by default. To search for an exact match by case, you must +enter "/c/" or "/C/" (for Case) before the search string. The +"/i/" option is no longer active. I have changed default +find/replace wildcard character to ^Z so that ZDE can find strings +with literal '_' characters. Use the ^QZ command to find a +literal ^Z. + ^KB, ^KK, ^KU and ^QY no longer cause unnecessary redisplays. + For faster operation, ZDE no longer resets drives under ZSDOS +(same as CP/M Plus). + Under ZSDOS and CP/M Plus, ZDE sets the error mode to 0FEh. +All BDOS errors are displayed on the screen, but ZDE retains +control. + For your protection, ZSDOS Path and Public files are Read +Only under ZDE. That is, you can access files via Path or Public +but you cannot erase Path or Public files. If you get a ZSDOS +"File W/P" error when saving data with the ^KS, ^KD, ^KX, or ^KW +commands or when erasing a file with ^KE, you may have given the +name of a ZSDOS Path or Public file. Try again with a new name. + + +2. Bugs Fixed. + + If just a drive letter in given during the ^KF (display +files) command, files in the current user area are displayed +rather than files in user area 0 (thanks to Ben Cohen). + ZDE no longer crashes if no name is given in response to the +^KW prompt (thanks to Eric Meyer for finding this one). + ^KB and ^KK now behave properly when entered at the rightmost +column of the screen. + The "Chg?" prompt is now properly erased in all circumstances. + Full disk errors caused CP/M Plus and ZSDOS systems to report +the wrong amount of free space. This has been corrected by +closing the output file after full disk errors (thanks to Howard +Goldstein for this idea). + File read-only errors no longer set the drive byte to "^@" +under CP/M 2.2 (thanks again to Phil Newman for finding this one). + Backwards replace now finds the first occurrence of the +string before the cursor even if the cursor is only one character +to the right of the string. If the string is replaced, the cursor +now returns to the START of the new string instead of one after it +as before (this may change the effects of some ZDE key macros). + Ben Cohen noticed that VDE's left margin (Lnn) print option +sometimes failed to indent the first line. This has been fixed. +ZDE also prints the header text at the same location no matter +what left margin is used, rather than indenting the header and +causing it to wrap to the next line. Print option verification is +also much more rigorous now than in previous versions. + ^KS, ^KD, and ^KX file name requests now abort with a +carriage return as well as ^U, and ^U now returns you to ZDE in +response to the ^KX filename request. + The bug fix published in VDE266.FIX has been incorporated. + Several ZDE bugs affecting use with DosDisk have been +eliminated (see below for bugs IN DosDisk 1.00, however). + Tabs displayed in the last column of the last row no longer +cause the screen to scroll. + Virtual screen displays no longer show garbage at the end of +the line if the cursor is at the left side of the screen, and +moving to the left edge of the screen with ^A no longer causes +redisplay. + ^A now moves to the first character on line 2 before jumping +to line 1 when line 1 is empty. + ^PZ now causes a horizontal scroll if it moves the cursor +beyond the right edge of the screen. + Block and place markers no longer set file status to +"Changed." + The cursor no longer jumps around when moving left from +columns after 254. The cursor now stops at column 254 instead of +255, and the status line says "Col 255" for any column past 254. +Text past column 254 CAN actually be edited, but it will not be +displayed by ZDE. + Strings can now be found with ^QA even if they are the very +last item in the file (credit goes to Cameron W. Cotrill for +finding this one). + "^OI@" now removes all soft tab stops "as advertised" in +VDE266.DOC instead of setting them all to 1, making it possible to +set new tabs after entering "^OI@". "^OI#" has the same effect. + ^^ now sets file status to "Changed" when converting from +lower-to-upper case as well as upper-to-lower. + "Wait..." message now disappears after disk operations with +ruler on and status line off. VDE266 forgot to erase the message +in this situation. + Backwards find and replace operations now work properly +instead of repeating the prompt indefinitely when the replace +string is shorter than the find string (thanks to Ben Cohen for +pointing this out). + VDE restored INSert to its entry status just BEFORE the final +byte of the macro, resulting in irregular behavior and sometimes +causing macro elements to appear after the "INS" indicator in the +status line. ZDE waits until the entire macro has executed before +restoring entry status. Due to ZDE's code structure, the INS +status line indicator does not change during macro execution. + ZDE restores INSert to entry status when macros abort due to +errors (e.g., "[[[ Not Found ]]]"). + + +3. ZDENSTAL. + + Included in this library is ZDENSTAL.COM, the new install +program for ZDE. ZDENSTAL it is very similar to VINST in +operation, but adds the feature of displaying the actual print +toggles and switches at all prompts, rather than the default ones. +So if you change the first default print toggle character to ^K +for example, all other prompts referring to that toggle now +reflect the change. + Files for use with ZDENSTAL must have the type ".ZDE" (option +installation), ".ZDP" (printer installation), or ".ZDK" (macro +keys), but are otherwise compatible with files used to install VDE +2.66. With Fred Haines' permission, I have adapted his wonderful +VDKCOM.COM utility for use with ZDE, and renamed it (what else?) +ZDKCOM.COM (see ZDKCOM.DOC). + ZDENSTAL also corrects the bug which prevented VINST from +loading installation files whose archive bits were set. + + +4. Notes to DosDisk Users. + +DosDisk users are advised of a bug in DosDisk 1.00 which appeared +during the development of ZDE. Calling Reset 13 while DosDisk is +active can cause DosDisk to think other active drives are all +drive A:. Bridger Mitchell, author of DosDisk, is aware of this +bug and is working on a fix. In the meantime, users of CP/M 2.2 +and ZRDOS who wish to edit files on MS-DOS disks should NOT log +into the MS-DOS drive while editing with ZDE, as this causes ZDE +to do a Reset 13 when writing to the MS-DOS drive. To edit files +on the MS-DOS drive, run ZDE from drive A: or another non-MS-DOS +drive. + +Users of ZSDOS and CP/M Plus need not worry about this problem +with ZDE, as ZDE never resets disks under ZSDOS or CP/M Plus. By +the same token, however, ZSDOS and CP/M Plus users must not change +disks in the MS-DOS drive from within ZDE, because DosDisk (like +CP/M 2.2) requires a disk reset or warm boot when disks are +changed (see DosDisk manual, p. 7). + + +5. Planned Enhancements. + + If time permits, future versions of ZDE may contain the +following enhancements: + An improved ZDENSTAL which directly accepts ASCII files for +key definitions, along the lines of ZDKCOM. + Bridger Mitchell has suggested command "bindings" which would +allow any control key or meta key sequence to be linked to any ZDE +command. This idea will be familiar to users of Perfect Writer. +Key bindings would allow ZDE to simulate EMACS, for example. + Bruce Morgen and others have suggested automatic terminal +installation under ZCPR, allowing the same copy of ZDE to be used +with any terminal. + Allow more than two default filetypes available and fixed +disks. + It may be possible to preserve file create datestamps under +CP/M Plus and Z3PLUS. + + +6. Development History. + +1984: VDE began as Eric Meyer's set of improvements on the tiny + (4k) "VDO" memory- mapped editor by Fritz Schneider (1982), + as adapted by George Peace (1984) for the Osborne Executive. + +1985: The first terminal adaptation, VDE-PX for the Epson PX-8. + Ongoing improvements also in parallel Osborne versions + VDE-OS. + +1986: The unified VDE(M) version 2.00, with generic terminal + installation. Versions 2.1-2.3 added new features + including macros; global replace; tighter compression; many + Print options; file directory; undelete. + +1987: 2.4 (1/87): Improved scrolling and screen functions; more + screen sizes supported; WordStar file mode; + place markers; ^OZ; block print; larger macro + keys; VINSTALL terminal menu. + + 2.5 (3/87): User area support; variable tabs; double + spacing; search wildcards; more standard block + functions; improved format- ting; many + additions to VINSTALL. + + 2.6 (7/87): Greater WordStar compatibility; many new + functions; more free RAM; faster scrolling; + search options; keyboard buffer. + +1988: Development through v2.64, with new functions; top margin; + doublespaced printing; auto mode filetypes. + + 2.65 (4/88): Auto indent; tab set enhancements; small fixes. + + 2.66 (6/88): Printer left margin; small fixes. + +1989: First version of ZDE. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE10.QRF b/Images/Source/hd0/s0/u1/ZDE10.QRF new file mode 100644 index 00000000..3256a079 --- /dev/null +++ b/Images/Source/hd0/s0/u1/ZDE10.QRF @@ -0,0 +1,55 @@ + QUICK REFERENCE FOR ZDE 1.0 +------- [Note: the ^K- and ESC- prefixes are nearly interchangeable.] -------- + + + CURSOR AND SCREEN: + + = ^E = ^D ^Q, start, end of line + = ^X = ^S or ^H ^Q, top, end of screen + [Note: An alternate arrow key set can also be installed.] + + ^F word right ^QR to top of file ^QB to block start + ^A word left ^QC to end of file ^QZ to place marker + ^R page back ^QI to page/line no. ^QQ to queue line + ^C page forward + ^W scroll back line ESC, shift up, down 1/4 screen + ^Z scroll down line ESC, shift right, left 32 cols + ^O make current line top + + DELETING: MISCELLANY: FIND and REPLACE: + + ^G delete char right ^V INSERT on/off ^QF find string + DEL delete char left ^N insert a CR ^QA find and replace + ^T delete word right TAB Tab or move to stop /B/ackwards + ^Y delete line ^^ upper/lower case /C/ase-specific + ^QY del to end of ln ^KI information message /// quote "/" +^Q-DEL " to beg of ln ^PZ set place marker ^Z = wildcard +^QT_ del to character ^OD HCR display on/off ^L [^\] repeat last + ^U UNdelete char ^OQ header on/off find/repl + ^QU UNdelete line ^OW make window + ^OZ blank screen + + DISK FILES: BLOCKS: PRINTING: + + ^KN change filename ^KB block start ^KP print text + ^KL load new file ^KK block end (Options: P,B,T,L, + ^KR read in disk file ^KU unmark block ^,"",*nn,@nn,#nn) + ^KF show disk files ^KC copy block ^OP set page length + ^KE erase disk file ^KV move block ^P- insert ^-code: + ^KS save work, continue ^KY delete block B,D,S,Y toggles + ^KD save, load new file ^KW write block to disk Q,W,E,R switches + ^KX save and exit + ^KQ quit without save + + FORMATTING: + + ^OR,L set rt, lf margins ^OI,N tab set, clear ^B reform text + ^OX margin release ^OV tabs variable/fixed ^OT ruler line + ^OC center line ^OA auto indent mode + ^OF flush line right ^OS double spacing + + MACROS: + + ESC-M define macro ESC-# store macro key ESC-!,=,~,+ + ESC-; wait (pause) ESC-0..9 use key macro programming + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE10.TOC b/Images/Source/hd0/s0/u1/ZDE10.TOC new file mode 100644 index 00000000..3b54a99c --- /dev/null +++ b/Images/Source/hd0/s0/u1/ZDE10.TOC @@ -0,0 +1,67 @@ +..Print in Wordstar mode, using the "L8" option for normal pitch +..printers and 8.5" paper. + + ZZZZZZZZ DDDDDDD EEEEEEEE + ZZ DD DD EE + ZZ DD DD EE + ZZ DD DD EEEEEE + ZZ DD DD EE + ZZ DD DD EE + ZZZZZZZZ DDDDDDD EEEEEEEE + + Z-System Display Editor + + + Table of Contents + +1. Introduction. . . . . . . . . . . . . . . . . . . . . . 1 +2. Installing ZDE. . . . . . . . . . . . . . . . . . . . . 2 +3. Invoking ZDE. . . . . . . . . . . . . . . . . . . . . . 2 +4. ZDE's Command Set. . . . . . . . . . . . . . . . . . . 2 +4.1. Command Summary. . . . . . . . . . . . . . . . . . . 3 +4.1.1. Control Keys: . . . . . . . . . . . . . . . . . . . 3 +4.1.2. File and Block Commands: . . . . . . . . . . . . . 3 +4.1.3. Escape and Macro Commands . . . . . . . . . . . . . 4 +4.1.4. Quick Commands . . . . . . . . . . . . . . . . . . 4 +5. Command Descriptions. . . . . . . . . . . . . . . . . . 5 +5.1. Auto-Indent Mode (^O-A). . . . . . . . . . . . . . . 5 +5.2. Block Commands . . . . . . . . . . . . . . . . . . . 5 +5.3. Cursor Movement . . . . . . . . . . . . . . . . . . . 6 +5.4. Deleting . . . . . . . . . . . . . . . . . . . . . . 6 +5.5. Disk Operations . . . . . . . . . . . . . . . . . . . 7 +5.6. File Commands . . . . . . . . . . . . . . . . . . . . 7 +5.7. Find, Replace . . . . . . . . . . . . . . . . . . . . 7 +5.8. Header . . . . . . . . . . . . . . . . . . . . . . . 8 +5.9. Information . . . . . . . . . . . . . . . . . . . . . 8 +5.10. Insert Mode . . . . . . . . . . . . . . . . . . . . 9 +5.11. Line Spacing . . . . . . . . . . . . . . . . . . . . 9 +5.12. Margins . . . . . . . . . . . . . . . . . . . . . . 9 +5.13. Pagination . . . . . . . . . . . . . . . . . . . . . 9 +5.14. Place Markers and Line Queue . . . . . . . . . . . . 10 +5.15. Printer Codes . . . . . . . . . . . . . . . . . . . 10 +5.16. Printing . . . . . . . . . . . . . . . . . . . . . . 11 +5.17. Ruler Line . . . . . . . . . . . . . . . . . . . . . 12 +5.18. Tabs . . . . . . . . . . . . . . . . . . . . . . . . 12 +5.19. Undelete . . . . . . . . . . . . . . . . . . . . . . 12 +5.20. Upper/Lower Case . . . . . . . . . . . . . . . . . . 13 +5.21. Window and Screen . . . . . . . . . . . . . . . . . 13 +5.22. Wordwrap, Reformat . . . . . . . . . . . . . . . . . 13 +6. Macros. . . . . . . . . . . . . . . . . . . . . . . . . 14 +6.1. Macro . . . . . . . . . . . . . . . . . . . . . . . . 14 +6.2. Macro Key . . . . . . . . . . . . . . . . . . . . . . 15 +6.3. Macro Programming . . . . . . . . . . . . . . . . . . 15 + + + + + +7. General Information. . . . . . . . . . . . . . . . . . 16 +7.1. Disk Space. . . . . . . . . . . . . . . . . . . . . . 16 +7.2. Error Messages. . . . . . . . . . . . . . . . . . . . 17 +7.3. File Modes. . . . . . . . . . . . . . . . . . . . . . 17 +7.4. Hyphenation . . . . . . . . . . . . . . . . . . . . . 18 +7.5. Interruption. . . . . . . . . . . . . . . . . . . . . 18 +7.6. Prompts. . . . . . . . . . . . . . . . . . . . . . . 18 +7.7. WordStar Compatibility. . . . . . . . . . . . . . . . 19 +8. Disclaimer. . . . . . . . . . . . . . . . . . . . . . . 20 + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE13.FOR b/Images/Source/hd0/s0/u1/ZDE13.FOR new file mode 100644 index 00000000..7b0f2694 --- /dev/null +++ b/Images/Source/hd0/s0/u1/ZDE13.FOR @@ -0,0 +1,8 @@ +Update to Z System Display Editor, a small, fast editor for assembly +language and light word processing. Z System required for optimal +performance; also works with CP/M 2.2 and CP/M Plus. This version +adds hardware video handling, auto-return to file position under +ZCPR, WordStar-like ruler line, cursor on/off, and generally +F-A-S-T-E-R performance. Ten little bugs also fixed. See ZDE10.LBR +for full documentation. 26 Aug 89 by Carson Wilson. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE13.NEW b/Images/Source/hd0/s0/u1/ZDE13.NEW new file mode 100644 index 00000000..1e8517a1 --- /dev/null +++ b/Images/Source/hd0/s0/u1/ZDE13.NEW @@ -0,0 +1,241 @@ + + New in ZDE + + Z-System Display Editor + + Version 1.3 26 Aug 89 + + + ZDE and its documentation adapted with permission from Eric + Meyer's VDE version 2.66, and are now copyright 1989 by Carson + Wilson, all rights reserved. They may not be circulated in any + incomplete or modified form without the written permission of + Carson Wilson. Any commercial use of ZDE, defined as any + situation where the duplicator receives revenue by duplicating + or distributing ZDE by itself or in conjunction with any + hardware or software product, is expressly prohibited unless + authorized in writing by Carson Wilson. + + + This file describes changes to ZDE since version 1.0. I have + decided not to release a revision of the documents while ZDE is + still in active development. For now, please obtain ZDE10.DOC + and ZDENSTAL.DOC from ZDE10.LBR, available on Antelope Freeway + and many other remote CP/M systems. Except for the changes + detailed below, these files provide a thorough explanation of + how to use and install ZDE. Alternatively, send a contribution + of $6 or more to support further work on ZDE, and I will mail + you a high quality printed manual. See section 4 of this file + for details. + + + - CONTENTS - + + 1. FUNCTIONAL ENHANCMENTS. + 1.1. Hardware Codes for Faster Scrolling. + 1.2. ZCPR Auto-Return to Previous Position. + 1.3. WordStar-like Ruler line. + 1.4. ZCPR-like Option Lead-in Character. + 1.5. Cursor Dance Eliminated. + 1.6. Other Minor Enhancments. + 2. BUGS FIXED. + 3. INSTALLATION. + 4. FOR MORE INFORMATION. + + +1. FUNCTIONAL ENHANCEMENTS. + + 1.1. Hardware Codes for Faster Scrolling. + +ZDE now uses "hardware" video scrolling in its delete line (^Y) +command, if your terminal has a delete line capability (see +ZDENSTAL's Terminal Installation). If hardware insert line is +available, hardware scrolling is also implemented in the insert +line (^N) command when used at the beginning of a line. For most +terminals these are considerably faster than repainting all or +part of the screen, especially if more than one line is being +inserted or deleted. + +On many ASCII terminals a pause is needed after giving a hardware +scroll string so that the screen can catch up with the keyboard. +As distributed the same value of 38 hex is used for both +horizontal and vertical scrolls. To determine the optimal setting +for your terminal, load a large text file and execute "scroll up" +or "scroll down" (^W or ^Z) continuously. If your terminal beeps +at you or if garbage characters appear you probably need to +install a larger "Horizontal & vertical scroll delay" value with +ZDENSTAL. + + 1.2. ZCPR Auto-Return to Previous Position. + +ZDE now loads ZCPR's user-defined message bytes 0 and 1 (if +available) with the absolute line number of your position in a +file on exit. This allows you to exit to ZCPR, perform some other +commands, then return to the same line in your file using the ^QQ +command. You can also use this feature to jump to the equivalent +line in another file. Since the line number is absolute, it does +not vary with page length or file mode settings. + + 1.3. WordStar-like Ruler line. + +New in this version is the appearance of ZDE's ASCII/WordStar mode +ruler line. As with WordStar and NewWord, the left margin is now +marked with "L", the right margin with "R", and soft tabs with +"!". The appearance of ZDE's Non-Document mode ruler line remains +unchanged. + + 1.4. ZCPR-like Option Lead-in Character. + +ZDE now accepts ZCPR's familiar "/" slash character instead of +CP/M Plus's "[" character as an option signifier. For example, to +change to non-document mode the command is now "^KN/N" instead of +"^KN[N". To load a file in ASCII mode (for example) the command +is now "ZDE filename /A". This is more consistent with Z-System +programs as well as the MS-DOS version of VDE. It's also a lot +easier to find the slash character (at least on my keyboard)! + +ZDE allows you to "quote" the slash character in filenames in the +same way you quote it in ZDE find/replace strings, by doubling the +slash to give a literal slash. So for example the command "^KN +12//12//89.FIL" will change the current filename to +"12/12/89.FIL," and "ZDE ////MYFILE" loads //MYFILE for editing. + + 1.5. Cursor Dance Eliminated. + +Several users mentioned that ZDE's cursor often seemed to "dance" +for no apparent reason. Actually, this was due to the fact that +ZDE repaints the screen somewhat more often than larger word +processing programs, but in looking through NewWord's User Area +Listing for version 2.17, I found something I had never noticed +before. It is possible to install NewWord to turn your cursor off +and on by putting short routines in the MORPAT area and installing +jumps to your routines at 77D and 77A hex, respectively. This +reduces eyestrain by telling NW to turn off your cursor while it +repaints your screen. + +It turns out that it was fairly simple to add a similar routine to +ZDE, so this version has cursor on/off routines similar to +NewWord's. To make use of these routines, you must install ZDE +with the cursor on/off codes for your terminal. ZDENSTAL 1.3 +allows up to six bytes each for cursor on and cursor off. I have +only been able to find codes for a few of the terminals in +ZDENSTAL's library. If the codes for your terminal are not +included in ZDENSTAL, perhaps you could leave a short message to +me describing them (see below for address), and I will include +them in the next release. + + 1.6. Other Minor Enhancments. + +The cursor now turns off with the ^OZ command, giving a completely +blank screen if cursor on/off is installed (see 1.5, above). + +Version 1.0 repainted the whole screen after copying a block. Now +ZDE repaints only from the block to the bottom of the screen for +faster operation in most circumstances. I have also optimized +ZDE's general screen output routines somewhat for speed, though +this isn't noticable on terminals operating at less than 38.4 +kbaud. + +File input/output code has also been optimized for slightly +greater speed. + +And, last but not least, "quiet" operations now work up to 300 +percent faster! Both "quiet" macros and the "*" option of +find/replace boast greatly increased speed due to improved program +logic. + + +2. BUGS FIXED. + +If you did a backwards find/replace with ZDE 1.0 and responded to +the "Y/N" prompt with "*", the screen stayed off until you gave an +illegal command. The screen now comes back when replacement is +complete. + +ZCPR's GO restart now works after exitting when ZDE's window (^OW) +is active. Previously restarting with GO caused ZDE to limited +the number of lines of display available by 1/2. + +I fixed a bug with block markers failing to scroll the entire +display if entered in the last screen column. This was apparently +introduced when I made block marker displays more efficient in ZDE +1.0. + +If the cursor is to the left of the left margin, block markers now +move the cursor to the left margin instead of marking the blank +space between cursor and left margin as part of the block. + +For greater safety, ZDE now checks for free memory space before +adding a block marker with ^KK or ^KB. + +Place markers no longer cause words to "wrap" to the next line +when wordwrap is active. + +I fixed a minor bug ZDE 1.0 introduced to the ^OR command. Typing +^OR in non-document mode no longer produces the strange result of +setting the right margin to column seven. + +A display bug which occurred when the cursor was in column one of +a virtual screen with a tab to its left has been fixed. + +Previously, if only a drive letter was given in response to the +^KF command's "Dir:" prompt, ZDE searched user zero of the +specified drive, no matter what the current user number was. ZDE +now searches for files at the current user number of the specified +drive in these circumstances. + +The installed "output filter limit" was allowing one character +higher than the limit to be sent to the screen. Now only +characters equal to or less than the limit are sent. + + +3. INSTALLATION. + +You MUST use ZDENSTAL 1.3 to install this version of ZDE. Older +.ZDK and .ZDP files will still work; due to extra installation +codes, older .ZDE files will not work with this version. + +Version 1.0 of ZDENSTAL skipped the last few bytes of .ZDK key +overlay files, preventing a full 512-byte .ZDK key file overlay +from being installed. ZDENSTAL now installs the full 512 bytes. + +ZDENSTAL now allows four instead of just two default file types. + +Several new terminal definitions have been added to ZDENSTAL, as +well as some additional terminal codes (see 1.5, above). + + +4. FOR MORE INFORMATION. + +Finally, let me take this opportunity to thank the community of +users without whose efforts this version of ZDE would be far less +than what it is. Most of the above improvements and many of the +bugs fixed in this version result from comments and insights by +ZDE enthusiasts from around the country. Please let me know your +thoughts on this most recent version. + +Besides writing computer programs and working on a degree in +political science, I operate the Antelope Freeway Remote Access +Systems for CFOG, Chicago's First Osborne Group. These dual +remote systems are available at the same number, 312/764-5162, +Chicago. Antelope 1 covers CP/M and Z System, while Antelope 2 is +dedicated to MS-DOS support. The best way to contact me is +through this board. Registration is free. If you are not a +registered member, you can leave me a note as part of your +application. + +Alternatively, my mailing address is: + + 1359 W. Greenleaf, #1D + Chicago, IL 60626 + USA + +As I mentioned above, I don't plan to reissue the ZDE manuals with +the library while ZDE is still in development. For those who wish +an updated manual and/or wish to support ZDE, I offer instead a +pre-printed User's Manual and Installation Guide with Table of +Contents and Index for a contribution of $6 or more, postpaid. +The manual is printed in handsome proportional type on both sides +of 8.5 x 11 inch sheets and punched for a three-hole ring binder. +My costs for printing and mailing are about $3. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE16.COM b/Images/Source/hd0/s0/u1/ZDE16.COM new file mode 100644 index 0000000000000000000000000000000000000000..55c492a5f0c309c96fcaa50e5953b0d6dfad1f8e GIT binary patch literal 16896 zcmeHue_Rw-mTwhJH{JYbx*<-bI(2Zo*(xTbeL~na%0UmScVBQ_^~*;<2;As>Tk7#EUtvD z2|Wq7uey<6TwGSfuWa4bR?IK1sPOPBi#Inlx3{)1%=GfxeV&@l8~M#E*RHC$WzCA3 zY5XwL?D9Bf*)sZE=1Z_7IWmZN4igujp6$#sr%}oHscLL#Y-`%iuiUVSr=NAx91)nl z-p=O4zOKKo*U!8U)Z{bCe^K|J7B@9EH+FRHYBV~-W4i1=1^@rA@iJJlST29@1;bp% z@1K7z8wJbtpDzHFJX1)fFXjvU0>gseFNlKWax%Ux43(0p@-o{0`{%#51pe;5#Vh^7 zE3)&H%&v?pW1@%c$(ot*S{Ldbk6`!U`+j|+7_YD5(@|;Pfr^43SSN&6=}FehDwo+6z=XUT=Lm4X`-DOd5%SG0yQ z?ehw)AY%&MY6~kSwIQ3f$dUiEIZQ%Aca`wq(^(GsIe+%kd8{)# zZfb$)XW5o8mryO(F3w4;@+Td&BtM;(lEmBZv9{Mc%;kKMd9?sdqCfd65*JjUh{d=150OTh6#C^zfj$;?N_GucgfaWw^| z-IW?(uyj$bx7)SeBI!MR@Uca6E{UC4 zRaSeWlVMPcbwsaV601Fu0resUJpM#RkN1pBYMppGuR^M01NjNZtu!hv$E!^&>7KJ? z%j*oZib#4 z(s}-h>SwqDKg;F&w-tQKx(=P?WLDfJy|UbqZn4%^)ScEu?3NaeD6HEQ?;l zUka$Yl~1vE3*TpZMZx~aOWbUWnTxZ;p~CqmoBcp?ub4QI-Yc42j>|`Dt2%E|516_5 zbWl6HeDLY4%E3YWf0U~nEa!r=ZT=PBC5hO6#=;SZFuE~a8SC+8C=ZYO-NPZO8!ap`=-lX_y=l=i!lNlh=& z`b#(y-eK-vv?mg|U*W-j$vx@s{QX6@_BmD*A-T^juoaW_y1vRa8cq|*H~bX zPt>RJ7;_bXEvuf!o4}ft`%xJK{)W@jM^uBg)sArRuEYVqMaxNKm|@<$qI&N$sB2Hk(It<~6~9-vcy8oA+zTf#AS!yCc!RG{j~DH}S-P1o5*+ij4N1Nmg!fGJ zo-OQP=sinFG~USqYrNybARaDPbJBHBs4`+(wKhD;U9Pn-+S`d3>r~=s&tX398MRy; z7fvLNjIUvWfRuU*6poNsGDyd8WFT^Z7q=&CAdNm8zdmtiz(Vmsi3qsAezjgZErwIP(+8r zt^wU+nEt5D&C*g+f!lMGe>S>hQr`cAeLwL$4J5$UqQ`(3XHV_~fWXH&9gHO&JUNGY z2Sy@JE0b*uIy~H;?RZa!%B9DuQv@z138-k1tXcekdHznzJ#GaVpHo$l|BP+ zmMZPVRL7Sjsv7Y|=}Y;9rApG}gC3KA^}#7kNu8|ZuNHnTqoqn4NJRz62v_9CXgeRV zYaL0#h}~kQrWa@a^?{cuV z`m{Mc0pgAB${L`pZb^er|64Dbxkpbc7MP#*}=?{mdX#AV`xJlJt2gy!eS*H3^ zU;}uNgoXZ)TU=}&xP`Ggqmqxy z9_r#PtA}(K_s&o+O%^v+Kc&5uIw>S5z0e{|o61O6^-sUGItBy9B;h)SV_DgM*kf?}n|o2@9`EXB(yUc;lq zPF9ew6!1!c;pSmkxC;uEvXsJN#Z^#*4>i2n1#{r)b@67rIo9QJd^$1mKJ6IGM)hr{ zF3eH&T#xC*GF5LF)%TyeP_L5R9)v+LaS2uQ-M9Dg$EUOd4w`9Ix|6N4Gf8`&;lEVV z(j9+Nqt%59R+ifx2}D<{T5Afc;9}L zqq@qMig9_WD=*~EQ?bZn7#sa5MC+Nimk?a}Qgxq!3P#-i6n1(#der5Dje^5aB4sK= zOSy$(@RHpS;h4lJ*thd4xg4r;%~XvEnM&`NXi+#55FmWQEtRsAO0h^=zd*=Vp7Oc4 z8>k}0<+Ur(gO(8ibY&7}eO8FtM?A znha|H1GNXD8wf&(8kWrPjJzMndJQ79^}I#V-7ZzJO@0u`o86(W_knF>fRSU#yIAO=Lsq1c%ws!f^C3BCzoA{(!hfa+(5sg5)rL z{~Tv)cU4=Mh>&XDv=xB;k(kOxkAR|U0zHjH4~Hd#om8-s;_lMpT)ueMknSGRK@pp* zB~iG{W-{Yo#os;N%lPJu*D=uzK5jgF+~xS7z+t-o520}+X~tdd`~SdCsQ^bM!3#Re zMT9f*(CU!(LesnD=hR`DA7E z@I=`(Vune}G@OMb3v-r&sYDN3wbyG=0)vlaKr99E3bxxbvao^e@+K-nUB?g1S5fn1 zB_v|(7ap7UybRL9dAW?yw}@_it5~f2#Zp}nm3ok{bVJjp2Ql7U(d_s%=&|kZ$MFyf!2aVI-*JY#8Z!;`50^xY2PFR}(bZ!B@yQpVsAA_m~ki9R#fP(Zs}BKk9mcNDO;#MgP?jHu5%op1rV4G7 zGfYk^hIS<@L<5Tfu!QTe_F>+;^b~-GDzu#dJ>}qDEi6#9jx1>&##{J?9GTK?UT{sw zRXCm`Spb=cdAf~HzShN5lEqQ3?P0E!Fp$#Z)U{s5Gd3A6ctcjMJ;fONIpjU6{gNiL z3qGcKsMpWC$Y0QQrRg?t4ivo1EyblC0O6(TaddcJ1V7h4yV{%sPOD zQLU!}Oz_r7Y%Jlfp#!41jK6TeP40)bH7zg&%Gsc7)_(6qP6Cv7l4coGJgLGW65~$^ zS;|vyfcDP`1~dIAr!^Ld$(Cu2%|^tZ5^`KIzWW?sr~??DF9GexJBkMS`(q9QVqgHY z79H;_;*$VBfDNO6)Dgw&dj0jfSP#{L_QPy3IfgQ&-IG1p2f!a@_Zi65LO*;lqXKAD zno|D*_^+D(nix_wBsnsb%6j2;_9WO5_&X^6JwC|l?J5g zL|i=-<=nQ+W7_};i%F1J0>4g!!UV67ZVxRTTB=kHXj`4IlY?1!_d6z`XkTmEMNLm< zX}e~cz6L93thT@69Q1M-VN?bGSPp9(-NGrE47QpOaIWJDC;kkI{T-9jbygTv_Q28U zI>B?Zpa~~<(u-4YVyN;gKe~rBevOl!U9)M!hFy3KZn|AMi>F!Jor&FaTc%{M41}nP zZ>M!VFBe)L-D0oo*&N*fVlTbHRDJk&ywA>K_jCmkd(hq;Z9+oQ}#^#}mC1qBSQX+{^Zc`_dhk)J`|; zKo}0>mISY;>%xID9&3&^p-0oOf`t*d8iRQikYvweViH^e7yRdEsAe5%2Ip3MttvRT zqSFnH`#;mecJOQ3)P%pCaWYaXo%YJKPYQQxR>C$da3-`mJb$rrKS~WO#_RPw^O8knm(Zh%={CI}x z^_5fP={VOB=NLPTpM{p{` za=Ch;p0bZM{J+ABKPPJk<|9Kaos$E?^D=DV_hhHc1kGM-_ZF+r$o9hH#YWo|xxV>_ zr44MLYw)5N{6GYdIYhW(?oB-aZ)SV>csIa1dp#DsgX5W9T!OTNU1UC_OljkplfjFk z@chgSFbuXcG0jkuWuhM`sVx&o1&NEbH}ic(+}-t3GaD%HW33GMz%<)l2zjio6#lZi zJ)rIv?qQwHY*O?{T0n)j;A~_q)*kIUj)`>82#AHXicyu8{-7`4@i~|C7XTy2-^?HO zoyZCBA43g-NlRjEkwxB?-7UmeQ`Sf#)68GGp9<1NA^Qy zhet=Sht6157)I@T{P2Ft;N^sfVkr3N0+R5tE%|U?Z%!KpA%GCd4)(DbwBXO3(iq&h zG#-;Pbb$A2lbJCeCYeHJo;Pb%0(Y5I1-`;8vb>LS!G2z=<_RyP-IUgYvkcVxQ>YI( zRTSo)yuCsbW{fnqN!u3#MzFXu4RAZbODrBI8?mP1R8XiO-8ivVt&qmCbgG3(@3^c=qv)Mj=p)7~gf0ru6T>@!?MhrQfT4id{=K?QqSF?I z)NTXDB${+vA6mG{KnP3u!#R`O6$G@S+D8JqbHn9;2Q?^E1Q%4yR8wM(WmsxO@E<+e z=OV`hT*EOKH9VM)1kGR;o2Xs8kLYw64$K}EAwrR&r<@ev{17?VobnJhCD-1wR$siu z`p8abNAxfn?-NG-DQPNjBN#{+XmDh+ogNFHK;Asc;E)XPnu>D}Sj_syKoV#CJ{Qlr zBM7WxB((1fVXy^6>>|UmD*Qf{#KQ?f$eXG_lm_pViwr?BLaKrY-s@1f2s}tb3qpbe z!r=SLQn+F5jRGysg%iu*FXm{k6liHK?h~p@bE(LcPPm4u;QtQofyNwlaPdYyaUa z7AP|i7ESIM8l25&HRckMfqXs^$l3X3!G(wPIHc0Gpev-Ec6m}Mocm@0iYOuDFoRFx zj3EgX?(~Q&x&h?L(aTjM1JEw;P##?oR<$QwumJGEWtZ?P+BC5P&|%1wbO%!_rZ7QquF;kjYa5(B7n#&pF0~u^j0wTU zAbBcUq%G)WWFlfo8tQd9zI4Vj*=3B|&+l>5@20KpPS(Ukk4%&mhieBA*Y>CIzZK$? zQZWge(YKdKCZ(2p3jG!r7pE{>awj;$LNMCMOukl%QO_J%=2Zl7jQGDDf8tCOC-1`J zUmee9XwNOir2vTgjpT*)bnS&AB$IHQ^#ZzH=UO@iCn-4*Yqm_7meiKp*kMrwZ9KN3w>8(g)I5Jzt%4K*c@S z#~9RUpD&8hkEfIWnf!kcw82~VSG*PfB>_@>F)2N|VPZu!k@#N^4`Ra;?qD#XY%BIEIjZ0C`;CLTJj^KcwPj$L!WN`dU4 z%Gpq5uY%2{YT#=s+;4aT5T2{o%_r~0?Fp!G4``~cE`2i&eU~EyticjPUr0i-1=DiO z(B=1dN99WIIa%7odf$<8EK$i@V%IbLGM7%E*KnwIPDW!TK>d>UM@2CE*fHS{E%&AB zTRcfaEknQOn8U{rXp0cDU;SrvQxL#s?)vFaUVJ@5o(?_NcUZm6>Jf-!Eoev+R_&%S(dg0Ao zZaTWLiJ##h=F{2S$6$@JItNvJOd(>MM5^PdQ5>Gktr&p2(mx7U34u6T5f^bEkk7E8 zs0zp2X>c?R{~(^SA!A3z_yo-5B+MaT#wOK3$Y{4A0mj4kgCkPOM^&Wmk!OnK5BzLZ z$Vfh6ks;gy8SCB%rBuRIIBeF%B&6yu4!|1qd(Ox2RY}!Cl!>8iOOJTU!o*YDajlf; zH~gc)5}Uq|pGArRufkx>4v3r5xLAolMOh3&eq9vveY3S?JdGx9K|dUx?sJn15G7C1 z5GuJV{lOBO(H}t|X1>)8f;jt!b5F{^r)v+meRjA_Q`*0{C$*9VAVZ)}!#O}if442T z#yyia@-Ou|>A+xy#utScr~T{6BW^C#sI)}P7Y@cf+UjTiW~by-9@Dpata^dRb|Rm% zo_HHv;~x=1mZnGa^jvp0k&U_oLWl{Vmbiorat#?|5G>Mn05=1KJ4vFjB8S5tn`wDn z9ISPp0~RC!LN-iPA|?us3LZCMNZiU;KTBu2xbEQU3&kp;0hcJ`_D|FJk&!Z--&q8T ze_ch813+#{3(hU1kC0ni$;YBJdX^Xwo6lyj`Yc^uL3H+U-V`J}>4_IVZ{Ul4Cp*&S0$eBfPmwG!NG$a?A~wNrXqJp(kktIkWhf zLe*p+h7hb4^5^IlJ}zI~@2x4qwCik$h(IJak+`e?I#*)jJ|s>+8C7PI(5EEbei0f; ztAkeD!v~)NpjJ~Prcx9}x@9aPWJ^&xUj_ofN4Yu3Zo{Y`b%0YREJ`HsLVjKqep$q2 z35SZfG5(Y>q$mPr!kjsR>A)!jZ|)7bxX%J=kt{7NUMftdFgd(!`p;48 zZ@-FKRhSQ0*3)Jt$NO2)NFmG6(PVUEw8;5EQJcGc7}sVZ(Jj#;YH4@1g;g9M&3yYA z+{&YCZY2w0TZ26oKcjopfH+sUgB|)KSfIz0afPp6IU?GTxi*WY1>6@C_PJb~Jq5;T zN?Ojsf<$nCF1%^$WMJ@>g-8MTC3vv=;6cHCDwD)?*IsngNw&?-N5D{+Ys4Xt$LGey zllf;o^+q8bh19d2&2VWRdg$SLOswaD{lJ+)8G1mR1K(TBIlJ7~Snp4L!B_7_otaMa zZguUa3x+sirk**gpPz8Mdc{9ktj?{>nA5A^rb`ONv|~Mwxx~FV4xbH5n?{jTiSOk% zxwQXLEIQND$M(3!9OGOv0<-Tpu&LZzQm!J$bCX`oi!O_4%wG%uqEH6x%o*%V1N+q( z>@cxoa&cEFVH4*gPPCj7iH=1p5IwjTIv z6mI+24CA(=XJXxLIRSA&dU|BUVx=R^_>xjC0XYU&y5r;FuxOoN9gJ;)J2&C3aj(8I zJsegeg*Nv7KZq8aapVxjan0R~w~6uI&v;MaHqF~|WWb(EjvR04@4v#9(~Tl~4qQ|F zEY#}k;N&9Dg>iTx!7 zINlls?pi=BA#bjmfv}>7SsQ~A-X=ykDMt@G4>Is*y~@Ni|9(Z?^9Qiam!y7&9|D9PU>Jf4z9`GlM@}Y-cRpG%v8oW7jWg zjET*dlGrRMGz&Ze%dTl%@QLF?(>hmx!-hmXQRJyJE(c8zKF?1g-qaCHqs~I}$bSS} z9N5l52G^be29U$0JoQf(b1PzCyIY_|34kO?0Mjy@puOR4~tfW#5usf zY9P;GTI~){!r@=J8V-lA4~d)Xfi|j?r|YAel6j@V_U-xF^nC5*`Q(NPC*(nw=rkNTgI470w?l(3mN=PM)MlB*neZJ% zKMmv)B8!F#p2+W0yo!&l&e%yG1$s7O$C6GrOK}#4VDAp*#4=p-qe#=T8`bF=p`&23yQdq;xDG^M#f_5GAcgTJ})s)G0mvJ*o2M7NCx*T ziH+c7UIk~S7!_XF6N-duF|`OxtMV5bnaR|FPNWZGTa#D`)3t-`to)5w4zqYvoa>tp z8+laBt~~0=yVlNJb0s_e{Td}W=6OLY_^p!sTeyq)8@PA!i@CS*1@86yHQZ}43DOx& z&%?+MLzK`nJFadls26gS(qrM05>?8|pRc_n~PLAoA_C_fbtOpITX~z>7ATYEVSKgL-pJbsOxOs;IxQ*;% z-b~y^d8|BC1(OU$tfgRNDxg}DV3qtlF8biyEuTj{_){aex*Lu_eTYG>kcueKsA%{I zyu;iZ(l*SEaF~^P5uMy#;_vn*;S}7c3|z15G3sK8Q0%U;1Y`*3Aks_h3%(>NNqJUF zD8-40n!l8r#Pt|{bY!X?5}h1Y>lwQRMjbiP`aI~t1r{g2k8Oqkej&0M(yQ12&A7M! z(B^&KWJT&@k^2^eepc%%#r=`Q5zLFV6lb?r_JheFRpZzRCQ7V`0ikXrLTDSr)P0YE ziSV#%KfSpWD>9UnG$Vo+V3))xDa66Suf0wb$9%9nX`~79?aX)IuI>)fdr%CT%IVR^T zhEnH^?APPYO!|i5G!nbtH~Os-ld$K5;s`DWP0?q6nEM%Zs0u$K37^UfNy&;Lu$alX zybvJraE%%}S|voOEut)CJ$J@G&86brViNuk05=9XQxBIo^$s-k#dkbr~FA@ z{xQrujm;1Yj!I|P!11IdxGrvB(tPxBFHz){NGCTqE*EpDi6&-n2Wj}smx}4bdCXj> z*c&pPMZRe~-$JtMEtxY3Z^}K7mEi`5y%fayNSHW2EXwC!z_k;k+2bJCQ@D8_43{vB zM^dCJX&ruV#_w%Xqg1>5a_fb)jrX>;buw#O?rUgndbhd}pNn3(v8}DOjj3t9yt;LF z%MNB^XG=%J)mY`qhL)Dr%NrW+YHho>p@XSuxVQ0nWl$_vW>X8E zYa6z=0bxVquEvJT+rh_Wam)IxMV^HfiwYM!&r~;l-m?4NI~zX{x6~|()uVR#oeeEJ zT0h)Q{WZ3~B;K~D2DP`g#42{Y(B5!geBC;}uKLD}D_7pVbLr-Wrj89eI_uVNs$Ivg+sUt~*?3aRMu&Cy<}{V?WiuR*IXI z_=`OXa)p0bswatQxV>o?o?ot~iV4C=95M0ZGX(M~>ISyAf3kbmp}G@$THD@j>*zMs zz1G~+64|{AU;n;?{*Jk^JHBq@)|#1bQ{B2l>pDK!-nyePrEYXb>z)=g_Y-pST|hZU z$U9mNt-A5#j>Zp~8}I5kRClb+*ps@=b?eUUYHrvbxwoP1o|L**sTIhlcQx#c^>?JpzG3pQ- z)S+g>cYEX>!Vlu_cg6b$k??dK%|?Wd~v0*-Ct_U)A`*FF-AZ(cjj%t9kkMMg!?Ib+f5am{mqvIpkjy589s^g>PhW5+bcek~-wi%c~!n|nd;?({czH|~ZQTW}~^S9?p*Y0S{Y_QsCxxVl;uBBamw zy4q8)iIHZ*PEre`aBsssP}Pr{Td3T>e0N9d!X}VLVU$R;H8#`t%OJ76xs6D?y5r6d zHtuTJ-qf;_imz>kxLWsgC)Cx_95i+qxWSc;Egg*p{Mm0bw7uWaaA!Nw3EkAW>+Z&u z2C~?MJ-Dl_bysT}6&soj%oD4dcelR>i2?dd+wNu%vDDQbU)9u(x%hnLhIT?bcYDLf NGjq$Q{9oGH{wKiUo$>$x literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u1/ZDE16.DIR b/Images/Source/hd0/s0/u1/ZDE16.DIR new file mode 100644 index 00000000..a6e85025 --- /dev/null +++ b/Images/Source/hd0/s0/u1/ZDE16.DIR @@ -0,0 +1,25 @@ +ZDE16.DIR: +Files in ZDE16.LBR, 01 June 90 by Carson Wilson: + +Filename Purpose +------------ --------------------------------------- +SAMPKEY.DZC Sample key file for use with ZDENSTAL. +SAMPKEY.ZDK +SAMPKEY.ZDT + +ZDE16.CZM ZDE itself. + +ZDE16.DZR This file. + +ZDE16.FOR Short RCP/M description of ZDE. + +ZDE16.NZW New in ZDE version 1.6. + +ZDENST16.CZM Installer for ZDE version 1.6. + +ZDEPROP.DZC Proportional formatting support files. +ZDEPROP.ZZ0 + +ZDKCOM13.DZC Key compiler for ZDENSTAL. +ZDKCOM13.CZM + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDE16.FIX b/Images/Source/hd0/s0/u1/ZDE16.FIX new file mode 100644 index 0000000000000000000000000000000000000000..9b48f026a585a40fcc4304529bc31027dd52864d GIT binary patch literal 2048 zcmeHH!EPHj5bb$^{ehkazE}oqS5DC)$xV@BG(chnv6CRaQOj8^VJ^v%T&?x@eIzAI zO>#*uy@Y@yh#bCo^WF^a>`N-^e({>FF8`#Dfqkf}Yj68>4Xw=2zkxU8$Xddo~7R4+Uk z8&$)SVkaUcG8^zvNSsKGcF;0~JfVDpAE>Sx>peG7ZwdE06^Q>Hljqy6Iq_qYKY*>he885N^=@X=uvE+ zXa#2tsE z#ErVTzg;YE&*=?~s6{~SoEJVkkhG&A0Z7)WR|aNg_B&G`(<~e(uB$Kv2TfC{`>YUF z4h0iDq-t9*GY#}xaU291grV`-`=GJ&IyDkmy$&%8)1~z;)K#U1>43E z=b8Etlv(Grv+GmxyjB671dO`6>yi_=FGyRnzQ}n}ba6K|Pws-4a;OjnK3G-QMHW4P zSm)}JLb*Lvq##<(i0sH+mjx| z#RHo&G*=jU7gJ;BPEVR17q@Hmy7Djx)@><7i%L`6M(85@iV5@P(0S~<|wWL7P0?SQk?^J${@Lx&;VzXNjhMvy_p`hCUoX>3m0ro2l#nmb=&HhpTC$>$B!lI@I8HAb|*Lz?YU@A3!&>jcKdD!c<0))J, +RETURN" followed by "^KE, ^R, RETURN". The ^R command will +automatically recalls the filename you entered in response to the +"Read:" prompt. The Find, Replace, and Macro prompts work in a +similar manner. ^R Recalls your entire response; right arrow +recalls your last response one character at a time to allow +further editing. + +The Recall keys can also be used to recall the last used macro, +even if it wasn't entered manually. + + 1.3. Enhanced Operation Under CP/M Plus and Z3PLUS. + +ZDE takes advantage of advanced BDOS error handling to provide +slightly faster file output under CP/M Plus and Z3PLUS. In +addition, file Create stamps are now preserved under CP/M Plus +based systems as well as ZSDOS and ZDDOS systems. + + 1.4. Control-U now Aborts "Delete To" Function. + +Control-U can now be used to abort a "Delete To" (^QT) operation. +Previously, ZDE would attempt to delete up to the next literal ^U +character in the file, often causing frustration. + + 1.5. Fully Operational Auto-Indent (^OA). + +Auto-Indent is useful for typing outlines, structured program +source code, and other text where the "left margin" varies. When +the Insert (^V) toggle is on, Auto-Indent aligns the left margin +with that of the previous line. When Insert is off, it causes +the RETURN key to act differently: RETURN advances the cursor +past any indentation when moving through a file. + +When a new line is begun either by wordwrap or reformat (see +below) or by hitting RETURN with Insert on, Auto-Indent indents +the following line or lines to equal the previous one. It does +this by counting the number of spaces or Hard TABs (whichever +came first) before the text of the previous line, and indenting, +wrapping, or reformatting using this number of spaces or Hard +TABs. This entails certain possible conflicts, most of which ZDE +itself automatically prevents: + +First, if you mix Hard TABs and spaces when indenting a line, AI +may give strange results, as it will count and use the first +character only. For example, if your line is indented as +, AI will indent the next line with +only. + +To avoid conflicts, enabling AI sets the left margin to 1, and +setting the left margin greater than 1 disables AI. Also, Double +Spacing (^O S) is disabled by Auto-Indent, and Auto-Indent +disables Double Spacing. + +Auto-indent status also now defaults to ON in Nondocument mode, +and OFF otherwise. + + 1.6. Chain to ZCPR Error Handler. + +ZDE 1.6 will chain to the installed Error Handler under ZCPR 3.4 +with error #12 (TPA overflow) if there was not enough memory for +ZDE to edit the file you specified on the command line. ZDE does +this because the flow of logic in a multiple command line +sometimes dictates that the editor complete its task before +succeeding commands are carried out. For example, I use the +a multiple command alias similar to the following + + ZDE file;echo erase;if in;era file;else;mv file newdir:;fi + +to process modem capture files. After processing each file with +ZDE I generally want either to erase it (if it contained nothing +worth saving) or move it to another directory. But on occasion +the capture file is too large to process with ZDE. If the script +were allowed to proceed, it would force me either to erase the +capture file or move it elsewhere, neither of which would be +appropriate if I hadn't even looked at its contents yet. + +This is where Z System's error handler comes it handy: it +provides a means of dealing with an offending command line before +unwanted commands cause harm. When ZDE chains to the error +handler, I can _edit_ commands beginning with ZDE's invocation, +either removing unwanted commands or inserting further commands +as the situation may dictate (it is also possible to abort the +command or multiple command script altogether). In the above +case, I would revise my command line to the following: + + NW file;echo erase;if in;era file;else;mv file newdir:;fi + +By substituting the ZDE command with NW I have invoked NewWord +for this instance only of the command, which in turn will edit +the larger file. + +Without question the finest ZCPR error handler now available is +Rob Friefeld's ZERR. There are even provisions within ZERR for +automatically editing LSH scripts and for automatically chaining +to transient versions when resident (RCP, CCP) commands fail; all +of this is described in ZERR13.LBR. + + 1.7. Return to Previous Position Command (^QP). + +This function is basically the same as the WordStar command: +hitting ^Q-P takes you to the position the cursor was at before +the previous command (including the ^QP command itself - try +it!). For instance, the sequence "^B, ^Q-P" reformats beginning +with the current line then restores the cursor to its original +position within the paragraph. ^Q-P is also useful for moving +long distances within a file without losing one's place: for +example you can move to the top of the file with ^Q-R, then come +back with ^Q-P. + +Within Macros, the previous cursor location is preserved: ^Q-P +will always return you to your place in the text BEFORE you +invoked the Macro. This not only allows you to resume editing at +the same location after using Macros; you can also build one or +more ^Q-P commands into the Macro itself. See SAMPKEY.* files +for one example; I'm sure there are lots of other ways to use +^Q-P within a Macro. Thanks to Howard Schwartz for keeping on my +case about this feature until I finally discovered an easy way to +implement it. + + + 1.8. Global Find/Replace Option. + +Besides "B" (backwards search) and "C" (case-sensitive search), +ZDE now sports a THIRD find/replace option: "G" for Global +search. ZDE normally begins your (backward or forward) search at +the current cursor location. Specifying "G" causes ZDE to start +at the BEGINNING of the file when searching forward for strings, +or at the END when searching backwards. Otherwise, the search or +replace command proceeds exactly as it does normally. The "G" +option is used in the same way as the other options, by enclosing +it in slashes as a prefix to the string being searched for (e.g., +to find "Carson" globally, enter "/gc/Carson" in response to +^Q-F's "Find: " prompt). + + 1.9. Semicolons are now Characters in Nondocuments. + +ZDE now counts the ";" (semicolon) character as a normal +character in "N" mode, whereas it counts the semicolon as a +punctuation mark in the "W" and "A" modes. This is mainly of +interest to assembly language programmers, as the semicolon is +often used alone to mark the beginnings of comments in source +code. Treating the semicolon as a normal character in "N" files +simply makes it easier to manipulate assembly language comments. +Thanks to Rob Friefeld for his thoughts on this. + + +2. BUGS FIXED. + + 2.1. More Robust Space Calculation. + +ZDE's calculation of memory space remaining is now more robust. +In past versions of ZDE (and VDE), certain editing commands could +cause a crash when only a few bytes of free memory were +available (thanks to Rob Friefeld). + + 2.2. ZCPR Line Queue Bug Fixed. + +The ^QQ (go to next line in ZCPR queue) command of previous +versions of ZDE failed if ZCPR's 16-byte user-defined buffer was +filled. Version 1.6 fixes this problem, properly returning to +the first line in the queue after the last value in has been +reached. This allows Turbo Pascal-like interactive programming +of Z80 assembly language when used under Z System with Al +Hawley's ZMAC Z80 Macro Compiler ($50 including ZML and ZMLIB; +contact Al Hawley at Ladera Z-Node, 213/670-9465 (modem), Ladera +Heights, CA). + + 2.3. Other Minor Nuisances Corrected. + +ZDE now turns alternate video off when placing the cursor at the +string to change during ^QA prompts. + +A bug which allowed an extra character or hyphen on the last line +of a paragraph if the line's length was one character beyond the +right margin has been fixed (thanks to Larry Schnitger for +spotting these). + +A bug which occurred if you set the block end marker to the last +byte in the file then did a block delete has been fixed (thanks +to Ben Cohen for finding this). + +One or more bug(s) which occurred while printing have been +cleared up. ZDE should now always give a correct left margin +with or without a page header or top margin. The printout is +also slightly faster when left and top margins are used together. + +ZDE now always finds strings located exactly at the end of a +file. + +When searching with the /c/ option, erroneous results occurred if +a non-matching string of the same length as the search string +beginning with the same first character as the search string was +located at the very end of a file. This has been fixed. + +Fixed minor bug in proportional formatting that caused repeated +^B commands to give inconsistent results under some +circumstances. + +Fixed bug which set margins spuriously if an illegal number was +entered. ZDE also now disallows setting margins to zero, which +caused formatting problems. + +^B (reformat) no longer absorbs following commands, allowing ^B +to be embedded in key redefinitions with SmartKey, etc. + + +3. INSTALLATION. + +You MUST use ZDENSTAL 1.6 to install this version of ZDE. Older +ZDK and .ZDP files will still work. Due to extra installation +codes, .ZDE files created with version 1.0 of ZDE will not work +with this version of ZDENSTAL. + + 3.1. New in ZDENSTAL Version 1.6. + +The proportional formatting (^OJ) toggle can be disabled with +ZDENSTAL to allow use of ZDE's proportional spacing table as a +patch area. When proportional spacing is disabled, an additional +96 bytes of space is released for custom user patching. ZDENSTAL +also allows you to set the proportional formatting toggle to ON +or OFF at startup [this can also be toggled while operating ZDE]. + +ZDENSTAL's "R" option now restores ZDE's proportional spacing +table to its default (as distributed) values. + +ZDENSTAL's "F" option now gives the locations of all FIVE key +definition tables (former versions left out the ESC- table). The +"F" option also gives the location of ZDE's proportional spacing +table for use when patching ZDE. + +The Osborne 1 and Vixen terminal definitions are now separate due +to different screen width requirements (thanks to Ben Cohen for +sorting this out). + +ZDENSTAL previously would overwrite .ZDK and .ZDP files with the +wrong information if the .ZDK or .ZDP file had been archived (bit +7 of filetype character 3 set). This problem has been corrected +in version 1.6. + +Some ZDENSTAL messages have been improved. + + +4. USAGE HINTS. + +The following are just some miscellania that I have picked up +from using and working on ZDE. + + 4.1. Saving Macros to Disk. + +Under Z System version 3.4, it is possible to "save your work" +after creating a working Macro. First, be sure to save your new +Macros as Macro Keys using ZDE's ESC-# command (see ZDE Manual). +Then exit ZDE and type + + POKE 310 02 50;ZSAVE 310-490 filename.ZDK + +You have just used Z System's type-4 SAVE program to create a new +.ZDK file, which can now be examined and installed permanently +into ZDE with ZDENSTAL, or further revised using ZDKCOM. [NOTE: +the addresses and values given above will work for ZDE version +1.6, but may change with future versions of ZDE.] + + 4.2. Creating a Smaller ZDE. + +If you are SURE you will never want to enable the Help Menus, you +can create a slightly smaller copy of ZDE. First use ZDENSTAL to +disable ZDE's Help Menus. Then issue the Z System command, + + GET 100 ZDE.COM;ZSAVE 100-3E7F filename.COM + +This creates a copy of ZDE that is about 1 kilobyte smaller than +the distributed package, and loads somewhat faster on slower +systems. This procedure is specific to ZDE 1.6; do NOT assume +that it will work on future versions. + + 4.3. Using GET and GO with ZDE. + +Some users have discovered that the Z System GET and GO commands +can be used to extend ZDE's versatility or save disk space. +Since the .ZDE, .ZDP, and .ZDK files used by ZDENSTAL are simply +binary images of various portions of ZDE, you can achieve the +versatility of having several copies of ZDE without the added +disk overhead by using Z System commands that "install" one or +more of ZDENSTAL's files on the fly. + +For example, if you used ZDE with a particular terminal most of +the time, but occasionally switched to another terminal that was +incompatible with the first one, you might want to create a Z +System Alias which would overlay the default copy of ZDE with +your second terminal's characteristics at startup. You could +achieve this by first using ZDENSTAL to configure ZDE for your +second terminal, saving the terminal's characteristics into a +.ZDE file (see the ZDE Manual for details on this). You would +then ZDE for your normal terminal, and write an Alias to +auto-install this copy of ZDE for your occasional terminal on the +fly: + + GET 100 ZDE.COM;GET 180 term2.ZDE;GO $* + +This command loads the file term2.ZDE over ZDE before proceeding, +providing a temporary copy of ZDE that works with your second +terminal. + +This approach can also be used to generate "virtual" copies of +ZDE with different printer codes and Macro Key definitions. The +addresses of the various overlays for ZDE version 1.6 are: + + 180 hex - Terminal codes (.ZDE files) + 1F0 hex - Printer codes (.ZDP files) + 310 hex - Macro Keys (.ZDK files) + +[These addresses may well change in future versions of ZDE.] + +Obviously, this involves some "homework:" if you get the +addresses wrong or use an incompatible .ZDx file (from a previous +version of ZDE, for example), you will likely cause yourself +grief. For these reasons I generally recommend simply creating +multiple copies of ZDE. But under some circumstances (e.g., +laptop computer with limited disk or ROM space) this approach may +be quite rewarding. + + +5. DEVELOPMENT HISTORY. + +ZDE is a descendant of Eric Meyer's famous VDE (Video Display +Editor) program for CP/M. In 1988, Eric produced his final +version of VDE for CP/M (2.66). Eric now maintains VDE for +MS-DOS only; ZDE continues VDE's evolution on Z80 systems. ZDE +removes many of the CP/M VDE's defects and adds such features as +support for ZCPR, ZSDOS, and CP/M Plus, improved terminal and +disk I/O performance, proportional formatting, file datestamp +support, and improved installation. Meanwhile, the MS-DOS +version of VDE has continued to evolve, now boasting multiple +file buffers, auto-save, auto-number, and much more. VDE for +MS-DOS is available on computer bulletin boards (including +Antelope Freeway; see below) as VDE152.ZIP. + + +6. FURTHER INFORMATION. + + 6.1. About Z System. + +If you are using CP/M equipment, you have probably heard of Z +System. Basically this is a downward compatible replacement for +the system software distributed with Z80 CP/M equipment. By +utilizing Z80 opcodes and advanced design techniques, the authors +of Z System have expanded the versatility of the CP/M operating +system far beyond its original limitations. To learn more about +Z System, log into the bulletin board listed below, or contact +one of the following: + + Plu*Perfect Systems Sage Microsystems East + 410 23rd St. 1435 Centre St. + Santa Monica, CA 90402 Newton Centre, MA 02159-2469 + (213)-393-6105 (eves.) (617)-965-3552 (9am-11pm) + + 6.2. About the Author + +First, let me take this opportunity to thank the community of +users without whose support this version of ZDE would not have +been possible. You have made ZDE what it is through your +generous contributions of time and/or money. Without those who +appreciate (and criticize) my work I doubt I could justify the +time and energy I've spent on ZDE. In addition, many of the +improvements and bug fixes in version 1.6 result directly from +specific comments and insights by users. Please continue to +share your thoughts and experiences with ZDE; I'm listening. + +I am a doctoral student trying to keep from starving while +working on my dissertation in Political Science at Loyola +University of Chicago. I am a coauthor of ZSDOS, a commercial +replacement for the BDOS portion of CP/M, and have authored +numerous CP/M and Z System programs. My interests include +computer programming, telecommunications, the Soviet Union, +Political Theory, and bicycling (not necessarily in that order). +I am also looking for part- or full-time work. To this end I am +skilled in political analysis, know the Russian language and the +Z80, C, BASIC, and Pascal computer languages, and have +comprehensive knowledge of CP/M and Z System and working +knowledge of Unix and MS-DOS. If you know of a gainful opening +in the computer field, I would like to hear from you. + +Among other things I operate the Antelope Freeway Remote Access +Systems for CFOG, Chicago's First Osborne Group. These dual +remote systems are available at the same number, 312/764-5162, +Chicago. Antelope 1 covers CP/M and Z System while Antelope 2 is +dedicated to MS-DOS support. The best way to contact me is +through this board. Registration is free. If you are not a +registered member, you can leave me a note as part of your +application. + +Alternatively, my mailing address is: + + 1359 W. Greenleaf, #1D + Chicago, IL 60626 + USA + + 6.3. Pre-Printed Manuals. + +As I mentioned above, I don't plan to reissue the ZDE manuals +with the library while ZDE is still in development. For those +who wish an updated manual and/or wish to support ZDE, I offer +instead a pre-printed 40-page User's Manual and Installation +Guide with Table of Contents and Index, postpaid, for those who +make contributions of $6 or more to support further development +of ZDE. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDENST16.COM b/Images/Source/hd0/s0/u1/ZDENST16.COM new file mode 100644 index 0000000000000000000000000000000000000000..8ccc976739f96507289890bf7df565aba040127e GIT binary patch literal 10624 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 + db 0 ; ? +; + db 6 ; @ + db 6 ; A + db 6 ; B + db 6 ; C + db 6 ; D + db 6 ; E + db 6 ; F + db 6 ; G + db 6 ; H + db -6 ; I + db 0 ; J + db 6 ; K + db 6 ; L + db 12 ; M + db 6 ; N + db 6 ; O + db 6 ; P + db 6 ; Q + db 6 ; R + db 6 ; S + db 6 ; T + db 12 ; U + db 6 ; V + db 12 ; W + db 6 ; X + db 6 ; Y + db 0 ; Z + db -6 ; [ + db 0 ; \ + db -6 ; ] + db 0 ; ^ + db 0 ; _ + db -12 ; ` +; + db 0 ; a + db 6 ; b + db 0 ; c + db 6 ; d + db 0 ; e + db -6 ; f + db 6 ; g + db 6 ; h + db -12 ; i + db -6 ; j + db 6 ; k + db -12 ; l + db 12 ; m + db 6 ; n + db 0 ; o + db 6 ; p + db 6 ; q + db 0 ; r + db 0 ; s + db -6 ; t + db 6 ; u + db 6 ; v + db 12 ; w + db 0 ; x + db 6 ; y + db 0 ; z + db -6 ; { + db -12 ; | + db -6 ; } + db 0 ; ~ + + end + +; End ZDEPROP.Z80 + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u1/ZDKCOM13.COM b/Images/Source/hd0/s0/u1/ZDKCOM13.COM new file mode 100644 index 0000000000000000000000000000000000000000..040fd1c44422490fb89422af1bf71dd7681b3586 GIT binary patch literal 1792 zcmZ`(Urbw77{BfP*A{w8*GaCB#Z&rnSF}iBj5W|K(hW`3nT+fKgaylm5l0JcvEZK$ zec;iUsPRpoeX4&(`rw0>TITI`W>CSHn3!gPxHUCm*7>5hey8^qkZIGL?>oQm_x;ZI z^_;Jy#@cP8q43a!=N`wGlz3t`7RBAZ9{dD;Sy{%@vsV=yiOtP}jpON99FK<1*=PIue zhcos|fQ0>QI9{zJ1QfIp#JNSjZ^Yfh_l4aGlh#JpPjH^J7Shc~@pqFJ2A{IRlr`cW zXPkd?CJR&fgt{mBx?68yNH23XI)f>Pd?ZpBPNp<{=kxhscb_BA^2PIXSjgKYvH1UH8JLl-;4kcn#sp(@C8^XkO51oELB+LHQOy%qH?FUAiE{O0PXUi z)+Il!O~_AbZSpzIChtO$R3g{SlyTiGZPVO|TN`Gr3j{V+@}RlOZ=Y4khFSXF%b?DH z84afBdD7buk-p5(0>9;(mOjPzp(ncy<4`QB_!x?}3U!F7ye1%3F9MR_3;98tpG9Py z)mHj@w^#g};akDyQE)-xsfp_90S;;S=LMFeSp(n=;C%xCA*oUgPUzvijk79r3a!W{ zm3+uTfdL-DD*d<*SA$&!S=BAHP`trGe*@Z^-@VI0iK^R-PNlV)Eb6tZLAy?c=K+c= z8Z7Rap$k0<33(5jbu*~)R0o69JA~)%sA*638+c37pF3NH>SbgmJhPYEEUEPV@p(D| z$>n(k&n+gB_$38KU8n(hB8oDVz}^1SIC5n&J{d{E z!2Wkm!eHaxGyO-&98>?;m~MYh@2S4i{m_sOJ-iy+=0n`@!z>*sZ0(RCA>(gGUKc8p zw?uMA#5S@jkU8N&O}dqTaYW> znUHX~y&aT634h^rpfuo~4hQnuQD=u8)zt$QRNBm`AOyh!E!5D0_%Z1-L+7@zew7Cy z08@vAq&2-f3F{X0-`Kq-JLn<6?rWo5=`Oh~RK{G0JSKulUg66fRw$_ndD751t-Es3 zZdiw5olvg}sa`Ac1e#H*G6n=_vN8q)uquGrue?qaXhOpzA=c%`MQm}dFpswUCh@@< z{ZX9=&IignGd||#z|9j-){c9HfrQfQYdG|vrb5Lhf$-iiaF??3alRpTMWj+$`JVKX zE<}Q^wf4U=NYP4sw7ufLq~eUHdyrJ#|37 zmnr3F_VELuM;a~+8EPvxhODqvEoV}uX2vQ=DNoB^<-PhnLbz_Lf`zP!K_AJ90t+6E rw(VZi@Ygxf)lyY=e9ieAVzsb!Az)@^oIi+LcQ.ZDT + converts text file to ZDK overlay + + ZDKCOM .ZDK + converts overlay to ZDT text file + + Use ZDE in NONDOCUMENT mode to type a file that looks like +what you see when you use the K option of ZDENSTAL, substituting +lower case "n" or "q" for the No Repeat and Quiet option +indicators and : + + qThis line would be for key 0 in Quiet mode.^M + nThis line would be for key 1 in No Repeat mode.^M + + This line would be key 3, with key 2 unassigned. + n^M^M^M + The line above, key 4, prints with two blank lines following it. + q"This is in quotes, but no carriage return at the end." + "This line is ^P^BMacro Key 7^P^B with embedded boldface codes."^M + q^VThis line turns insert on before printing the line.^A^A^A^A_^F^D_^M + n ^A^A^A^A + +...and so on. Lines correspond to the number keys in 0 to 9 +order, with blank lines for unassigned keys. Do NOT embed control +codes. Type everything in ASCII. For instance, to underline, +type out '^P^Swords underlined^P^S'. It's a good idea to make +hard carriage returns visible by toggling them on with the ^OD +command. ZDKCOM accepts trailing spaces as part of the macro, +even though you can't see them, so, if you don't want them, make +sure each line is terminated by a hard carriage return. + Individual key macro strings may not exceed 127 bytes in the +ZDK file, though they may in the ZDT text file, since ASCII +representations of single-byte control codes require two bytes, +and option flags and slashes don't contribute to the length of the +string. + The total of all strings may not exceed 498 output bytes. +This is two bytes less than allowed by ZDE and ZDENSTAL, but, +under the program's present logic, it would require an inordinate +amount of code to make those last two bytes available. If you +really need them, add them to the ZDK file with ZPATCH or any +other patcher, locate the last string-length byte, and add 2 (in +hex) to it. + For a quick demo, remove the leading spaces from the lines +below, mark them as a block, and write them out to .ZDT. Run +ZDKCOM .ZDT. Then load the resulting ZDK file into ZDE with +the command ZDENSTAL ZDE .ZDK. + + q^C^C^C^E^E^E^E^E^[^E + q^[b^[0^Qs^X^[=^M1^[= 1^S^V ^D^[!0^[1^Qb^B^Ku + ^[=^M0^V^I^V^B^G^[![^[0^X + ^[=^M0^T^B^N^[0^X + q^P^[^P^I^P^K^P^[9 + q^V^KrA0:LH.FMT^M + q^G^G^G^G^X + q^A^A^S + q^A^A^S + q^KrHEADER^M + +Key macro 0 measures off one full page if the top margin is 0 and +the page length is 58 lines. Adjust for different page lengths by +adding or subtracting ^E's. I use this macro to move from line 1 +of a page to line 1 of the next page. I then use key macro 9 to +read in a page header from a separate file that contains nothing +but the properly spaced header text with a # in place of the page +number. I search for # with a ^Qf and replace it with the +appropriate page numbers. + This happens so quickly on a 9 mhz SB180 with hard disk that +it is virtually unnoticeable, but there is a faster way to do it. +Just make up a header at the top of the first page, or, if you +want to start page headers only on page two, at the foot of the +file, and mark it as a block. Use key macro 0 to move from the +top line of a page to the top line of the next, and copy the +header into place with the ^KC command. Don't forget to erase the +original of the header at the foot of the file when you get there. + Key macro 1 softens and reforms a paragraph by removing the +hard carriage returns from the ends of each line. + Key macro 2 changes a document in flush left block format +(like this one) to indented paragraph form, and key macro 3 +changes it back again. + Key macro 4 embeds my DIABLO 1610-compatible printer's code +for setting a left margin in column 11 (^K=0Bh) in the document. +If I want another margin I add or subtract from 0Bh and overwrite +the ^K with the appropriate control character. You may well be +able to substitute your own printer's set left margin code for +this one. + Key macro 5 reads in a previously prepared letterhead stored +as LH.FMT on drive/user A0. + Key macro 6 removes four spaces or characters from the +beginning of each line, used to remove line numbers from the +beginnings of messages in modem capture files. + + +2. Programmer's Note. + + A ZDK file is a data structure four records long. The first +two bytes are an ID number which ZDENSTAL checks to ensure that it +is working with the correct version. The current number, 0250h, +is valid for several recent versions of ZDE. + These two bytes are followed by up to ten strings, each +preceded by a string-length byte which ZDE uses to index the +string's location. Each string is limited by the size of a buffer +in ZDE to 127 bytes. + An empty string is indicated by a string-length byte of 00h. +After the last byte of the last string, the remainder of the 512 +bytes are filled with 00h. + It is a peculiarity of ZDKCOM that it needs to write two null +bytes at the end of the file, which means that it will accept only +498 bytes for the total length of all strings (512, less two ID +bytes, less 10 string-length bytes, less these two more) rather +than the 500 that ZDE and ZDENSTAL allow. + When you look at the key macro buffer of ZDE using the K +option of ZDENSTAL, you see something that looks like this: + + <0>This line would be for key 0 in Quiet mode.^M + <1>This line would be for key 1 in No Repeat mode.^M + <2><> + <3>This line would be key 3, with key 2 unassigned. + <4>^M^M^M + <5>The line above, key 4, prints with two blank lines following it. + <6>"This is in quotes, but no carriage return at the end." + <7>"This line is ^P^BMacro Key 7^P^B with embedded boldface codes."^M + <8><> + <9><> + +The numbers down the side and the option indicators , , and +<> (no option) are supplied by ZDENSTAL. The ZDT text file +version of the same macro keys would omit the string numbers and +no option indicators, and convert the and to simple lower +case 'n' and 'q'. If you need lower case 'n' or 'q' as the first +character of a key macro, just precede it with a slash, which will +be ignored. + ZDKCOM recognizes blank lines as unassigned keys. These +produce an "error" message when invoked by ZDE. + ZDE recognizes a No Repeat option if the the high bit is set +on the first byte of the macro string after the length byte, and a +Quiet option if the high bit is set on both of the first two bytes +of the string. + The translation procedure from text to overlay requires: + + Enter two-byte ID string 02h 50h in output file. + + Enter 00h to save a place for a string length byte. + + Check for "n" or "q" as first three bytes of new string and add + 80h to the next byte or next two bytes input as required. + + Read in the rest of the string byte by byte and output each byte + to the output file. If "^" appears in the string, drop it and + subtract 40h from next byte to make it into a real control + character. If "/" appears, ignore it and print the next + character literally. "/^" prints "^" rather than turn the + character following the carat into a control code, and "//" + prints a single slash. A single input slash is ignored. + + When the CRLF pair is encountered in the input text file, + convert it to a 00h place marker for the length of the next + string. Get the number of bytes output in the last string and + write it to the position of the string-length byte at the head + of the preceding string. + + When the text file's ^Z EOF is encountered, fill the remainder + of the total 512 bytes with 00h and close the files. + +When converting ZDK overlays to ZDT text files, the procedure is +more or less reversed. ZDKCOM converts the string length bytes to +CRLF pairs, the control code bytes to two-byte ASCII strings '^c', +and finishes off the file when all strings are accounted for by +inserting an EOF ^Z. + In addition, ZDKCOM has error checking for file opening and +closing and for individual and overall string length, and it +reports activity to keep the user from thinking the program has +hung, though the counters on the screen are otherwise meaningless. + The structure of the four-sector ZDK file in CP/M is so +similar to the eight-sector MS/DOS version that you can use +ZDKCOM, along with a patcher, to create a VDK file for +installation in VDE12, the MS/DOS version of ZDE. Make up the ZDT +file as you would for CP/M, then patch the second ID byte from 50h +to 60h and add four records of nulls. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40.hlp b/Images/Source/hd0/s0/u10/z40.hlp new file mode 100644 index 00000000..00bdbd4f --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40.hlp @@ -0,0 +1,35 @@ + Intro to ZCPR 4.0 for ZSDOS2 and B/P Bios 19 Apr 92 +  Terminal Commands  - CLS, HELP, ECHO, TYPE, NOTE +  Printer Commands  - FEED, LIST +  Directory Support  - DIR, ERASE, FREE, PROTECT +  File Manipulation  - COPY, GET, GO, RENAME, SAVE +  Z-System Support  - REGISTR, SPOP, RESET, WHL +  Hardware Support  - JUMP, PEEK, POKE, PORT +  Miscellaneous  - TIME, DATE, VERSION +:  ZCPR 4.0 for ZSDOS2 and B/P Bios  + + This Command Processor is a direct outgrowth of ZCPR 3.4 and many +popular Resident Command Processor (RCP) extensions. It takes advantage +of the Command Line Parser in ZSDOS2 and the Banking capabilities of B/P +Bios, if available, to reduce the resident portion of the Processor. +Commands built into Z40 include: + + CLS COPY DATE DIR ECHO ERASE FEED + FREE GET GO HELP JUMP LIST NOTE + PEEK POKE PORT PROTECT REGISTER RENAME RESET + SAVE SPOP TIME TYPE VER WHL + + in the following descriptions, optional fields or entries are listed +in square brackets ([]) and repeating fields are denoted by double- +periods. Commands which are Not available without WHEEL privileges are +noted in the individual descriptions by enclosing the name in Curly +braces ({}). + +::Z40A.HLP +::Z40B.HLP +::Z40C.HLP +::Z40D.HLP +::Z40E.HLP +::Z40F.HLP +::Z40G.HLP + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40a.hlp b/Images/Source/hd0/s0/u10/z40a.hlp new file mode 100644 index 00000000..f164c2e6 --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40a.hlp @@ -0,0 +1,67 @@ +  CLS  - Clear Screen +  HELP  - Print Available Commands in CPR, RCP, FCP +  ECHO  - Echo a string to Console w/processing +  TYPE  - Display a file on the Console +  NOTE  - Do nothing +: +  CLS  - Clear Console Screen + + This command clears the screen with the string defined in the +ZCPR3 Termcap. Insure that the Termcap on your system is the +correct one for your Terminal. + +Syntax: CLS + +: +  HELP  - Print Available Commands + + This command prints all available commands from the Command +Processor, Resident Command Processor (if any), and the Flow +Control Processor. + +Syntax: H + +NOTE: Commands which are disabled if user is Not a WHEEL are + displayed in Lower Case. Users without WHEEL + privileges will not see disabled commands. + +: +  ECHO  - Echo the following string to the Console + + This command displays a string specified in the command line on +the Console with processing. Special function characters embedded +in the string have specified functions to alter the literal operation. + +Syntax: ECHO [string] + +NOTE: Special processing characters are: + "^" - Convert the next char to a Control char (And w/1FH) + "%" - Toggle Upper/Lower Case printing prefix as: + "%<" - Convert print to Uppercase + "%>" - Convert print to Lowercase + + The option to Echo to Printer is Not active in this version + +: +  TYPE  - Display a file on the Console + + This command displays a file on the Console. In the default +mode, the file is paged based on the Number of Lines value contained +in the Z3 Environment Descriptor. If the Command Line contains a +"P" after the specified file ID, the paging default will be over- +ridden and the file will be continuously scrolled on the screen. +In this mode, it may be stopped and started with Ctrl-S. + +Syntax: TYPE [DU: | DIR:]Filename[.Typ] [P] + +NOTE: To abort print, Follow a Ctrl-S with a Ctrl-C while printing, + or enter Ctrl-C while paused at a page break. + +: +  NOTE  - Dummy Command to display comments in Script files + + This command does nothing. It's purpose is to insert comments +in a script file. All arguments passed are discarded. + +Syntax: NOTE [string] + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40b.hlp b/Images/Source/hd0/s0/u10/z40b.hlp new file mode 100644 index 00000000..ac02ffae --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40b.hlp @@ -0,0 +1,21 @@ +  {FEED}  - Prepare for New Page on the Printer +  {LIST}  - Send a file to the Printer +: +  {FEED}  - Prepare for New Page on Printer + + This command sends a Carriage Return (0AH) followed by a Form Feed +character (0CH) to the printer to prepare for printing in the first +column of a new page. + +Syntax: FEED + +: +  {LIST}  - Send a file to the Printer + + This command sends a file to the printer using Bdos functions. + +Syntax: LIST [DU: | DIR:]Filename[.Typ] + +NOTE: Printing may be paused and restarted with the Bdos Ctrl-S +toggle. To abort printing, follow a Ctrl-S with a Ctrl-C. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40c.hlp b/Images/Source/hd0/s0/u10/z40c.hlp new file mode 100644 index 00000000..177f6f7f --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40c.hlp @@ -0,0 +1,61 @@ +  DIR  - Display files in Directory +  {ERASE}  - Delete specified file(s) +  {SPACE}  - Display Free Space on specified Drive +  {PROTECT}  - Alter SYStem and Read-Only Attributes on file +: +  DIR  - Display files in Directory + + This command displays an Unsorted directory listing for a specified +or the default Drive/User. Optional toggles control display of only +Directory (Non-System) files, SYStem files, or Both with the default +being only Directory files. + +Syntax: DIR [DU: | DIR:][Filename][.Typ] [options] + + Options are: S - Display only SYStem files + A - Display both SYStem and Non-SYStem files + +NOTE: Standard Wildcards in Filename and Type are supported as: + "?" - matches any character + "*" - matches any character in remainder of string + +: +  {ERASE}  - Deleted specified file(s) + + This command allows the user to delete files from the currently +logged directory. If an "I" is entered after the filespec, then +confirmation is requested prior to physically deleteing the files +from the directory. + +Syntax: ERA [DU: | DIR:][Filename][.Typ] [I] + +NOTE: Standard Wildcards in Filename and Type are supported as: + "?" - matches any character + "*" - matches any character in remainder of string + +: +  {SPACE}  - Display Free Space on specified Drive + + This command will display free space in Kilobytes on logical +drives up to 999,999. This function is automatically included in +DIR, ERA and CP commands. + +Syntax: SP [DU: | DIR:] + +: +  {PROTECT}  - Alter SYStem and Read-Only Attributes + + This command allows the user to alter SYStem and Read-Only +Attributes of a single file or multiple files. It only may be +executed against files in the currently-logged directory. + +Syntax: PROT Filename[.Typ] [options] + + Options are: "R" - Set Read-Only Attribute, else Reset to R/W + "S" - Set SYStem Attribute, else Reset to Dir + "I" - Ask Approval before altering attributes + +NOTE: Standard Wildcards in Filename and Type are supported as: + "?" - matches any character + "*" - matches any character in remainder of string + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40d.hlp b/Images/Source/hd0/s0/u10/z40d.hlp new file mode 100644 index 00000000..248d96c0 --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40d.hlp @@ -0,0 +1,70 @@ +  {COPY}  - Create a duplicate file in another directory +  {GET}  - Load a file into memory +  {GO}  - Execute an existing file at beginning of TPA +  {RENAME}  - Change the name of a file +  {SAVE}  - Copy Memory contents to a file +: +  {COPY}  - Create a duplicate file in another directory + + This command creates a duplicate of a specified file in another +or the default directory. The new file is also datestamped with the +times associated with the original file. + +Syntax: CP Dest=Source + or + CP Source Dest + or + CP Source + + Where Dest and Source are: [DU: | DIR:]Filename.Typ + +NOTE: If no destination filespec is given, the currently logged + Drive/User and source filename and type are assumed. + +: +  {GET}  - Load a file into memory + + This command loads a specified file into TPA memory at a +specified Hexidecimal address. It is only effective for files +in the currently-logged Drive/User. + +Syntax: GET Addr Filename.Typ + + Where Addr is a Hexidecimal Address in the TPA memory. + +: +  {GO}  - Execute an existing file at beginning of TPA + + This command effectively Re-executes the last file loaded in +TPA memory at the normal program location at 100H. It is the +same as executing a JUMP 100H command. + +Syntax: GO + +: +  {RENAME}  - Change the name of a file + + This command permits a file name and type to be altered. The +File DateStamping information is not altered. + +Syntax: REN [DU: | DIR:]NewID=OldID + or + REN [DU: | DIR:]OldID NewID + + Where OldID and NewID are: Filename.Typ + +: +  {SAVE}  - Copy Memory contents to a file + + This command permits an area of TPA memory starting at 100H to +be copied to a specified disk file. Options permit specifying the +size in decimal or Hexidecimal Pages (256 bytes) or Sectors (128 +bytes). + +Syntax: SAVE nn[H] [DU: | DIR:]Filename.Typ [option] + + Where nn is the size [0..255] in Decimal, or Hex if suffixed + with an "H". If the option field contains an "S", then nn + Sectors of 128 bytes are saved, otherwise nn Pages of 256 + bytes are saved. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40e.hlp b/Images/Source/hd0/s0/u10/z40e.hlp new file mode 100644 index 00000000..9d7299ed --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40e.hlp @@ -0,0 +1,53 @@ +  {REGISTER}  - Examine/Alter ZCPR3 Register Values +  {SPOP}  - Pop an element off the Shell Stack +  {RESET}  - Re-log the Hard & Floppy Drive System +  WHL  - Read/Set the Wheel Byte +: +  {REGISTER}  - Examine/Alter ZCPR3 Register Values + + This command allows the user to Examine, Increment, Decrement +or set any of the ten registers defined in the ZCPR3 Environment. + +Syntax: REG [option][n] + or + REG S[n] value + + Where: n is a Register Number in [0..9] + option = D to display all register values + (no register Number needed) + P to increment the register by 1 + (0 assumed if not specified) + M to decrement the register by 1 + (0 assumed if not specified) + value = decimal value in [0..255] +: +  {SPOP}  - Pop an element off the Shell Stack + + This command is used to discard the command currently on the top +of the Shell Stack. + +Syntax: SPOP n + +: +  {RESET}  - Re-log the Hard & Floppy Drive System + + This command Re-logs all Hard and Floppy Drives on the system. +It properly handles the Fast-Relog feature of ZSDOS and re-logs the +default disk when complete. This should be executed after any +Unerase or PUTDS operation on Hard Drives to insure that the Banked +Allocation Vector in ZSDOS2 is properly updated. + +Syntax: RES + +: +  WHL  - Read/Set the Wheel Byte + + This command simply reads the Wheel byte and indicates the +current setting if no arguments are passed. If arguments exist, +they are compared to the embedded Password in the CPR. If a match +is obtained, the Wheel Byte is turned On giving the user appropriate +privileges. A mismatch Disables the Wheel byte restricting the user. + +Syntax: WHL <- Display current setting + WHL password <- Turn on if match, else disable + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40f.hlp b/Images/Source/hd0/s0/u10/z40f.hlp new file mode 100644 index 00000000..d38ba8ec --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40f.hlp @@ -0,0 +1,59 @@ +  {JUMP}  - Execute code at a Specified Address +  {PEEK}  - Examine memory contents +  {POKE}  - Alter memory contents +  {PORT}  - Examine contents of Input Port +: +  {JUMP}  - Execute code at a Specified Address + + This command permits execution of code at any specified address +in the range of 0 to FFFFH in the current TPA memory area. The user +must insure that the the target address contains a valid program. + +Syntax: JUMP Hexaddress + +: +  {PEEK}  - Examine memory contents + + This command permits the user to examine memory contents +throughout the Memory Range in A B/P Bios configuration. + +Syntax: P [Bnk#:]StartAdr [EndAdr] + + Where: Bnk# = B/P Memory Bank in decimal. The TPA bank + or PEEK values since the last Warm Boot + are assumed if not specified. + StartAdr, EndAdr = Hex Addresses + +NOTE: For long displays, the screen may be paused with the Ctrl-S + toggle. To abort a long display, follow a Ctrl-S with a Ctrl-C. + +: +  {POKE}  - Alter memory contents + + This command permits the user to alter the contents of TPA memory. +Altering other banks is not permitted to assure the integrity of the +Operating System. + +Syntax: POKE addr [nn][..nn] + or + POKE addr "a[..a] + + Where: addr = Hexidecimal address to start the entry + nn = Hexidecimal value(s) to enter + a = Ascii character(s) to enter + +NOTE: The Ascii toggle may be used after preliminary Hex digit entry + but is Not reversible. i.e. all following characters are entered + as literal Ascii. + +: +  {PORT}  - Examine contents of Input Port + + This command permits the user to examine the contents of Input +Registers within the range 0..FFFFH. The command properly handles +the on-board IO ports in the HD64180/Z180, and extended IO addresses. + +Syntax: PORT nn + + Where: nn = Hexidecimal Port Address in [0..FFFF] + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u10/z40g.hlp b/Images/Source/hd0/s0/u10/z40g.hlp new file mode 100644 index 00000000..5b5fb505 --- /dev/null +++ b/Images/Source/hd0/s0/u10/z40g.hlp @@ -0,0 +1,52 @@ +  TIME  - Print Current System Time (Set if Wheel) +  DATE  - Print Current System Date (Set if Wheel) +  VER  - Display CPR, DOS and BIOS Version Numbers +: +  TIME  - Print/{Set} Current System Time + + This command, if no arguments are specified, will simply display +the current Hours, Minutes, and Seconds reported by the Dos. In a +fully-implemented system, this will be the B/P Bios Real Time Clock. +If arguments are passed, the current setting of the Wheel byte is +checked. If the Wheel Byte is OFF, the time is simply displayed, +otherwise the arguments will be interpreted at a new time to set and +parsed accordingly. If no errors are detected, the system time will +be updated and the revised setting displayed. Arguments are parsed +in the order; Hours, Minutes, Seconds. All fields do not have to be +present. Current setting of fields not entered are retained if not +explicitly altered. + +Syntax: TIME + TIME hh[:mm][:ss] + +: +  DATE  - Print/{Set} Current System Date + + This command, if no arguments are specified, will simply display +the current Day, Month, and Year as reported by the Dos. An assembly +option selects US (mmm dd, yyyy) or European (dd mmm yyyy) form. In a +fully-implemented system, this will be the B/P Bios Real Time Clock. +If arguments are passed, the current setting of the Wheel byte is +checked. If the Wheel Byte is OFF, the date is simply displayed, +otherwise the arguments will be interpreted at a new date to set and +parsed accordingly. If no errors are detected, the system date will +be updated and the revised setting displayed. Arguments may be parsed +either mm/dd/yy sequence if the "slash" character delimits the fields, +or dd-mm-yy sequence if any other character (normally dash or period) +delimits the fields. All fields do not have to be present, although +at least one is required to determine the parse order. The current +setting of fields not entered are retained unless explicitly altered. + +Syntax: DATE + DATE mm/dd/yy + DATE dd.mm.yy or dd-mm-yy + +: +  VER  - Display Operating System Version Numbers + + This command displays CPR, DOS and BIOS Version Numbers for the +system currently executing. It assumes ZSDOS and B/P Bios and uses +the unique features of those systems to obtain the relevant values. + +Syntax: VER + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u14/bpcnfg.cfg b/Images/Source/hd0/s0/u14/bpcnfg.cfg new file mode 100644 index 0000000000000000000000000000000000000000..a2f5fd3573e332cc4c085606c3bbff788ab2f2ae GIT binary patch literal 512 zcmZ{h%WA_g5JhdWia^^!cXwL|f&N0CHRJ_N7g-h686~2!WE`ofzp%emNpV6Ksb(P< zX70H&^V7>?Jmx$<=Q-Qv*+bSl-YPk&3HANV{DC72j2*%tiigDUn0TYtK zYlor|2f|Eg!nUmm@3+9PSk5^M9ocUBnyuCs^_S^l18E!FqlDs}^(ckGi8PfC!dQ2t z2K$Z|J42%5%D_FLY)ClTCk>iwTs0R^(x2@-YMoi8g8iUy*u(pI%5M@c402(!P?&qp%Jt}E=wFi{wM{CCL-1(60Zo?}a**pPmySBCD9PYHHl0T&Fu?p`UIlMhB zMq>gj_Z>RAIJ!ndLw%EdEqj^zEr|J}bDHc$3`< z?t9epB3s^IYb<`Pi_dRxiDF+nI8szbv8B=88s*U1TKih>V790=!!YyUM%D4g4t`IQ zl$nMGyc18h)&xVYfY*D{4C>(x`!I!63eHR4IY?c7k9P!V9{iJ*P}QzgvZo5%j{Crs zmPr2q%TlL!s5_z@_I0^OfY8Q+A&C`875}(lY*byb@cd`tOwk-1dea5cQhBnmc{R)~ zj)}cE2|rDde=_BFgA=T<3@$MJLvW#UgI&0|US7b&Fa-|9zjKHa|DPQ4b&);g2(amc z%-^cwlt|?a>tSX0J+jr^a#m!MG`JNNM;9CqH~OYIF7FAAsVGFqux}QnY1%G2%h`2P nFdiE|NgLTi69Y3CCoo<+G9IBm_4Wz??lw#+^Up?Od%kwn)E3JzhHIPq$?Esj@40R{bV@M#1Hcr;S0AzM$X$t6`Hq zrl7>?q)8u9@Di(TlfHzP3r`!5oAeb0ukdaEJz}B<7l`%(+M?zMST$QW8}tp)Ypiz~ zbeHJz`$V@I^exc=R<|4U9Z`wZod%r{y~OHngA~y#tnM`^Ci<{JbiYAoL_MrFTdj*f zEgs(QfB%H{6FWA~W|=BXVtE*5T3g=X#jefP#oadVX5qv<*Su#6u_&@6=48x69qX`Q zWg~n|OZE>;dTs8#FnOVEsQHo33)y{OV$BHB#k;XS;L_x<&4)Hm#h+}^qPjqI+CGU<4ow<<4K3m_pc!$a3 zHb2f$xgIN^P=mE=G60!mC69ERoOvslFz>bh!Qfa;^&$$hGunTLQ3g)jKn~f8fivj> zvxyE*87<_lD)g{W(-iyM-@LY6UcgLw{yjr))fjqHx>`Z($g{ov)FYy(oi?xUS$luO zox4oTMO zrpixqXOhhL%;Xa;5=_GiEE0lE;i4?m?hPDN9CIv!8&&DSjnprKYQ_eiBR8xw3~NVz zv9%y6ib;{DjH_a+&o~l26=BbGs#R5j%O$}aJMpf76A{F-OsRmryP6~cSEy4;X_m_= zTG9VyR<(RaUi&2;L=bw6wy$~Xa0$p1P6$AV`UG~tP}u?)*1VwvQD{Mtxo@k6=D@p{ za4yOuN~^6J#X556_^-LRuXzdq6TU^hb(R$v5wSga0ozJV;LtDZTk%uCK4)WXxv)}Zf?RscRUQxmI9+-|w!c8jm6 zQSw~3I}EO~O4E2bBneunqU&yA+^jgK)#Tl4NpMijCN&hK!}Ce= zrJLN{C<`yvsdqJ#{R;N6HQM*gI)If~})g=L5dYI?a@X_BjB zPlczm)D5b%Wv)ho)6$1bkWI2FI z^+SY5h$^rEKM5--L_BhNy|X5JwSX$kYy?EQeVieWoC}a93RM>6U;C-}uP4ij?jMLG zOHTP*NrAui^t4HVM)^e8R5G?eJ`WY7z(%zqz^YvTJkz!iD3z^TcuvY}$UIIltgwXk z6j|Bf+~21GPR*5_O-DdaXpN1s;v9;Fbn{enO;mdhsP_zATDq|t8#C5}pDg44hx5g0-L@A(__oQ}-^ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u14/emulate.cfg b/Images/Source/hd0/s0/u14/emulate.cfg new file mode 100644 index 0000000000000000000000000000000000000000..97159c154ae95c68600491e5bdc20a6610be9d6d GIT binary patch literal 640 zcmaiyv2NQi5Qe2>sRd}wSo}by0zn=in-a@t07niQWylnq?UPNEA_bC)pr`8ASIBGi zD5pY(0u={QjI$&j8O94v?v?b42Db1*;WxP%c#rnRi07PN^KVdy~ zvv66|qB$XbFV~M~tiwOir0m7^*pUJ0zz*Ta*na>{EM)eWdfR5YoN?uQul&zEljh>X zqxZ@jq(*t{KHI+ro>bfE5uP>g!qkSk&e_f>3Y=%B^O#he#^x`G;Q?=?dzKajnwZZA zh3|N$8pV4U2`tZ|F2n=|rF9%&uw{7LAC3XraW+51o5^WpCCq*DESeF*5ai}sa;Y|T zd4u{>9$IZ3xe;QJw6|hd=Bp;AD*;5EoGTd+TlqX2R5;@HakcsJP}EmKgHf_>X@p@> Z20Q1(f-Jv+L~?M{f;{JBxoE_Vco(gdv)K$d9+#`z2e^yDx^5(uT?{q3oR{pM z!L>i1=4nKlAV)ARZM~Y{CE5)4M3E9;&~XeI2~D$(@N4afqhYhx9w7!lfj&WRJS*FR z4lW!gatRbzuexfFY%{ok;4DmW1Vz|NmEO?6zQ^1nReA4HU+NR$H`J?jq(S-WNrXCc z-)4em%;Ye&GSXov-eXNO$-JN>+#x9s(E@vb9fK~EX#ub*5<~Lg0hS)EcK`qY literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u14/iniramd.cfg b/Images/Source/hd0/s0/u14/iniramd.cfg new file mode 100644 index 0000000000000000000000000000000000000000..3536ccca8a30cb5ebf9fa969924adfa9cccfd2fd GIT binary patch literal 1152 zcmb_b!EVz)6tvX~jnpd~dGd)$P1Rorbt@vZZiS2xC$#ZC*Q?mOVRzlgocJbwf{)?G z7ckFusv;py#F6aSZ^kq8CO?i+IhN^3`YSzJ+_Sx^%WS54~5>I7@dsImtwRN|bZ0`ZiMT%_CFGF|w!Hc>Dq9sC&cPzeN_;V0Ly;?%VGBiFkh9xOeWr4-Q16Q z{%QteIW6g9!;)Z^n!G`0W zL7S~IQdU!TpOFD91oL1gG81WUVq+}Dh9{D@#)WgDvf-y>12Q%CfjTwNhKaikYYl=K zdhiw9#Nb)?6$>NT96)sA7`d7-k)Vl?I4>`-M@MCM7S<27iw#;R zEN;hh#T(3Qu)K)_w}pl^7E=gc+YSJTh_MYg<4e}rWr&ckydK4d9aj@W=phK9|Bvc?TDBwfsNv2 uq4H)I!iHsbk_t%Na7tE%DvqXS*u-G8DtrlxBCr?Wmq6BfyT{QL$GB~aV| literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u14/initdir.cfg b/Images/Source/hd0/s0/u14/initdir.cfg new file mode 100644 index 0000000000000000000000000000000000000000..96baa98657a97513b17249dd40b51c8a43ffbf81 GIT binary patch literal 384 zcmZvXu};G<5Qc5B5KCT>*!~HTB`*OCSyDo}FdBLoONs5;PEntMnP=j)u!GW}>YZhs z?tK6M`S*&KyycSra4!05cEh;k-&_h&RTa>7?e?*K!Gp6OM$bVd<7^rBHHO*yKr!Mu zxXGu8I}AysIbzCPr77aRpADrNr^u_9juh9^#j+iy1sZ;#gtEI*>YygXb6nFn#wL@=c6qv-urNB8x3(5m8jVBckMMqe29}hI zR#_yaxDnP;5zc)@c)xGVlHGwfXh>0NA+)gt z)yT#;U+6Bz*xbc7um)FxG9sf4*PgS%S!yUrEleIdnE^?T-rE;KyPmzxXgdw}W!u;> zmoouP9ee<+=W=d4(k))R-~2d#OSa2^;cZN7tJVhf6g6p45@-G))Qj9Yg0!YE$SE8G zeO5}Q(yHF|=u*8lHD#s94n>27(AkjQ6{JItooosZ>}eqe|4!Osn5JX&^D9LUp&G;4 pk31c}@)z|TY<^tq*PB4&gpF&6blN-68D~mdNhzssGZy{d`Ua#mvDE+o literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u14/setclok.cfg b/Images/Source/hd0/s0/u14/setclok.cfg new file mode 100644 index 0000000000000000000000000000000000000000..5e88762ecd24f1a308f5fb7210c333d74c207b25 GIT binary patch literal 384 zcma)%F>k^!5QS~A5KCE+*xneVD*OW$4i;*4fDRcAm|!W`QDRgv_2+f&Kk7M%p=vAj z?CIXqd*6MGWO`GX%TFm4jm1RBg?yK}QdyQ^yV@D z4R6|no;n^kxgG{F)HSOyz%` literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u14/tdd.cfg b/Images/Source/hd0/s0/u14/tdd.cfg new file mode 100644 index 0000000000000000000000000000000000000000..fdab0fe9a1cffffdb6cc4c162ef82acec0ec7bbe GIT binary patch literal 384 zcmaivv5vwp5JYX!5KC!Kx^BuKq3{J%?9sV`D^i-n1WP$PN*o~?evg(Yx_tmPH=4>ad%L>`z3(`W82G|wTLqhifq{Qe0W$sVm- L9T>69m3XZ?auivL literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u14/zxd.cfg b/Images/Source/hd0/s0/u14/zxd.cfg new file mode 100644 index 0000000000000000000000000000000000000000..f202ae59b38e1ea77539036d73b8592d005e0c3c GIT binary patch literal 2048 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%0AfNe1=69;N-28Du7 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ALIAS-2.LBR b/Images/Source/hd0/s0/u15/ALIAS-2.LBR new file mode 100644 index 0000000000000000000000000000000000000000..0bf294fc77222a6dbcb9177bc4993b5f970825dd GIT binary patch literal 21504 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 iYrwK3oFMGL! literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ALIAS.HLP b/Images/Source/hd0/s0/u15/ALIAS.HLP new file mode 100644 index 00000000..b41d8e90 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ALIAS.HLP @@ -0,0 +1,167 @@ +; + + The ZCPR3 ALIAS Facility + + A - The ALIAS Command + + E - ALIAS Examples + + S - Summary of ALIAS Variables + +:A + +Command: ALIAS 1.1 + +Syntax: + + ALIAS <-- Define New Command +or + ALIAS dir:ufn <-- Redefine Old Command + +Function: + + Thå  ALIAÓ facilitù ió thå scripô expansioî utilitù  oæ +ZCPR3®  Aî Aliaó ió á COÍ filå createä bù thå ALIAÓ prograí +whicè   containó   onå  oò  morå  commandó   (separateä   bù +semicolons© tï bå placeä iî thå Commanä Linå  Buffer®  Wheî +thå  Aliaó ió invoked¬  parameteró froí thå commanä linå arå +implanteä  intï thå scripô containeä withiî thå  Alias¬  anä +thå  resultinç ne÷ commanä linå ió placeä intï  thå  Commanä +Linå Buffeò anä executed. + + +Options: + None + +Comments: + + ZCPR³ MUSÔ bå implementeä witè aî Externaì Commanä Linå +Buffer in order for ALIAS to work. + + Thå  scripô  oæ  thå  internaì  commanä  linå  supportó +parameteò  passinç iî á manneò similaò tï ZEØ anä SUB®  Thå +variableó  $n¬  wherå ° <½ î <½ 9¬  maù bå placeä  intï  thå +script¬ anä thå correspondinç parameteró wilì bå substituteä +foò thå indicateä variables® Thå variablå $° ió thå namå oæ +thå Aliaó itself® Thå variablå $ª ió thå entirå taiì oæ thå +command line. + + + Twï  additionaì variables¬  $Ä anä $U¬  arå  available® +$Ä  expandó intï thå letteò oæ thå disë whicè waó loggeä  iî +aô  thå timå thå Aliaó waó expandeä (thå homå disk)¬  anä $Õ +expandó intï á numbeò (iî ASCIÉ chars© representinç thå useò +areá whicè waó loggeä iî aô thå timå thå Aliaó waó  expandeä +(the home user). + + Thå  ZCPR³ Systeí filå nameó arå availablå tï thå Aliaó +aó thå variableó $Fî anä $Nn¬ wherå ± <½ î <½ 4® $F± referó +tï FILENAME.TYÐ oæ Systeí Filå 1¬  $N± referó tï FILENAMÅ oæ +Systeí Filå 2¬  etc®  Notå thaô thå SETFILÅ commanä ió useä +to define the contents of the System file names. + + '$$' expands into a single '$'. + + + Summary of Alias Variables + + $0 - Name of Alias + $n - Parameter from Command Line (1 <= n <= 9) + + $* - Tail of Command Line (everything after the verb) + + $D - Home Disk + $U - Home User + + $Fn - FILENAME.TYP of System File n (1 <= n <= 4) + $Nn - FILENAME of System File n + + $$ - The character '$' + + +Selected Error Messages: + + "Ovfl¢ meanó thaô thå expandeä commanä  line¬  combineä +witè  thå  remaindeò  oæ thå contentó oæ  thå  commanä  linå +buffer, is too long to fit in the command line buffer. + +Examples of Use: + + ALIAS + -- define Alias + + ALIAS alias + -- display script of "alias.COM" and edit + +:S + + Summary of Alias Variables + + $0 - Name of Alias + $n - Parameter from Command Line (1 <= n <= 9) + + $* - Tail of Command Line (everything after the verb) + + $D - Home Disk + $U - Home User + + $Fn - FILENAME.TYP of System File n (1 <= n <= 4) + $Nn - FILENAME of System File n + + $$ - The character '$' + +:E + + Examples of Aliases + +Case 1: + + Thå  useò ió constantlù issuinç thå followinç  commandó +in the order indicated: + + ASM myfile.BBZ + LOAD myfile + + He can generalize it with the following Alias script: + + ASM $1.BBZ;LOAD $1 + + If this Alias is named MYASM.COM, then typing + +"MYASM test" will be equivalent to "ASM test.BBZ;LOAD test" + + +Case 2: + + Thå  useò haó twï printeró oî hió system®  Hå ió usinç +redirectablå I/Ï aó implementeä undeò ZCPR3¬  anä hå haó twï +versionó oæ Worä Staò (trademark¬  Micropro© - onå foò  eacè +printer®  Hå  caî creatå aî Aliaó containinç thå  followinç +script: + + Script Meaning + + IÆ NEC=$² Checë tï seå iæ 2nä parí ió NEC + DEV L NEC If so, assign LST to NEC + WSN $1 and run NEC version of WS + ELSE If not ... + DEV L TTY assign LST to TTY + WST $1 and run TTY version of WS + FI + + If the Alias was named WSTAR, then: + + "WSTAR myfile.txt" + +would be equivalent to + + DEV L TTY;WST myfile.txt + +and + + "WSTAR myfile.txt NEC" + +would be equivalent to + + DEV L NEC;WSN myfile.txt + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ALIAS.ZEX b/Images/Source/hd0/s0/u15/ALIAS.ZEX new file mode 100644 index 00000000..c94e8866 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ALIAS.ZEX @@ -0,0 +1,64 @@ +; +; Command File to Assemble the ALIAS Program by Richard Conn +; + +; +; 1. Check for Needed Files +; These files are listed below in the IF EXIST tests +; The availability of PIP.COM, M80.COM, and L80.COM is assumed +; +if exist alias0.mac +if exist alias1.mac +if exist a:z3lib.rel +if exist a:syslib.rel +if exist z3base.lib +if exist sysenv.lib + +; +; 2. Perform Assemblies of ALIAS0.MAC and ALIAS1.MAC +; +m80 =alias0 +m80 =alias1 + +; +; 3. Allow User to Abort if Errors Occurred +; +if input + +; +; 4. Cleanup Files +; +era alias0.bak +era alias1.bak +era alias.com + +; +; 5. Link +; +l80 /p:100,alias0,a:z3lib/s,a:syslib/s,alias0/n,/u,/e +l80 /p:100,alias1,a:z3lib/s,a:syslib/s,alias1/n,/u,/e + +; +; 6. Combine ALIAS0.COM and ALIAS1.COM to Form ALIAS.COM +; +pip alias.com=alias0.com,alias1.com + +; +; 7. Clean Up Some Files +; +era alias0.com +era alias1.com + +; +; 8. Exit IF INPUT (1 Level) and Remove REL Files +; +fi +era alias0.rel +era alias1.rel + +; +; 9. Exit IFs (6 Levels) +; +fi;fi;fi;fi;fi;fi + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ALIAS0.MAC b/Images/Source/hd0/s0/u15/ALIAS0.MAC new file mode 100644 index 00000000..fd0e76fe --- /dev/null +++ b/Images/Source/hd0/s0/u15/ALIAS0.MAC @@ -0,0 +1,432 @@ +; +; Program: ALIAS0 +; Author: Richard Conn +; Version: 1.1 +; Date: 10 Jun 84 +; Previous Versions: 1.0 (5 Mar 84) +; +version equ 11 + +; +; The purpose of ALIAS0 is to create aliases using the ALIAS1 +; program. +; + +; +; Environment Definition +; + MACLIB Z3BASE.LIB + +; +; Basic Equates +; +buffer equ 4000h ;1K (approx) buffer +tbuff equ 80h +fcb equ 5ch +cr equ 0dh +lf equ 0ah + +; +; External References +; + ext $memry + ext z3init,qprint,getwhl + ext print,sksp,bbline,capine,crlf,pfn1,retud,logud,padc + ext hmovb,sfa,cout,ccout,pstr,zfname + ext f$open,f$read,f$close,f$make,f$delete,f$write,f$exist,initfcb + +; +; Key Equates for Address Definition of Environment +; +envdefn equ 103H ;Beginning of Environment Definition +envclas equ 108H ;Address of Environment Descriptor Class + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env +; +; Print Banner +; + call qprint + db 'ALIAS, Version ' + db (version/10)+'0','.',(version mod 10)+'0',0 +; +; Check for File +; + xra a + sta flflag ;clear file loaded flag + lxi h,fcb+1 ;pt to file name + mov a,m ;get first char + cpi ' ' ;no name if space + jz create ;create an alias if no name + cpi '/' ;help? + jnz start0 +; +; Help Message +; + call print + db cr,lf,'ALIAS -- Create Alias Commands' + db cr,lf,'Syntax:' + db cr,lf,' ALIAS <-- Define New Command' + db cr,lf,'or' + db cr,lf,' ALIAS dir:cmndname <-- Redefine Old Command' + db 0 + ret + +; +; Load ALIAS File +; +start0: + call setcom ;set file type of file in FCB to COM if not already + call retud ;get current DU in BC + dcx h ;pt to disk + mov a,m ;get disk + ora a ;no current disk? + jz start1 ;use current disk + dcr a ;set disk (A=0) + mov b,a +start1: + mvi m,0 ;set current disk + lxi d,13 ;pt to user number + push h ;save ptr to FCB + dad d ;pt to user + mov c,m ;get user + pop d ;pt to FCB + call logud ;log into dir in BC + lxi h,buffer ;pt to file storage buffer + call f$open ;open alias file for input + jz load ;load file + call print + db cr,lf,' Alias File ',0 + inx d ;pt to file name + call pfn1 ;print it + call print + db ' Not Found',0 + ret +; +; Load Alias File +; +load: + lxi h,buffer ;pt to load buffer + mvi c,9 ;set block count +load1: + lxi d,fcb ;pt to FCB + call f$read ;read next block + jnz load2 + lxi d,tbuff ;pt to buffer + xchg + mvi b,128 ;128 bytes + call hmovb + xchg ;DE pts to next block + dcr c ;count down + jnz load1 +; +; Error - Not an Alias File +; +noalias: + call print + db cr,lf,' File ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' is Not an Alias',0 + ret +; +; Load Complete - Check for Alias File Structure +; +load2: + call f$close ;close input file + lhld buffer+1 ;get address of START + lxi d,buffer-100H + dad d ;pt to actual address + lxi d,9 ;skip to ALIAS ID + dad d + lxi d,aliasid ;compare + mvi b,8 ;8 chars +acheck: + ldax d ;get char + cmp m ;compare + jnz noalias + inx h ;pt to next + inx d + dcr b ;count down + jnz acheck + shld oldaline ;save ptr to old alias command line + mvi a,0ffh ;set file loaded flag + sta flflag +; +; Create New Alias +; +create: + lda flflag ;check for file loaded + ora a ;0 if not + jz cr1 +; +; Display Data on Old Alias +; + call print + db cr,lf,' Alias Name: ',0 + lxi h,fcb+1 ;pt to name + mvi b,8 ;8 chars +cr0: + mov a,m ;print name + call cout + inx h ;pt to next char + dcr b ;count down + jnz cr0 + call print + db cr,lf,' Old Alias Command Line:',0 + lhld oldaline + mvi b,1 ;set line count +cr0a: + mov a,m ;check for done + ora a + jz cr1 + call crlf ;new line + mov a,b ;print line number + call padc + inr b ;increment count + call print ;print prompt + db ' --> ',0 +cr0b: + mov a,m ;get char + ora a + jz cr1 + call ccout ;print char with control char processing + inx h ;pt to next + cpi ';' ;next logical line? + jz cr0a + jmp cr0b + +; +; Input Alias Command from User +; +cr1: + call getwhl ;get wheel byte + jnz cr1a + call print + db cr,lf,' Modification of Alias Not Permitted',0 + ret +; +; Input Alias from User +; +cr1a: + call print + db cr,lf + db cr,lf,' Input Alias (RETURN to Abort)',cr,lf,' --> ',0 + mvi a,0ffh ;input line from user + call bbline + call sksp ;skip to non-blank + mov a,m ;get char + ora a ;any input? + rz + push h ;save ptr +; +; Set Buffers in New Alias to Reflect the ALIAS0 Buffers +; + call codend ;pt to new alias + inx h ;pt to start of buffers + inx h + inx h + lxi d,envdefn ;pt to environment definition + mvi b,8 ;prepare to copy 8 bytes for class 1 + ; bytes are: DB 'Z3ENV',1 + ; DW envaddr + lda envclas ;get code for class of alias + cpi 1 ;class 1 is address of Env Desc only + jz cr1b + mvi b,100H-3 ;prepare to copy an entire env desc +; +; Copy the Buffers Over +; +cr1b: + ldax d ;copy environment definition into new alias + mov m,a + inx h ;advance + inx d + dcr b ;count down + jnz cr1b +; +; Prep to Copy New Command Into Alias +; + call codend ;pt to new alias command buffer + inx h + mov e,m ;get address of START + inx h + mov d,m + lxi h,17 ;pt to buffer at START+17 + dad d + lxi d,-100H ;compute offset + dad d ;HL contains offset + xchg + call codend + dad d ;HL pts to absolute address + mvi b,255 ;check for overflow (max number of chars) + pop d ;pt to new command +; +; Copy New Command into ALIAS File +; +cr2: + ldax d ;get char + mov m,a ;put char + ora a ;done? + jz cr3 + inx h ;pt to next + inx d + dcr b ;count down + jnz cr2 + call print + db cr,lf,' Command Too Long for Buffer - Reenter',0 + jmp create +; +; ALIAS Command Line Copied +; +cr3: + lda flflag ;file loaded? + ora a ;0=no + jnz write + call print + db cr,lf,' Name of ALIAS Command (RETURN to Abort)? ',0 + mvi a,0ffh ;capitalize + call bbline + call sksp ;skip to non-blank + mov a,m + ora a + jz create + lxi d,fcb ;pt to FCB + call zfname ;convert and place in FCB + call setcom ;set file type to COM if not already + call retud ;get current DU + lda fcb ;get disk + ora a ;default? + jz cr4 + dcr a ;disk A = 0 + mov b,a +cr4: + lda fcb+13 ;get user + mov c,a + call logud +; +; Write File whose Name is in FCB +; +write: + lxi d,fcb ;check for file + call initfcb ;clear FCB + call f$exist ;check for existence + jz write1 + call print + db cr,lf,' File ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' Exists - Overwrite (Y/N)? ',0 + call capine + call crlf + cpi 'Y' + rnz ;abort if not Y + lxi d,fcb ;clear file attributes + xra a + call sfa ;set file attributes to R/W DIR + call f$delete ;delete file +; +; Create New File +; +write1: + lxi d,fcb ;pt to FCB + call initfcb ;init it + call f$make ;create file + mvi c,8 ;8 sectors + call codend ;pt to file +write2: + lxi d,tbuff ;copy sector into buffer + mvi b,128 ;128 bytes + call hmovb + lxi d,fcb ;write block + call f$write + jnz werr + dcr c ;count down + jnz write2 + call f$close ;close file + call print + db cr,lf,' Alias Created',0 + ret +werr: + call print + db cr,lf,' Error in Creating File',0 + ret + +; +; Determine End of Code to Nearest 128 bytes +; +codend: + push d + lhld $memry ;get next available byte + mov a,l ;get low + ani 80h ;set MSB + mov l,a + lxi d,128 ;next 128 bytes + dad d + pop d + ret + +; +; Set File Type of File in FCB to COM if Not Already Set +; +setcom: + lda fcb+9 ;get first char of file type + cpi ' ' + rnz + push h + push d + push b + lxi h,comtyp ;set COM type + lxi d,fcb+9 ;copy into file type + mvi b,3 ;3 bytes + call hmovb + pop b + pop d + pop h + ret + +; +; Buffers +; +comtyp: + db 'COM' ;COM File Type +aliasid: + db 'Z3 ALIAS' ;ALIAS File ID +flflag: + ds 1 ;file loaded flag +oldaline: + ds 2 ;ptr to old alias line + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ALIAS1.MAC b/Images/Source/hd0/s0/u15/ALIAS1.MAC new file mode 100644 index 00000000..3b9f8be2 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ALIAS1.MAC @@ -0,0 +1,514 @@ +; +; Program: ALIAS1 +; Author: Richard Conn +; Version: 1.1 +; Date: 10 June 84 +; Previous Versions: 1.0 (5 Mar 84) +; +version equ 11 + +; +; The purpose of ALIAS1 is to load the Command Line Buffer with +; a command line stored within ALIAS1, extracting parameters using the +; SUBMIT file convention ($n) as they are referenced in the new command +; line. Upon successful build, ALIAS1 runs the new command line by simply +; returning to ZCPR3. +; + +; +; Macros +; + MACLIB Z3BASE.LIB + +; +; Basic Equates +; +tbuff equ 80h + +; +; External References +; + ext z3init,getefcb,getcl1,getenv,getfn2 + ext eprint,codend,sksp,retud,caps + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + jmp start1 ;skip command line buffer +; +; ALIAS ID at START+9 +; + db 'Z3 ALIAS' +; +; Internal Command Line Buffer +; This buffer address can be determined from START+17, where the +; value of START is obtained from the 2nd and 3rd bytes of ALIAS1. +; +clbuf: + db 0 ;set to empty + ds 255 ;allow 256 bytes +; +; Resume ALIAS1 +; +start1: + call codend ;pt to free space in which to build new line + lxi d,clbuf ;pt to buffer + xchg ;HL pts to target line, DE pts to buffer +; +; Process Next Char from Target Command Line +; +nxtchar: + mov a,m ;get next char + ora a ;end of line? + jz done + cpi '$' ;possible passed parameter? + jz param + stax d ;store next char + inx h ;pt to next + inx d + jmp nxtchar +; +; Process Possible Parameter +; +param: + lxi b,nxtchar ;establish return address + push b ;... on stack + inx h ;get parameter char + mov a,m + call caps ;capitalize + cpi '*' ;entire tail? + jz paraml + cpi 'D' ;current disk? + jz paramd + cpi 'U' ;current user? + jz paramu + cpi 'F' ;System Filename.Typ? + jz paramf + cpi 'N' ;System Filename? + jz paramn +; cpi 'T' ;System Typ? +; jz paramt + sui '0' ;convert + jc noparam + cpi 10 ;range? + jnc noparam + ora a ;parameter 0 = original name + jz oname + mov b,a ;count in B (1 or more) + inx h ;pt to next char + push h ;save ptr + lxi h,tbuff+1 ;pt to input line +; +; Advance to Desired Parameter +; +param1: + call sksp ;skip to non-blank + mov a,m ;check for done + ora a + jz paramx + dcr b ;count down + jz param3 ;got it +; +; Skip Over This Parameter +; +param2: + mov a,m ;skip to space or EOL + inx h ;pt to next + cpi ' ' ;space + jz param1 + ora a ;EOL + jz paramx + jmp param2 ;continue +; +; Extract Parameter Into Target Buffer +; +param3: + mov a,m ;get char + cpi ' '+1 ;done? + jc paramx + stax d ;store char + inx h ;advance + inx d + jmp param3 +; +; Resume Processing of Target Command +; +paramx: + pop h ;restore ptr to next char + ret ;resume at next char +; +; Parameter is for System Filename.typ +; +paramf: + call getfnum ;get file number + rz ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + call putn ;put file name + mvi a,'.' ;dot + stax d + inx d + call putt ;put file type + pop h ;restore ptr + ret +; +; Parameter is for System Filename +; +paramn: + call getfnum ;get file number + rz ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + call putn ;put file name + pop h ;restore ptr + ret +; +; Parameter is for System Typ +; +;paramt: +; call getfnum ;get file number +; jz nxtchar ;resume if error +; push h ;save ptr to next char +; call ptfn ;set ptr to file name +; mvi a,8 ;add 8 to get to file type +; add l +; mov l,a +; mov a,h +; aci 0 +; mov h,a +; call putt ;put file type +; pop h ;restore ptr +; jmp nxtchar + +; +; Get File Number (1 to 4) +; If valid number, return with value in A and HL pting to next char +; If not valid, return with Z and HL pting to next char (the number) +; +getfnum: + inx h ;pt to number + mov a,m ;get char + sui '1' ;convert + jc getfne ;error if less + cpi 4 ;range? + jnc getfne ;error if more + inx h ;pt to next char + ret ;NZ from CPI 4 +getfne: + xra a ;return Z + ret +; +; Pt to File Name whose Number (1-4) is in A +; +ptfn: + mov b,a ;number in B + call getfn2 ;pt to file name 2 + push d ;save DE + mov a,b ;file 0? + ora a + jz ptfnx + lxi d,11 ;size of file name and type +ptfn1: + dad d ;pt to next + dcr b ;count down + jnz ptfn1 +ptfnx: + pop d ;restore DE + ret +; +; Put File Name pted to by HL +; +putn: + mvi b,8 ;8 chars + jmp putc +; +; Put File Type pted to by HL +; +putt: + mvi b,3 ;3 chars +; +; Copy chars from HL to DE for up to 8 bytes - flush if space +; +putc: + mov a,m ;get next char + cpi ' ' ;skip spaces + jz putc1 + stax d ;put next char + inx d ;pt to next +putc1: + inx h ;pt to next + dcr b ;count down + jnz putc + ret +; +; Parameter is for Disk Letter +; +paramd: + call retud ;get DU in BC + mov a,b ;get disk letter + adi 'A' ;convert to ASCII + stax d ;store char + inx d ;pt to next + inx h ;pt to next char + ret +; +; Parameter is for User Number +; +paramu: + call retud ;get DU in BC + mov a,c ;get user number + mvi b,10 ;compute 10's + mvi c,'0' +pmu1: + sub b ;subtract 10's + jc pmu2 + inr c ;increment 10's + jmp pmu1 +pmu2: + add b ;add B back in + adi '0' ;convert to ASCII + mov b,a ;10's in C, 1's in B + mov a,c + cpi '0' ;no leading 0's + jz pmu3 + stax d ;store char + inx d ;pt to next +pmu3: + mov a,b ;get 1's + stax d ;store char + inx d ;pt to next + inx h ;pt to next char + ret +; +; Parameter is command line tail +; +paraml: + inx h ;pt to char after parameter letter + push h ;save ptr to parameter + lxi h,tbuff+1 ;pt to tail +paramt1: + mov a,m ;copy tail into line + ora a ;end of tail? + jz paramt2 + stax d ;store char + inx h ;pt to next + inx d + jmp paramt1 +paramt2: + pop h ;pt to next char in script + ret ;continue processing +; +; Form assumed to be $$ +; +noparam: + mvi a,'$' ;store '$' + stax d + inx d ;pt to next chars + inx h + ret +; +; $0 - ALIAS Command Name +; +oname: + inx h ;pt to next char + push h ;save ptr + call getefcb ;pt to FCB + jz paramx ;skip if no external FCB + inx h ;pt to first char + mvi b,8 ;at most 8 chars +on1: + mov a,m ;copy into output line + cpi ' ' ;done if space + jz paramx + stax d ;store char + inx h ;pt to next + inx d + dcr b ;count down + jnz on1 + jmp paramx + +; +; Done -- Buffer is Loaded +; +done: + xra a ;store ending 0 + stax d + call codend ;pt to buffer + mov a,m ;skip if empty line + ora a + rz +; +; Determine if ZCPR3 Environment Support is Available for Command Line +; + push h ;save ptr to line + call getenv ;get environment + mov a,h + ora l + jz done0 +; +; Get environment from descriptor +; + call getcl1 ;get command line data + mov b,a ;save char count + mov a,h ;check for no command line + ora l + jz done0 + mov a,b ;restore char count + ora a ;check for no chars + jnz done1 +; +; Get environment from MACRO File +; +done0: + lxi h,z3cl ;pt to command line from macro expansion + mvi a,z3cls ;get size of command line +; +; Store Command Line +; +done1: + pop d ;DE pts to line + call putcl ;store in command line + rnz ;return to ZCPR3 for processing if OK + call eprint + db 'Ovfl',0 + ret +; +; PUTCL stores a command line in the ZCPR3 command line buffer. +; This command line is pted to by DE. CL Buffer is pted to by HL. +; Size in A. On return, A=0 and Zero +; Flag Set if command line overflow is possible (no change to command line). +; +putcl: + shld clbfr ;save ptr to command line buffer + ora a ;any command line? + jz nocl + mov b,a ;char count in B + xchg ;HL pts to new line + push h ;save ptr to new line +pcl2: + mov a,m ;go to end of line + ora a ;at end? + jz pcl3 + inx h ;pt to next + dcr b ;count down + jnz pcl2 + pop h ;clear stack +; +; Command Line Buffer Overflow +; +nocl: + xra a ;error return + ret +; +; At End of New Command Line (ptr on stack) +; Ptr to first char of new command line on stack +; HL pts to ending 0 of new command line +; B = number of chars remaining before overflow of Z3 command line +; +pcl3: + push h ;save ptr to last byte in case of error + lhld clbfr ;pt to tail of command line + mov e,m + inx h + mov d,m + xchg ;HL pts to command line tail + pop d ;restore ptr to last byte of command line + push d + mov a,m ;get first char of tail + cpi ';' ;continuation? + jz pcl4 + ora a ;done? + jz pcl4 + mvi a,';' ;set continuation char + stax d + inx d + dcr b ;count down + jz pcl5 ;overflow +; +; Copy tail onto end of new command line +; +pcl4: + mov a,m ;get next char + stax d ;store it + inx h ;pt to next + inx d + ora a ;done? + jz pcl6 + dcr b ;count down + jnz pcl4 +; +; Command Line too Long +; +pcl5: + pop h ;get ptr to end of old line + mvi m,0 ;store ending 0 + pop psw ;clear stack + jmp nocl +; +; New Command Line OK +; +pcl6: + pop psw ;clear stack + lhld clbfr ;pt to command line buffer + lxi d,4 ;pt to first char in buffer + xchg + dad d + xchg + mov m,e ;store address + inx h + mov m,d ;DE pts to first char of buffer + pop h ;HL pts to first char of new line +; +; Copy New Command Line into Buffer +; +pcl7: + mov a,m ;copy + stax d + inx h + inx d + ora a ;EOL? + jnz pcl7 +; +; Exit with OK Code +; + xra a ;set NZ + dcr a + ret + +; +; Buffers +; +clbfr: + ds 2 ;ptr to command line + + end + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/CD.COM b/Images/Source/hd0/s0/u15/CD.COM new file mode 100644 index 0000000000000000000000000000000000000000..adc74b39224d4d4c819330a386d23c4be9c778fe GIT binary patch literal 896 zcma)4%TE(Q7@wWl77A^#G!hEN3~adYl1SuG9+4ER3ep1vAMwSbV2x~(0z!jsG$zI) z{sG)fI1)^BQBK{aB(urH)T9?YRZ zB`E^V>fRvVBxx>_fiO56WBr}ru2d`vRszJOZ3<041W4-k@-rg;h5a?$g{)&8p{8Sj zw_y!AsUyjSg(-QKjwa+djXjR1<{l+iP!=IHK0%!oiCr6?KqBA4nispan4;<)yrVT^ zNoo6F8_BiR&vHU7@?^4JoGX+J{u*mxT+C;-Skx#%zzCLHT0bskFJPm<-(bb+)u*uv zGSFKabm=lyYNep6FJqTBjf*|V1f~gT0wOX(#-fxeIt1;7leM1}S~(8XqtIPxvJeb5 zsKxwWNRj4}j;MdI(+*8ijJ(R4IcDuvsgNrd{2{oIzG%Kd)xYAXtI3B#W4RlCKcJbL zehS9S-lG5!dUEp*O3DTS^P+mRQ(~bJo*Ij!o^!YeUMmH`Xypj z*s4;$O0tc_k3jiA(y9)Q;~iE+2P)U2&tn7Bd9nL85o$uoa-HCwnvT~v1Oj~oLdF*1y|h`AHbiD?m? on9`Gv`@^EvBR<^)Yd@JC+ao%iRNH)_)V4L+;E0&LDE@E#-!zMPz5oCK literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/CD.MAC b/Images/Source/hd0/s0/u15/CD.MAC new file mode 100644 index 00000000..14eeaf8d --- /dev/null +++ b/Images/Source/hd0/s0/u15/CD.MAC @@ -0,0 +1,152 @@ +; +; Program: CD +; Version: 3.0 +; Author: Richard Conn +; Date: 12 Apr 84 +; Previous Versions: None +; Derivation: In Concept from CD 2.4 for ZCPR2 +; +version equ 30 +z3env set 0f400h + +; +; CD is used to log into a new directory by name or DU (DIR or DU forms) +; and to automatically run ST once there if it is available. +; +; Syntax: +; CD or CD // <-- Print Help +; CD dir: <-- Log In and Run ST.COM +; + +; +; OS Equates et al +; +cpm equ 0 +udbyte equ 4 +bdos equ 5 +fcb equ 5ch +tbuff equ 80h +tpa equ 100h +cr equ 0dh +lf equ 0ah + +; +; SYSLIB and Z3LIB Functions +; + ext z3init,z3log + ext retud,moveb,initfcb,putcl,eprint,pafdc,cout,dutdir + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + lda fcb+1 ;check for help + cpi '/' ;help? + jnz cd + call eprint + db 'CD, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db cr,lf,'Syntax:' + db cr,lf,' CD dir: or CD du: <-- Change Directory' + db 0 + ret +; +; Log into DU converted by ZCPR3 +; +cd: + lxi d,fcb ;pt to FCB + call z3log ;login to DU + call retud ;set DU in the UD byte + mov a,c ;set user + rlc ;rotate right 4 bits + rlc + rlc + rlc + ani 0f0h ;mask + mov c,a ;save for now + mov a,b ;get disk + ani 0fh ;mask + ora c ;mask in user + sta udbyte ;save value in UD byte +; +; Print New Directory +; + call eprint + db ' Logging Into ',0 + call retud ;get DU in BC + mov a,b ;get disk + adi 'A' + call cout + mov a,c ;get user + call pafdc ;print number + mvi a,':' ;print colon + call cout + call dutdir ;convert to name + jz runfile ;run file if no name + mvi b,8 ;8 chars max to name (pted to by HL) +prtname: + mov a,m ;get name char + cpi ' ' ;done? + jz runfile + inx h ;pt to next + call cout + dcr b ;count down + jnz prtname +; +; Look for File +; +runfile: + lxi h,stfile ;pt to FCB + lxi d,fcb ;copy into FCB + mvi b,12 ;12 bytes + call moveb + call initfcb ;init FCB + mvi c,15 ;try to open file + call bdos ;use BDOS + cpi 0ffh ;not found? + jz cpm ;done - no ST.COM + lxi h,stcl ;pt to default command line + call putcl ;store it in ZCPR3 CL Buffer + jnz cpm ;abort to OS if done + call eprint ;print error message + db ' Command Line Overflow',0 + jmp cpm + +; +; Buffers +; +stfile: + db 0,'ST COM' ;default command +stcl: + db 'ST',0 ;default command line + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/CLEAND15.LBR b/Images/Source/hd0/s0/u15/CLEAND15.LBR new file mode 100644 index 0000000000000000000000000000000000000000..1efb96bd05bd9669f6cc87e22bb36661a2170576 GIT binary patch literal 16896 zcmeIZcU05Q(J0UIe9! zV4;cKFNg)i^2XnDpZ9s5bMAfLd(J)Q-hb|%lg(#$W_D+1C$qDY`G8RWQ9vLt=({H9 zzZSf?0nSn%ql~w~gFz6`R{wtmgZ^K*vjr4{1Qmq*58#GYHhdsDP|f830B+%o=LeaC z=7ayca1$G2XQD4i807Nozrz3g2m7f13i-Fz{~z2iAea>D8A6h`O$etAMGQzJp-?s? z?wq#lr77{`Vjb>%~_l3&ioh|+~sgl{>F9kFTrDCY2{NM0BeWOW{sF+aiNZQ9g zAk+_~jZ#$6Gx$&RG)ep?dK3nQQdLn

_Qy9GW!#;$Rg1HHRtAyFJ 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�ygdV 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 pPSm9b)ZLk@`=M1YyM#&hiex$FV{Pa#31gV z@q(>E=wo398)tae6(n@wmp+Wzq%Qo`2T1XFJVGB{Xg-FGJNR&4pfl+24cCzqav~X3 z;>6qFJ%)UzklCo;WlX<*hw;Ub=`XbHYJUYfYTGVQbJ+XS@zlhe&tWHI8-qlm2_I1$ z_R#qhASErPpVX72l1PzgocQJBq#Tb#5!GVK*B`zcN zJ}bp=S?a^aZxuhotKB*d`>-;TAhC(LXly1%@#M*rl1P(e^rB2HA3qp6A*$b2*UzNDdc=Yp+*7M9_Z^2fOiw| zG*MD#K;*2PCY@cO@IZe9us4qtz-!V@FmiJ5zcOsdM7mzFHf|0ViY%l-h+%F1hXmk z=L>>jkyR0rX7Ec5Cd=a~gWa-Q18f*QH}$}eYr&oQ?+arra|MAtE&H~(*H(DJ?qtNZ z8*=fuX{E(x+Lu~v%}219HTM@1)4SdI2-eSJF#%M*0K z>IhnB4q~;HrHpW((@z57a3~DZ7*xn%Xw+$$9G!?*Lz0`{H=Wt1Xs%IYWU$i>H4Irz zPW*KKQ2Jq~F~A#j%$RsWEDMkh7Z2`=Q;KT}b9-RlQ1ksT<#e-oY3PTWf+M>+Ko zw^0o}c!Q&zc!RSXzQL`pJmS<_-1^cZuGn2YI|o(DQ-xa`_%h!(lxZB7MzI^%BG{I| zhBSsR-BK>zo(6;J2q%qT5nKXhSvm>6&VRk~9w(i~i_2~*T2_y9n*q>#4JD#9Ul4se zvsI^|aPL6ib)j~Kxlf+57U*E`vtVc_NDeEoMd^;EE6&xyJ;>(tRuuGf?zWOKSh->RB3!~+&w6ROxUpML zatDhiolfY3{IHY2wVq#G)t(p&_=yGzPLvgMdIfLp)}P}lXbsb$uVB-z|B6ja39moF z>OJg4KpgO&>-BeXZf1cK&+L7om0ninhW_DhTk}Msc~sF|M~hG@5wV?-i6r5T$lX zGY^|Ue04Fut~t?W4p%Z91JR^zq+5;GkEV)B&D?h2Y1qp~^MMFF&>P VHlz!DCa0(P{S9bco8!0b{{t0AnRoyI literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/CLEANDIR.MAC b/Images/Source/hd0/s0/u15/CLEANDIR.MAC new file mode 100644 index 00000000..4d5d71e2 --- /dev/null +++ b/Images/Source/hd0/s0/u15/CLEANDIR.MAC @@ -0,0 +1,857 @@ +; +; Program: CLEANDIR +; Derivation: SAP 3.8 (see following history for authors) +; Derivation By: Richard Conn +; Version: 1.1 +; Date: 28 November 1984 +; Previous Versions: 1.0 (20 June 84) +; +; bug fix ;841201 Peter T Lyman +; Version 1.1P +; +; Search for ';841201' to locate the code +; +; CLEANDIR can and does wipe out the operating system +; (also known as a crash) whenever the maximum size of +; the directory (DRM) exceeds the available memory.... +; +; Maybe that is a good feature, since you at least don't +; hurt the disk... +; +; However on my hard disk I have two platters with +; DRM equal to 2048.... In this case CLEANDIR crashes... +; +; The fix that I have added (I did this with an early version +; of SAP) gives you a choice.... If DRM is greater than +; the space available betwwen BUF and BDOS, you are given +; a choice with proceeding if the actual number of directory +; entries is less than or equal to the space available.... +; If not you ABORT..... +; +; The down side risk of this modification is that if you +; proceed ("Y") when the actual number of files exceeds +; the space available, you lose all the directories entries +; which don't fit in the available space.... +; +; With out the fix the system crashes and you cannot clean the +; directory... With the fix you can clean the directory, but +; you can lose files if you don't pay attention.... +; + +vers equ 11 +z3env equ 0f400h + +; +; SYSLIB and Z3LIB References +; + ext z3init,z3log + ext eprint,cout + ext codend + ext phlfdc ;841201 + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment + +; v3.8 SORT AND PACK CP/M DISK DIRECTORY - 10/16/83 +; +; THIS PROGRAM READS THE DISK DIRECTORY TRACKS, SORTS THEM ALPHABETICALLY +; THEN REPLACES THEM ON THE DISK. ALL UNUSED OR ERASED AREAS ON THE DIR- +; ECTORY TRACK ARE REFORMATTED WITH CONTINUOUS 'E5' CHARACTERS. (THIS +; ERASES PREVIOUS FILE NAMES WHICH HAVE BEEN DEACTIVATED.) SORTING THE +; DIRECTORY IN THIS MANNER OFFERS MANY ADVANTAGES. SOME OF THEM ARE: +; +; 1) ALLOWS 'DIR' TO SHOW AN ALPHABETIZED LISTING +; 2) ELIMINATES POTENTIAL PROBLEMS WITH "UNERASE" PROGRAMS +; 3) SPEEDS UP ACCESS VIA 'SD' AND OTHER SPECIAL PROGRAMS +; 4) ASSISTS ON WORKING DIRECTLY ON THE DISK WITH 'DUU', ETC. +; 5) REMOVES FILES FROM THE DISK SOMEBODY ELSE COULD RECOVER +; +; - Notes by Irv Hoff W6FFC +; +; 1977 Written by L. E. Hughes. Modified extensively since by Bruce +; Ratoff, Keith Petersen, James Prest, Ron Fowler, Frank Gaude, +; Irv Hoff and likely others. +; +; 10/16/83 Now using a Shell-Metzner sort which speeds the sorting time +; considerably, especially on large directories. (SFK) +; +; 07/27/83 Shows an error flag for MP/M and CP/M+ both. Rewrites dir- +; tory even if previously sorted, to insure erased programs at +; v3.7 end of directory are properly cleared. +; - Irv Hoff +; +TRUE EQU 0FFH +FALSE EQU 0 +; +BDOS EQU 5 +CR EQU 0DH +DPBLEN EQU 15 ;SIZE OF CP/M2 DISK PARAMETER BLOCK +FCB EQU 5CH +FCB2 EQU 6CH +GETDSK EQU 25 ;BDOS "GET DISK #" FUNCTION +LF EQU 0AH +SELDRV EQU 14 ;SELECT DRIVE +;..... +; +; +; OBTAIN BIOS VECTORS +; +VECTRS: + JMP GETVEC +; + DS 53 ;ROOM FOR JUMP VECTORS +; +WBOOT EQU VECTRS+3 ;DO NOT CHANGE THESE EQUATES +CSTS EQU VECTRS+6 +CI EQU VECTRS+9 +CO EQU VECTRS+12 +LO EQU VECTRS+15 +PO EQU VECTRS+18 +RI EQU VECTRS+21 +HOME EQU VECTRS+24 +SELDSK EQU VECTRS+27 +SETTRK EQU VECTRS+30 +SETSEC EQU VECTRS+33 +SETDMA EQU VECTRS+36 +READ EQU VECTRS+39 +WRITE EQU VECTRS+42 +LSTS EQU VECTRS+45 ;ONLY IN CP/M2 +SECTRN EQU VECTRS+48 ;ONLY IN CP/M2 +; +; GET BIOS VECTORS +; +GETVEC: + LXI D,WBOOT + LHLD 1 + MVI B,53 + CALL MOVE +; +; PROGRAM STARTS HERE +; + LXI H,0 + DAD SP ;GET ADDRESS OF CP/M STACK + SHLD STACK ;STORE IT SO WE CAN GO BACK TO IT + CALL CODEND ;DETERMINE FREE SPACE + LXI D,80H ;ALLOW 80H BYTES FOR STACK + SHLD BUF ;SET BUFFER ADDRESS + SPHL ;SET TOP OF STACK + lda bdos+2 ;fetch bdos page ;841201 + dcr a ; less one ; + lhld buf ;fetch buf pntr ; + sub h ;available space for dir ; + mvi h,0 ; ; + mov l,a ;number of pages available ; + dad h ;x2->number of sectors ; + dad h ;x2 ; + dad h ;x2->number of directory ; + ; entries which will fit ; + shld maxdir ;save for later ; + XRA A ;SET NO REVERSE OF USER AREAS + STA REVERSE + CALL EPRINT ;PRINT MSG: + DB 'CLEANDIR, Version ' + DB (vers/10)+'0','.',(vers mod 10)+'0','P' ;841201 + DB 0 + LDA FCB+1 ;CHECK FOR HELP REQUEST + CPI '/' ;ANY OPTION MEANS HELP + JZ HELP + CPI 'D' ;SELECT DESCENDING ORDER? + JZ DESC + LDA FCB2+1 ;CHECK FOR OPTION CHAR + CPI 'D' ;DESCENDING ORDER OF USER AREAS? + JNZ SAP +DESC: + MVI A,0FFH ;ENABLE REVERSE + STA REVERSE + JMP SAP +; +; PRINT HELP MESSAGE +; +HELP: + CALL EPRINT + DB CR,LF,'Syntax:' + DB CR,LF,' CLEANDIR dir: o' + DB CR,LF,'Options:' + DB CR,LF,' D - sort in Descending Order (users and files)' + DB CR,LF,'Note:' + DB CR,LF,' Only disk ref is used in dir: form' + DB 0 + JMP EXIT1 +; +; MAIN PROGRAM ROUTINE +; +SAP: + CALL SETUP + call ckdrsz ;check available memory space ;841201 + CALL RDDIR + CALL CLEAN + CALL SORT + CALL PACK + CALL WRDIR + CALL EPRINT + DB 'Done',0 + JMP EXIT + +ckdrsz: lhld drm ;fetch max dir size ;841201 + xchg ; ; + lhld maxdir ;fetch memory available for dir ; + call hlmde ;subtract ; + rnc ;return if room ; + call eprint ;else... ; + db lf,lf,lf,lf,lf,lf ; + db cr,lf,'Your maximum directory size is ',0 ; + lhld drm ;print max dir size ; + inx h ; ; + call phlfdc ; ; + call eprint ; ; + db ' directory entries.',0 ; + call eprint ; ; + db cr,lf,'your memory can only handle ',0 ; + lhld maxdir ;print space available ; + call phlfdc ; ; + call eprint ; ; + db ' directory entries.' ; + db cr,lf,lf,'IF.....your directory DOES NOT exceed ',0; + lhld maxdir ; ; + call phlfdc ; ; + call eprint ; ; + db ' directory entries,' ; + db cr,lf,' (Directory entries NOT Files)'; + db cr,lf,' you may enter "Y" to proceed,' ; + db cr,lf,lf,'ELSE...any other key ABORTS.' ; + db cr,lf,lf,lf,lf,lf,lf,lf,lf,'..............> ',7,0; +ck1: mvi c,6 ;get input ; + mvi e,-1 ; ; + call bdos ; ; + cpi 0 ; ; + jz ck1 ; ; + ani 5fh ; ; + cpi 'Y' ; ; + jnz exit1 ; ; + lhld maxdir ; ; + shld drm ; ; + ret ; ; + ; ; +hlmde: mov a,h ; ; + cmp d ; ; + rnz ; ; + mov a,l ; ; + cmp e ; ; + ret ; ; +; +; SUBROUTINES +; +; +CLEAN: + LXI H,0 ;I = 0 +; +CLNLOP: + SHLD I + CALL INDEX ;HL = BUF + 16 * I + MOV A,M ;JUMP IF THIS IS A DELETED FILE + CPI 0E5H + JZ FILLE5 + LXI D,12 + DAD D ;HL = HL + 12 + MOV A,M ;CHECK EXTENT FIELD + ORA A + JNZ CLBUMP ;SKIP IF NOT EXTENT ZERO + INX H ;POINT TO RECORD COUNT FIELD + INX H + MOV A,M ;GET S2 BYTE (EXTENDED RC) + ANI 0FH ; FOR CPM2, 0 FOR CPM1 + MOV E,A + INX H + MOV A,M ;CHECK RECORD COUNT FIELD + ORA E + JNZ CLBUMP ;JUMP IF NON-ZERO + LHLD I ;CLEAR ALL 32 BYTES OF + CALL INDEX ; DIRECTORY ENTRY TO E5 + INX H + MOV A,M ;GET FIRST CHAR OF FILENAME + DCX H ; WARD CHRISTENSONS CAT PGMS + CPI '-' ; HAVE DISKNAME OF ZERO LENGTH + JZ CLBUMP ; THAT START WITH '-', DON'T DELETE + CPI ' ' ; DISCAT USES DISKNAME OF ZERO LENGTH + JZ CLBUMP ; THAT STARTS WITH ' ', DON'T DELETE +; +FILLE5: + MVI C,32 ;NUMBER OF BYTES TO CLEAR +; +FILLOP: + MVI M,0E5H ;MAKE IT ALL E5'S + INX H + DCR C + JNZ FILLOP +; +CLBUMP: + LHLD DRM ;GET COUNT OF FILENAMES + INX H + XCHG + LHLD I ;OUR CURRENT COUNT + INX H + PUSH H + CALL SUBDE ;SUBTRACT + POP H + JC CLNLOP ;LOOP TILL ALL CLEANED + RET +; +DODIR: + STA WRFLAG + LHLD SYSTRK + CALL DOTRAK ;SET THE TRACK + LXI H,0 + SHLD SECTOR + LHLD DRM ;NUMBER OF DIR ENTRIES + INX H ;RELATIVE TO 1 + CALL ROTRHL ;DIVIDE BY 4 + CALL ROTRHL ; TO GET SECTOR COUNT + SHLD DIRCNT + LHLD BUF + SHLD ADDR ;FOR DMA ADDRESS +; +DIRLOP: + LHLD SECTOR ;GET SECTORS PER TRACK + INX H + XCHG + LHLD SPT ;CURRENT SECTOR + CALL SUBDE ; SECTOR - SPT + XCHG + JNC NOTROV +; +; TRACK OVERFLOW, BUMP TO NEXT +; + LHLD TRACK + INX H + CALL DOTRAK + LXI H,1 ;REWIND SECTOR NUMBER +; +NOTROV: + CALL DOSEC ;SET CURRENT SECTOR + LHLD ADDR + MOV B,H ;SET UP DMA ADDRESS + MOV C,L + CALL SETDMA + LDA WRFLAG ;TIME TO FIGURE OUT + ORA A ; IF WE ARE READING + JNZ DWRT ; OR WRITING +; +; +; READ +; + CALL READ + ORA A ;TEST FLAGS ON READ + JNZ RERROR ;NZ=ERROR + JMP MORE ;GOOD READ, GO DO MORE +; +; TRACK AND SECTOR UPDATE ROUTINES +; +DOTRAK: + SHLD TRACK + MOV B,H + MOV C,L + CALL SETTRK + RET +DOSEC: + SHLD SECTOR + MOV B,H + MOV C,L + LHLD SECTBL + XCHG + DCX B + CALL SECTRN + MOV B,H + MOV C,L + CALL SETSEC + RET +; +; WRITE +; +DWRT: + MVI C,1 ;FOR CPM/2 DEBLOCKING BIOS'S + CALL WRITE + ORA A ;TEST FLAGS ON WRITE + JNZ WERROR ;NZ=BAD DIRECTORY WRITE + JMP MORE +; +; Exit Program +; +EXIT: + LDA NOBOOT ;SEE IF BOOT IS NEEDED + ORA A + JNZ EXIT1 ;FLAG IS SET IF ALREADY ALPHABETIZED + JMP 0000H ;A REWRITTEN DIRECTORY NEEDS A WARM BOOT +; +EXIT1: + LHLD STACK ;GET ADDRESS OF ORIGINAL CP/M STACK + SPHL ;RESET STACK ADDRESS + RET +; +INDEX: + DAD H + DAD H + DAD H + DAD H + DAD H + XCHG + LHLD BUF ;GET ADDRESS OF BUF + XCHG + DAD D + RET +; +; GOOD READ OR WRITE +; +MORE: + LHLD ADDR ;BUMP DMA ADRS FOR NEXT PASS + LXI D,80H + DAD D + SHLD ADDR + LHLD DIRCNT ;COUNTDOWN ENTRIES + DCX H + SHLD DIRCNT + MOV A,H ;TEST FOR ZERO LEFT + ORA L + JNZ DIRLOP ;LOOP TILL ZERO +; +; +; DIRECTORY I/O DONE, RESET DMA ADDRESS +; + LXI B,80H + CALL SETDMA + RET +; +; MOVE UTILITY SUBROUTINE +; +MOVE: + MOV A,M + STAX D + INX H + INX D + DCR B + JNZ MOVE + RET +; +; PACK DIRECTORY +; +PACK: + LXI H,0 ;I = 0 +; +PACK1: + SHLD I + CALL INDEX ;HL = BUF + 16 * I + LXI D,9 + DAD D ;HL = HL + 9 + MOV A,M ;JUMP IF FILETYPE NOT 'X$$' + SUI '0' ; WHERE 0.LE.X.LE.9 + JC PACK2 + CPI 10 + JNC PACK2 + STA J + INX H + MOV A,M + CPI '$' + JNZ PACK2 + INX H + MOV A,M + CPI '$' + JNZ PACK2 + INX H ;SET EXTENT NUMBER TO X + LDA J + MOV M,A + DCX H ;SET FILETYPE TO '$$$' + MVI M,'$' + DCX H + MVI M,'$' + DCX H + MVI M,'$' +; +PACK2: + LHLD I ;I = I + 1 + INX H + XCHG + LHLD DRM + INX H + XCHG + PUSH H + CALL SUBDE + POP H ;LOOP UNTIL I > DRM + JC PACK1 + RET +; +; READ AND WRITE DIRECTORY ROUTINES +; +RDDIR: + CALL EPRINT + DB ' --> Reading, ',0 + XRA A + STA NOBOOT ;ZERO THE FLAG + JMP DODIR ;ZERO THE WRITE FLAG FOR NOW +; +; COME HERE IF WE GET A READ ERROR +; +RERROR: + CALL EPRINT ;PRINT: + DB ' READ ERROR - No Change Made',0 + JMP EXIT +; +; DIVIDE HL BY 2 +; +ROTRHL: + ORA A ;CLEAR CARRY + MOV A,H + RAR + MOV H,A + MOV A,L + RAR + MOV L,A + RET +; +; SETUP FOR SELECTING DRIVE AND LOADING DISK PARM BLOCK +; +SETUP: + LXI D,FCB + CALL Z3LOG ;LOG INTO DISK SPECIFIED BY USER + MVI C,GETDSK ;OTHERWISE GET CURRENT DEFAULT DRIVE + CALL BDOS ;SO QUERY 'BDOS' FOR DRIVE + MOV C,A ;PREP FOR OBTAINING DPB + CALL EPRINT + DB CR,LF,' Disk ',0 + MOV A,C ;GET DISK NUMBER + ADI 'A' ;CONVERT TO ASCII + CALL COUT + CALL SELDSK +; +; GET CP/M 2.2 DPB DATA +; + MOV E,M + INX H + MOV D,M + INX H + XCHG + SHLD SECTBL + XCHG + LXI D,8 ;OFFSET TO DPB WITHIN HEADER + DAD D ;RETURNED BY SELDSK IN CPM2 + MOV A,M ;GET ADRS OF DPB + INX H + MOV H,M + MOV L,A + LXI D,DPB ;POINT TO DEST: OUR DPB + MVI B,DPBLEN + CALL MOVE + RET +; +; SORT THE DIRECTORY +; +SORT: + CALL EPRINT + DB 'Sorting (',0 + LDA REVERSE ;INDICATE ASC OR DSC + ORA A ;0=ASC + JZ SORTASC + CALL EPRINT + DB 'Descending',0 + JMP SORTDO +SORTASC: + CALL EPRINT + DB 'Ascending',0 +; +; SHELL-METZNER SORT +; +SORTDO: + CALL EPRINT + DB ' Order), ',0 + LHLD I + SHLD SNUMRECW + LHLD BUF + SHLD SSTADR + PUSH H ; AND SAVE IT + LXI H,32 + SHLD SRECLEN + PUSH H ; AND SAVE IT +; +; NOW DIVIDE # OF FIELDS BY 2 +; +DIVIDE: + LHLD SNUMRECW ;GET VALUE + CALL ROTRHL + SHLD SNUMRECW ;SAVE RESULT + MOV A,L ;IF SNUMRECW<>0 + ORA H ; THEN + JNZ NOTDONE ; NOT DONE +; +; ALL FIELDS SORTED +; + POP B ;CLEAN UP STACK + POP D + RET +; +NOTDONE: + XCHG + LHLD I + MOV A,L + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + SHLD SRECLEN + LXI H,1 + SHLD SSORTV1 + SHLD SSTADR + DCR L + POP B + PUSH B +NDONE1: + DAD D + DCX B + MOV A,B + ORA C + JNZ NDONE1 + SHLD SSORTV2 + XCHG + POP B + POP H + PUSH H + PUSH B +NDONE2: + SHLD SSORTV4 + SHLD SSORTV3 + XCHG + DAD D + XCHG +COMPARE: + POP B + PUSH B +COMPAR1: + LDAX D + ANI 7FH + PUSH B + MOV C,A + MOV A,M + ANI 7FH + MOV B,A + MOV A,C + SUB B + POP B + JNZ NOTEQU + INX H + INX D + DCX B + MOV A,B + ORA C + JNZ COMPAR1 + JMP NOSWITCH +; +; THE CONDITION AT NOTEQU: HAS TO +; BE CHANGED FOR DESCENDING SORT -- IF REVERSE=0, JNC TO NOSWITCH, ELSE +; JC TO NOSWITCH +; +NOTEQU: + PUSH PSW ;SAVE CONDITION + LDAX D ;GET (DE) + CPI 0E5H ;IF ERASED, SELECT ASCENDING + JZ ASCENDING + MOV A,M ;GET (HL) + CPI 0E5H ;IF ERASED, SELECT ASCENDING + JZ ASCENDING + LDA REVERSE ;DESCENDING SORT? + ORA A ;0=NO + JZ ASCENDING + POP PSW ;GET CONDITION FOR DESCENDING SORT + JC NOSWITCH + JMP SWITCH +ASCENDING: + POP PSW ;GET CONDITION FOR ASCENDING SORT + JNC NOSWITCH +SWITCH: + PUSH B + MOV B,M + LDAX D + MOV M,A + MOV A,B + STAX D + INX H + INX D + POP B + DCX B + MOV A,B + ORA C + JNZ SWITCH + LHLD SNUMRECW + MOV A,H + CMA + MOV D,A + MOV A,L + CMA + MOV E,A + LHLD SSORTV1 + DAD D + JNC NOSWITCH + INX H + SHLD SSORTV1 + LHLD SSORTV3 + XCHG + LHLD SSORTV2 + MOV A,E + SUB L + MOV L,A + MOV A,D + SBB H + MOV H,A + SHLD SSORTV3 + JMP COMPARE +; +NOSWITCH: + LHLD SSTADR + INX H + SHLD SSTADR + SHLD SSORTV1 + XCHG + LHLD SRECLEN + MOV A,L + SUB E + MOV A,H + SBB D + JC DIVIDE + LHLD SSORTV4 + POP D + PUSH D + DAD D + XCHG + LHLD SSORTV2 + XCHG + JMP NDONE2 +; +; UTILITY SUBTRACTION SUBROUTINE... +; HL=HL-DE +; +SUBDE: + MOV A,L + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + RET +;..... +; +; +WRDIR: + CALL EPRINT + DB 'Writing, ',0 + MVI A,1 + JMP DODIR +; +; COME HERE IF WE GET A WRITE ERROR +; +WERROR: + CALL EPRINT ;PRINT: + DB ' WRITE ERROR - Directory Left in UNKNOWN Condition',0 + JMP EXIT +; +; DATA AREA +; +ADDR: + DS 2 +BUF: + DS 2 +DIRCNT: + DS 2 +I: + DS 2 +J: + DS 2 +MAPPTR: + DS 2 +maxdir: + ds 2 ;841201 +NOBOOT: + DS 1 +NOSWAP: + DS 1 +REVERSE: + DS 1 +SECTBL: + DS 2 +SECTOR: + DS 2 +TRACK: + DS 2 +WRFLAG: + DS 1 +SRECLEN: + DS 2 +SSTADR: + DS 2 +SSORTV1: + DS 2 +SSORTV2: + DS 2 +SSORTV3: + DS 2 +SSORTV4: + DS 2 +SNUMRECW: + DS 2 +; +; DISK PARAMETER BLOCK: +; +DPB: +SPT: + DS 2 +BSH: + DS 1 +BLM: + DS 1 +EXM: + DS 1 +DSM: + DS 2 +DRM: + DS 2 +AL0: + DS 1 +AL1: + DS 1 +CKS: + DS 2 +SYSTRK: + DS 2 +; +STACK: + DS 2 ;SPACE FOR OLD STACK ADDRESS +; + END +; + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/CLNDR13B.LBR b/Images/Source/hd0/s0/u15/CLNDR13B.LBR new file mode 100644 index 0000000000000000000000000000000000000000..b74e2545b316c6680790634daafb771e585f9c75 GIT binary patch literal 21376 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/CMD.MAC b/Images/Source/hd0/s0/u15/CMD.MAC new file mode 100644 index 00000000..9a5cbf68 --- /dev/null +++ b/Images/Source/hd0/s0/u15/CMD.MAC @@ -0,0 +1,267 @@ +; PROGRAM: CMD +; VERSION: 1.0 +; DATE: 19 July 84 +; AUTHOR: Richard Conn +; PREVIOUS VERSIONS: None +; +z3env equ 0f400h +VERS EQU 10 ;version number + +; CMD is copyright (c) 1984 by Richard Conn +; All Rights Reserved +; CMD may be used freely by the ZCPR3 Community + +; +; CMD is used to define and run a command line. It either accepts +; the command line (including semicolons) which follow the verb CMD onto +; the command line buffer or, if no input is provided, it prompts the +; user for input and then places this into the command line buffer. +; +; Syntax: +; CMD cmd1;cmd2;... +; or CMD +; +; The sequence of commands "cmd1;cmd2;..." becomes the command line. +; + +; +; SYSLIB, Z3LIB, and VLIB References +; + ext z3init + ext getcl1,getcl2,puter2,putzex,dutdir + ext eprint,pafdc,cout,bline + ext retud + ext codend + +; +; Basic Definitions +; +TRUE EQU 0FFH ;define true and.. +FALSE EQU 0 ;..false. + +; +; System Addresses +; +OS$BASE EQU 000H ;system base.. +BDOS EQU OS$BASE+05H +FCB EQU OS$BASE+5CH +FCB2 EQU OS$BASE+6CH +TBUFF EQU OS$BASE+80H +TPA EQU OS$BASE+100H + +; +; ASCII Chars +; +LF EQU 0AH ;..linefeed.. +CR EQU 0DH ;..carriage return.. + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Mainline +; + call z3init ;initialize the ZCPR3 Env + +; +; Check for Help or Prompt +; + lda fcb+1 ;check for help request + cpi ' ' ;prompted input? + jz prompt + cpi '/' ;help? + jnz cinit +; +; Print Help Message +; +help: + call eprint + db 'CMD, Version ' + db (VERS/10)+'0','.',(VERS MOD 10)+'0' + db cr,lf,' Syntax: CMD cmd1;cmd2;... or CMD (prompted input)' + db cr,lf,' CMD defines the command line in the CL buffer' + db 0 + ret +; +; Initialize Command Line +; +cinit: + call getcl1 ;check for command line buffer + jz nocl +; +; HL now points to the command line buffer +; + call codend ;pt to free area + inx h ;skip 2 bytes + inx h + xchg ;... in DE + lxi h,tbuff+2 ;pt to option input + call copystr ;copy string + mvi c,1 ;set not empty +; +; Entry point to build rest of command line, where DE=next address +; and C=empty line flag (C=0 means line was empty) +; +checkcl: + mov a,c ;get empty flag + call puter2 ;set error flag + call getcl2 ;get address of command line + jz setsh ;set shell command + call copystr ;copy string +setsh: + call getcl1 ;pt to command line buffer + xchg ;... in DE + lxi h,4 ;pt to first char position + dad d + shld lstart ;save start address in case of abort + xchg + mov m,e ;store pointer + inx h + mov m,d + inx h ;pt to buffer size + mov b,m ;get it in B + call codend ;pt to string + inx h ;skip 2 bytes + inx h +clcopy: + mov a,m ;get char + stax d ;put char + inx h ;pt to next + inx d + ora a ;done? + rz + dcr b ;count down + jnz clcopy +; +; Command Line Too Long +; + lhld lstart ;zero command line + mvi m,0 + call eprint + db ' Command Line too Long for Buffer',0 + ret + +; +; Print no command line buffer message and exit +; +nocl: + call eprint + db ' No Command Line Buffer',0 + ret + +; +; Copy string from HL to DE +; Store ending 0 and leave pointer in DE to it +; +copystr: + mov a,m ;get char + stax d ;store it + ora a ;done? + rz + inx h ;pt to next + inx d + jmp copystr + +; +; Prompt User for Input +; +prompt: + call eprint + db 'CMD ',0 + call retud ;get DU +; +; Print DU +; + mov a,b ;output disk + adi 'A' + call cout + mov a,c ;output user + call pafdc + mvi a,':' ;separator + call cout +; +; Print DIR +; + call dutdir ;convert to name + jz prompt2 ;no name input +; +; DIR is defined +; + mvi b,8 ;8 chars max +prompt1: + mov a,m ;get char + cpi ' ' ;done if space + jz promptx + call cout ;echo it + inx h ;pt to next + dcr b ;count down + jnz prompt1 + jmp promptx +; +; DIR is not defined +; +prompt2: + call eprint ;name not found + db 'Noname',0 +; +; Complete prompt and get user input +; +promptx: + call eprint + db '> ',0 + mvi a,1 ;tell ZEX that it is prompted + call putzex + call codend ;use buffer area + mvi m,254 ;set large line size + mvi a,0 ;no caps + call bline ;get input line + xra a ;no more prompt + call putzex + call codend ;skip to EOL + inx h + inx h + xchg ;ptr in DE + ldax d ;get first char + mov c,a ;save flag +; +; Skip to end of input line +; +findeol: + ldax d ;get char + ora a ;done? + jz checkcl + inx d ;pt to next + jmp findeol +; +; Buffers +; +lstart: + ds 2 ;start of command line + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/CMDFILES.HLP b/Images/Source/hd0/s0/u15/CMDFILES.HLP new file mode 100644 index 00000000..822026f2 --- /dev/null +++ b/Images/Source/hd0/s0/u15/CMDFILES.HLP @@ -0,0 +1,729 @@ +; + + + + Command File Processing + + -- Basics -- + 0 - Overview + 1 - Restrictions + 2 - Extended Cmd Procs + +-- Disk-Based Command Files -- -- Memory-Based Command Files -- + S - The SUB Utility Z - The ZEX Utility + E - SUB Error Messages D - ZEX Directives + G - GOTO Command + + +:0 + + Overview of Command Files + + Á  Commanä  Filå ió á filå  containinç  commands¬  witè +optionaì  parameteò substitution¬  whicè caî bå executeä  bù +ZCPR3®  Theså  commandó  arå  exactlù  thå  samå  kindó  oæ +commandó aó yoõ woulä issuå aô thå console¬  anä anù commanä +whicè caî bå issueä froí thå consolå caî alsï bå issueä froí +withiî á Commanä Filå (witè jusô á couplå oæ restrictions). + + Thå   Commanä  Filå  Facilitieó  oæ  SU  anä  ZEØ  arå +availablå  undeò ZCPR3®  Similaò iî concepô tï  thå  SUBMIÔ +facilitù oæ CP/M¬  botè SU anä ZEØ arå upward-compatablå tï +SUBMIÔ   (anù   SU  filå  caî  ruî  undeò  theí  witè   fe÷ +restrictions). + + + Botè  SU anä ZEØ begiî processinç bù  translatinç  thå +commanä  fileó theù arå giveî intï slightlù differenô forms® +Botè dï parameteò substitution¬  extractinç parameteró  froí +thå  commanä  lineó  anä placinç theí intï thå texô  oæ  thå +commanä  streaí theù arå building®  SU buildó thå  commanä +streaí tï bå executeä oî disë drivå Á undeò thå currenô useò +number¬ anä ZEØ buildó thå commanä streaí iî memory. + + ZEØ  ió generallù preferreä tï  SUB®  Undeò  ZEX¬  thå +commanä  streaí ió executeä mucè morå quicklù thaî undeò SU +sincå ZEØ accesseó memorù foò thå nexô characteò whilå ZCPR³ +haó tï gï tï disk® ZEX¬ however¬ takeó uð memorù space¬ anä +thaô ió itó maiî drawback® Thå TPÁ (Transienô Prograí Area© +undeò ZEØ ió smalleò thaî whaô ió availablå tï commanä fileó +runninç undeò SUB®  Thió ió thå basiã trade-ofæ betweeî thå +twï Commanä Filå Processors. + + + Anotheò  differencå  betweeî SU anä ZEØ  ió  thaô  SU +commanä  streamó  arå  line-orienteä anä extracteä  onlù  bù +ZCPR3®  Thaô  is¬  SU buildó á commanä filå nameä  $$$.SU +likå SUBMIÔ does¬ anä ZCPR³ extractó á linå froí thå $$$.SU +filå  eacè  timå iô ió entered®  Wheî ZCPR³ ió  entereä  bù +eitheò  á  Colä Boot¬  Warí Boot¬  oò simplå RETurî  froí  á +loadeä program¬  iô checkó thå Multiplå Commanä Linå  Buffeò +foò  á pendinç command®  Iæ ZCPR³ findó á pendinç  command¬ +thå commanä ió executed®  Iæ not¬ ZCPR³ checkó thå Aº drivå +(currenô  user©  foò á $$$.SU file®  Iæ á $$$.SU filå  ió +found¬  ZCPR³ extractó thå nexô linå froí thå $$$.SU  file¬ +processeó  it¬  anä beginó executioî oæ iô froí thå Multiplå +Commanä Linå Buffer®  Finally¬  iæ thå $$$.SU filå ió  noô +found¬ ZCPR³ promptó thå useò foò input. + + Thaô  ió  ho÷  commanä streaí processinç undeò  SU  ió +performed®  ZEX¬  however¬ actó aó á combinatioî oæ SU anä +XSUB®  Oncå commanä streaí processinç beginó undeò ZEX¬ thå +ZEØ monitor¬ locateä undeò ZCPR³ witè thå associateä commanä +stream¬  supplieó  á  characteò eacè timå thå  BIOÓ  Consolå +Inpuô  Routinå ió called®  ZEØ extractó thå nexô  characteò +froí thå commanä stream¬  examineó iô tï seå iæ iô ió á  ZEØ +commanä anä executeó iô iæ so¬ anä returnó iô tï thå callinç +prograí iæ iô ió noô á ZEØ command. + + Iî á sense¬  ZCPR³ itselæ doeó noô realizå thaô ZEØ  ió +running® Neitheò dï thå transienô programó iî general® ZEØ +simplù  interceptó alì calló tï thå BIOÓ Consolå Inpuô  (anä +Inpuô Status© routinå anä provideó aî inpuô characteò iî itó +place®  Therå arå exceptionó tï thió case¬ buô theù wilì bå +discusseä later. + + Botè SU anä ZEØ fiô intï thå ZCPR³ Systeí nicely¬  anä +theù  caî  bå useä tï acô aó Extendeä Commanä Processoró  iæ +desired® Thió ió discusseä later. +:G +Command: GOTO 1.0 + +Syntax: + GOTO label + +;=label any_text + +Function: + + GOTÏ ió á ZCPR³ utility¬ designeä tï bå ruî froí withiî +á  ZEØ commanä file¬  whicè permitó branching®  Iô  acceptó +onlù onå argument¬  á label¬ whicè ió defineä withiî thå ZEØ +filå aó á speciaì commenô oæ thå form: + + ;=label + +Anù  texô whicè followó thå "label¢ phraså ió considereä  tï +be comment and is not processed. + + +Options: + None + +Comments: + + GOTÏ wilì ONLÙ worë correctlù iæ executeä withiî á  ZEØ +command file. GOTO will issue an error message otherwise. + + Withouô thå ZCPR³ Flo÷ Controì facility¬  GOTÏ woulä bå +oæ littlå value® Witè IF¬ however¬ GOTÏ ió extremelù usefuì +in setting up loops and other flow-control constructs. + + Selected Error Messages: + + "ZEØ  Noô  Running¢ meanó thaô GOTÏ waó  executeä  froí +outside a ZEX command file. + + "Labeì  xxø  Noô Founä -- Abortinç ZEX¢ meanó thaô  thå +referenceä labeì waó noô founä withiî thå commanä  file¬  sï +ZEX execution is terminated. + +Examples of Use: + + ZEX Command File 1: + + REG S1 0;note Register 1 = 0 + ;=start + XIF;note Exit all pending IFs + ECHO Hello, World + IF ~1 3;note IF Register 1 <> 3 + GOTO START + FI + + ZEX Command File 2: + + M80 =$1;note Assemble File + ; Strike ^C if Errors Exist - ^? + if ~nul $3;note IF there are 2 libs ... + L80 $1/N,$1,$2/S,$3/S,SYSLIB/S,/U/E;note link all + goto done + fi + if ~nul $2;note IF there is a 2nd arg ... + L8° $1/N,$1,$2/S,SYSLIB/S,/U/E;notå linë liâ $2 + else;note IF there is no 2nd arg ... + L80 $1/N,$1,SYSLIB/S,/U/E;note link + ;=done + fi + + + ZEX Command File 3: + + if NEC=$2 + echo Terminal is NEC + goto done + fi + if TTY=$2 + echo Terminal is TTY + goto done + fi + if DIABLO=$2 + echo Terminal is Diablo + else + echo Terminal is Undefined + fi + ;=done + xif;note Exit all pending IFs + ws $1;note Edit file + +:S +Command: SUB 3.0 + +Syntax: + + SUB or SUB // <-- Print Help Message + SUB /A Text <-- Abort $$$.SUB File + Processing at User's + Discretion + SUB /AB Text <-- Same as /A but Ring Bell + to Alert User + SUB /I <-- Enter Interactive Input + Mode + SUB filename params <-- As in Standard SUBMIT + + +Function: + + SU buildó á commanä filå oî disë (nameä $$$.SUB© whicè +ZCPR³  lookó  foò eacè timå iô ió readù foò á commanä  line® +Iæ  ZCPR³ findó sucè á file¬  iô extractó thå  nexô  commanä +from this file. + + SUB can also be used to sound alarms to the user. + +Options: + + As indicated above: + A - Permit abort + AB - Permit Abort and Ring Bell + I - Interactive Input + + +Comments: + + Thå  "SU  /A¢ anä "SU /AB¢ formó allo÷  thå  useò  tï +gracefullù  aborô á $$$.SU file®  ^à aô thå consolå caî bå +useä tï aborô sucè processinç aó undeò CP/M¬ buô thå /Á forí +allowó thå luxurù oæ startinç á commanä streaí anä  stoppinç +aô  á  criticaì  poinô tï allo÷ thå useò tï takå  hió  time¬ +inspecô  whaô  haó  happened¬  anä theî  decidå  whetheò  tï +proceeä oò not. + + Thå  "SU /I¢ forí eliminateó thå neeä foò thå useò  tï +uså  aî  editoò tï creatå á .SU file®  Iæ thå useò  haó  á +commanä  streaí hå wantó tï executå immediatelù anä  doesn'ô +carå tï dï iô again¬  hå caî uså thió option®  Iî response¬ +SU  allowó  hií  tï enteò hió  commanä  streaí  (sorry¬  nï +parameteò passing© á linå aô á time® Wheî iô ió alì entereä +(useò enteró aî emptù line)¬  thå $$$.SU filå ió builô  anä +executed. + + + Thå finaì form¬  "SU filenamå params"¬ ió identicaì iî +forí  tï  thå  SUBMIÔ  commanä  supplieä  witè  CP/M®   Thå +"filename¢  specifieó  thå  namå  oæ thå  .SU  filå  tï  bå +executed¬   anä  thå  parameteró  arå  associateä  witè  thå +substitutioî variableó oæ $1¬  $2¬ etc® Uð tï 2° parameteró +maù bå specified®  Thå sequencå "$$¢ placeó á "$¢ intï  thå +commanä  line¬  anä  thå characteò sequencå "^c¢ placeó  thå +indicateä controì characteò intï thå commanä linå (uparro÷ à +placeó Control-C). + + Thå SU commanä maù bå nesteä intï á $$$.SU file®  Iæ +á "SU filenamå params¢ commanä ió encountereä iî á  $$$.SU +file¬ SU runs¬ realizeó thaô thió haó happened¬ anä insertó +thå  indicateä  commanä file¬  witè parameteò  substitution¬ +intï  thå runninç commanä streaí aô thå  appropriatå  place® +Thió maù bå nesteä aó manù leveló deeð aó desired. + + + Undeò  ZCPR3¬  iæ  SU  ió executeä witè  thå  Multiplå +Commanä  Linå Facilitù invokeä anä morå commandó follo÷  thå +SU command¬  theî thå resô oæ thå Multiplå Commanä Linå  ió +inserteä aô thå enä oæ thå generateä $$$.SU file. + + Finally¬  SU followó thå ZCPR³ patè wheî searchinç foò +thå indicateä commanä file® Iô ió fullù integrateä intï thå +ZCPR³  Systeí  anä ió ablå tï emploù thå Externaì  Patè  anä +Multiplå Commanä Linå Buffeò featureó oæ ZCPR3. + + + +Selected Error Messages: + + "Param¢ erroò meanó thaô á parameteò waó referenceä anä +nonå waó giveî oî thå commanä line. + + "Linå Toï Long¢ meanó thaô thå inpuô line¬  afteò beinç +expandeä  witè  thå  inpuô parameters¬  waó  morå  thaî  12¶ +characters long. + + Á  morå completå lisô oæ erroò messageó ió giveî  undeò +the indicated section of the main menu. + + +Examples of Use: + + SUB cmdfile p1 p2 p3 + -- thå    filå   'cmdfile.SUB§    ió    processed¬ +substituting 'p1' for $1, 'p2' for $2, and 'p3' for $3 + + SUB /AB + -- durinç  thå executioî oæ á commanä  file¬  thió +commanä  causeó thå belì tï rinç aô thå consolå anä thå useò +is given a chance to abort execution + +:E + + SU provideó á numbeò oæ informativå diagnosticó tï thå +user®  Iî particular¬  wheî processinç á Commanä File¬ wheî +aî  erroò ió encountered¬  thå useò ió informeä oæ thå  linå +numbeò thå erroò occuró at. + + Thå  followinç summarizeó thå erroò messageó  presenteä +bù SUB: + + Disk Full + There is no room to write the $$$.SUB file + + Directory Full + There is no directory space for the $$$.SUB file + + Memory Full + There is not enough memory in which to build the + command stream to be placed into the $$$.SUB file + + SUB Error Messages, Con't + + SUBMIT File Not Found + The .SUB file specified in the command line could + not be found along the ZCPR3 path + + Parameter + Invalid Parameter Specified + + Too Many Parameters + More than 20 parameters were on the command line + + Line too Long + The current line in the command stream exceeds + 128 bytes + + SUBMIT File Empty + The .SUB file specified in the command line was + found to be empty + + SUB Error Messages, Con't + + Control Character + The ^c form was not followed by a letter A-Z + + +:Z + +Command: ZEX 3.0 + +Syntax: + + ZEX // <-- Print Help + + ZEX <-- Enter Interactive Mode + + ZEX filename params <-- Process .ZEX or .SUB + file as with SUBMIT + +Function: + + ZEØ  ió  á  memory-baseä commanä  filå  processor®  Iô +performó functionó likå SU anä XSU combined¬ anä itó inpuô +sourcå ió locateä iî memory¬  sï thaô itó executioî speeä ió +significantly greater. + + +Options: + + Aó indicateä above¬ therå arå nï optionó tï ZEX. + +Comments: + + Thå   Interactivå   Modå  oæ  ZEØ  executeó  likå   thå +Interactivå  Modå  oæ SUB®  Thå useò enteró  commanä  lineó +untiì  hå  ió satisfieä anä theî terminateó thå  procesó  bù +enterinç  aî emptù linå (simplù hittinç RETURN)®  ZEØ  theî +executeó thå commandó iî thå sequencå entered® Nï parameteò +passinç ió permitteä iî thió modå oæ operation. + + Thå   "ZEØ   filenamå   params¢  forí   ió   likå   thå +correspondinç  SU form®  ZEØ wilì searcè alonç  thå  ZCPR³ +Externaì Patè foò á commanä filå oæ thå forí filename.ZEØ oò +filename.SUB® Iæ á directorù ió entereä whicè containó botè +sucè files¬ thå filå oæ typå ZEØ wilì bå executed. + + + Oncå  ZEØ haó beguî execution¬  iô placeó á ZEØ Monitoò +jusô  undeò  ZCPR³ anä buildó thå commanä streaí  undeò  thå +monitor® Oncå complete¬ thå addresó oæ thå BDOÓ ió adjusteä +sï  thaô thå ZEØ monitoò anä itó commanä streaí wilì noô  bå +overwritteî  bù transienô programs¬  anä  executioî  begins® +Eacè  timå  thå BIOÓ Consolå Inpuô routinå  ió  called¬  ZEØ +supplieó thå inpuô character. + + Aó witè SUB¬ á ^à froí thå consolå wilì aborô executioî +oæ á ZEØ commanä stream®  Also¬  aó witè SUB¬  iæ á commanä +followó  ZEØ  iî á Multiplå Commanä Line¬  ZEØ appendó  thió +commanä tï thå commanä stream. + + + Unlikå  SUB¬  ZEØ  doeó noô permiô nestinç  oæ  commanä +files®   ZEØ  wilì  simplù  aborô  iæ  á  ZEØ  commanä   ió +encountereä iî thå commanä streaí iô ió processing. + + Unlikå  SUB¬  ZEØ supportó manù morå embeddeä commands® +Combininç thå facilitieó oæ SU anä XSU iî thió  case¬  thå +embeddeä  commandó oæ ZEØ reflecô thå XSUB-likå capabilitieó +oæ ZEØ aó welì aó somå ne÷ ideas. + + Theså   extendeä  controì  commandó  arå  discusseä  iî +anotheò informatioî section. + + +Selected Error Messages: + + None discussed + + +Examples of Use: + + ZEX + -- the user now enters a group of commands + + ZEX mycmds p1 p2 + -- processinç oæ thå filå 'mycmds.ZEX'¬ or¬ iæ noô +found¬ 'mycmds.SUB§ ió performed» 'p1§ ió substituteä foò $± +and 'p2' for $2 + +:D + + ZEX Directives - Control Commands + + The following summarizes the ZEX Control Commands: + + Cmd Meaning Cmd Meaning + | insert ^| insert + ^º reruî commanä streaí ^® togglå prinô suppress + ^# toggle ZEX messages ^$ define default params + ^? wait for user input ^/ ring bell and ^? + ^* ring bell ^" accept user input + ^< display chars only ^> stop display + ;; ZEX comment $n 1<=n<=9 for param + $$ $ $^ ^ + $| | ^c control char + + + Thió  summarù  ió alsï displayeä viá thå  built-iî  ZEØ +help. + + Thå  followinç commandó simplù inserô  characteró  intï +thå  ZEØ  commanä  streaí anä wilì noô bå discusseä  iî  anù +greateò detail. + + | inserts a ^| inserts a pair + $$ inserts a single $ $^ inserts a single ^ + $| inserts a single | ^c inserts a control character + + Thå ^ª commanä simplù causeó ZEØ tï rinç thå bell®  Iô +doeó noô inserô á BELÌ characteò intï thå commanä filå  likå +á ^Ç sequencå would® Iô simplù ringó thå belì anä continueó +processing. + + Thå ;» commanä ió á ZEØ comment® Iô anä alì characteró +followinç  iô uð tï anä includinç thå followinç ¢ characteò witè thå mosô significanô +biô  set®  Thió ió uniquå anä appearó onlù wheî thå  prompô +comeó uð oî mù system. + + Thå   followinç   exampleó   illustratå    applicationó +employinç them®  Commentó appeaò ouô tï thå side¬  prefixeä +bù <--. + + +B1>zex +ZEX, Version 1.3 +1: ^$ this is fun <-- Define 3 params +2: echo $1 $2 $3 +3: ^$ hello from happy acres <-- Define 4 params +4: echo $1 $2 $3 $4 +5: +(ZEX Active) <-- ZEX is running now +B1>echo this is fun + +THIS IS FUN +B1>echo hello from happy acres + +HELLO FROM HAPPY ACRES +B1> +(ZEX Completed) +By Your Command > + + +B1>ed demo.zex <-- Demo Command File + +NEW FILE + : *i + 1: ed demo.txt <-- Edit DEMO.TXT + 2: i <-- Insert text while in ED + 3: This is a test + 4: This is only a test + 5: This is a demo of ZEX Control + 6: ^Z <-- ^Z is 2 chars, xlated into + 7: b0lt <-- Ctrl-Z by ZEX + 8: 1l + 9: 0lt + 10: i <-- Input More Text + 11: ^" <-- Allow user to input text + 12: type demo.txt <-- When ZEX continues, this + 13: era demo.txt <-- is what it does next + 14: + : *e + +B1>zex demo <-- Run the command file +ZEX, Version 1.3 +(ZEX Active) +B1>ed demo.txt + +NEW FILE + : *i <-- ZEX is typing this in + 1: This is a test + 2: This is only a test + 3: This is a demo of ZEX Control + 4: + : *b0lt + 1: This is a test + 1: *1l + 2: *0lt + 2: This is only a test + 2: *i <-- Now user input begins + 2º É aí no÷ typinç thió linå oæ mù owî volitioî <-- User + 3: ZEX will allow me to continue doing this until + 4: it sees the ZCPR3 prompt + 5: <-- User types Ctrl-Z + 5: *e <-- User types "e" + +(ZEX Active) +B1>type demo.txt <-- ZEX resumes +This is a test +I am now typing this line of my own volition +ZEX will allow me to continue doing this until +it sees the ZCPR3 prompt +This is only a test +This is a demo of ZEX Control + +B1>era demo.txt +DEMO .TXT +B1> +(ZEX Completed) +By Your Command > + +B1>ed demo.mac <-- Now to use ZEX for + <-- program assembly +NEW FILE + : *i <-- User types program + 1: ext print + 2: + 3: call print + 4: db 'Hello, World ... It''s Another Day',0 + 5: ret + 6: + 7: end + 8: + : *e + + +B1>type a:m80.zex <-- M80.ZEX command file +; M80.SUB -- MACRO-80 Assembler and Linker +M80 =$1 +; Please Type $^C if Error(s) Exist - ^? +ERA $1.BAK +ERA $1.COM +L80 /P:100,$1,A:SYSLIB/S,$1/N,/U,/E +ERA $1.REL +; Assembly Complete + +B1>zex m80 demo <-- Run command file on pgm +ZEX, Version 1.3 +(ZEX Active) +B1>; M80.SUB -- MACRO-80 Assembler and Linker +B1>M80 =DEMO + +No Fatal errr(s) + +(ZEX Active) + +B1>; Please Type ^C if Error(s) Exist - <-- User can abort now + <-- if he wishes +B1>ERA DEMO.BAK +DEMO .BAK +B1>ERA DEMO.COM +No File +B1>L80 /P:100,DEMO,A:SYSLIB/S,DEMO/N,/U,/E + +Link-80 3.44 09-Dec-81 Copyright (c) 1981 Microsoft +Data 0100 01C5 < 197> + +35936 Bytes Free + +Data 0100 01C5 < 197> + +35936 Bytes Free +[0000 01C5 1] + +(ZEX Active) + +B1>ERA DEMO.REL +DEMO .REL +B1>; Assembly Complete +B1> +(ZEX Completed) +By Your Command>demo <-- Run pgm now +Hello, World ... It's Another Day +B1> + +:1 + + Thå followinç restrictionó arå applieä tï commanä fileó +processeä bù SU anä ZEX. + + SUB Restrictions + + 1®  Yoõ maù noô loç intï useò areaó otheò thaî thå onå +yoõ begaî processinç thå commanä filå in®  Iæ yoõ do¬ ZCPR³ +looseó  tracë oæ thå $$$.SU filå anä executioî  ió  aborteä +untiì  yoõ  reenteò thå originaì useò area¬  aô  whicè  timå +executioî resumes. + + 2®  Uð  tï  2°  parameteró arå permitteä  oî  thå  SU +commanä line. + + 3® Yoõ maù nesô SU commanä fileó tï anù depth. + + + + ZEX Restrictions + + 1®  Yoõ maù movå intï anù directorù yoõ desirå whilå á +ZEØ commanä streaí ió beinç executed. + + 2® Uð tï ¹ parameteró arå permitteä oî thå ZEØ commanä +line. + + 3® Yoõ maù NOÔ nesô ZEØ commanä files. + + +:2 + + Botè  SU anä ZEØ makå nicå Extendeä Commanä Processoró +undeò  ZCPR3®  Botè  uså  thå Externaì  Patè  anä  Multiplå +Commanä Linå Buffeò Facilitieó oæ ZCPR3¬  anä ZEØ ió furtheò +prompteä foò inpuô bù thå ZCPR³ prompô iæ desired. + + Tï refresè thå reader¬  anä Extendeä Commanä  Processoò +ió  á  prograí  invokeä bù ZCPR³ wheî iô failó tï  finä  thå +commanä alonç itó path® ZCPR3¬ upoî failinç tï finä thå COÍ +filå whicè correspondó tï thå commanä namå giveî tï it¬  caî +bå  seô uð tï eitheò searcè thå patè oò gï directlù  tï  thå +rooô oæ thå patè anä looë foò aî Extendeä Commanä Processor® +Iæ found¬ ZCPR³ simulateó á commanä tï thaô Extendeä Commanä +Processor¬  substitutinç  thå  user'ó  commanä linå  aó  thå +argumentó tï it. + + To illustrate, consider the following example: + + + MASM.ZEØ performó thå samå seô oæ commandó thaô M80.ZEØ +filå diä above¬ namely: + +; MASM.ZEX -- MACRO-80 Assembler and Linker +M80 =$1 +; Please Type $^C if Error(s) Exist - ^? +ERA $1.BAK +ERA $1.COM +L80 /P:100,$1,A:SYSLIB/S,$1/N,/U,/E +ERA $1.REL +; Assembly Complete + + Thå  commanä  "MASÍ DEMO¢ ió issued®  Witè ZEØ aó  thå +Extendeä Commanä Processor¬  ZCPR³ lookó alonç thå patè  foò +thå commanä MASM¬  failó tï finä it¬  anä theî simulateó thå +commanä  "ZEØ  MASÍ DEMO"®  Thå abovå commanä filå ió  theî +executeä witè DEMÏ aó itó passeä parameter. + + + ZEX¬  oò  anù  otheò program¬  caî bå installeä  aó  aî +Extendeä Commanä Processoò bù renaminç iô tï CMDRUN.COM. + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/CMDRUN.COM b/Images/Source/hd0/s0/u15/CMDRUN.COM new file mode 100644 index 0000000000000000000000000000000000000000..d882afb1e5f4877434996cb9e6521ce107bd8703 GIT binary patch literal 256 zcmX@i%@}3u>KDey@I{N0@vJ7}S$#(5{M_8cyc7kW%)C@91qQ`NhQp?eO1g|E85ka) zHD!E!^6JsAd<=EU+fQ{e{^LAV%*b=Lm+>F(sRYJGkwK3~@Fe5amk%!<{CJXd`vDxsX%YYc literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/CMDRUN.MAC b/Images/Source/hd0/s0/u15/CMDRUN.MAC new file mode 100644 index 00000000..ae4eb21b --- /dev/null +++ b/Images/Source/hd0/s0/u15/CMDRUN.MAC @@ -0,0 +1,51 @@ +; +; Program: CMDRUN +; Author: Richard Conn +; Version: N/A +; Date: 11 June 84 +; +TBUFF EQU 80H +z3env equ 0f400h + + ext z3init + ext print,pstr + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + CALL PRINT + DB 'Command Line: ',0 + LXI H,TBUFF+1 ;PT TO COMMAND LINE + JMP PSTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/COMMENT.COM b/Images/Source/hd0/s0/u15/COMMENT.COM new file mode 100644 index 0000000000000000000000000000000000000000..dfd547011409333b5118aaa2e64308038fb24516 GIT binary patch literal 640 zcmbVIO-mb56rH(`;$)h!4JZiRytcRztHru8$bgO^EvN}ZgA^1}`mmvK2FF1ZMCm{1 z#x9C~per|pp-U45=iw||WaFktP;lWQ&@8%nc<*Sxwq4BOzH{C==gw=~*I&QL&6aiT z$3RMtKSBHjoWjgZZgy^vmxaGp^;|wO^jym>YHGM%*HO1j&iUOX%Y5Yq!gnh*?szLJ z75D90mh>fudp^&V9R7??yz%@XF(F?>FGq6DTVAdSUi7POqD_{_FqNA|ZA#QcK$=+R z&bx}A1kRJbv_RfFeY)xjElL(D1%CCt_^UPWZfggr5fA^?Y5OC)5N|=;!!CCeJ64a5 z)k8T6%92G;hAe~HA?TH>p!yKvex~@D((~C}2saMLSlXWWcCrNxr6V(pY2nEpoiG$} zGn6=1XtZnt%{C`68vX3IgrW45^lHKlY_3uC;U0A3FFpAT(RkRgt$2*tCPF)E#rx2T znn#^(ZTo2`8B-~F4QX1;l4qby`5jajfgxMa_=-6Q7Jk@>Lo!`< ',0 + lda prflag ;new line to printer if print flag on + ora a + cnz lcrlf + mvi c,0 ;set char count + ret + +; +; Buffers +; +prflag: + ds 1 ;print flag (0=off, 0FFH=on) + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/COMPARE.HLP b/Images/Source/hd0/s0/u15/COMPARE.HLP new file mode 100644 index 00000000..dbc61716 --- /dev/null +++ b/Images/Source/hd0/s0/u15/COMPARE.HLP @@ -0,0 +1,149 @@ +; + + + + ZCPR3 File Comparison Utilities + + C - CRC + + D - DIFF + +:D + +Command: DIFF 2.0 + +Syntax: + + DIFF dir:ufn o... +or + DIFF dir:ufn1,dir:ufn2 o... + +Function: + + DIFÆ  ió useä tï comparå twï files®  Iô caî bå madå tï +simplù  statå  iæ  thå twï  fileó  arå  differenô  (stoppinç +immediatelù afteò thå firsô differencå ió located© oò iô caî +lisô alì oæ thå differenceó betweeî twï fileó oî á byte-for- +bytå basis. + + + The form: DIFF dir:ufn o... + +compareó  thå filå iî thå indicateä directorù witè thå  filå +bù thå samå namå iî thå currenô directory. + + The form: DIFF dir:ufn1,dir:ufn2 o... + +compares the two files indicated. + +Options: + + C - Compare Files Only and Stop at First Difference + M - Multiple Runs + When a comparison is complete, prompt the user + for new disks, allow him to change disks, and then + run the comparison again until the user says to stop + + +Comments: + + Iæ  useä  tï prinô ouô differences¬  DIFÆ presentó  thå +following information to the user: + + o Relative Offset from the beginning of the file + + o Byte values in the two files: + + - in Decimal + - in Hexadecimal + - in ASCII + +Selected Error Messages: + + "AFΠ Noô  Allowed¢ meanó thaô thå  useò  specifieä  aî +ambiguouó filå namå (onå containinç wilä cards)®  Botè filå +names must be unambiguous. + + +Examples of Use: + + DIFF text:myfile.txt + - prints differences between MYFILE.TXT in TEXT: + and MYFILE.TXT in current directory + + DIFF myfile.txt + - compares MYFILE.TXT against itself + + DIFF backup:myfile.txt mc + - compares MYFILE.TXT in BACKUP: with MYFILE.TXT + in the current directory; stops as soon as + a difference is found; when done, prompts + the user to change disks (BACKUP could be a + floppy, and this command is checking to see + thaô alì copieó oæ MYFILE.TXÔ oî several + disks are the same + +:C +Command: CRC 2.0 + +Syntax: + + CRC dir:afn1,dir:afn2,... o... + +Function: + + Thå  CRà Checë Utilitù distributeä witè ZCPR³  computeó +CRà valueó  foò  á lisô oæ files®  Iô useó  thå  samå  CRà +computatioî algorithí employeä bù Keitè Peterseî iî hió CRCË +program¬ anä thå valueó comå ouô thå same. + + Thå  CRà Checë  Utilitù computeó thå CRà valueó  oæ  á +selecteä seô oæ fileó anä printó ouô thå filå  names¬  theiò +sizeó (iî termó oæ Ë byteó anä numbeò oæ records)¬ anä theiò +CRà valueó iî hexadecimal®  Á counô oæ thå numbeò oæ lineó +oæ codå (assuminç texô files© anä á commenô associateä  witè +eacè  filå caî bå optionallù included®  Á lisô oæ ambiguouó +fileó nameó maù bå provideä tï CRC. + +Options: + + C - Comment Output; add comments to output listing + on disk or printer + D - Disk Output; send output to the disk file CRC.CRC + I - Inspect Files and Approve Each File to be reported + on before output is produced + L - Count Lines of Text and include in output (assume + all files are text files) + P - Printer Output; send output to the printer + + +Comments: + + CRà ió usefuì iî transferrinç fileó froí onå  sitå  tï +another®  Thå  CRà valueó oæ thå fileó caî bå computeä  anä +listeä aô onå site¬  transferred¬  anä compareä aô thå otheò +site. + + Thå  Ì optioî addó thå utilitù oæ trackinç codå sizå iî +terms of lines of code. + +Selected Error Messages: + + Self-Explanatory + + +Examples of Use: + + CRC *.MAC L + -- Compute CRCs of all *.MAC files in the current + directory; include lines-of-code count in + display + + + CRC *.* DLC + -- Compute CRCs of all files, include count of + lines of text and comments on each file, + and write output to disk in file named + CRC.CRC + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/CPSEL.COM b/Images/Source/hd0/s0/u15/CPSEL.COM new file mode 100644 index 0000000000000000000000000000000000000000..1fbdeb4696f6a921b6e2eb982a0b9405ee644367 GIT binary patch literal 1024 zcmZWnO-mbL5PtLe#;+P7SScJvnp-7=Zy)K=1jiPwiXNTFDXP#$v)El;E{z!Dr zM*g|lY{mm-1Xwse6PW^-ljLGLp97!UOYW?Yz&tTQAGVpEnw?^mqa6UwN|V`?4-kep z_(iwd?Pw3@v)M#0RSfXDa8iWis2B1w_y7h6VMfYGNd>~wvv8K>Rq=udg;B5Q6Ng0q zrK-4`&MA@%UJ-mE42hh^&l|>5BBVw`&>zZV21E!$KN4aPhyF&-fTa?J;>_`Mv5-lW z8nd~xxkP4BDiW<+{U(^AZl`Dvp^bwF!4Rlwr<2Zkdb_Fz>4yH0c6D{B_vx_^6()}B zT4N0juMo{EFp*!(r2;^f)O{9SpyOX?`~xMLuzMiiEpVFhhuDSYK~4uWK2s>SS^Ss{06a;jl$S7yJ;oXnET&LW zSxjU+v(l0RQ|X*ky!agS;N-HPuJQ5KAvNsq!?|X~bJ>dTx|P3|tZ)Ku1vS#zPtd#yZr`?CpzEwYJSZ>D$aAS=PEq$*Nn{PU|~IF_(?FJDh*m&hLY*%@ghF F{QsGxVQ2sV literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/CPSEL.MAC b/Images/Source/hd0/s0/u15/CPSEL.MAC new file mode 100644 index 00000000..322ecd4f --- /dev/null +++ b/Images/Source/hd0/s0/u15/CPSEL.MAC @@ -0,0 +1,365 @@ +; +; PROGRAM: CPSEL +; VERSION: 1.0 +; DATE: 18 May 84 +; AUTHOR: Richard Conn +; PREVIOUS VERSIONS: None +; +version equ 10 +z3env SET 0f400h + +; +; CPSEL (CRT/Printer Select) is a utility which permits the user +; to dynamically select the CRT (of CRT 0 and CRT 1) and Printer (of +; Printers 0, 1, 2, and 3) from the current ZCPR3 Environment Descriptor. +; This dynamically changes the characteristics of the printer which is +; used by PRINT and the other utilities which read these buffers for their +; configuration data. +; + +; +; Operating System Buffers +; +fcb equ 5ch +tbuff equ 80h +cr equ 0dh +lf equ 0ah +tab equ 'I'-'@' + +; +; Special Equates +; +csel equ 2FH ;offset to CRT select byte +psel equ csel+1 ;offset to Printer select byte +cdata equ psel+1 ;offset to first CRT data record +cdsize equ 3 ;size of CRT data record +pdata equ cdata+2*cdsize ;offset to Printer data record +pdsize equ 4 ;size of Printer data record + +; +; SYSLIB and Z3LIB References +; + ext z3init,envptr + ext epstr,eprint,cout + ext padc + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + + call eprint + db 'CPSEL Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db 0 + + lxi h,tbuff+1 ;pt to buffer + lda fcb+1 ;check for help + cpi ' ' + jz help + cpi '/' + jnz start1 + +; +; Print help message +; +help: + call eprint + db cr,lf,' CPSEL cmd1 cmd2 cmd3,...' + db cr,lf,'Commands:' + db cr,lf,' Cc, c=0 or 1 -- Select CRT 0 or 1' + db cr,lf,' Pp, p=0,1,2,3 -- Select Printer 0, 1, 2, or 3' + db cr,lf,' Dd, d=A (All), C (CRT), P (Printer)' + db cr,lf,' -- Display Selection Values' + db 0 + + ret + +; +; Process Options +; +start1: + mov a,m ;get next char + ora a ;done? + rz + inx h ;pt to option + cpi ',' ;delimiter? + jz start1 + cpi ' ' ;delimiter? + jz start1 + cpi tab ;delimiter? + jz start1 + cpi '/' ;delimiter? + jz start1 + call cmdchk ;check for commands and run them + jmp start1 + +; +; Test and Run Commands +; +cmdchk: + mov b,a ;save command in B + lxi d,ctab ;pt to command table +cmd1: + ldax d ;get char + ora a ;end of table? + jz cmde ;print error message + cmp b ;match? + jz cmd2 ;process + inx d ;skip to next + inx d + inx d + jmp cmd1 +cmd2: + xchg ;get address + inx h + mov c,m ;get low + inx h + mov b,m ;get high + xchg ;restore hl + push b ;place address on stack + ret ;"run" command +; +; Command Not Found +; +cmde: + call eprint + db cr,lf,' Command Not Found: ',0 + mov a,b ;get char + jmp cout +; +; Command Table +; +ctab: + db 'C' ;select CRT + dw cselc + db 'D' ;display + dw disp + db 'P' ;select Printer + dw pselc + db 0 ;end of table +; +; Select CRT +; +cselc: + lxi d,csmsg ;CRT selection + mov a,m ;get digit + ora a ;error if null + jz error + inx h ;pt to next + sui '0' ;convert to binary + jc error + cpi 2 ;range check + jnc error + lxi d,csel ;offset for CRT select +; +; Select Device whose value is in A and Offset in DE +; +select: + push h ;save HL + lhld envptr ;pt to environment + dad d ;pt to buffer + mov m,a ;store value + pop h ;restore HL + ret +; +; Print Error Message +; +error: + call eprint + db cr,lf,' Range Error on ',0 + xchg ;HL pts to message + call epstr ;print message + xchg + ret + +; +; Select Printer +; +pselc: + lxi d,psmsg ;Printer selection + mov a,m ;get digit + ora a ;error if null + jz error + inx h ;pt to next + sui '0' ;convert to binary + jc error + cpi 4 ;range check + jnc error + lxi d,psel ;offset for Printer select + jmp select ;select device +; +; Display +; +disp: + mov a,m ;get option + ora a ;end of command? + jz dispall ;display all + inx h ;pt to next + cpi 'A' ;all? + jz dispall + cpi 'C' ;CRT? + jz dispcrt + cpi 'P' ;Printer? + jz dispprt + lxi d,dsmsg ;display select message + jmp error +; +; Display All +; +dispall: + call dispcrt ;display CRT and fall thru to display Printer +; +; Display Printer +; +dispprt: + call eprint + db cr,lf,' Current Printer Selection: ',0 + push h ;save HL + lhld envptr + lxi d,psel ;offset + dad d + mov a,m ;get selection + mov c,a ;selection in C + adi '0' ;convert to ASCII + call cout + mvi b,0 ;set up loop + lxi d,pdata ;offset to printer data + lhld envptr ;pt to environment + dad d ;pt to printer data +dploop: + call eprint + db cr,lf,' ',0 + mvi e,' ' ;leading space for not current printer + mov a,c ;see if at current printer + cmp b + jnz dpl1 + mvi e,'*' ;mark current printer +dpl1: + mov a,e + call cout + call eprint + db ' Prt ',0 + call comprt ;print common data elements + call eprint + db ' Form Feed? ',0 + mov a,m ;print form feed message + ora a + jz prno + call eprint + db 'Yes',0 + jmp pryes +prno: + call eprint + db 'No',0 +pryes: + inx h ;pt to next + inr b ;increment + mov a,b ;done? + cpi 4 ;limit + jnz dploop + pop h ;restore ptr + ret + +; +; Common Data Elements to Both Printer and CRT +; +comprt: + mov a,b ;get printer number + adi '0' ;to ASCII + call cout + call eprint + db ': Width = ',0 + mov a,m ;print line width + call padc + inx h + call eprint + db ' Actual/Text Lines = ',0 + mov a,m ;print number of actual lines + call padc + inx h + mvi a,'/' + call cout + mov a,m ;print number of text lines + inx h ;pt to next + jmp padc + +; +; Display CRT +; +dispcrt: + call eprint + db cr,lf,' Current CRT Selection: ',0 + push h ;save HL + lhld envptr + lxi d,csel ;offset + dad d + mov a,m ;get selection + mov c,a ;save in C + adi '0' ;convert to ASCII + call cout + mvi b,0 ;set up loop + lxi d,cdata ;offset to CRT data + lhld envptr ;pt to environment + dad d ;pt to printer data +dcloop: + call eprint + db cr,lf,' ',0 + mvi e,' ' ;leading space for not current printer + mov a,c ;see if at current printer + cmp b + jnz dpc1 + mvi e,'*' ;mark current printer +dpc1: + mov a,e + call cout + call eprint + db ' CRT ',0 + call comprt ;print common data elements + inr b ;increment + mov a,b ;done? + cpi 2 ;limit + jnz dcloop + pop h ;restore ptr to next command line element + ret + +; +; Error Messages +; +csmsg: + db 'CRT Selection',0 +dsmsg: + db 'Display Option',0 +psmsg: + db 'Prt Selection',0 + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/CRC.COM b/Images/Source/hd0/s0/u15/CRC.COM new file mode 100644 index 0000000000000000000000000000000000000000..0b4c0f416e077b5e933fb37b1b3138830e14a179 GIT binary patch literal 5248 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 +LF EQU 10 ; +CTRLC EQU 3 ; ^C + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +; +; DISK OUTPUT FCB +; +DSKFCB: + DB 0 + DB 'CRC ' ; FILE NAME + DB 'CRC' ; FILE TYPE + DS 4 + DS 16 + DS 4 ; 36 BYTES + +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +; +; DISK OUTPUT FCB +; +DSKFCB: + DB 0 + DB 'CRC ' ; FILE NAME + DB 'CRC' ; FILE TYPE + DS 4 + DS 16 + DS 4 ; 36 BYTES + +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env +; + LXI H,0 ; GET STACK PTR + DAD SP + SHLD STACK ; SAVE IT +; +; Compute Buffer Locations +; + CALL CODEND ; DETERMINE FREE SPACE + SHLD CMDLNE ; SET PTR TO COMMAND LINE + LXI D,100H ; BUFFER SIZE + DAD D ; COMMAND LINE + SHLD CRCFCB ; FCB FOR CRCS + DAD D + SHLD CMTLNE ; BUFFER FOR COMMENT LINE + DAD D + SHLD DIRBUF ; SET PTR TO DIRECTORY BUFFER + SPHL ; SET STACK PTR +; +; Save Location +; + CALL PUTUD ; SAVE CURRENT USER/DISK AWAY +; +; Print Banner +; + CALL EPRINT + DB 'CRC Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0',0 + LDA FCB+1 ; GET FIRST CHAR OF FILE NAME + CPI ' ' ; NO FILE SPEC? + JZ HELP + CPI '/' ; OPTION CAUGHT? + JNZ ECONT + +; PRINT HELP INFORMATION +HELP: + CALL EPRINT + DB CR,LF,' CRC dir:afn1,dir:afn2,... o...' + DB CR,LF,'Options:' + DB CR,LF,' C -- Comment Mode (Allow user to comment each entry ' + DB 'on disk)' + DB CR,LF,' D -- Disk Output (Send Output to Disk in file CRC.CRC)' + DB CR,LF,' I -- Inspect Mode (Give user approval option)' + DB CR,LF,' L -- Count Lines of Code' + DB CR,LF,' P -- Printer Output' + DB 0 + +; RETURN TO OS +RETURN: + CALL GETUD ; RESET DIR + LHLD STACK ; GET OLD STACK + SPHL ; SET IT + RET + +; +; SKIP UNTIL NON-BLANK +; +SBLANK: + MOV A,M ; LOOK FOR BLANK + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ SBLANK + DCX H ; BACK UP + RET + +; +; SKIP UNTIL BLANK OR EOL +; +SNBLANK: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ SNB1 + ORA A ; EOL? + JNZ SNBLANK +SNB1: + DCX H ; BACK UP + RET + +; +; COPY BUFFER INTO TEMP BUFFER +; +ECONT: + LHLD CMDLNE ; PT TO COMMAND LINE + XCHG ; ... IN DE + LXI H,TBUFF+1 ; PT TO BUFFER + MVI B,80H ; BUFFER SIZE (MAX) + CALL MOVEB ; COPY INTO COMMAND LINE BUFFER + +; EXTRACT FLAGS IF PRESENT + XRA A ; A=0 + STA LOC ; SET NO LINES OF CODE COUNT + STA INSPECT ; SET NO INSPECT + STA COMMENT ; SET NO COMMENT MODE + STA PRTOUT ; SET NO PRINTER OUTPUT + STA DSKOUT ; SET NO DISK OUTPUT + LXI H,0 ; SET FILE COUNT + SHLD FILECNT + LHLD CMDLNE ; PT TO BUFFER +; +; SKIP TO FILE NAME STRING +; + CALL SBLANK ; SKIP OVER BLANKS +; +; SKIP TO END OF FILE NAME STRING +; + CALL SNBLANK ; SKIP OVER NON-BLANKS +; +; SKIP TO FIRST OPTION CHAR +; + CALL SBLANK ; SKIP OVER BLANKS + +; +; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO +; +OPT: + CPI '/' ; OPTION CHAR? + JNZ OPTION + INX H ; SKIP SLASH +; PROCESS LIST OF OPTIONS +OPTION: + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ DSPEC + INX H ; PT TO NEXT CHAR + CPI ' ' ; SKIP OVER SPACES + JZ OPTION + CPI '/' ; IF OPTION LETTER, OBVIOUS ERROR, SO HELP + JZ HELP + CPI 'P' ; PRINTER OUTPUT? + JZ OPTPRT + CPI 'L' ; LINES OF CODE? + JZ OPTLOC + CPI 'C' ; COMMENT? + JZ OPTCMT + CPI 'I' ; INSPECT? + JZ OPTINS + CPI 'D' ; DISK OUTPUT? + JNZ HELP + +; SET DISK OUTPUT OPTION + MVI A,0FFH ; DISK OUTPUT + STA DSKOUT + JMP OPTION + +; SET PRINTER OUTPUT OPTION +OPTPRT: + MVI A,0FFH ; PRINTER OUTPUT + STA PRTOUT + JMP OPTION + +; SET LINES OF CODE OPTION +OPTLOC: + MVI A,0FFH ; LINES OF CODE COUNTER + STA LOC + JMP OPTION + +; SET COMMENT OPTION +OPTCMT: + MVI A,0FFH ; COMMENT MODE + STA COMMENT + JMP OPTION + +; SET INSPECT OPTION +OPTINS: + MVI A,0FFH ; INSPECT + STA INSPECT + JMP OPTION + +; +; EXTRACT DISK, USER, AND FILE NAME INFORMATION +; +DSPEC: + LDA DSKOUT ; DISK OUTPUT? + ORA A ; Z=NO + JZ DSPEC0 + LXI D,DSKFCB ; OUTPUT FCB + CALL INITFCB ; CLEAR FCB + CALL F$DELETE ; DELETE FILE + CALL INITFCB ; CLEAR FCB + CALL F$MAKE ; CREATE FILE + CALL FO0$OPEN ; OPEN FILE +DSPEC0: + LHLD CMDLNE ; PT TO FIRST BYTE + CALL SBLANK ; SKIP TO NON-BLANK +; +; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS +; HL PTS TO FIRST BYTE OF NEXT FILE SPEC +; +DSPEC1: + CALL GETUD ; RETURN TO HOME DIRECTORY + LXI D,FCB ; PT TO FCB IN DE, PT TO FIRST CHAR OF FILE NAME IN HL + MVI A,0 ; SCAN FOR DIR FORM BEFORE DU + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + +; +; LOAD DIRECTORY AND PERFORM FUNCTION +; +FCT: + LXI D,FCB ; PT TO FCB + CALL Z3LOG ; LOG INTO DIR + CALL RETUD ; SAVE DIRECTORY WE ARE IN + MOV A,B ; SAVE DISK + STA CDISK + MOV A,C ; SAVE USER + STA CUSER + LHLD DIRBUF ; PT TO DIRECTORY BUFFER + MVI A,11000000B ; SELECT SYS AND NON-SYS FILES + LXI D,FCB ; PT TO FCB + CALL INITFCB ; INIT THE FCB + CALL DIRQS ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE + CALL DPARAMS ; GET DISK PARAMETERS FOR FILE SIZE COMPUTATION + CALL ICHECK ; CHECK FOR INSPECT OPTION AND INSPECT IF SET + CALL HEADER ; PRINT COLUMN HEADER + CALL GETUD ; RETURN TO BASE USER/DISK + +; +; PERFORM FUNCTION; HL PTS TO FILE AND BC CONTAINS NUMBER OF FILES +; +FCTL: + MOV A,B ; CHECK FOR COMPLETION (COUNT = 0) + ORA C + JZ FCTL1 + DCX B ; COUNT DOWN + PUSH H ; SAVE PTR AND COUNT + PUSH B + CALL FUNCTION ; PERFORM FUNCTION + POP B ; GET COUNT AND PTR + POP H + LXI D,ESIZE ; PT TO NEXT ENTRY + DAD D + JMP FCTL + +; +; CHECK FOR NEXT FILE SPEC +; +FCTL1: + LHLD NEXTCH ; GET PTR + MOV A,M ; GET DELIM + CPI ',' ; ANOTHER FILE? + JNZ DRETURN + INX H ; PT TO CHAR AFTER COMMA + JMP DSPEC1 ; CONTINUE PROCESSING + +; +; FUNCTION COMPLETE -- EXIT +; +DRETURN: + CALL DCRLF ; NEW LINE + LDA DSKOUT ; DISK OUTPUT USED? + ORA A ; NZ=YES + CNZ FO0$CLOSE ; CLOSE FILE + JMP RETURN + +; +; EMERGENCY ABORT +; +ABORT: + CALL EPRINT + DB CR,LF,'** CRC Abort **',CR,LF,0 + CALL GETUD ; RETURN HOME + JMP DRETURN + +; +; PRINT COLUMN HEADER +; +HEADER: + CALL DPRINT + DB CR,LF,' Filename.Typ Size Recs CRC',0 + LDA LOC ; LINES OF CODE? + ORA A + JZ HDR1 + CALL DPRINT + DB ' Lines',0 +HDR1: + LDA COMMENT ; COMMENT FIELD ALSO? + ORA A ; 0=NO + RZ + CALL DPRINT + DB ' Comment',0 + RET +; +; FUNCTION -- COMPUTE CRCS OF SELECTED FILES +; +FUNCTION: + +; +; PRINT FILE NAME +; +CRCLP: + CALL DCRLF ;NEW LINE + PUSH H ;SAVE PTR + LHLD FILECNT ; INCREMENT FILE COUNT + INX H + SHLD FILECNT + CALL DVAL ;OUTPUT DECIMAL VALUE + POP H ;GET PTR + MVI A,' ' ;LEADING SPACE + CALL DOUT + CALL PRFN ; PRINT FILE NAME + MVI A,' ' ; SPACE SEPARATOR + CALL DOUT + CALL FSIZE ; COMPUTE SIZE IN DE + XCHG ; HL=SIZE + CALL DVAL ; OUTPUT VALUE + MVI A,'K' ; OUTPUT K + CALL DOUT + LHLD CRCFCB ; PT TO FCB + XCHG ; HL = PTR TO FIRST BYTE OF FILE FCB PART + MVI B,12 ; 12 BYTES + CALL MOVEB + XRA A ; ZERO FIRST BYTE + STAX D ; SELECT CURRENT DISK OF CRCFCB + JMP DOIT ; PERFORM FUNCTION + +; +; TEST FOR COMMENT AND DISK OUTPUT, AND ACCEPT COMMENT IF SET +; +CTEST: + LDA COMMENT ; GET FLAG + ORA A ; ZERO IF NONE + RZ + CALL EPRINT + DB ' ?',0 + XRA A ; DON'T CAPITALIZE + CALL BBLINE ; GET LINE FROM USER + XCHG ; SAVE HL + LHLD CMTLNE ; COPY INTO COMMENT LINE BUFFER FOR NOW + XCHG ; RESTORE HL AND NEW DE +CTEST1: + MOV A,M ; GET CHAR + STAX D ; PUT CHAR + ORA A ; END? + RZ + INX H ; PT TO NEXT + INX D + JMP CTEST1 + +; +; PRINT FILE NAME PTED TO BY HL +; OUTPUT TO CON: AND OPTIONALLY DISK +; +PRFN: + PUSH H ; SAVE PTR + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL PRNT + MVI A,'.' ; DECIMAL + CALL DOUT + MVI B,3 ; PRINT TYPE + CALL PRNT + POP H ; GET PTR + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; OUTPUT TO CON: AND OPTIONALLY DISK +; +PRNT: + MOV A,M ; GET CHAR + CALL DOUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PRNT + RET + +; +; PRINT FILE NAME PTED TO BY HL +; OUTPUT TO CON: +; +PRFNC: + PUSH H ; SAVE PTR + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL PRNTC + MVI A,'.' ; DECIMAL + CALL COUT + MVI B,3 ; PRINT TYPE + CALL PRNTC + POP H ; GET PTR + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; OUTPUT TO CON: +; +PRNTC: + MOV A,M ; GET CHAR + CALL COUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PRNTC + RET + +; +; CHECK FOR INSPECT OPTION AND INSPECT FILES IF SET +; FIRST FILE PTED TO BY HL, COUNT IN BC +; +ICHECK: + LDA INSPECT ; INSPECT? + ORA A ; 0=NO + RZ + CALL EPRINT + DB CR,LF,CR,LF,'** File Inspection **' + DB CR,LF,'Y(def)=Select N=Don''t Select' + DB CR,LF,'S=Skip Rest Q=Quit (Abort)' + DB CR,LF,0 + PUSH H ; SAVE POINTER TO FIRST FILE + PUSH B ; SAVE FILE COUNT +ICKL: + PUSH B ; SAVE COUNT + CALL CRLF ; NEW LINE + CALL PRFNC ; PRINT FILE NAME TO CONSOLE ONLY + CALL CRCQ ; CRC QUESTION + POP B ; GET COUNT + CPI 'S' ; SKIP REST? + JZ ISKIP + CPI 'Q' ; QUIT? + JZ QUIT + CPI 'N' ; NO? + JZ NODO + CALL EPRINT + DB ' Selected',0 + MOV A,M ; GET BYTE + ORI 80H ; SET MSB + MOV M,A ; PUT BYTE + JMP ICKNXT + +; DON'T CRC FILE +NODO: + CALL EPRINT + DB ' NOT Selected',0 + +; CONTINUE SCAN OF FILES +ICKNXT: + LXI D,ESIZE ; SIZE OF FILE ENTRY + DAD D ; PT TO NEXT ENTRY + DCX B ; COUNT DOWN + MOV A,B ; DONE? + ORA C + JNZ ICKL +ISKIP: + POP B ; RESTORE ORIGINAL COUNT + POP H ; RESTORE PTR TO FIRST FILE + CALL DIRPACK ; PACK DIRECTORY BASED ON SELECTION + CALL EPRINT + DB CR,LF,'** Inspection Complete **',CR,LF,0 + RET + +; +; PROMPT USER FOR INSPECT +; +CRCQ: + CALL EPRINT ; PRINT PROMPT + DB ' -- Select (Y/N/S/Q)? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + CALL COUT ; ECHO + RET + +; +; QUIT CRC PROGRAM +; +QUIT: + CALL EPRINT + DB ' Quit to Z3',0 + JMP DRETURN + +; +; COMPUTE CRC; NAME IN CRCFCB +; +DOIT: + LDA CDISK ; GOTO DIRECTORY OF FILE + MOV B,A + LDA CUSER + MOV C,A + CALL LOGUD ; LOG INTO FILE'S DIRECTORY + CALL CRCCLR ; CLEAR CRC ACCUMULATOR + LXI H,0 ; HL=0 + SHLD RECNT ; RESET RECORD COUNT + SHLD LOCNT ; RESET LINES OF CODE COUNT + LHLD CRCFCB ; PT TO FCB + XCHG ; ... IN DE + CALL INITFCB ; INIT IT + CALL F$OPEN ; OPEN IT FOR INPUT +DOITL: + CALL F$READ ; READ BLOCK INTO TBUFF + ORA A ; ERROR? + JNZ DOITD ; DONE IF SO + PUSH H ; SAVE HL + LHLD RECNT ; INCREMENT RECORD COUNT + INX H + SHLD RECNT + POP H + CALL CONDIN ; CHECK FOR ABORT + JZ DOITL0 + CPI CTRLC ; ABORT? + JZ ABORT ; QUICK ABORT +DOITL0: + LXI H,TBUFF ; PT TO FIRST BYTE + MVI B,128 ; 128 BYTES +DOITL1: + MOV A,M ; GET BYTE + CALL CRCUPD ; UPDATE CRC + LDA LOC ; COUNT LINES OF CODE? + ORA A ; 0=NO + JZ DOITL2 + MOV A,M ; GET BYTE + ANI 7FH ; MASK + CPI LF ; LINE FEED IS KEY + JNZ DOITL2 + PUSH H ; INCREMENT LOC COUNTER + LHLD LOCNT + INX H + SHLD LOCNT + POP H +DOITL2: + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ DOITL1 + JMP DOITL ; CONTINUE THRU FILE +DOITD: + CALL GETUD ; RETURN TO HOME DIRECTORY + CALL DPRINT ; SEPARATOR + DB ' ',0 + LHLD RECNT ; PRINT RECORD COUNT + CALL DVAL ; PRINT IN DECIMAL + CALL DPRINT + DB ' ',0 + CALL CRCDONE ; RETURN CRC IN HL + CALL HVAL ; PRINT VALUE AS HEX + LDA LOC ; LINES OF CODE? + ORA A + JZ DOITD1 + CALL DPRINT ; LEADING SPACES + DB ' ',0 + LHLD LOCNT ; GET COUNT + CALL DVAL ; PRINT AS DECIMAL +DOITD1: + CALL CTEST ; GET FOR AND INPUT COMMENT + LDA COMMENT ; CHECK FOR COMMENT AND OUTPUT IF SO + ORA A ; ZERO IF ONE NOT SELECTED + RZ + CALL DPRINT ; SEPARATOR + DB ' ',0 + LHLD CMTLNE ; OUTPUT COMMENT LINE +CMTLP: + MOV A,M ; GET CHAR + ORA A ; EOL? + RZ ; EXIT WHEN DONE + CALL DPOUT ; OUTPUT CHAR + INX H ; PT TO NEXT + JMP CMTLP + +; +; OUTPUT CHAR TO CONSOLE AND OPTIONALLY PRINTER OR DISK +; +DOUT: + PUSH PSW ; SAVE CHAR + PUSH B ; SAVE BC + MOV B,A ; CHAR IN B + CALL COUT ; OUTPUT TO CONSOLE +DOUT0: + LDA PRTOUT ; PRINTER OUTPUT? + ORA A ; Z=NO + JZ DOUT1 + MOV A,B ; GET CHAR + CALL LOUT ; OUTPUT TO PRINTER +DOUT1: + LDA DSKOUT ; DISK OUTPUT? + ORA A ; Z=NO + JZ DOUT2 + MOV A,B ; GET CHAR + CALL F0$PUT ; OUTPUT TO DISK +DOUT2: + POP B ; RESTORE REGS + POP PSW + RET + +; +; OUTPUT CHAR TO OPTIONALLY PRINTER OR DISK +; +DPOUT: + PUSH PSW ; SAVE CHAR + PUSH B ; SAVE BC + MOV B,A ; CHAR IN B + JMP DOUT0 ; USE DOUT ROUTINES + +; +; OUTPUT CHARS PTED TO BY RET ADR TO CONSOLE AND DISK OR PRINTER +; +DPRINT: + XTHL ; GET PTR AND SAVE HL AT SAME TIME +DPRL: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + ORA A ; END? + JZ DPRL1 + CALL DOUT ; OUTPUT IT + JMP DPRL +DPRL1: + XTHL ; SET RET ADR AND RESTORE HL + RET + +; +; NEW LINE TO ALL +; +DCRLF: + PUSH PSW ; SAVE PSW + MVI A,CR ; NEW LINE + CALL DOUT + MVI A,LF + CALL DOUT + POP PSW ; RESTORE PSW + RET + +; +; OUTPUT VALUE IN HL TO ALL IN HEX +; +HVAL: + PUSH H ; SAVE HL + PUSH D ; SAVE DE + LXI D,NUMBUF ; PT TO NUMBER BUFFER + MOV A,H + CALL MA2HC ; OUTPUT IN HEX + MOV A,L + CALL MA2HC + MVI A,' ' ; TRAILING SPACE + STAX D + JMP DVAL0 + +; +; OUTPUT HL AS UP TO 5 DECIMAL DIGITS TO ALL +; +DVAL: + PUSH H ; SAVE REGS + PUSH D + LXI D,NUMBUF ; PT TO BUFFER + CALL MHLDC ; OUTPUT IN DECIMAL +DVAL0: + LXI H,NUMBUF ; PT TO BUFFER + MVI D,5 ; 5 CHARS +DVAL1: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CALL DOUT ; OUTPUT IT + DCR D ; COUNT DOWN + JNZ DVAL1 + POP D ; RESTORE REGS + POP H + RET + +; +; **** START OF CRC ROUTINES **** +; + +; +; CRCCLR -- Clear CRC Accumulator +; +; No Registers are Affected +; +CRCCLR: + PUSH H ;SAVE HL + LXI H,0 ;INIT TO ZERO + SHLD CRCACC + POP H + RET + +; +; CRCDONE -- Return the CRC Value in HL +; +CRCDONE: + LHLD CRCACC ;GET VALUE + RET + +; +; CRCUPD -- Update CRC Accumulator +; +;An 8080 routine for generating a CYCLIC-REDUNDANCY-CHECK. +;Adapted from Keith Petersen's CRCK 4.2 program. +;By Fred Gutman. +;From 'EDN' magazine, June 5, 1979 issue, page 84. +; +; Byte to be updated is passed in A +; No Registers are Affected +; +CRCUPD: + PUSH H ;SAVE HL + PUSH B ;SAVE BC + PUSH PSW ;SAVE BYTE TO UPDATE + MOV B,A ;BYTE IN B + LHLD CRCACC ;GET REMAINDER + MOV A,H + ANI 128 ;Q-BIT MASK + PUSH PSW ;SAVE STATUS + DAD H ;2 X R(X) + MOV A,B ;GET BYTE + ADD L + MOV L,A + POP PSW + JZ CRCU1 ;IF Q-BIT IS ZERO +; + MOV A,H + XRI 0A0H ;MS HALF OF GEN. POLY + MOV H,A + MOV A,L + XRI 97H ;LS HALF OF GEN. POLY + MOV L,A +; +CRCU1: + SHLD CRCACC ;SAVE RESULT + POP PSW ;RESTORE REGS + POP B + POP H + RET + +; +; CRC Accumulator +; +CRCACC: + DS 2 ;2 BYTES + +; +; **** END OF CRC ROUTINES **** +; + +; +; BUFFERS +; +CDISK: + DS 1 ; DISK WHERE FILES ARE +CUSER: + DS 1 ; USER WHERE FILES ARE +LOC: + DS 1 ; LINES OF CODE FLAG (0=NO, 0FFH=YES) +INSPECT: + DS 1 ; INSPECT FLAG (0=NO, 0FFH=YES) +COMMENT: + DS 1 ; CONTROL FLAG (0=NO, 0FFH=YES) +DSKOUT: + DS 1 ; DISK OUTPUT (0=NO, 0FFH=YES) +PRTOUT: + DS 1 ; PRINTER OUTPUT (0=NO, 0FFH=YES) +LOCNT: + DS 2 ; LINES OF CODE COUNT +RECNT: + DS 2 ; RECORD COUNT +NEXTCH: + DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE +FILECNT: + DS 2 ; COUNT OF NUMBER OF FILES RENAMED +NUMBUF: + DS 5 ; NUMBER STORAGE BUFFER +DIRBUF: + DS 2 ; PTR TO DIRECTORY BUFFER +CRCFCB: + DS 2 ; PTR TO FCB FOR CRC +CMTLNE: + DS 2 ; PTR TO COMMENT LINE BUFFER +CMDLNE: + DS 2 ; PTR TO COMMAND LINE +STACK: + DS 2 ; OLD STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DBRCPREL.LBR b/Images/Source/hd0/s0/u15/DBRCPREL.LBR new file mode 100644 index 0000000000000000000000000000000000000000..e280a71292680ba9e7cd879f70654ad721d9d4f2 GIT binary patch literal 18688 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

7ES^;B?e2mia-Oz$& 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%0DP{&m|Bc1(UWxB^~KY=|ioMvICJc{&B9n29dX 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 a*c^p0w%k3$xL^X)LWZ}Csdd~5hB*Lp$UV3K literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DEBUGRCP.AQM b/Images/Source/hd0/s0/u15/DEBUGRCP.AQM new file mode 100644 index 0000000000000000000000000000000000000000..7340947bdee7a2f7bcad706a166e3bd4dfe594de GIT binary patch literal 19584 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DEBUGRCP.ASM b/Images/Source/hd0/s0/u15/DEBUGRCP.ASM new file mode 100644 index 00000000..3c9e1793 --- /dev/null +++ b/Images/Source/hd0/s0/u15/DEBUGRCP.ASM @@ -0,0 +1,1587 @@ +; SYSTEM SEGMENT: DEBUG.RCP +; SYSTEM: ARIES-1 +; CUSTOMIZED BY: RICHARD CONN + +; +; PROGRAM: DEBUGRCP.ASM +; AUTHOR: RICHARD CONN +; VERSION: 1.0 +; DATE: 30 JUNE 84 +; PREVIOUS VERSIONS: NONE +; +VERS EQU 10 +RCPID EQU 'A' + +; +; DEBUGRCP is a resident debug command package for ZCPR3. As with +; all resident command processors, DEBUGRCP performs the following functions: +; +; 1. Assuming that the EXTFCB contains the name of the +; command, DEBUGRCP looks to see if the first character +; of the file name field in the EXTFCB is a question +; mark; if so, it returns with the Zero Flag Set and +; HL pointing to the internal routine which prints +; its list of commands +; 2. The resident command list in DEBUGRCP is scanned for +; the entry contained in the file name field of +; EXTFCB; if found, DEBUGRCP returns with the Zero Flag +; Set and HL pointing to the internal routine which +; implements the function; if not found, DEBUGRCP returns +; with the Zero Flag Reset (NZ) +; + +; +; Global Library which Defines Addresses for DEBUGRCP +; + MACLIB Z3BASE + +; +CTRLC EQU 'C'-'@' +BS EQU 08H +TAB EQU 09H +LF EQU 0AH +FF EQU 0CH +CR EQU 0DH +CTRLX EQU 'X'-'@' +; +WBOOT EQU BASE+0000H ;CP/M WARM BOOT ADDRESS +UDFLAG EQU BASE+0004H ;USER NUM IN HIGH NYBBLE, DISK IN LOW +BDOS EQU BASE+0005H ;BDOS FUNCTION CALL ENTRY PT +TFCB EQU BASE+005CH ;DEFAULT FCB BUFFER +FCB1 EQU TFCB ;1st and 2nd FCBs +FCB2 EQU TFCB+16 +TBUFF EQU BASE+0080H ;DEFAULT DISK I/O BUFFER +TPA EQU BASE+0100H ;BASE OF TPA +; +; SYSTEM Entry Point +; + org rcp ; passed for Z3BASE + + db 'Z3RCP' ; Flag for Package Loader +; +; **** Command Table for RCP **** +; This table is RCP-dependent! +; +; The command name table is structured as follows: +; +; ctable: +; DB 'CMNDNAME' ; Table Record Structure is +; DW cmndaddress ; 8 Chars for Name and 2 Bytes for Adr +; ... +; DB 0 ; End of Table +; +cnsize equ 4 ; NUMBER OF CHARS IN COMMAND NAME + db cnsize ; size of text entries +ctab: + db 'H ' ; Help for RCP + dw clist +ctab1: + db 'MU ' ; Memory Utility + dw mu +; + db 0 +; +; BANNER NAME OF RCP +; +rcp$name: + db 'DEBUG ' + db (vers/10)+'0','.',(vers mod 10)+'0' + db RCPID + db 0 + +; +; Command List Routine +; +clist: + lxi h,rcp$name ; print RCP Name + call print1 + lxi h,ctab1 ; print table entries + mvi c,1 ; set count for new line +clist1: + mov a,m ; done? + ora a + rz + dcr c ; count down + jnz clist1a + call crlf ; new line + mvi c,4 ; set count +clist1a: + lxi d,entryname ; copy command name into message buffer + mvi b,cnsize ; number of chars +clist2: + mov a,m ; copy + stax d + inx h ; pt to next + inx d + dcr b + jnz clist2 + inx h ; skip to next entry + inx h + push h ; save ptr + lxi h,entrymsg ; print message + call print1 + pop h ; get ptr + jmp clist1 +; +; Print String (terminated in 0 or MSB Set) at Return Address +; +vprint: +eprint: + xthl ; get address + call print1 + xthl ; put address + ret +; +; Print String (terminated in 0 or MSB Set) pted to by HL +; +print1: + mov a,m ; done? + inx h ; pt to next + ora a ; 0 terminator + rz + cpi dim ; standout? + jz print1d + cpi bright ; standend? + jz print1b + call cout ; print char + ora a ; set MSB + rm ; MSB terminator + jmp print1 +print1d: + call stndout ; dim + jmp print1 +print1b: + call stndend ; bright + jmp print1 +; +; New Line +; +crlf: + mvi a,cr + call cout + mvi a,lf ;fall thru +; +; Character Output +; +cout: + push psw + push b + push d + push h + mov e,a + mvi c,2 ; use BDOS + call bdos + pop h + pop d + pop b + pop psw + ret +; +; Get char in A +; +cin: + push h + push d + push b + mvi c,1 + call bdos + ani 7fh + push psw + mvi a,bs ;overwrite + call cout + pop psw + pop b + pop d + pop h + ret +; +; CLIST Messages +; +entrymsg: + db ' ' ; command name prefix +entryname: + ds cnsize ; command name + db 0 ; terminator + +; +; General Equates +; +bel equ 07h +bs equ 08h +cr equ 0dh +lf equ 0ah +fcb equ 5ch + +DIM EQU 1 +BRIGHT EQU 2 + +EOLCH EQU 0 ;END OF LINE CHAR +SEPCH EQU ',' ;SEPARATOR CHAR +EROW EQU 6 ;FIRST ROW OF EDITOR DISPLAY +ECOL EQU 4 ;FIRST COL OF EDITOR DISPLAY +ECOLC EQU ECOL+16*3+8 ;FIRST COL OF EDITOR CHAR DISPLAY +ECURS EQU '>' ;EDITOR CURSOR +PRROW EQU 22 ;PROMPT ROW +PRCOL EQU 10 ;PROMPT COLUMN +PRCOLI EQU PRCOL+15 ;PROMPT INPUT COL +ERROW EQU 23 ;ERROR MESSAGE ROW +ERCOL EQU 15 ;ERROR MESSAGE COLUMN + +; +; DEFINE FREE SPACE +; +MU: + LXI H,TBUFF ;DETERMINE ADDRESS + MVI M,126 ;126 CHARS INPUT ALLOWED + SHLD BUFFER ;SET PTR +; +; SET UP ARROW KEYS +; + LXI H,Z3ENV ;PT TO ENVIRONMENT DESCRIPTOR + LXI D,80H+10H ;PT TO ARROW KEY INFO + DAD D + LXI D,EDCURT ;PT TO CURSOR TABLE + MVI B,4 ;4 ARROW KEYS +ARROW: + MOV A,M ;GET CHAR + STAX D ;STORE CHAR + INX H ;PT TO NEXT + INX D ;PT TO NEXT ENTRY + INX D + INX D + DCR B ;COUNT DOWN + JNZ ARROW +; +; Initialize Terminal +; + call tinit +; +; Check for Command Line Parameter +; + lxi h,fcb+1 ;pt to first char + mov a,m ;get char + cpi ' ' ;no param? + jnz pcheck + lxi h,tpa ;pt to TPA + jmp mu3 +; +; We have a parameter +; +pcheck: + call hexin ;convert to binary + xchg ;HL=value + jmp mu3 +; +; Erase to EOL +; If fct not supported, send out B spaces and B backspaces +; +vereol: + call ereol ;try erase + rnz + push b ;save B + mvi a,' ' ;send spaces + call vereol1 + pop b ;get B + mvi a,bs ;send backspaces +vereol1: + call cout ;send char in A + dcr b + jnz vereol1 + ret +; +; Clear Screen +; If fct not supported, write 24 CRLFs +; +vcls: + call cls ;try clear + rnz + push b ;save B + mvi b,24 ;count +vcls1: + call crlf + dcr b + jnz vcls1 + pop b + ret +; +; Run MU3 +; HL contains starting address +; +mu3: + SHLD BLOCK ;SAVE PTR TO BLOCK +; +; REFRESH EDIT SCREEN +; +EDIT0: + CALL VCLS ;NEW SCREEN + CALL AT + DB 2,35 ;ROW 2, COL 35 + CALL VPRINT ;BANNER + DB 'MU RCP ' + DB (VERS/10)+'0','.',(VERS MOD 10)+'0',RCPID + DB 0 +; +; REENTER MU3 WITH PTRS RESET +; +MU3R: + XRA A ;A=0 + STA EINDEX ;SET INDEX TO 0 (FIRST ELEMENT) + CALL EDPLOT ;PLOT BUFFER DATA +; +; INPUT EDITOR COMMAND +; +EDITCMD: + CALL PRMSG ;POSITION AT PROMPT MESSAGE + DB 'MU Command?',0 + CALL PRINP ;POSITION AT PROMPT INPUT + DB 0 + CALL CIN ;GET CHAR + CALL CAPS ;CAPITALIZE + MOV B,A ;COMMAND IN B + LXI H,EDCURT ;PROCESS CURSOR COMMANDS FIRST + CALL CMD ;PROCESS COMMAND + LXI H,ECMDTBL ;EDITOR COMMAND TABLE + CALL CMD ;PROCESS COMMAND + CALL VPRINT ;ERROR MESSAGE + DB BEL,0 + JMP EDITCMD +; +; Position at Prompt Message and Print it +; +PRMSG: + CALL AT ;POSITION + DB PRROW,PRCOL + JMP VPRINT ;PRINT IT +; +; Position at Prompt Input and Print Prompt +; +PRINP: + CALL AT ;POSITION + DB PRROW,PRCOLI + JMP VPRINT ;PRINT IT +; +;INPUT ERROR +; +WHAT: + CALL VPRINT + DB BEL,0 + JMP EDITCMD +; +;Command Table Search and Execute +; +CMD: + MOV A,M ;CHECK FOR END OF TABLE + ORA A + RZ ;COMMAND NOT FOUND + CMP B ;MATCH? + JZ CMDRUN + INX H ;SKIP TO NEXT ENTRY IN TABLE + INX H + INX H + JMP CMD +; +;RUN COMMAND +; +CMDRUN: + INX H ;PT TO LOW ADDRESS + MOV E,M + INX H ;PT TO HIGH ADDRESS + MOV D,M + XCHG + POP PSW ;CLEAR STACK + PCHL ;RUN ROUTINE +; +;PLOT BUFFER DATA +; +EDPLOT: + MVI H,EROW-1 ;SET ROW + MVI L,ECOL ;SET COLUMN + CALL GOTOXY ;POSITION CURSOR + CALL VPRINT + DB DIM + DB ' 0 1 2 3 4 5 6 7 8 9 A B C D E F' + DB BRIGHT,0 + INR H ;NEXT ROW + CALL GOTOXY ;POSITION CURSOR + XCHG ;POSITION IN DE + LHLD BLOCK ;PT TO DATA + MVI B,8 ;8 LINES +; +;Print Next Line on Screen +; +EDIT00: + CALL STNDOUT ;GO DIM + MOV A,H ;OUTPUT ADDRESS + CALL PA2HC + MOV A,L + CALL PA2HC + CALL VPRINT + DB ':',BRIGHT,' ',0 + MVI C,16 ;16 ELEMENTS +EDIT01: + MOV A,M ;GET BYTE + CALL PA2HC ;PRINT AS HEX + CALL SPACE ;PRINT 1 SPACE + INX H ;PT TO NEXT + DCR C ;COUNT DOWN + JNZ EDIT01 + XCHG ;POSITION AGAIN + INR H ;NEXT ROW + CALL GOTOXY + XCHG + DCR B ;COUNT DOWN + JNZ EDIT00 + MVI H,EROW ;RESET ROW + MVI L,ECOLC ;RESET COL + CALL GOTOXY ;POSITION CURSOR + XCHG ;POSITION IN DE + LHLD BLOCK ;PT TO DATA + MVI B,8 ;8 LINES +EDIT02: + CALL BAR ;PRINT BAR + MVI C,16 ;16 ELEMENTS +EDIT03: + MOV A,M ;GET BYTE + ANI 7FH ;MASK MSB + CPI 7FH ;DON'T PRINT 7FH + JZ EDIT7F + CPI ' ' ;SPACE OR MORE? + JNC EDIT04 +EDIT7F: + MVI A,'.' ;PRINT DOT +EDIT04: + CALL COUT ;PRINT BYTE + INX H ;PT TO NEXT + DCR C ;COUNT DOWN + JNZ EDIT03 + CALL BAR ;PRINT ENDING BAR + XCHG ;POSITION AGAIN + INR H ;NEXT ROW + CALL GOTOXY + XCHG + DCR B ;COUNT DOWN + JNZ EDIT02 + CALL EDCUR ;POSITION CURSOR + RET +; +;EDITOR COMMAND TABLE +; +ECMDTBL: + DB CR ;NOP + DW EDITCMD + DB 'C'-'@' ;^C = EXIT MU3 + DW EDCC + DB 'R'-'@' ;^R = REFRESH + DW EDIT0 + DB 'E'-'@' ;^E=UP + DW EDUP + DB 'X'-'@' ;^X=DOWN + DW EDDOWN + DB 'D'-'@' ;^D=RIGHT + DW EDRIGHT + DB 'S'-'@' ;^S=LEFT + DW EDLEFT + DB ' ' ;NOP + DW EDITCMD + DB '+' ;ADVANCE + DW EDITPLUS + DB '-' ;BACKUP + DW EDITMINUS + DB 'A' ;ADDRESS + DW EDITADR + DB 'C' ;COMMAND LINE + DW EDITCL + DB 'N' ;CHANGE NUMBERS + DW EDITHEX + DB 'T' ;CHANGE TEXT + DW EDITALP + DB 0 ;END OF TABLE +; +; ARROW KEY DEFINITONS FROM TCAP +; +EDCURT: + DB 0 ;0 INDICATES NO ARROW KEYS + DW EDUP + DB 0 + DW EDDOWN + DB 0 + DW EDRIGHT + DB 0 + DW EDLEFT + DB 0 ;END OF TABLE +; +;Enter Command Line +; +EDITCL: + CALL VPRINT ;PROMPT INPUT + DB CR,LF,'Command Line? ',0 + CALL RDBUF ;INPUT TEXT + CALL PUTCL ;STORE COMMAND LINE + JMP CRLF ;NEW LINE +; +; STORE COMMAND LINE +; +PUTCL: + XCHG ;PTR TO NEW LINE IN DE + CALL GETCL1 ;GET COMMAND LINE DATA + MOV B,A ;CHAR COUNT IN B + XCHG ;HL PTS TO NEW LINE + PUSH H ;SAVE PTR TO NEXT LINE +PCL1: + MOV A,M ;GO TO END OF LINE + ORA A ;AT END? + JZ PCL2 + INX H ;PT TO NEXT + DCR B ;COUNT DOWN + JNZ PCL1 + POP H ;CLEAR STACK + RET ;COMMAND LINE TOO LONG - ABORT +; +; AT END OF NEW COMMAND LINE +; PTR TO FIRST CHAR OF NEW COMMAND LINE ON STACK +; HL PTS TO ENDING 0 OF NEW COMMAND LINE +; B = NUMBER OF CHARS REMAINING BEFORE COMMAND LINE OVERFLOW +; +PCL2: + XCHG ;DE PTS TO LAST BYTE + PUSH D ;SAVE PTR IN CASE OF ERROR + CALL GETCL2 ;PT TO TAIL OF COMMAND LINE BUFFER + MOV A,M ;GET FIRST CHAR OF TAIL + CPI ';' ;CONTINUATION? + JZ PCL3 + ORA A ;DONE? + JZ PCL3 + MVI A,';' ;SET CONTINUATION CHAR + STAX D + INX D + DCR B ;COUNT DOWN + JZ PCL4 ;OVERFLOW +; +; COPY TAIL ONTO END OF NEW COMMAND LINE +; +PCL3: + MOV A,M ;GET NEXT CHAR + STAX D ;STORE IT + INX H ;PT TO NEXT + INX D + ORA A ;DONE? + JZ PCL5 + DCR B ;COUNT DOWN + JNZ PCL3 +; +; COMMAND LINE TOO LONG +; +PCL4: + POP H ;GET PTR TO END OF OLD LINE + MVI M,0 ;STORE ENDING 0 + POP PSW ;CLEAR STACK + RET +; +; NEW COMMAND LINE OK +; +PCL5: + POP PSW ;CLEAR STACK + CALL GETCL1 ;GET PTR TO BUFFER + LXI D,4 ;PT TO FIRST CHAR IN BUFFER + XCHG + DAD D + XCHG + MOV M,E ;STORE ADDRESS + INX H + MOV M,D + POP H ;HL PTS TO FIRST CHAR OF NEW LINE +; +; COPY COMMAND LINE INTO BUFFER +; +PCL6: + MOV A,M ;COPY + STAX D + INX H + INX D + ORA A ;DONE? + JNZ PCL6 + RET +; +; GETCL1 +; +GETCL1: + LHLD Z3ENV+18H ;GET ADDRESS OF COMMAND LINE BUFFER + PUSH H ;SAVE IT + INX H ;GET SIZE IN A + INX H + MOV A,M + POP H + RET +; +; GETCL2 +; +GETCL2: + LHLD Z3ENV+18H ;GET ADDRESS OF COMMAND LINE BUFFER + MOV A,M ;GET ADDRESS OF NEXT CHAR + INX H + MOV H,M + MOV L,A ;HL PTS TO NEXT CHAR + MOV A,M ;GET IT + RET + +; +;Enter ASCII Chars +; +EDITALP: + CALL PRINP ;PROMPT INPUT + DB DIM,'Enter Text',BRIGHT + DB CR,LF,' --> ',0 + CALL RDBUF ;INPUT TEXT WITHOUT PROMPT + CALL EDPRCL ;CLEAR PROMPT LINE + LDA EINDEX ;PT TO POSITION + XCHG + LHLD BLOCK ;COMPUTE OFFSET + XCHG + ADD E + MOV E,A + MOV A,D + ACI 0 + MOV D,A ;DE PTS TO BYTE, HL PTS TO TEXT +EDITA1: + MOV A,M ;GET CHAR + CPI EOLCH ;EOL? + JZ EDITA2 ;REFRESH SCREEN + CALL GETAHV ;GET ASCII OR VALUE + STAX D ;UPDATE BYTE + INX H ;PT TO NEXT INPUT CHAR + INR E ;PT TO NEXT BUFFER BYTE + JNZ EDITA1 +EDITA2: + CALL EDPLOT ;REPLOT + JMP EDITCMD ;DONE-REFRESH SCREEN +; +;Enter Numbers +; +EDITHEX: + CALL PRINP ;PROMPT INPUT + DB DIM,'Enter Hex Numbers' + DB BRIGHT + DB CR,LF,' --> ',0 + CALL RDBUF ;INPUT TEXT WITHOUT PROMPT + CALL EDPRCL ;CLEAR PROMPT LINE + LDA EINDEX ;PT TO POSITION + XCHG + LHLD BLOCK ;COMPUTE OFFSET + XCHG + ADD E + MOV E,A + MOV A,D + ACI 0 + MOV D,A ;DE PTS TO BYTE, HL PTS TO TEXT +EDITH1: + MOV A,M ;GET HEX DIGIT + CPI EOLCH ;EOL? + JZ EDITA2 ;REFRESH SCREEN + CPI ' ' ;SKIP SPACES + JNZ EDITH2 + INX H ;SKIP SPACE + JMP EDITH1 +EDITH2: + PUSH D ;SAVE PTR + CALL HEXIN ;GET VALUE AND POSITION HL + MOV A,E ;... IN A + POP D ;GET PTR + STAX D ;PUT BYTE + INR E ;ADVANCE TO NEXT BYTE + JNZ EDITH1 + JMP EDITA2 ;DONE-REFRESH +; +;CLEAR PROMPT LINE +; +EDPRCL: + CALL PRINP ;PROMPT LINE + DB 0 + MVI B,40 ;40 POSITIONS + CALL VEREOL ;CLEAR TO EOL OR 40 CHARS + CALL AT ;USER INPUT + DB ERROW,1 + MVI B,79 ;79 POSITIONS + JMP VEREOL +; +;Input Address +; +EDITADR: + CALL VPRINT + DB 'Address? ',0 + CALL RDBUF ;GET USER INPUT + CALL SKSP ;SKIP LEADING SPACES + MOV A,M ;EMPTY LINE? + ORA A + JZ EDIT0 + CALL HEXIN ;CONVERT FROM HEX + XCHG ;HL = ADDRESS + SHLD BLOCK + JMP EDIT0 ;REENTER +; +;Advance to Next Block +; +EDITPLUS: + LHLD BLOCK ;ADVANCE TO NEXT BLOCK + LXI D,128 ;128 BYTES + DAD D + SHLD BLOCK + JMP MU3R +; +;Backup to Last Block +; +EDITMINUS: + LHLD BLOCK ;BACKUP TO LAST BLOCK + LXI D,-128 ;128 BYTES + DAD D + SHLD BLOCK + JMP MU3R +; +;Exit MU3 +; +EDCC: + CALL DINIT ;DEINIT TERM + JMP CRLF ;NEW LINE +; +;EDIT MOVE: UP +; +EDUP: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;BACKUP INDEX BY 16 + SUI 16 +; +;Common EDIT MOVE Routine - on input, A=new index +; +EDMOVE: + ANI 7FH ;MOD 128 + STA EINDEX + CALL EDCUR ;SET CURSOR + JMP EDITCMD +; +;EDIT MOVE: DOWN +; +EDDOWN: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;INCREMENT INDEX BY 16 + ADI 16 + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT MOVE: RIGHT +; +EDRIGHT: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;INCREMENT INDEX BY 1 + INR A + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT MOVE: LEFT +; +EDLEFT: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;DECREMENT INDEX BY 1 + DCR A + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT SUBROUTINE: EDCUR +; Position Editor Cursor at EINDEX +;EDIT SUBROUTINE: EDCCUR +; Clear Editor Cursor at EINDEX +; +EDCUR: + PUSH H ;SAVE HL + MVI C,ECURS ;CURSOR CHAR + CALL EDSETCUR + CALL AT ;UPDATE DATA + DB 3,74 + LDA EINDEX ;PT TO BYTE AT CURSOR + LHLD BLOCK + ADD L + MOV L,A + MOV A,H + ACI 0 + MOV H,A ;HL PTS TO BYTE AT CURSOR + MOV A,M ;GET BYTE + CALL PA2HC ;PRINT AS HEX + CALL SPACE + MOV A,M ;GET BYTE + POP H ;RESTORE HL + ANI 7FH ;MASK + CPI 7FH ;7FH AS DOT + JZ EDC7F + CPI ' ' ;OUTPUT CHAR OR DOT + JNC COUT +EDC7F: + MVI A,'.' ;DOT + JMP COUT +EDCCUR: + MVI C,' ' ;CLEAR CURSOR +EDSETCUR: + CALL EDROW ;COMPUTE ROW + ANI 0FH ;COMPUTE COL MOD 16 + MOV B,A ;RESULT IN B + ADD A ;*2 + ADD B ;*3 + ADI ECOL+6 ;ADD IN COL + DCR A ;SUBTRACT 1 + MOV L,A ;COL POSITION SET + CALL GOTOXY ;POSITION CURSOR + MOV A,C ;OUTPUT CHAR + JMP COUT +; +;Compute Row from EINDEX +; +EDROW: + LDA EINDEX ;GET INDEX + MOV B,A ;SAVE IN B + RRC ;DIVIDE BY 16 + RRC + RRC + RRC + ANI 0FH ;MASK FOR LSB ONLY + ADI EROW ;COMPUTE ROW + MOV H,A ;ROW SET + MOV A,B ;GET INDEX + RET + +; +;PRINT A SPACE +; +SPACE: + MVI A,' ' + JMP COUT +; +;PRINT AN BARISK IN REV VIDEO +; +BAR: + CALL VPRINT + DB DIM,'|',BRIGHT,0 + RET +; +;Get value from input buffer +; +GETAHV: + MOV A,M ;GET NEXT CHAR + CPI '<' ;HEX ESCAPE? + RNZ ;NO, RETURN +;"<<" means one "<" + INX H + MOV A,M + CPI '<' + RZ +;Got hex + PUSH D + CALL HEXIN ;GET VALUE + CPI '>' ;PROPER DELIM? + MOV A,E ;GET VALUE + POP D + RZ +; +;ERROR CONDITION IN SUBROUTINE - CLEAR STACK AND FLAG ERROR +; +SERR: + POP PSW ;CLEAR STACK + JMP WHAT ;ERROR +; +;Input Number from Command Line -- Assume it to be Hex +; Number returned in DE +; +HEXIN: + LXI D,0 ;INIT VALUE + MOV A,M + CPI '#' ;DECIMAL? + JZ HDIN ;MAKE DECIMAL +; +HINLP: + MOV A,M ;GET CHAR + CALL CAPS ;CAPITALIZE + CPI CR ;EOL? + RZ + CPI EOLCH ;EOL? + RZ + CPI SEPCH + RZ + CPI ' ' ;SPACE? + RZ + CPI '-' ;'THRU'? + RZ + CPI '>' + RZ + INX H ;PT TO NEXT CHAR + CPI '0' ;RANGE? + JC SERR + CPI '9'+1 ;RANGE? + JC HINNUM + CPI 'A' ;RANGE? + JC SERR + CPI 'F'+1 ;RANGE? + JNC SERR + SUI 7 ;ADJUST FROM A-F TO 10-15 +; +HINNUM: + SUI '0' ;CONVERT FROM ASCII TO BINARY + XCHG + DAD H ;MULT PREVIOUS VALUE BY 16 + DAD H + DAD H + DAD H + ADD L ;ADD IN NEW DIGIT + MOV L,A + XCHG + JMP HINLP +; +HDIN: + INX H ;SKIP '#' +; +;Input Number in Command Line as Decimal +; Number is returned in DE +; +DECIN: + LXI D,0 + MOV A,M ; GET 1ST CHAR + CPI '#' ; HEX? + JNZ DINLP + INX H ; PT TO DIGIT + JMP HINLP ; DO HEX PROCESSING +; +DINLP: + MOV A,M ;GET DIGIT + CALL CAPS ;CAPITALIZE + CPI '0' ;RANGE? + RC + CPI '9'+1 ;RANGE? + RNC + SUI '0' ;CONVERT TO BINARY + INX H ;PT TO NEXT + PUSH H + MOV H,D + MOV L,E + DAD H ;X2 + DAD H ;X4 + DAD D ;X5 + DAD H ;X10 + ADD L ;ADD IN DIGIT + MOV L,A + MOV A,H + ACI 0 + MOV H,A + XCHG ;RESULT IN DE + POP H + JMP DINLP +; +; READ LINE FROM USER INTO INPUT LINE BUFFER +; +RDBUF: + LHLD BUFFER ;PT TO BUFFER + XCHG ;SET DE AS PTR TO BUFFER + MVI C,10 ;BDOS READLN + PUSH D ;SAVE PTR + CALL BDOS + POP H ;PT TO CHAR COUNT + INX H + MOV E,M ;GET CHAR COUNT + MVI D,0 + INX H ;PT TO FIRST CHAR + PUSH H ;SAVE PTR + DAD D ;PT TO AFTER LAST CHAR + MVI M,0 ;STORE ENDING 0 + POP H ;PT TO FIRST CHAR + RET + +; +; Capitalize char in A +; +caps: + ani 7fh + cpi 'a' ;range? + rc + cpi 'z'+1 + rnc + ani 5fh ;mask to caps + ret +; +; CLEAR SCREEN ON TERMINAL +; +cls: + push h ;save regs + push d + lxi h,z3env+80H ;pt to environment + mov a,m ;no terminal? + cpi ' '+1 + jc clserr + lxi d,14h ;pt to cls delay + dad d + mov d,m ;get it + inx h ;pt to cls string + inx h + inx h + mov a,m ;get first char of string + ora a ;if no string, error + jz clserr + call vidout ;output string with delay + pop d ;done + pop h + xra a ;return NZ + dcr a + ret +clserr: + pop d ;done + pop h + xra a ;return Z + ret + +; +; Erase to End of Line +; Return with A=0 and Zero Flag Set if not done +; +ereol: + push b ;save regs + push d + push h + lxi h,z3env+80h ;pt to environment + mov a,m ;no terminal? + cpi ' '+1 + jc err + lxi d,16h ;pt to ereol delay + dad d + mov d,m ;get it + inx h ;pt to cls string + call vidskp ;skip over it + call vidskp ;skip over CM string + mov a,m ;get first char of ereol string + ora a ;if no string, error + jz err + call vidout ;output string with delay + jmp noerr + +; +; GOTO XY +; HL = Row/Col, with Home=1/1 +; Return with A=0 and Zero Flag Set if not done +; +gotoxy: + push b ;save regs + push d + push h + lxi h,z3env+80h ;pt to environment + mov a,m ;no terminal? + cpi ' '+1 + jc err + lxi d,15h ;pt to CM delay + dad d + mov a,m ;get it + sta cmdelay ;save it + inx h ;pt to CL string + inx h + call vidskp ;skip CL string + mov a,m ;get first char of CM string + ora a ;if no string, error + jz err + xchg ;DE=address of CM string + pop h ;get coordinates in HL + push h + call gxy ;output xy string with delay + lda cmdelay ;pause + call videlay +noerr: + pop h ;done + pop d + pop b + xra a ;return NZ + dcr a + ret +err: + pop h ;done + pop d + pop b + xra a ;return Z + ret + +; +; Position Cursor at Location Specified by Return Address +; Usage: +; call at +; db row,col ;location +; +at: + xthl ;pt to address + push d ;save DE + mov d,m ;get row + inx h + mov e,m + inx h ;HL pts to return byte + xchg ;DE pts to return byte, HL contains screen loc + call gotoxy ;position cursor + xchg ;HL pts to return byte + pop d ;restore registers + xthl ;restore stack ptr + ret + +; +; GOTOXY +; On input, H=Row and L=Column to Position To (1,1 is Home) +; On input, DE=address of CM string +; +gxy: + dcr h ;adjust to 0,0 for home + dcr l + xra a ;set row/column + sta rcorder ;row before column + sta rcbase ;add 0 to base +; +; Cycle thru string +; +gxyloop: + ldax d ;get next char + inx d ;pt to next + ora a ;done? + rz + cpi '%' ;command? + jz gxycmd + cpi '\' ;escape? + jz gxyesc + call cout ;send char + jmp gxyloop + +; +; Escape - output following byte literally +; +gxyesc: + ldax d ;get next char + call cout ;output literally + inx d ;pt to next + jmp gxyloop +; +; Interpret next character as a command character +; +gxycmd: + ldax d ;get command char + inx d ;pt to next + cpi 'd' ;%d + jz gxyout1 + cpi '2' ;%2 + jz gxyout2 + cpi '3' ;%3 + jz gxyout3 + cpi '.' ;%. + jz gxyout4 + cpi '+' ;%+v + jz gxyout5 + cpi '>' ;%>xy + jz gxygt + cpi 'r' ;%r + jz gxyrev + cpi 'i' ;%i + jz gxyinc + call cout ;output char if nothing else + jmp gxyloop +; +; Set row/col home to 1,1 rather than 0,0 +; +gxyinc: + mvi a,1 ;set rcbase to 1 + sta rcbase + jmp gxyloop +; +; Reverse order of output to column then row (default is row then column) +; +gxyrev: + mvi a,1 ;set column and row order + sta rcorder + jmp gxyloop +; +; Command: >xy +; If value of row/col is greater than x, add y to it +; +gxygt: + call getval ;get value + mov c,a ;save value + ldax d ;get value to test + inx d ;pt to next + cmp c ;if carry, value>x + jnc gxygt1 + ldax d ;get value to add + add c + call putval ;put value back +gxygt1: + inx d ;pt to next + jmp gxyloop ;resume +; +; Command: +n +; Add n to next value and output +; +gxyout5: + ldax d ;get value to add + inx d ;pt to next + mov b,a ;save in B + call getval ;get value + add b ;add in B + call cout ;output value +rcmark: + lda rcorder ;mark output + ori 80h + sta rcorder + jmp gxyloop +; +; Command: . +; Output next value +; +gxyout4: + call getval ;get value + call cout ;output value + jmp rcmark +; +; Command: 3 +; Output next value as 3 decimal digits +; +gxyout3: + call getval ;get value + mvi b,100 ;output 100's + mvi c,1 ;leading zeroes + call digout +gxyot3: + mvi b,10 ;output 10's + mvi c,1 ;leading zeroes +gxyot2: + call digout + adi '0' ;output 1's + call cout + jmp rcmark +; +; Command: 2 +; Output next value as 2 decimal digits +; +gxyout2: + call getval ;get value + jmp gxyot3 +; +; Command: d +; Output next value as n decimal digits with no leading zeroes +; +gxyout1: + call getval ;get value + mvi b,100 ;output 100's + mvi c,0 ;no leading zeroes + call digout + mvi b,10 ;output 10's + mvi c,0 ;no leading zeroes + jmp gxyot2 +; +; Return next value in A +; +getval: + lda rcorder ;get order flag + ora a ;already output the first value? + jm getval2 + ani 1 ;look at lsb + jz getvalr ;if 0, row first +getvalc: + lda rcbase ;get base offset + add l ;get column + ret +getvalr: + lda rcbase ;get base offset + add h ;get row + ret +getval2: + ani 1 ;look at lsb + jz getvalc + jmp getvalr +; +; Store A as next value +; +putval: + mov c,a ;save value + lda rcorder ;get order flag + ora a ;already output the first value? + jm putval2 + ani 1 ;look at lsb + jz putvalr ;if 0, row first +putvalc: + mov l,c ;set column + ret +putvalr: + mov h,c ;set row + ret +putval2: + ani 1 ;look at lsb + jz putvalc + jmp putvalr +; +; Output A as decimal digit char +; B=Quantity to Subtract from A, C=0 if no leading zero +; +digout: + push d ;save DE + mvi d,'0' ;char +decot1: + sub b ;subtract + jc decot2 + inr d ;increment char + jmp decot1 +decot2: + add b ;add back in + push psw ;save result + mov a,d ;get digit + cpi '0' ;zero? + jnz decot3 + mov a,c ;get zero flag + ora a ;0=no zero + jz decot4 +decot3: + mov a,d ;get digit + call cout ;print it +decot4: + pop psw ;get A + pop d ;restore DE + ret +; +; GXY Buffers +; +rcorder: + ds 1 ;0=row/col, else col/row +rcbase: + ds 1 ;0=org is 0,0, else org is 1,1 +cmdelay: + ds 1 ;number of milliseconds to delay for CM + +; +; Begin Standout Mode +; Return with A=0 and Zero Flag Set if not done +; +stndout: + push b + push d + push h ;save regs + lxi h,z3env+80h ;pt to environment + mov a,m ;no terminal? + cpi ' '+1 + jc err + lxi d,17h ;pt to cls string + dad d + mvi d,0 ;no delay + call vidskp ;skip over CL string + call vidskp ;skip over CM string + call vidskp ;skip over CE string + mov a,m ;get first char of SO string + ora a ;if no string, error + jz err + call vidout ;output string with delay + jmp noerr + +; +; Terminate Standout Mode +; Return with A=0 and Zero Flag Set if not done +; +stndend: + push b + push d + push h ;save regs + lxi h,z3env+80h ;pt to environment + mov a,m ;no terminal? + cpi ' '+1 + jc err + lxi d,17h ;pt to cls string + dad d + mvi d,0 ;no delay + call vidskp ;skip over CL string + call vidskp ;skip over CM string + call vidskp ;skip over CE string + call vidskp ;skip over SO string + mov a,m ;get first char of SE string + ora a ;if no string, error + jz err + call vidout ;output string with delay + jmp noerr + +; +; Initialize Terminal +; Affect No Registers +; +tinit: + push h ;save regs + push d + push psw + lxi h,z3env+80h ;pt to environment + mov a,m ;no terminal? + cpi ' '+1 + jc tid + lxi d,17h ;pt to cls string + dad d + mvi d,0 ;no delay + call vidskp ;skip over CL string + call vidskp ;skip over CM string + call vidskp ;skip over CE string + call vidskp ;skip over SO string + call vidskp ;skip over SE string + mov a,m ;get first char of TI string + ora a ;if no string, error + jz tid + call vidout ;output string with delay +tid: + pop psw ;done + pop d + pop h + ret + +; +; De-Initialize Terminal +; Affect No Registers +; +dinit: + push h ;save regs + push d + push psw + lxi h,z3env+80h ;pt to environment + mov a,m ;no terminal? + cpi ' '+1 + jc tid + lxi d,17h ;pt to cls string + dad d + mvi d,0 ;no delay + call vidskp ;skip over CL string + call vidskp ;skip over CM string + call vidskp ;skip over CE string + call vidskp ;skip over SO string + call vidskp ;skip over SE string + call vidskp ;skip over TI string + mov a,m ;get first char of TE string + ora a ;if no string, error + jz tid + call vidout ;output string with delay + jmp tid + +; +; VIDOUT - Output video string pted to by HL +; Output also a delay contained in the D register +; +vidout: + mov a,m ;get next char + ora a ;done if zero + jz vid2 + inx h ;pt to next + cpi '\' ;literal value? + jnz vid1 + mov a,m ;get literal char + inx h ;pt to after it +vid1: + call cout ;output char + jmp vidout +vid2: + mov a,d ;output delay and fall thru to VIDELAY + +; +; VIDELAY pauses for the number of milliseconds indicated by the A +; register. VIDELAY assumes a ZCPR3 environment and uses it to determine +; processor speed. +; +videlay: + push psw ;save regs + push b + push d + push h + mov c,a ;save count in C + ora a ;no delay? + jz done + lxi h,z3env ;pt to environment + lxi d,2Bh ;offset to processor speed + dad d + mov a,m ;get processor speed + ora a ;zero? + jnz vidl1 + mvi a,4 ;assume 4 MHz +vidl1: + mov b,a ;processor speed in B +vidl2: + push b ;delay 1 ms + call delay + pop b + dcr c ;count down + jnz vidl2 +done: + pop h ;restore regs + pop d + pop b + pop psw + ret +; +; Delay 1 ms at Clock speed +; +delay: + call del1 ;delay 1 ms at 1MHz + dcr b ;count down clock speed + jnz delay + ret +; +; Delay 1 ms at 1MHz +; +del1: + mvi c,20 ;20 loops of 51 cycles each ~ 1000 cycles +del1a: + xthl ;18 cycles + xthl ;+18 = 36 cycles + dcr c ;+ 5 = 41 cycles + jnz del1a ;+10 = 51 cycles + ret + +; +; VIDSKP - Skip over video string pted to by HL; pt to byte after string +; +vidskp: + mov a,m ;get next char + inx h ;pt to next + ora a ;done if zero + rz + cpi '\' ;literal value? + jnz vidskp ;continue if not + inx h ;pt to after literal value + jmp vidskp + +; +; Print A as 2 Hex Chars +; +pa2hc: + push psw + push b + mov b,a ;value in B + rlc + rlc + rlc + rlc + call pa2hc1 + mov a,b ;get value + call pa2hc1 + pop b + pop psw + ret +pa2hc1: + ani 0fh + adi '0' ;to ASCII + cpi '9'+1 + jc pa2hc2 + adi 7 ;to letter +pa2hc2: + jmp cout + +; +; Skip Spaces +; +sksp: + mov a,m ;skip to non-space + cpi ' ' + rnz + inx h + jmp sksp + +; +;EDITOR BUFFERS +; +BLOCK: + DS 2 ;ADDRESS OF CURRENT BLOCK +BUFFER: + DS 2 ;PTR TO FREE SPACE +EINDEX: + DS 1 ;INDEX ENTRY +EDRUN: + DS 1 ;FLAG SAYING THAT EDITOR IS RUNNING + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DEV.COM b/Images/Source/hd0/s0/u15/DEV.COM new file mode 100644 index 0000000000000000000000000000000000000000..e45fab2a1f51ecdb8363800e17ed5d70a6e0262a GIT binary patch literal 1792 zcmb7EU1%d!6rOZuZrfz1nl1a#_T{#Lg6UtT%09#<+t{?R7?N(%78Fsk&A1(!Olp#D z6VX^-eDP&Pa6#WiaG?m6yvXimhQQ9SmlClef)BAosf(}yBZAAU=T5S_jr7Gp?$5d3 zJ?A^$Id?RN?X~9@BkMNiPj|nKTtI|F?;fbDHgba{BS^3Z7uRtlx{8+-IWH$t@;g!z z@5=d2ygU=dFC}sk128-_g#%YI*}SY=WpwffufG4pK}<@@S!p9LXA~UCuY?1y`U2r_KXn+C zbK5Dn6iB6TI}Pv(q&u*MXrv3akWq4(l+=X@$5*>BD_L2|OW7_=EEwy;#H2*>KaiER z?ocZ`%El&*MEL*@uTM#&rM3)hr9lUa4Fv#+GXNbb6aWm)0JM3~a|nONxkUn6XaqqS zC-FLPri~*`dl-6j9I)o3p|N_&Tri&F%%GuhX4rVd znk$CDnK5I8vzmD^n}yOR^0Z$WGKy#%D-*`gYA;ZXMT_zGbapfe#&7HFs3?q|2~{Cp z1-Jw`)2E)Wg;^UK>p>w78h>KK<>J*C7b%w2BpbA}iqLjo5r^k@4IW<-M`%f&CP0BerfmEMo&qpJ z{sTOuj(JEu$V2M0JWwD5JelP!SMhvShJFnwMf{3XY%B30B0*lmZ9peWvd3%jwuROj z6gp+;=yJ+J%L%%Hg%nW(Bmyl1xtx4eNlQu|%Q?(cL7xg|36$e25pu}a^+t;VI}ZWK zfVdr)h5HBaOhG{~`jRBa6~ zC0E(lL1w@4COQYsOu+~v({5ZwW-lH3j5VZ`VHDYU#!$d@1e5pUhHE&0?#kAHmj;Un&WEC z<9&Fkto{Ht@}jr=cWWPxn!3Ap9x;@3@`w=nh<&>s%2#S42@zUE+SBeL;i^7sNSAumPl6z)IZ}L(O{2D%I$W2B~@K+KO0!xfyCTRm}rjHIH`D0Z2%K{BDQzt^*nda?zoEDgsn{Pb6PE)Gbj1 Is{cFwzd5#)0ssI2 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DEV.MAC b/Images/Source/hd0/s0/u15/DEV.MAC new file mode 100644 index 00000000..0b44fef8 --- /dev/null +++ b/Images/Source/hd0/s0/u15/DEV.MAC @@ -0,0 +1,493 @@ +; +; PROGRAM: DEV3 +; AUTHOR: RICHARD CONN +; VERSION: 1.0 +; DATE: 4 Apr 84 +; PREVIOUS VERSION: None +; DERIVATION: DEVICE2 of ZCPR2 +; +VERS EQU 10 +z3env SET 0f400h + +; +; DEV is a program which enables the user to manipulate the +; extended ZCPR3 redirectable device drivers. It allows the user to +; perform the following functions: +; +; o Display the Names of the Current Devices +; o Set One or More of the Current Devices +; o Ask for Help +; +; The format of the DEV command is: +; +; DEV or DEV // <-- Ask for Help +; DEV command,command,command ... <-- Issue Commands +; +; where "command" may take the following forms: +; +; DISPLAY ALL <-- Display Names of All Devices +; DISPLAY CON <-- Display Names of Consoles +; DISPLAY LST <-- Display Names of Printers +; DISPLAY RDR <-- Display Names of Readers +; DISPLAY PUN <-- Display Names of Punches +; +; CON:=name <-- Select Console +; LST:=name <-- Select Printer +; RDR:=name <-- Select Reader +; PUN:=name <-- Select Punch +; + +; +; Constants +; +tbuff equ 80h +cr equ 0dh +lf equ 0ah + +; +; SYSLIB Routines +; + ext z3init,getiop + ext cin,cout,epstr,eprint,cline,crlf + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + +; +; Start of Program +; + + call getiop ;check for initialization + mov a,h + ora l ;must NOT be zero + jnz start0 + call banner + call eprint + db cr,lf,'DEV NOT Initialized with I/O Base',0 +abort: + call eprint + db ' -- Aborting',0 + ret + +start0: + call status ;check for drivers + jnz start1 + call banner + call eprint + db cr,lf,'Redirection Not Supported',0 + jmp abort + +start1: + lxi h,tbuff ;pt to input buffer + call cline ;extract and save command line + call sblank ;skip to non-blank + ora a ;EOL? + jz help ;select help + cpi '/' ;help? + jnz docmd ;run command subroutine + +; +; Print Help Message +; +help: + call banner + call eprint + db cr,lf,'DEV - Quick Redirectable I/O Device Selector' + db cr,lf,'Syntax:' + db cr,lf,' DEV or DEV // ' + db '<-- Ask for Help' + db cr,lf,' DEV Command,Command, ... ' + db '<-- Issue Commands' + db cr,lf,'where "command" may take the following forms:' + db cr,lf,' DISPLAY=ALL ' + db '<-- Display All Devices' + db cr,lf,' DISPLAY=CON ' + db '<-- Display Consoles' + db cr,lf,' DISPLAY=LST ' + db '<-- Display Printers' + db cr,lf,' DISPLAY=RDR ' + db '<-- Display Readers' + db cr,lf,' DISPLAY=PUN ' + db '<-- Display Punches' + db cr,lf + db cr,lf,' CON:=name <-- Select Console' + db cr,lf,' LST:=name <-- Select Printer' + db cr,lf,' RDR:=name <-- Select Reader' + db cr,lf,' PUN:=name <-- Select Punch' + db 0 + ret +; +; Print Banner +; +banner: + call eprint + db 'DEV, Version ' + db (vers/10)+'0','.',(vers mod 10)+'0',0 + ret +; +; Skip to Non-Blank Routine +; +sblank: + mov a,m ;get char + inx h ;pt to next + cpi ' ' ;blank? + jz sblank ;continue if so + dcx h ;pt to non-blank + ret + +; +; Skip until a delimiter encountered +; +sdelm: + mov a,m ;get char + inx h ;pt to next + cpi ' '+1 ; or less? + rc + cpi '=' + rz + cpi ',' + rz + jmp sdelm + +; +; DOCMD -- This subroutine processes the command line pted to by HL. +; It is the Main Line if a DEVICE command line is given, it is just +; a subroutine if the user is in interactive mode. +; +docmd: + call docmd1 ;do first command + call sdelm ;skip to delim + cpi ',' ;another command? + jz docmd + ret +docmd1: + mov a,m ;get command letter + cpi 'C' ;console assignment? + jz docon + cpi 'D' ;display? + jz dodisp + cpi 'L' ;LST:? + jz dolst + cpi 'P' ;PUN:? + jz dopun + cpi 'R' ;RDR:? + jz dordr +cerr: + call eprint + db cr,lf,'Error at -- ',0 + call epstr ;print rest + ret + +; +; Do LST: Assignment +; +dolst: + call eprint + db ' LST:',0 + mvi a,3 ;select LST: + jmp assign + +; +; Do PUN: Assignment +; +dopun: + call eprint + db ' PUN:',0 + mvi a,2 ;select PUN: + jmp assign + +; +; Do RDR: Assignment +; +dordr: + call eprint + db ' RDR:',0 + mvi a,1 ;select RDR: + jmp assign + +; +; Do CON: Assignment +; +docon: + call eprint + db ' CON:',0 + mvi a,0 ;select console +; +; Do Assignment in General +; +assign: + mov b,a ;save A in B + push b ;save BC + call sdelm ;skip to delimiter + pop b ;get BC + cpi ' ' + jz asgn0 + cpi '=' + jnz cerr +asgn0: + mov a,b ;get A back + sta logical ;save logical device number + shld name ;save ptr to mnemonic + mov b,a ;number in B + inr b ;add 1 for offset + call status ;get device status + dcx h ;pt to previous + dcx h +asgn1: + inx h ;pt to next + inx h + dcr b ;count down + jnz asgn1 + mov c,m ;get number of devices in C + mov a,c ;check for value of zero + ora a + jnz asgn2 + lhld name ;pt to error name + jmp cerr +asgn2: + lda logical ;get logical device number + mov b,a ;... in B + push b ;save device count + dcr c ;pt to previous + call namer ;get name + xchg ;name pted to by DE + lhld name ;user's name pted to by HL +asgn3: + ldax d ;get name of device + cpi ' '+1 ;done? + jc asgn3a + cmp m ;compare to user + jnz asgn4 + inx h ;pt to next + inx d + jmp asgn3 +asgn3a: + mov a,m ;get user + cpi ' '+1 ;done? + jc asgn3b + cpi ',' ;done? + jnz asgn4 +asgn3b: + pop b ;match -- C-1 is selected device + dcr c ;decrement + call select ;select device + lda logical ;get logical device in A + call current ;print name of device selected + lhld name ;pt to name for scan continuation + ret +asgn4: + pop b ;count down + dcr c ;count down + jnz asgn2 ;continue + lhld name ;pt to invalid name + call eprint + db cr,lf,' Invalid Name at -- ',0 + call epstr + lhld name ;pt to name for scan continuation + ret + +; +; Display Devices and Assignments +; +dodisp: + call sdelm ;skip to delimiter + ora a ;none=all + jz dispall + mov a,m ;get char after delimiter + cpi 'A' ;all? + jz dispall + cpi 'C' ;CON: + jz dispcon + cpi 'L' ;LST: + jz displst + cpi 'P' ;PUN: + jz disppun + cpi 'R' ;RDR: + jz disprdr + jmp cerr +dispall: + call dispcon ;successive displays + call disprdr + call eprint + db cr,lf,'Strike Any Key -- ',0 + call cin + call disppun + jmp displst +dispcon: + call eprint + db cr,lf,'CON:',0 + mvi a,0 ;select CON: + call disp + jmp curr +displst: + call eprint + db cr,lf,'LST:',0 + mvi a,3 ;select LST: + call disp + jmp curr +disprdr: + call eprint + db cr,lf,'RDR:',0 + mvi a,1 ;select RDR: + call disp + jmp curr +disppun: + call eprint + db cr,lf,'PUN:',0 + mvi a,2 ;select PUN: + call disp +; +; Print Name of Current Device +; +curr: + call crlf ;new line +current: + push h ;save ptr + mov b,a ;save number in B + push b ;save B + call eprint + db ' Assignment is ',0 + push b ;save B + call status ;get status + pop b ;get B + inr b ;add 1 for offset + dcx h ;back up +curr1: + inx h ;pt to next + inx h + dcr b ;count down + jnz curr1 + pop b ;get logical number in B + mov c,m ;get physical number in C + call pname0 ;print first part of name only + pop h ;get ptr + ret +; +; Print Names of All Physical Devices for a Logical Device +; +disp: + push h ;save char ptr + push psw ;save device number + call eprint + db ' Devices --',0 + mov b,a ;logical device in B + push b ;save for later + push b ;save it + call status ;get status report + pop b ;get logical device number + inr b ;add 1 for offset + dcx h ;back up + dcx h +disp1: + inx h ;pt to next + inx h + dcr b ;count down + jnz disp1 + pop b ;get B back + mov c,m ;get count of devices + mov a,c ;check for none + ora a + jz disp3 +disp2: + push b ;save values + dcr c ;pt to next name + call eprint + db cr,lf,' ',0 + call pnamer ;print name (B=logical, C=physical) + pop b ;get count + dcr c ;count down + jnz disp2 +disp3: + pop psw + pop h + ret +; +; Routine to Print Name of Selected Device +; B=logical number, C=physical number +; +pnamer: + push b ;save BC + call pname0 ;print first part of name + call eprint ;print separator + db ' - ',0 + call epstr ;print rest as string + pop b ;restore BC + ret +; +; Print first part of selected device name +; +pname0: + call namer ;get ptr to string + mvi b,8 ;at most 8 chars +pname1: + mov a,m ;get char + inx h ;pt to next char + cpi ' ' ;end of name? + jz pname2 + call cout ;print char + dcr b ;count down + jnz pname1 + ret +pname2: + mvi a,' ' ;print spaces + call cout + dcr b ;count down + jnz pname2 + ret + +; +; Basic Interface Routines +; +status: + lxi d,0 ;Offset 0 +runit: + call getiop ;device driver base + dad d + pchl +select: + lxi d,3 ;Offset 3 + jmp runit +namer: + lxi d,6 ;Offset 6 + jmp runit + +; +; Buffers +; +logical: + ds 1 ;Logical Device Number +name: + ds 2 ;Pointer to User-Supplied Name + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DEV10.LBR b/Images/Source/hd0/s0/u15/DEV10.LBR new file mode 100644 index 0000000000000000000000000000000000000000..21787d223a47231d08778e3a6ab0b4021a839656 GIT binary patch literal 6528 zcmbtYc|4SB`+vsFJY#GT9owkKl3ix(JHuGBZ=q6TEZL21kcMHhmYqUTlAYyTZ>g1H7)6wst-uFHIKJP!j&+qwso_o3O?|oh0>w91K^Tz`~|9Joa0c_U; zett-no&-FMaqzJ~0CK<~ho6^$f2}*2+wBGffDw3M6!f52^wlTTKZ}PT}}K!Ko$bfQgot43qY%JRVZYW zwg~-e_^{Wr_!S6<45EeZ=?7NA!L)b5 zS`{2F-tmmyFpcLA7<5J2Yl_CW0AmGllNq5^B~Z`8PPo)J_OveL4|NQZHN4;Mmad?^ zWNH1G7vvz2M`RiXX@eGpb#I&Wb8At>^=30+y44?VA9K9!6IqVaW*ngo6S@SGzxrC( zc8q>BsO;=7b*Bha6#S0m@>vl&iIa?e0j2aV9<1~JC1}J#%347&A`wL_ofMlT`JzMn z2&HqvQ{+OD@FB34O!rOn6!oobh@QeNaEpuM`rF6fbEDEq!f+5?&Yk+~b6-cs`Ni5i zvHq2|mME_o(87P*rq-~O`Th=84#2-x<2_RG&iYgx7MoL=c{ts%L{hpywUR8(jHzS- zw|%(+v01jb0m4*+;EVMKI>e&Ikfx(tN>e@Dl?VnOrT^AzE6Lydp01_VMc;C-tuGX` z73o9ZiNClM;_c7Yi@d|8Gr5hzGyKQV3y#lik}}i8ZZj@ib}hMfrJ^S70Z*Os8u3(a zuyhCIV(pjIJC~LH@NS0{Zr|u_Y~&dV6p_jzKgoa1lk?DqM6~O8?zu{qNq(mwWG+XUFOB>5orBLS2yhKZZ(vyMW zw8D~TDYJrk2GNQzZ2izns8~-@D_qu&55zq;;6@Vy+=NkuSZT=tm+`fpf`d}`x%Qoy z3z6dLIV*R3F~2#M%Sv}4`f96zxXX*QEpJxjr)UPsX zc88}NRw9->pCpyeT^--E4*uQ50ta^R#ORAU$GntPo}o-UvFeh!L@R6v#{pFz{ctB7 zngYaV1yw$Ly)Js5*zSUNmPan?STsd55&MD{tcgp#EA(APmaj2;8lX4pgs#%OzxExD zdMD_c{wJ;mQpAd5j&)Lf#||NxU%LxtB#?&#j`Q}ux$}9J?m!KWt3NhmC_0u`wP2zxX@B3yrkn(M(x-tXXTRV*0FZ+k=4iG`zj zOZJb>6Xz@&6WQWN@K@$qqxtaxS|={JfKOuu;%&$eKs^n~U98j8cY!*370-$mT3@OM z5|wu0uky%=#pk|wrPME1DsF$doS=5i@GP|bDQ@B(CQO7-PfFf(BsfVI^Ho=;c~)|G z&JUe8j}#Bu_`nLeVua9B$TTw(%O^#~t2JqZb07bBE)*Z>GKXTw26$AD^cKC_QD8j% zac;I*6}710Gn_a%yIY8*sn$D+D)1HV0nGX2n}pMuzXv~`u+;3? z;ndS+#Ls{J#?rFk{)uemQ6r7Y530Rx%@jU`5FJIWx2~KQ!>6Q2#wDTY598xE)Ari~e7#!%RzuUj98FYdOyKil%BM&9en@+obj{u1(0%7;VyrME z#&2-LBjDGP;x+$xwd$LLtR(XT8i6(tP5z8s{Zl@Nq#9S>objYWLQsl%>dp9IMo9e; zVL=yx`e><#vK8!;X$_ShGWlyKoCgG=-=jX5oN@)~cRCOHZ3A8}xD3@=zfDv?VH5jh zC&bF$)$n&tw>-ZZm432to@BiYzH?H^kG)odB;@c6D)7!$_4p_3?Ungpbl9TJwEm1MJP?(N=zX!Sd~64eBxcIw3l7m5zW5pKqxcqs0A$=G4%z{O&b+27-A#2;%1 z^w$V#T0x0~&I=%^HPv*MEZwtvM*Hup*O$?B^pOW74q@;!paM5qxMNs3=P?Inn zJA&$v5sJpLF2pkBk#PIQf56ma?axle+QZ zung)wL)g~5F-hKJ$lKxlQNA-B+CdeQimYr;`@&AWLU#hxT_B8z-m@JL{Nt|XqOb*a z4TT`w{G+{L-!T6v$HVmIyU?fwGVad^b$ji-CesMMQ=XAeACKAyd-R6*an{8(fOh&En4BF1W?ZuB_w@4C`KQnJAEv}9G~z` z^U*ncDibsad#`wKP&YA&6Uz5Jxb4@giOKQS9KZ;2zg>MLEk$mB*vMrZ-^I z2R^3Zv2-~HyJih~V9IeD12^3%`YS0bgrUUejSSsK8D0vz5RWp78R-KX88c2Xq8bt% zy2oF6(g)?}YX?-;%ze3y(_ONY=RFu6k^zcw=^t5)x<(|o8$onjb^L<%7)fF+A;Y3I z0dFl@+e9qPJ|X%j#l4@aFC5wC=HW~fo03P#hDth9qJ;air`#oI<|sW(?0K`4IRB_# zk7SHU%EU+4iF-MW-*N_8kIn#&){pFU_ZTIZ?ww*tFNg|y^?)xCb_tMOM^}tZjeYD{ zoz`yCl@jq@aZj-;2{W^{eh*cm8zKwB_m;480=R%OYW|dm$@ptYgr{9vD`k)n1NdjR zj-K>d$`M(Jz(;6vH>k^Z`^szw{TgGYkhoPeMpt$xVnWIpawcAhTmquxJVZ3Kbo?_- zJ-?A&4P$g4rPzEc3{tlAeC^Y&Xg3z1^|3!PNL)(##qr`Uuiz0E#ZRK$M`9EPV{HD4 z_E#(9>NquXwfKZIsEv_`JzL-$Pb~W)GugGX^`mE>W?pP}UQehg2{_sCdy(IDnyYb8 zg=b!IXK9=sXc@j!mu4FxkiUMESh2AG!v&1jqI;s_sl;{UjYL52?;O1jiH1uj$EQzf zdq$USXk)EQ$BS^alZ73apkn9Zp1CsNkC?P-Fb0jhm0>dZB;J)zNXyPl1X(&zfPoam z*3ZOi2gLiEpoXAhQJQ7sVN>t0U|X}3diS^z2u7c)b_8{mB#t2QezqPODKX&~WRGO+ z^)t2}nF)_X5){DY-Ii9%F+*~uUQtDY5kiM~ssO+2lE#$y->TZbL@eJ%cHRNK?^QjX z1r=Hy^t*O=FINqYRIPV|vKzUl_aIwZFvMynbAJ?G4Jkaqm{4};Bzjy{t)O-h#@QJj z`wdqUvqH92QoYL(AD6wLo)!L{0X)=!CFDcC1?1r3C z#$MqQuXuyJg6kXTT!UdPvm>><{MTEPn*Wk*O0>BVSbrlE${1E@rm5C_Q4P__Zytuy z7LVy44OG1%XQ-nfJ)eDELzMc#Njvxp=$w!+RR%P=ocCTU|E!d~^taXZW!m!|C{B*3lVsEm&KJK4 z%~1)^y=)l%J_@8!(+!)-^}Z(PlWKvepo+}%6e!8{<4){=k&IoXa|FoxH8+PCB_Vn8 zbGP<%C7$b7p`tc4Z(A2N^5%k&yh|Z!aPBU9M|upl?N$9P?q^qoNO#3k@6pptlcOt? zqHjOZr(OK4LcTBdryt{VLiSKd?c=CI$*`QghjMa*_;)J3BpoOcqlU`jds&p~As`K@DuX8k`lCyS?46CL0%i*{Xyt@{xZJlp>4NuzMej&A z-tp@&*U@mYx?0~DTR#$&mR7eD^`cNYT&b!kCrjKgtFdbkm)SKrTz=_Jz>&zl#2PC7 zv{7T%=W`Y7VJBAu^i(J4Vw$IDddV(xb|)?&PwZAFqK6LTtBfsw+Lpg}=|NzxL%Dkse01+$DCb%vHB`xv5#|3ZX0h_L-Q|ndCR$3Fu^o z2RJ>kM(s9sp1`m*H$Yo{ipqR#<$9r@V^^tlP<3L#tP>iDq*?}`U6#3~lwDcb4mY0Y zJ-5aQp%FC&h!)_Rx5WSdVeuk-G%X!H5x|Br7Qxv8a!_DO8`B-ZDMxZ7L4F?i_Ymah z0XBQ$i)R`>gKjW%FE^#48LZN@T z@beENZ^b2%<3o;+Avbau>^L%ppT~_F5$l&|z|RB!?%HG=8MD=?tN-Ko7X%q?(xik! zf$*{oIV|emaEr+BaKDHE)qnNSo;`cM!)+;)I5PCZPT}WC2qwpnA(}gHP$I*~KVj_M+<(G2$Am=0l4E|txRP9d!nl(C0{$1o+2iL>&T$b(f;S^= z@_~667)SVplfTRGU1?Z{EjF6~n8bep{GhT4fEoN3z;_;->u~u0vc5$EE+I(}K1Nl@ z6Xv{GID|cTU?^2~17bHJRW=9GGaJT(8>)k>HY8^h$!SAwsIpneq0|ivwi0TC#Acy3 z?AhOt8_sNg)P^ft617##mN7B#(fh@2)+@k~1~=nuWdfKWSz4QzEn0vH*N@p|5`YQf z$81v+zyz@FgX8tUTu7)5W9Bk4Q3CNJw8AZAh1&3OBej5s(%4Sx<7$n&A8zEuGrRkocS z2X0{5hd@5q*#iH_o5_HjITIZyFD^D2Lxc9U)$8!m%8)X~3LW+k|=LAw`;7`T{J!~ii<`fwd;s&qNF_uka z_&LARK?tddh8-cjAZ&nAZ6G|Dj0ugd-Q6|UNJ>m($bKO{Lk6tj6C44+ik|~nbbwQnC!a4Djkfx!6;AZG0!DJ$xgiJy@ zO2OfEa9B)d8j#335;>bVHPrw`*P*Du#~{UZ!ef99%!wHiNhK#!{Is5h(_!RcxTQ%Z zSr@J+(hq0)m&fg~5xx6%Z(K;HkIB^b62Pgo-#TBEa8D)x!SBlUMCfTZUv>yX}d-EQ7s zH=3>kO&fq(%XP$LAhhAADyzt*4%)-H{QOO2nPFL0dcd%+v*YbI%@0?WX=PqD=76u) ze1xACjuWIFvhUs!SW{18^^7@}SDv+W3}Lw{hkg4o1K+gQ%d(c@F3U(ZU!0)YVN~iR zu62(x`3dq2Vf8C4`}gB;$*JzcD`05T+V7vYd|&*;!nR0pOAcP&vuHcvz2H=PG5D(2 ztl%dXoWM>QXn;CDB_@1^-ZKcOsUP4luC*NKWClk^{PkCGMCwtiAu<|@ZUo*pfZAa7 zC$i*#kTtlWczR-yBTtZhQ6n23JG_BRN>ZRPHVPp1XRCCL+8e!5!2HW zm3NaDZllTFsO+D_dF3-)fswm{VRUC%=>uFYEO>LQ{16m9lov~@E|g>Q%0F1MD@%A2 zh|!$N9jrN&dsxGCu_+I*^fh)NSe)=c#<07o;sd$YId8H|)(Z7TBowIE&=*RlU7?m7vcn?eXQxa-l2-x&VP+b*Zo9dFJI& zE3${wEv*Ca6w2G$Y1=#%qz$3&vwC0#M}QT{=e}bn)}Ju&8@D&Ik^}ewTJE3t&wuDKe;L76O2u@ zF*cSqHkJ;~`%E$J3U>A;rWm{mPC;E&OF=~guj~n6F#t?7)zJ7BkaU?KojYi<&HoLb ziA4ShNu10G7lMz^>Y98q{VTJ_-SVE>v2q_sVs_#dnnlJptD1)?BsU}ad7uzV;T(H#e32m z%N0z@kP>ICF6U-0p<;y!ZTr0}Z8G*jGr8%8NnQ6~&E3iBg11lx6s_aj5}dN_BVo#q z?B-J~GeeXuE0lg4=wS+GN`_ddxGYiU*4;QftX{FJFz~DxL4L zovhcYMVTv(<3ZtR`5rXhg03Yb+W{5+(;~vRUSbk@=R?am;LGRvV|!J`!)R%*a!iCg zle5arE}tEC5;|z8=XUH2QSEbpcr>{(ZFXV>bNoW?h*U~$_i#WWiijZ#BRE8m+r^q$ zUxLN`iK{;MLXv#kg6#~iVLp!oS zN*r#GlY-o4mM3-MB1O=*sV+#!sCUJaM0RX)6%sN$Hj9RyIAj*b29J`fmF8HEW zcv5>fYyyw@sKDm!eaiE6ecax-oGT+VG+ivX+&#i8NaV~bOM`0iubntNyREiNwnW*< z>($|umhy@|0v;vGEUQY9`{v$f2{p88td~Fk4%Hx@Y(WQ=Z34T$p4rXEw+z63Hk-Gz>mpeqRj$f1L{2;8v z-h0qGZ=Q;szP(O2^VkcGfpN`dly;Sia@6$Avc}Ti?nC(s_F*K+BIXW~YW@z6nPGSF z^L(Tsv+g3ZyL3pp!Y~`eWhn^Ec!O^biNm9py_wCc{P}Y7NUZA8@lfM<=^)Q%fH`w99EJ^4;7wod=I5 zxVadKezxB_Lq4DlEc{`ouKi?h0jL*4hiNq_Q1$!Ygha+N!foxuE}CB1KYXtk%9)_5 z?sZ@Az}Hx{9K#6%Klf~rE}u;CTVJ(YbLM=Y-WvVYxQgH2xgId_Pk9}gU@_^cjZ=05PvN+4NG+qEp5*Yd_ti|JsNq0*+cQF6}Z0L zT>cF7&}sh6mx#z={}c-)Bb%(B{NU!r@Orqox7(%Zf}iB>Z1*`CJLAF@MhIt`)i~%9}m%f znIUaD1fMe#zKe06R^tUw-T?YVAvez(DB z>CUD`j1~r3o_}=!!%G}j*%8??d3CK@9519- z>M&DeYe3^xDDB%fGpj%MmhXyfQzE`^&9o?>Gl=I+=J00*yKPEJz>T`B3vk^C9@3+t zC{Ez(!Me8$_1mWerhCH@7xVNTvSP4@N2Yy)`xP5|6>W7zEu+%DZ0COCvg z)Giio|44pFnWjj^(i*&Y$hR~kFUcF&Ryo(=rnOh~9G#S#U*%xWO+y#n@lbdps+;QO z?+aHXgcjsK_nEA6q^?J`NpcP~VMr>yV zeR^}(%c$CsA=d;ILwwbB>74oJX&y5Ngf^(_ImJL z@<$0Qx$&h_y-}$!@xV4|~Nh)!wC8uEQIf$wfGO-Qu_7%Rkb5YMNk`dCjl?^PZ!jrP)5<7wahl7wq}B3@ z?x_HGz0OwdTYz@l5CwnJ*XW?1r|9=fXH!4(8Q&;?rQ+36-w|pii6Wy?2{s}ec!j44 zZ~s2;k11LGFhccrURW(E*0`KE=A(B%k`5qje(>l9a7JBOY{7Q zaYGYzquA7eq|gbh<~DIev)rVL28=DLtPL(593b%1#j$ors9C&pist~2<6`Kh?z4pSXdO z1OjkmyUmfjS0^xGq794e9MIh<_*DKbJp7=j8_!XTzv5CA6Uw0ID1`{Almxd@bbr1p zDGNusD4HIBVpIpcBBV5qCp0`mC{y6!7lKxw2fqr)h;kF`pR@Bfqe;G@nNMUMZ?K+f z61QkEL0w_j=uBki%w%uPl_B)Bf3Wgb|xOv$-Dit55; zy?Uegb(X*w&o)**;%JuP7j2%Kc_K0~Mdtn~#7vHQ#$mxxiypa?v_SY&tJQ9;larqn zTGq2Q8F<9c?BhdGrxnv>?xr5Ep_%`TaoY|Q>~s)BqkP&d#bJ37Dnaz%By$F7#vb(r zYV$!R@VO>Jf=_bB6qaNOGf-hGxQcGblP=$H=_rz~c|g>`L3lh?SlL?~uz+@FMj`D3 z(t~&PCyJRPQGQ%%{lS_^GzWp>>ZI|&@&16)J8TTqlU+oq{^opTBUNRe(tdV)}|W0l*E7CIehp|#^hAXS}lvaie~Z6MyH z|2(Sne7>B{xsbU25O(a+`LlB-1-nG%##8Hc1DL*SkXMMv9{Bu=q8w6DYnqthC3tvg zO7o$Zq~P$cPsJ=m^t$um7MP;cKoR^JCP(LjjM#FYVXHY(sC#DZ2|v z2;xZjAwB5^C6ywxr=7bij}pG0@*-!yw$KGIuqG?rDQP96Yp{oW){T*xCJsf0^@VJL z=gNKxw{SS81n2s2lNnmJvyY8OlO5?cWMdN;?K1Ezq7a4SmBa=h!4<#gB3^e6AYwUvZIN2-a{Bqu3V_lNZk z(HAMx<&^!T1rM2%26fX)XOpDM38?G&t0qMum$>v0nhbU|-2VEvMT7jcO$chErT;Ze z-HadGPZT$Php;OX3w>G(2qzJ2Il{B`XHSaO@>`zg{L;kvsTkgyaqeuk{1N!9Q1fCE z9DOUG^_WxJ1y`40yHV+uE}fPcax0hE?H0W@XG@#utnG2_t&2BrbLGKhP{nHn!VckR z)Vpo93hV;Ixs59#C->_t9&8!o7nw724Va8R@Vp^KvH^y#c+_iAVOp_h-dN}a-5D%C zT>*n@Icfo>K^moC(a=qc5cXQa90lF897Q@u6NeEDMcQ)-fQxX&gGeVIU)*n z*nRmyuZ%`dfJB5DMkSe_fg>^;r{m)fU4c98kBx<&Gw1IL5(li|1iqd%{?ydanx(_N z#YA_kWS=!R!zS9*i-h2&*kyY4^}fyKwh{O6?LSU{8&Ko=hY~6+8X3<{{>b)4@>g@d z&5fS6llks#(MfV0I!_PjRDmV1t1^$XvBhWgnjc{5Ud~P0lQq?z^^qC&xI9qf++Zzd ze9L+LRxal0u0Gx3A%n0X>XqCZyt$9BV;vqRCzaLzEb?WgTb16NbxcOA&?Nihu%(ZUpsc6=dLKEwDNN_#Oy)*&%1ItlZ)>sL{=;08rVCGD#>ei z7nJVGyHt3`3b&q|Qh+>^pr-4gsvb=_b!-XUZ<$l`-dg!VPjE;__?!dm9mrYOEcnbfX?P4k+v^r-z zdyb^Ny{TU7!lqzS{JJ>>@3nn3B~0pBN9MTI(6e{IgKv!IXXBJQzQ}nno_dN+&KT9M zZF_+sPehO>^7SWrT}wC~=1LRlQ}fV&dk7Df#2&KP0L~}8t78yDJ1Gnm*NezYEiWhocH$a zH4*APS!@63+g>(EOsIfw*m#zD+motW)9%Y=)}OgtugvQ|T)u?=185}R%?AwFp#T34Iv2zpZ))cP0oLV^ z5S9mmWsQh$>~V##9NAe{5Ime)uO~5f_WLlFL6mR`kxGdrlQ2<~aDR-Yl0C+VNFxKF zCq_X5W9S_m7ETHB1DGsTL{G|pI0$4CC5-G7P6-ae*ae4UoFYO(Ku^_S?) zcdxpjFw+gHKL~AuN#uXKDk*`^8?Fvvl%Q~o1(_Oxu_e=JL_ac^%@xEJgK=~JC?kh$hBLt^U`!~q5GpYSL!?qM!C@HMrY^8fByuFhhfLcDWemD)>BSfa2hoDT zOiVV>4bbKv(1t<_{}b_&pdG zau{u+=PHWI05cK0ju|}6F3;R*G$|V6AzYivn_iufcQst)&w+~#m})hl3<8PaA3iPZFvCn7WTcn*)Zc!o^hxN zFVvU}wMl|H6hH~Lpl(A@U>UsYcPD?>Xd@&bZUg<_czHMhIxlqZA{$5xk{fowjLqRT zhu{vU;DjjnhS>jVJiz({)d%QOuz#SkJS<%V=*udFgMQ3z9*}*5 zVI#nA{taRbF??g60YK^vKM)7U^;ZrXlWA;kr~Ug9bOczg@GX%96T+WB`WEnOundD@ zFxKRlEpD)Qn~6C%{}4yE^-he*)f9(I31n5Kl zWB+$pK%Wh?&zUo}6d6Z^g^|JC$&f~)_yq-mr(mTSU|+hSn~h<@yX{yz5VOp=FXoJ2 z_D$e92*flGvLnD=Y~}`Tb^r^G01N#dzC6ohfOmla_)Kn;wwnny49>Cnz{(-OX9?CL zj9}_xHqYb`Onv|Weh;`)PJc1h(v(7U(hFIquoI)B`yP`qF((HB6p{Qq91{z(_qv&1K#To`iJKp@ zWm*P<^P6$-{xrizHxKG^z!JA%1$cTCIcm1Wbl(#<<7j5$5+{@n?f5BlkB-8DIhf(} z%;giIFz|#mg@@7QaLe+#dV|I|dAbfRahBOV%hXo{5%9A-zn38=XkZTqkR~jYkSX}> zo)tzj=UC2Mv%M*}FZ>I7XkB}Blz==>Pc&|sxz01Nt}}3tegO&x7<2Nh0j_oF!36xe z#KxjKScG5KA1uSK?;ae(t?wDE#e7;U9YQ8F4|*ac6~Uc|i2Og|{|^~*hJpY9 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DIFF.COM b/Images/Source/hd0/s0/u15/DIFF.COM new file mode 100644 index 0000000000000000000000000000000000000000..49eb4a89b40ca1b3ee643823ff85b887eac9beab GIT binary patch literal 3200 zcma)8Z){W76@PZ(_vgN6gX4~opiMV<39vMn*hNEo5JMVBS`{!$D5RAZ=8+egk=Uv2 zlvqs+tVo^KFP*v%Yd=tR+SEz=;I`}Zpwp_^o`c_0uR4Q_AXN({IHfa{W-))+rpL~G zPC~lw!>s3X@A;i`&prR{eJ?B8o_%cpp`$kDADx1YBoNu}Z1eMO#@5_+gL5sK zojfao8hJ^Y+3lD3guj_DWnZ_+Zi%;46(?`v%6B`%o?vLyPEt+xJe$n{A?(ulCzq425q&ya> z*e=*}MV;KWSM|QD_JcRJkt~L@hJ#%a5@~rTc1+ZDI5vosVLZrkB3j^y*?y>NLI2Zo*W=0%^=GZ+$J^@|qnC3sE4ub1FBv~?lpUG#jp>q} zE)^=YJv0vLg?sxC;V?8t@5Dspv1)t@KH4ygR)@1x7$LYxRL4T2^IUS4r;x_ zk>Ak1&03~brT)4U@l-1DAnm-tm6uz5j8nRKzmMxZd`b2=GCl{0d;HxzX!O8Z;|CPbGTZ53Ei>R;_;}6bH)0N#uio>^zA_0i zEYV1x3&n6;jZTh-Lvc8RQ&Dv?6rYZ&6A308V3pf&tcKWfF-H%W5oeVW0JCh}mX(jg zq3M`PV;hP`$4^0{t)A1i{-lgL3IKL$Hro69D0~pEjjI;`oa;eb*0kvmV$nMLY<)< zzfV1}-1rti+1}U+L?vrsM!CgZvw_2EBl9YjSWIpC}ANd3uTAb3wD{98~F+?(eMNq;*smCRebtjI_+ zW_WU+H-5^K!vatWWq`TQE1OYM(L)$iNP&qpYn66XvGI&hVH-?uM&soowOX+`08+M~ zCTnZ*nvnOHotYbaU{4dd$7gTxO|rS?qkFs~GtX10oV~-BTRYH>66B8ji-%m105Z-C z6`34B1C2?ucL596_FlYlP=GMxq>1z73*ma1wZqg<1Yi~p2yjcu0sxrL@Z)kBRB3)J{?b>r~TIxl!UWr(Qd!^{f;E&M4^FkTiaw)GH0_J;y2+tdOU zfNTacNwam~_k!7zH;?B{Z{Ae$W>?6?weKW5g7opZ>&ooViu<(Zey9^b$;7pf2~MZHXOvQW~NxvsBp+m<;?@f%F@ zhr@ zD;n9iP&wyXZ?VQzl!BKC@Q(nm!E}*)ju!P|uI6IkYr@ziLc@265^0g3)tf{U8Q&C5 zjuPJ3Bxdg+7X!oz|Ac11#F{N}0|EZkfpbCYSi_Z16|3ojUYmt$U=IFOy#{WxO!gVk zn%Layw~$%UeYb(qQHD}P>D+ub98n0Ts=JuE*CMlToLqQCl(I>2?xo1=&rT+^%$wpn z#+y(VxJOtfG2abiu2|c^WZxI*Xk$moWsyZdEL&AbnTvUKp#WBN@$7N1uqeJ~EYivj zOE2mhs10jYtF40{`L|f5e|>44i57TiekW{T?NWn-4;L5$Qq`@?%w&vV3DN_Ervy>r z1X8O7MyQ%~GgWEHI&F+sa37J1U(j07Bm^lWxlh)idWN2H;T&-=>0y@(1}hCUD0ee3 zwQoOgVHkteffDpqt_X8#shre|cj@QoX*v6AsRWWIScd#bO6z6VfTyg6E*#AFb@(1kz literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DIFF.MAC b/Images/Source/hd0/s0/u15/DIFF.MAC new file mode 100644 index 00000000..7b14b767 --- /dev/null +++ b/Images/Source/hd0/s0/u15/DIFF.MAC @@ -0,0 +1,725 @@ +; +; PROGRAM: DIFF +; AUTHOR: Richard Conn +; VERSION: 2.0 +; DATE: 18 MAY 84 +; PREVIOUS VERSIONS: 1.6 (16 JAN 83) +; PREVIOUS VERSIONS: 1.5 (9 JAN 83), 1.4 (6 JAN 83), 1.3 (4 JAN 83) +; PREVIOUS VERSIONS: 1.2 (19 DEC 82), 1.1 (8 DEC 82), 1.0 (24 JULY 82) +; DERIVATION: COMPARE, VERSION 1.1 +; +VERS EQU 20 +z3env SET 0f400h + +; +; DIFF is designed to provide the user with a convenient method +; to compare the contents of two files. It is invoked by one of two basic +; forms: +; +; DIFF filename.typ +; or +; DIFF file1.typ file2.typ +; +; The first form compares the file named "filename.typ" on drive A: +; to the file of the same name on drive B:; the second form compares the +; file named "file1.typ" on drive A: to the file named "file2.typ" on drive +; B:. Wild cards may NOT be used. The listing generated by the program gives +; relative offsets (in hex and decimal) as well as the different byte values +; in hex, decimal, and ASCII. +; + +; SIZE OF BUFFER +BLIMIT EQU 32 ; NUMBER OF 128-BYTE BLOCKS +BSIZE EQU BLIMIT*128 ; 4K + +; CP/M Constants +CPM equ 0 ; CP/M Warm Boot +BUFF equ CPM+80H ; Temporary Buffer +CR equ 0DH ; +LF equ 0AH ; +CTRLC EQU 'C'-'@' +CTRLX EQU 'X'-'@' + +; SYSLIB and Z3LIB ROUTINES + EXT Z3INIT,ZFNAME,GETCRT + EXT PHL4HC,PHLDC,PA2HC,PADC + EXT BDOS,INITFCB + EXT LOGUD,RETUD + EXT F$OPEN,F$CLOSE,F$READ + EXT CAPS,CIN,COUT,CRLF,MOVEB,PRINT + EXT CODEND + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env +; +; SET BUFFER LOCATIONS +; + CALL CODEND ; ALLOCATE BUFFER SPACE + SHLD INLINE ; SET PTR TO INPUT LINE + LXI D,100H ; BUFFER SIZE + DAD D + SHLD BUFF1 ; SOURCE 1 BUFFER + LXI D,BSIZE ; SIZE OF BUFFER + INR D ; ADD 1 + DAD D + SHLD BUFF2 ; SOURCE 2 BUFFER +; +; SET OPERATIONS FLAGS +; + XRA A ; A=0 + STA MULT ; SET NO MULTIPLE RUN + STA COMP ; SET NO COMPARE ONLY + CALL GETCRT ; GET CRT CHARACTERISTICS + INX H ; PT TO TEXT LINE COUNT + INX H + MOV A,M ; GET COUNT + STA LSET ; SET COUNTER +; +; EXTRACT COMMAND LINE INFORMATION +; + LHLD INLINE ; PT TO INPUT LINE BUFFER + XCHG ; ... IN DE + LXI H,BUFF+1 ; PROCESS OPTIONS IN BUFFER + MVI B,80H ; ARBITRARY 80H BYTES + CALL MOVEB + XCHG ; PT TO FIRST CHAR WITH HL + CALL SBLANK ; SKIP SPACES + ORA A ; EOL? + JZ PRHELP ; PRINT HELP IF SO + CPI '/' ; ASKING FOR HELP? + JZ PRHELP + LXI D,FCBS ; PT TO SOURCE FCB + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; EXTRACT NAME AND DIRECTORY DATA + MOV A,M ; GET NEXT CHAR + CPI ',' + JZ START2 + PUSH H ; SAVE PTR + LXI H,FCBS+1 ; NO 2ND NAME, SO SET IT TO SAME AS FIRST + LXI D,FCBD+1 + MVI B,11 ; 11 BYTES + CALL MOVEB + CALL RETUD ; GET CURRENT USER/DISK + MOV A,B ; GET DISK + INR A ; A=1 + STA FCBD ; SET DISK + MOV A,C ; GET USER + STA FCBD+13 ; PT TO S1 FOR USER + POP H ; GET PTR + JMP START3 +START2: + INX H ; PT TO NEXT CHAR AFTER COMMA + LXI D,FCBD ; SET DEST FCB + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; PROCESS NAME + LDA FCBD+1 ; CHECK FOR NO NAME + CPI ' ' ; SPACE MEANS NO NAME + JNZ START3 + PUSH H ; SAVE PTR + PUSH B ; SAVE USER/DISK + LXI H,FCBS+1 ; SET NAMES THE SAME + LXI D,FCBD+1 ; COPY SOURCE TO DEST + MVI B,11 ; 11 BYTES + CALL MOVEB + POP B ; RESTORE BC + POP H ; RESTORE PTR +START3: + CALL SBLANK ; SKIP SPACES + CALL OPTS ; PROCESS OPTIONS +START4: + LXI H,FCBS ; SET UP SOURCE FCB + CALL QCHECK ; NO AMBIGUOUS ENTRIES PERMITTED + LXI H,FCBD ; SET UP DESTINATION FCB + CALL QCHECK ; NO AMBIGUOUS ENTRIES PERMITTED + CALL RETUD ; GET CURRENT DU IN BC + LXI H,FCBS ; PT TO SOURCE DISK + MOV A,M ; GET SOURCE DISK + ORA A ; CURRENT? + JNZ START5 + MOV A,B ; SET CURRENT DISK + INR A ; ADJUST FOR A=1 +START5: + STA SDISK + MVI M,0 ; CLEAR SOURCE DISK + LDA FCBS+13 ; GET USER + STA SUSER + LXI H,FCBD ; GET DESTINATION DISK + MOV A,M ; GET DEST DISK + ORA A ; CURRENT? + JNZ START6 + MOV A,B ; SET CURRENT DISK + INR A ; ADJUST FOR A=1 +START6: + STA DDISK + MVI M,0 ; CLEAR DEST DISK + LDA FCBD+13 ; GET USER + STA DUSER +MLOOP: + CALL BANNER ; PRINT BANNER + CALL PRS1 ; PRINT SOURCE FILE NAMES + CALL PRS2 + LDA MULT ; MULTIPLE RUNS + ORA A + JZ MLOOP1 + CALL PRINT + DB CR,LF,' Type ^C to Abort or RETURN to Proceed - ',0 + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + CPI CTRLC ; ABORT? + RZ + MVI C,13 ; RESET DISKS + CALL BDOS +MLOOP1: + CALL LOGS ; LOG IN SOURCE + LXI D,FCBS ; TRY TO OPEN SOURCE 1 + CALL INITFCB ; INIT FCB + CALL F$OPEN ; Z IF NO ERROR + JNZ FERR + CALL LOGD ; LOG IN DEST DISK/USER + LXI D,FCBD ; TRY TO OPEN SOURCE 2 + CALL INITFCB ; INIT FCB + CALL F$OPEN + JNZ FERR + XRA A ; A=0 + STA FIRST ; SET FLAG FOR FIRST ERROR + LXI H,0 ; INIT OFFSET + SHLD OFFSET + CALL VERIFY ; PERFORM VERIFICATION + LDA FIRST ; ANY ERRORS? + ORA A ; 0=NO ERRORS + JNZ MLOOP2 + CALL PRINT + DB CR,LF,' Files are Identical',0 +MLOOP2: + LDA MULT ; CHECK FOR MULTIPLE RUNS + ORA A ; 0=NO + RZ + CALL CRLF ; NEW LINES + CALL CRLF + JMP MLOOP +FERR: + CALL PRINT + DB CR,LF,' File Not Found -- ',0 + CALL PRFN + JMP MLOOP2 + +; +; PROCESS OPTIONS +; +OPTS: + MOV A,M ; GET NEXT OPTION CHAR + INX H ; PT TO NEXT + ORA A ; END OF LINE? + RZ + CPI ' ' ; SKIP SPACES + JZ OPTS + LXI D,OTAB ; PT TO OPTION TABLE + MOV B,A ; OPTION CHAR IN B +OPTS1: + LDAX D ; GET TABLE CHAR + ORA A ; OPTION NOT FOUND? + JZ OPTSE ; PROCESS ERROR + CMP B ; MATCH? + JZ OPTS2 + INX D ; SKIP TO NEXT + INX D + INX D + JMP OPTS1 +OPTS2: + XCHG ; USE HL + INX H ; GET ADDRESS + MOV A,M ; GET LOW + INX H + MOV H,M ; GET HIGH + MOV L,A ; PUT LOW + XCHG ; DE PTS TO OPTION ADDRESS, HL TO NEXT BYTE + LXI B,OPTS ; SET UP RETURN ADDRESS + PUSH B + PUSH D ; SET UP OPTION ADDRESS + RET ; "RUN" OPTION +OPTSE: + CALL PRHELP ; PRINT HELP MESSAGE + POP PSW ; CLEAR RETURN ADDRESS + RET ; RETURN TO OPSYS +; +; OPTION TABLE +; +OTAB: + DB 'C' ; COMPARE ONLY + DW SCOMPF + DB 'M' ; MULTIPLE RUN + DW SMULTF + DB 0 ; END OF TABLE +; +; SET COMPARE FLAG +; +SCOMPF: + MVI A,0FFH ; SET FLAG + STA COMP + RET +; +; SET MULTIPLE RUN FLAG +; +SMULTF: + MVI A,0FFH ; SET FLAG + STA MULT + RET +; +; SKIP TO NON-BLANK CHAR +; +SBLANK: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ SBLANK + DCX H ; PT TO NON-BLANK + RET + +; +; PRINT HELP MESSAGE +; +PRHELP: + CALL BANNER ; PRINT BANNER + CALL PRINT + DB CR,LF,'Syntax:' + DB CR,LF,' DIFF ufn1,ufn2 o... -or- DIFF ufn o...' + db cr,lf,'Options:' + db cr,lf,' C Compare Files Only (Stop at First Difference)' + db cr,lf,' M Multiple Runs (Keep on prompting for disks)' + DB CR,LF,'Examples:' + DB CR,LF,' Command Files Compared' + DB CR,LF,' DIFF T.COM,A1: $$:T.COM, A1:T.COM' + DB CR,LF,' DIFF A:T.COM A$:T.COM, $$:T.COM' + DB CR,LF,' DIFF A:T.COM,ROOT: A$:T.COM, ROOT:T.COM' + DB CR,LF,' DIFF A:T.COM,B:S.COM A$:T.COM, B$:S.COM' + DB 0 + RET + +; +; CHECK FOR ANY QUESTION MARKS FROM HL+1 TO HL+11 +; AFFECT ONLY AF REGISTERS IF OK +; +QCHECK: + PUSH H ; SAVE HL + PUSH B ; SAVE BC + INX H ; PT TO FIRST CHAR + MVI B,11 ; 11 BYTES + MVI C,'?' ; SCAN FOR '?' +QC: + MOV A,M ; GET BYTE + CMP C ; '?'? + JZ QC1 + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ QC + POP B ; RESTORE + POP H + RET +QC1: + POP B ; RESTORE AND ABORT + POP H + POP D ; CLEAR RETURN ADDRESS + XCHG ; FCB PTR IN DE + CALL CRLF + CALL PRFN ; PRINT FILE NAME + CALL PRINT + DB ' AFN not Allowed',CR,LF,0 + RET + +; +; PRINT BANNER +; +BANNER: + CALL PRINT + DB 'DIFF Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0' + DB 0 + RET + +; +; PRINT NAMES OF SOURCE FILES +; PRS1 -- SOURCE FILE 1 +; PRS2 -- SOURCE FILE 2 +; +PRS1: + CALL PRINT + DB CR,LF,'Source 1 -- ',0 + LXI H,SDISK ; PT TO FIRST BYTE + CALL PRUD + LXI D,FCBS ; SOURCE FCB + JMP PRFN ; PRINT FILE NAME +PRS2: + CALL PRINT + DB CR,LF,'Source 2 -- ',0 + LXI H,DDISK ; PT TO FIRST BYTE + CALL PRUD + LXI D,FCBD ; DESTINATION FCB + JMP PRFN ; PRINT FILE NAME + +; +; MAIN VERIFY ROUTINE +; +VERIFY: + LHLD BUFF1 ; PT TO BUFFER 1 + PUSH H ; SAVE PTR + CALL LOGS ; LOG IN SOURCE 1 + LXI D,FCBS ; SOURCE 1 FCB + CALL LOAD ; READ IN BLOCK + LDA BCNT ; GET OLD BLOCK COUNT + STA BCNT1 ; SAVE IT + LHLD BUFF2 ; PT TO BUFFER 2 + PUSH H ; SAVE PTR + CALL LOGD ; LOG IN SOURCE 2 + LXI D,FCBD ; SOURCE 2 FCB + CALL LOAD ; READ IN BLOCK + POP D ; DE PTS TO BUFF 2 + POP H ; HL PTS TO BUFF 1 + LDA BCNT ; CHECK FOR NO BLOCK READ + MOV B,A + LDA BCNT1 + ORA B + RZ ; DONE IF NONE READ +; +; VERIFY LOADED BUFFERS BY COMPARING THEM AND PRINTING DIFFERENCES +; +VERBLOCK: + MVI B,128 ; SCAN ONE BLOCK +VERBL: + LDAX D ; GET BYTE + CMP M ; COMPARE + CNZ NOMATCH ; PRINT DIFFERENCE + PUSH H ; INC OFFSET + LHLD OFFSET + INX H + SHLD OFFSET + POP H + INX H ; PT TO NEXT + INX D + DCR B ; COUNT DOWN + JNZ VERBL + LDA BCNT ; COUNT DOWN + DCR A + STA BCNT + LDA BCNT1 + DCR A + STA BCNT1 + JZ VEREQ + LDA BCNT ; CHECK FIRST BUFFER COUNT + ORA A + JNZ VERBLOCK ; CONTINUE COMPARE IF NOT EMPTY +VEREQ: + LDA BCNT ; CHECK FOR BOTH DONE + MOV B,A + LDA BCNT1 + ORA B ; IF ZERO, BOTH DONE AT SAME TIME AND CONTINUE + JZ VERIFY + LDA BCNT1 ; CHECK FOR ONE DONE BEFORE THE OTHER + ORA A ; 2ND DONE? + MVI C,'2' ; GET LETTER + JZ DONE1 + MVI C,'1' ; GET LETTER +; ONE FILE IS SHORTER THAN THE OTHER -- SAY SO +DONE1: + CALL PRINT + DB CR,LF,' Source ',0 + MOV A,C + CALL COUT ; PRINT LETTER + CALL PRINT + DB ' has terminated prematurely',0 + JMP DABORT +; MATCH ERROR +NOMATCH: + LDA COMP ; GET COMPARE FLAG + ORA A ; NZ=SIMPLE COMPARE + JNZ CABORT + PUSH H ; SAVE REGS + PUSH D + PUSH B + LDA FIRST ; FIRST TIME THRU? + ORA A ; 0=YES + JZ NMAT0 + LDA LCNT ; CHECK FOR NEW SCREEN + ORA A ; ZERO IF DONE + JNZ NMAT1 + CALL PRINT + DB CR,LF,' DIFF Pause -- Strike RETURN to Continue, ' + DB '^C to Abort, or ^X to Advance - ',0 + CALL CIN ; GET RESPONSE + CALL CAPS + CPI CTRLC ; ABORT? + JZ NMAT00 + CPI CTRLX ; ADVANCE? + JNZ NMAT0 + POP B ; CLEAR REGS + POP D + POP H + POP D ; CLEAR STACK + CALL PRINT + DB CR,LF,' DIFF Advancing',0 + RET ; RETURN TO VERIFY CALLER +NMAT00: + POP B ; CLEAR REGS + POP D + POP H + POP D ; CLEAR STACK + POP D +DABORT: + CALL PRINT + DB CR,LF,' DIFF Aborting',0 + RET ; RETURN TO OPSYS +CABORT: + POP D ; CLEAR STACK + MVI A,1 ; SET ERROR FLAG + STA FIRST + CALL PRINT + DB CR,LF,' Files are Different',0 + RET ; RETURN TO VERIFY CALLER +NMAT0: + MVI A,0FFH ; CLEAR FIRST TIME FLAG + STA FIRST + CALL HEADER ; PRINT HEADING AND RETURN NEW LINE COUNT +NMAT1: + DCR A ; COUNT DOWN 1 LINE + STA LCNT ; NEW LINE COUNT + CALL CRLF + PUSH H ; SAVE HL + LHLD OFFSET ; PRINT OFFSET VALUE + CALL PHL4HC ; PRINT AS HEX + CALL SPACER ; PRINT SPACES + CALL PHLDC ; PRINT AS DEC + POP H ; RESTORE HL + CALL SPACER + CALL SPACER + MVI A,' ' + CALL COUT + MOV A,M ; GET SOURCE 1 VALUE + CALL PRVAL ; PRINT AS HEX, DEC, ASCII + CALL SPACER ; 10 SPACES + CALL SPACER + CALL SPACER + CALL SPACER + CALL SPACER + LDAX D ; GET SOURCE 2 VALUE + CALL PRVAL ; PRINT AS HEX, DEC, ASCII + POP B ; RESTORE REGS + POP D + POP H + RET + +; PRINT HEADER AND RETURN NEW LINE COUNT IN A +HEADER: + PUSH D ; SAVE REGS + PUSH H + CALL PRINT + DB CR,LF,' Rel Offset ',0 + LXI H,SDISK ; PRINT DISK/USER + CALL PRUD + LXI D,FCBS + CALL PRFN ; PRINT FILE NAME + CALL SPACER ; 5 SPACES + CALL SPACER + CALL SPACE1 + LXI H,DDISK ; PRINT DISK/USER + CALL PRUD + LXI D,FCBD + CALL PRFN ; PRINT FILE NAME + CALL PRINT + DB CR,LF,' Hex Dec Hex Dec Asc Hex Dec Asc',0 + LDA LSET ; SET LINE COUNT + SUI 1 ; ADJUST FOR HEADING AND FOOTER + STA LCNT + POP H + POP D ; RESTORE REGS + RET + +; PRINT A AS HEX, DEC, AND ASCII +PRVAL: + CALL SPACER ; 3 SPACES + CALL SPACE1 + CALL PA2HC ; PRINT AS HEX + CALL SPACER + CALL PADC ; PRINT AS DEC + CALL SPACER + ANI 7FH ; MASK OUT MSB + CPI 7FH ; DOT FOR + JZ PRDOT + CPI ' ' ; PRINT DOT IF LESS THAN + JNC COUT +PRDOT: + MVI A,'.' ; PRINT DOT + JMP COUT +; PRINT 2 SPACES +SPACER: + PUSH PSW ; SAVE A + MVI A,' ' ; + CALL COUT + POP PSW +SPACE1: + PUSH PSW + MVI A,' ' + CALL COUT + POP PSW + RET + +; +; LOAD BUFFER FROM FILE WHOSE FCB IS PTED TO BY DE +; ON OUTPUT, BCNT=NUMBER OF BLOCKS LOADED (UP TO BLIMIT) +; +LOAD: + XRA A ; A=0 + STA BCNT ; SET BLOCK COUNT + +; MAIN LOAD LOOP +LOAD1: + CALL F$READ ; READ A BLOCK + ORA A ; END OF FILE? + RNZ ; RETURN IF DONE + PUSH D ; SAVE FCB PTR + LXI D,BUFF ; PT TO BUFFER + MVI B,128 ; COPY 128 BYTES +LOAD2: + LDAX D ; GET BYTE READ + MOV M,A ; PUT BYTE + INX H ; PT TO NEXT + INX D + DCR B ; COUNT DOWN + JNZ LOAD2 + POP D ; GET FCB PTR + LDA BCNT ; GET BLOCK COUNT + INR A ; INCREMENT IT + STA BCNT ; SET IT + CPI BLIMIT ; LAST BLOCK READ? + JNZ LOAD1 + RET + +; +; LOG IN SOURCE (LOGS) AND DESTINATION (LOGD) DRIVES/USERS +; +LOGS: + LDA SDISK ; GET DISK + DCR A ; A=0 + MOV B,A + LDA SUSER ; GET USER + MOV C,A + CALL LOGUD ; LOG IN + RET +LOGD: + LDA DDISK ; GET DISK + DCR A ; A=0 + MOV B,A + LDA DUSER ; GET USER + MOV C,A + CALL LOGUD ; LOG IN + RET + +; +; PRINT DISK/USER PTED TO BY HL (2 BYTES) +; +PRUD: + MOV A,M ; GET DISK + ADI 'A'-1 ; CONVERT TO LETTER + CALL COUT + INX H ; PT TO USER + MOV A,M ; GET USER + CALL PADC ; PRINT AS DEC + CALL PRINT + DB ': ',0 + RET + +; +; PRINT FILE NAME WHOSE FCB IS PTED TO BY DE +; +PRFN: + PUSH H ; SAVE REGS + PUSH D + PUSH B + XCHG ; FN PTED TO BY HL + INX H ; PT TO FIRST CHAR + MVI B,8 ; 8 CHARS + CALL PRFN1 + MVI A,'.' + CALL COUT + MVI B,3 ; 3 CHARS FOR FILE TYPE + CALL PRFN1 + POP B ; RESTORE REGS + POP D + POP H + RET +PRFN1: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CALL COUT ; PRINT + DCR B ; COUNT DOWN + JNZ PRFN1 + RET + +; +; BUFFERS +; +BUFF1: + DS 2 ; PTR TO BUFFER 1 +BUFF2: + DS 2 ; PTR TO BUFFER 2 +OFFSET: + DS 2 ; RELATIVE OFFSET +FIRST: + DS 1 ; ERROR INDIC +LSET: + DS 1 ; NUMBER OF TEXT LINES ON SCREEN +LCNT: + DS 1 ; LINE COUNT +COMP: + DS 1 ; COMPARE FLAG (0=NO SIMPLE COMPARE) +MULT: + DS 1 ; MULTIPLE RUN FLAG (0=NO MULT RUNS) +SDISK: + DS 1 ; SOURCE DISK (MUST BE FOLLOWED BY SUSER) +SUSER: + DS 1 ; SOURCE USER +FCBS: + DS 36 ; SOURCE FCB +DDISK: + DS 1 ; DEST DISK (MUST BE FOLLOWED BY DUSER) +DUSER: + DS 1 ; DEST USER +FCBD: + DS 36 ; DESTINATION FCB +BCNT: + DS 1 ; BUFFER COUNT +BCNT1: + DS 1 ; SECOND BUFFER COUNT +INLINE: + DS 2 ; PTR TO INPUT LINE BUFFER + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DIFF21.LBR b/Images/Source/hd0/s0/u15/DIFF21.LBR new file mode 100644 index 0000000000000000000000000000000000000000..63a2aab085095dafcaf1c054d54f8b404578ad4c GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DIR.MAC b/Images/Source/hd0/s0/u15/DIR.MAC new file mode 100644 index 00000000..266690ef --- /dev/null +++ b/Images/Source/hd0/s0/u15/DIR.MAC @@ -0,0 +1,1465 @@ +; +; Program: DIR +; Author: Richard Conn +; Version: 1.0 +; Date: 23 Mar 84 +; +VERS EQU 11 ; Changed manner of calculating disk size + ; Using all0 and all1 instead of drm + ; Added modified dirqs and fsize jww + ; Trial to list files vertically jww +; +;VERS EQU 10 ; Release +; +MONTH EQU 1 +DAY EQU 2 +YEAR EQU 85 +; +Z3ENV SET 0F400H ; Set zcpr3 environment descriptor address +; +; Equates +; +YES EQU 0FFH +NO EQU 0 +; +VIDEO EQU YES ; Enhanced video? +VOPT EQU YES ; Print signon and vers no +VERT EQU YES ; List files vertically (default) +; +FCB EQU 5CH +FCB2 EQU 6CH +CTRLC EQU 03H +CR EQU 0DH +LF EQU 0AH +; +; VLIB, Z3LIB and SYSLIB References +; + EXT Z3VINIT,TINIT,STNDOUT,STNDEND,BDOS + EXT CODEND,RETUD,PFN1,DFREE,DUTDIR,DPARAMS + EXT CRLF,COUT,PAFDC,PHLDC,PHLFDC,Z3LOG,FILLB,GETCRT,CIN +; +; Environment Definition +; + IF Z3ENV NE 0 +; +; External ZCPR3 Environment Descriptor +; + JMP START + DB 'Z3ENV' ; This is a zcpr3 utility + DB 1 ; External environment descriptor +Z3EADR: + DW Z3ENV +START: + LHLD Z3EADR ; Pt to zcpr3 environment +; + ELSE +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +Z3EADR: + JMP START + SYSENV +START: + LXI H,Z3EADR ; Pt to zcpr3 environment + ENDIF +; +; Start of Program -- Initialize ZCPR3 Environment +; + CALL Z3VINIT ; Initialize the zcpr3 env + CALL TINIT ; Initialize the terminal +; +; Make FCB Wild if No Entry +; + LXI H,FCB+1 ; Pt to first char + MOV A,M ; Get it + CPI ' ' ; Check for space + MVI B,11 ; Prepare to set 11 bytes + MVI A,'?' ; To "?" + CZ FILLB ; Do it if space +; +; Check for Help +; + LXI D,FCB+1 ; Pt to first char of fcb + LDAX D ; Get first char of fcb + CPI '/' + JNZ DOIT + CALL PRINT + DB 'DIR Vers ' + DB (VERS/10)+'0','.',(VERS MOD 10)+'0',CR,LF + DB ' Syntax: DIR dir:afn o',CR,LF + DB ' Options: A=All, S=Sys, H=Horiz, V=Vert, ' + DB 'T=File Type/Name Sor','t'+80H + RET +; +; Perform Directory Function +; +DOIT: + DCX D ; Pt to fcb + CALL Z3LOG ; Log into dir + XRA A ; Clear disk selection byte + STAX D +; +; Process Options in FCB2 +; + LXI H,FCB2+1 ; Pt to options + MVI B,8 ; Allow for up to 8 options + MVI C,10000000B ; Assume just normal files +OPTLOOP: + MOV A,M ; Get next char + INX H ; Advance + DCR B ; Count down + JZ SETDATA ; Done - set data + CPI ' ' + JZ OPTLOOP + CPI 'H' ; Select horizontal listing + JZ SETHORIZ + CPI 'V' ; Select vertical listing + JZ SETVERT + CPI 'T' ; File type? + JZ SETTYPE + CPI 'S' ; System? + JZ SETSYS + CPI 'A' ; System and normal? + JNZ OPTLOOP +; +; Select Both System and Normal Files +; + MVI A,11000000B ; Normal and system files + JMP SETSYS1 +; +; Select Horizontal listing +; +SETHORIZ: + MVI A,YES + STA HORIZ + JMP OPTLOOP +; +; Select Vertical listing +; +SETVERT: + MVI A,NO + STA HORIZ + JMP OPTLOOP +; +HORIZ: DB NOT VERT ; Horizontal listing flag +; +; Select File Type/Name Alphabetization +; +SETTYPE: + MOV A,C ; Get flag + ORI 00100000B + MOV C,A + JMP OPTLOOP +; +; Select Just System Files +; +SETSYS: + MVI A,01000000B ; System +SETSYS1: + PUSH PSW + MOV A,C + ANI 00111111B ; Mask out + MOV C,A + POP PSW + ORA C + MOV C,A + JMP OPTLOOP +; +; Set Selection Byte in A +; +SETDATA: + CALL DPARAMS ; Init parameters + CALL CODEND ; Pt to free area + MOV A,C ; Selection in a +; +; Load and Sort Directory +; + CALL DIRQS ; Quick load + SHLD DIRBEG ; Beginning of directory area + JNZ DISPLAY + CALL PRINT + DB ' Ovf','l'+80H + RET +; +; Display Directory +; +DISPLAY: + PUSH H ; Save ptr to first entry +; +; Init: +; Total of All File Sizes +; Number of Files Displayed +; Line Counter +; Entry Counter +; + IF VOPT ; Signon and version + PUSH B + IF VIDEO + CALL STNDOUT + ENDIF + MVI C,22 ; Print 22 spaces +DIS0: MVI A,' ' + CALL COUT + DCR C + JNZ DIS0 + CALL PRINT + DB 'DIRectory Version ' + DB VERS/10+'0','.',VERS MOD 10+'0' + DB ' ',MONTH/10+'0',MONTH MOD 10+'0','/' + DB DAY/10+'0',DAY MOD 10+'0','/' + DB YEAR/10+'0',YEAR MOD 10+'0' + DB CR,LF+80H + IF VIDEO + CALL STNDEND + ENDIF + POP B + ENDIF ; Vopt +; + LXI H,0 ; Set total size count + SHLD TOTCOUNT + LXI H,FCOUNT ; Save file count + MOV M,C + INX H + MOV M,B ; File count saved from bc + PUSH B ; Save file count + MOV H,B + MOV L,C ; Move it to hl + LXI D,4 + CALL DIVIDE ; Divide by four columns + JZ DIS1 + INX B ; Round up if remainder from division +DIS1: MOV H,B + MOV L,C ; Quotient to hl + CALL X16 + SHLD LINES + POP H ; Get file count + PUSH H ; And put it back + DCX H ; File count -1 points to last file + CALL X16 ; Multiply by 16 chars/line + XCHG ; Directory size to de + LHLD DIRBEG + DAD D + SHLD DIREND + POP B ; Get file count + POP H ; Pt to first entry + XRA A + STA LCOUNT ; Init line count + STA COUNT ; Init entry count + MOV A,B ; Check for done + ORA C + JZ PRREMAIN ; Print remaining space on disk and exit + CALL PRINT + DB ' '+80H ; Print first leading space +; +; Loop to Display File Entries +; +DISPLOOP: +; +; Print Separator if Within a Line +; + LDA COUNT ; See if new entry on line + ANI 3 + JZ DISPL1 +; +; Print Separator if Entry is Within a List +; + IF VIDEO + CALL STNDOUT + ENDIF + CALL PRINT ; Print separator + DB '|',' '+80H + IF VIDEO + CALL STNDEND + ENDIF +; +; Print Next Entry +; +DISPL1: + PUSH H ; Save key regs + PUSH B ; Hl pts to next entry, bc = count +; +; Print File Name +; + INX H ; Pt to file name + XCHG + CALL PFN1 ; Print file name + XCHG + DCX H ; Pt to first byte of file entry +; +; Print File Size and Increment Total of All File Sizes +; + PUSH H ; Save ptr to first byte of file entry + CALL FSIZE ; Compute file size (to de) + LHLD TOTCOUNT ; Increment total count + DAD D + SHLD TOTCOUNT + XCHG + CALL PHLDC ; Print file size + POP H ; Get ptr to first byte of file entry +; +; Check R/O Byte +; + MVI B,' ' ; Assume r/w + LXI D,9 ; Pt to r/o + DAD D + MOV A,M ; Get r/o byte + ANI 80H ; Look at it + JZ ROOUT + MVI B,'r' ; Set r/o +ROOUT: + MOV A,B ; Get char + CALL COUT +; +; Increment Entry Count and Issue New Line if Limit Reached +; + LDA COUNT ; Increment entry count + INR A + STA COUNT + LDA HORIZ ; Check horiz/vert listing + ORA A + JZ DISPL2 ; Vertical listing + LDA COUNT + ANI 3 ; New line? + CZ NEWLIN + JMP DISPL2 +; +; New Line - Increment Line Count and Issue Page Break if Limit Reached +; +NEWLIN: CALL PRNL + LDA LCOUNT ; Count down lines + INR A + STA LCOUNT + CALL GETCRT ; Get crt data + INX H ; Pt to text line count + INX H + DCR A ; Back up again + CMP M ; Compare + RNZ + XRA A ; Reset line count + STA LCOUNT + IF VIDEO + CALL STNDOUT + ENDIF + CALL PRINT + DB ' Pause -',' '+80H + IF VIDEO + CALL STNDEND + ENDIF + CALL CIN + CALL PRNL ; Print new line with leading space + CPI CTRLC ; Abort? + RNZ + POP PSW ; Clear the rest of the stack + POP PSW + POP PSW + RET ; To zcpr3 +; +; Advance to Next Entry +; +DISPL2: + POP B ; Restore count and ptr to current entry + POP H + LDA HORIZ ; Check horiz/vert listing + ORA A + JNZ DISP2 ; Horizontal + XCHG ; Pointer to de + LHLD LINES + DAD D ; Point to next entry + XCHG ; New pointer to de + LHLD DIREND + CALL SUBDE ; Check if new ptr is within the directory + XCHG ; New pointer to hl + JNC DISP3 ; New pointer is ok + LHLD DIRBEG ; Otherwise start new line + LXI D,16 ; Next line + DAD D + SHLD DIRBEG ; Save it + XRA A + STA COUNT ; Clear column count + PUSH H + PUSH B + CALL NEWLIN + POP B + POP H + JMP DISP3 +DISP2: LXI D,16 ; Skip to next entry + DAD D +DISP3: DCX B ; Count down + MOV A,B ; Done? + ORA C + JNZ DISPLOOP + LDA COUNT ; See if new line required + ANI 3 + CNZ CRLF ; New line if any entries on line +; +; Print Remaining Space on Disk and Exit +; +PRREMAIN: +; +; Print DU +; + IF VIDEO + CALL STNDOUT + ENDIF + MVI B,8 ; Space over 8 spaces + MVI A,' ' +SPACER: + CALL COUT + DCR B + JNZ SPACER + CALL RETUD ; Get du in bc + MOV A,B ; Print disk letter + ADI 'A' ; Convert to ascii + CALL COUT + MOV A,C ; Print user number + CALL PAFDC ; Print floating + CALL PRINT ; Print separator + DB ':'+80H + CALL DUTDIR ; See if matching dir + JZ PRREM1 +; +; Print DIR if any +; + MVI B,8 ; 8 chars max +PRREM0: + MOV A,M ; Get char + INX H ; Pt to next + CPI ' ' ; Space? + CNZ COUT ; Echo char + DCR B ; Count down + JNZ PRREM0 +; +; Print File Count +; +PRREM1: + LHLD FCOUNT ; Print number of files + CALL PRINT + DB ' --',' '+80H + CALL PHLFDC +; +; Print Total of All File Sizes +; + LHLD TOTCOUNT ; Print total count + CALL PRINT + DB ' files using',' '+80H + CALL PHLFDC ; Print as floating +; +; Print Amount of Free Space Remaining +; + CALL DFREE ; Compute amount of free space + XCHG ; In hl + CALL PRINT + DB 'k ','('+80H + CALL PHLFDC + CALL PRINT + DB 'k remain of',' '+80H + CALL DSIZE + CALL PHLFDC + CALL PRINT + DB 'k total',')'+80H + IF VIDEO + CALL STNDEND + ENDIF + RET +; +; Print New Line with Leading Space +; +PRNL: + CALL PRINT + DB CR,LF,' '+80H ; New line with leading space + RET +; +; Print Routine (String at Return Address) which is terminated by MSB +; +PRINT: + XTHL ; Pt to string and save hl + PUSH PSW +PRINT1: + MOV A,M ; Get next char + ANI 7FH ; Mask msb + CALL COUT + MOV A,M ; Get next char + INX H ; Pt to next + ANI 80H ; Check msb + JZ PRINT1 + POP PSW ; Get a + XTHL ; Restore return address and hl + RET +; +; DSIZE returns the size of the current disk in HL (k) +; +DSIZE: PUSH D + PUSH B +; + MVI C,31 ; Return dpb address in hl + CALL BDOS + INX H + INX H ; Point to bls + MOV A,M ; Bls in a + STA BLS + INX H + INX H + INX H ; Point to dsm + MOV E,M + INX H + MOV D,M ; Dsm in de + INX D ; Rel 1 + PUSH D ; Save dsm on stack + INX H ; Point to drm + INX H + INX H ; Point to all0 + MOV D,M + INX H ; Point to all1 + MOV E,M + XCHG ; Allocation vector in hl + LXI D,-1 ; Clear a counter +DS0: INX D + CALL SHLHL + JC DS0 + CALL SUBDE ; Get complement of count + POP D ; Get dsm from stack + DAD D ; Hl = groups available + LDA BLS ; Block shift factor + SUI 3 ; From bls in a + JZ DSX +DSIZ0: DAD H + DCR A + JNZ DSIZ0 +DSX: + POP B + POP D + RET +; +; DIVIDE divides HL by DE returning quotient in BC and remainder in HL +; Zero flag is set if no remainder +; +DIVIDE: LXI B,0 ; Clear quotient +DIV0: CALL SUBDE ; Subtract de from hl + JC DIV1 ; Overflow + INX B ; Increment quotient + JMP DIV0 ; Again.. +DIV1: DAD D ; Restore remainder in hl + MOV A,H ; Check for remainder + ORA L ; Equal zero + RET +; +; SUBDE subtracts DE from HL returning carry set if de > hl +; +SUBDE: MOV A,L + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + RET +; +; X16 simply shifts HL left four times +; +X16: DAD H + DAD H + DAD H + DAD H + RET +; +; SHLHL shifts HL left into carry +; +SHLHL: ORA A ; Reset carry + MOV A,L + RAL + MOV L,A + MOV A,H + RAL + MOV H,A + RET +; +; SYSLIB Module Name: SDIRQS +; Author: Richard Conn +; Part of SYSLIB3 SDIR Series +; SYSLIB Version Number: 3.0 +; Module Version Number: 1.4 +; Module Entry Points: +; DIRQS +; Module External References: +; None +; + +;* +;* EQUATES +;* +CPM EQU 0 +BUFF EQU 80H ; Dma buffer +ESIZE EQU 16 ; 16 bytes/entry + +;* +;* GENERAL-PURPOSE DIRECTORY SELECT ROUTINE WITHOUT SIZING INFORMATION +;* THIS ROUTINE SCANS FOR THE FCB PTED TO BY DE AND LOADS ALL ENTRIES +;* WHICH MATCH IT INTO THE MEMORY BUFFER PTED TO BY HL. ON EXIT, +;* BC=NUMBER OF FILES IN BUFFER, AND HL PTS TO FIRST FILE IN BUFFER. +;* THE DIRECTORY BUFFER GENERATED BY DIRQ CONTAINS ENTRIES WHICH MAY NOT +;* BE USED TO COMPUTE THE SIZE OF THE FILES USING THE FSIZE ROUTINE. THE +;* DIRQS ROUTINE IS DESIGNED FOR THIS PURPOSE. THE BASIC TRADEOFF BETWEEN +;* THE TWO ROUTINES IS THE DIRQ RUNS FASTER THAN DIRQS, AND THIS IS NOTICABLE +;* IF THERE IS A SIGNIFICANT NUMBER OF FILES TO BE PROCESSED. +;* +;* THE DIRQ/DIRQS ROUTINES ARE INTENDED TO BE USED IN APPLICATIONS WHERE +;* THE ONLY THING DESIRED IS A DIRECTORY LOAD OF THE CURRENT DIRECTORY +;* (DISK AND USER). DIRF/DIRFS PROVIDE MORE FLEXIBILITY AT A GREATER COST +;* IN TERMS OF SIZE. +;* +;* INPUT PARAMETERS: +;* HL PTS TO BUFFER, DE PTS TO FCB, A IS SELECT FLAG: +;* Bit 7 - Select Non-Sys, Bit 6 - Select Sys +;* Bit 5 - Sort by File Name and Type (0) or other (1) +;* Bits 4-0 - Unused +;* OUTPUT PARAMETERS: +;* HL PTS TO FIRST FILE IN BUFFER +;* BC = NUMBER OF FILES +;* A=0 and Z Flag Set if TPA Overflow +;* DE UNCHANGED +;* +DIRQS: + PUSH D ; Save ptr to fcb + + STA SELFLG ; Save select flag for selection and alphabetization + SHLD HOLD ; Set ptr to hold buffer + LXI B,36 ; Allow 36 bytes + DAD B ; Hl now points to temp fcb + SHLD TFCB ; Set ptr to temp fcb + DAD D ; Hl now pts to scratch area + + PUSH D ; Save ptr to fcb + CALL DBUFFER ; Get ptrs + POP D ; Get ptr to fcb + PUSH H ; Save ptr to buffer + CALL DIRLOAD ; Load directory (fast load) + POP H ; Get ptr to buffer + + POP D ; Get ptr to fcb + + RZ ; Abort if tpa overflow + + PUSH PSW ; Save flag to indicate no tpa overflow + CALL DIRALPHA ; Alphabetize + POP PSW ; Get psw (tpa overflow flag) + RET + +;* +;* THIS ROUTINE ACCEPTS A BASE ADDRESS FOR THE DYNAMIC BUFFERS +;* REQUIRED, DETERMINES HOW MUCH SPACE IS REQUIRED FOR THE BUFFERS, +;* AND SETS THE ORDER PTR TO PT TO THE FIRST AND DIRBUF TO PT TO +;* THE SECOND (ORDER SPACE = DIRMAX*2 AND DIRBUF = DIRMAX * ESIZE) +;* ON INPUT, HL PTS TO AVAILABLE BASE +;* ON OUTPUT, HL PTS TO DIRBUF +;* A=0 AND ZERO FLAG SET IF CCP OVERRUN +;* +DBUFFER: + SHLD ORDER ; Pt to order table + CALL DPARAMS0 ; Get parameters + LHLD DIRMAX ; Number of entries in dir + XCHG ; In de + LHLD ORDER ; Add to order base + DAD D ; *1 + CALL MEMCHK ; Check for within range + DAD D ; Hl pts to dirbuf + CALL MEMCHK ; Check for within range + SHLD DIRBUF ; Set ptr and hl pts to directory buffer + XRA A ; Ok + DCR A ; Set flags (nz) + RET + +MEMCHK: + PUSH H ; Save regs + PUSH D + XCHG ; Next address in de + LHLD BDOS+1 ; Get address of bdos + MOV A,D ; Check for page overrun + CMP H + JNC MEMORUN ; Overrun if d>=h + POP D + POP H + RET +MEMORUN: + POP D ; Restore + POP H + POP PSW ; Clear stack + XRA A ; Return 0 + RET + +;* +;* THIS ROUTINE EXTRACTS DISK PARAMETER INFORMATON FROM THE DPB AND +;* STORES THIS INFORMATION IN: +;* BLKSHF <-- BLOCK SHIFT FACTOR (1 BYTE) +;* BLKMSK <-- BLOCK MASK (1 BYTE) +;* EXTENT <-- EXTENT MASK (1 BYTE) [NOT ANY MORE] +;* BLKMAX <-- MAX NUMBER OF BLOCKS ON DISK (2 BYTES) +;* DIRMAX <-- MAX NUMBER OF DIRECTORY ENTRIES (2 BYTES) +;* +DPARAMS0: +;* +;* VERSION 2.x OR MP/M +;* + MVI C,31 ; 2.x or mp/m...request dpb + CALL BDOS + INX H + INX H + MOV A,M ; Get block shift + STA BLKSHF ; Block shift factor + INX H ; Get block mask + MOV A,M + STA BLKMSK ; Block mask + INX H + INX H + MOV E,M ; Get max block number + INX H + MOV D,M + XCHG + INX H ; Add 1 for max number of blocks + SHLD BLKMAX ; Maximum number of blocks + XCHG + INX H + MOV E,M ; Get directory size + INX H + MOV D,M + XCHG + INX H ; Add 1 for number of entries + SHLD DIRMAX ; Maximum number of directory entries + RET + +;* +;* BUILD DIRECTORY TABLE AT DIRBUF +;* THIS IS THE OPTIMAL DIRECTORY LOAD ROUTINE; IT ONLY LOADS UNIQUE +;* FILE NAMES FROM DISK, BUT THE INFORMATION IS NOT SUFFICIENT +;* TO COMPUTE THE FILE SIZES +;* ON INPUT, HL PTS TO DIRECTORY BUFFER (16 x N MAX) +;* DE PTS TO FCB (ONLY 12 BYTES NEEDED) +;* ON OUTPUT, BC IS NUM OF FILES +;* A=0 AND ZERO FLAG SET IF TPA OVERFLOW +;* +DIRLOAD: + SHLD DSTART ; Set start of buffer area + INX D ; Pt to file name + LHLD TFCB ; Pt to tfcb + MVI M,0 ; Select current disk + INX H ; Pt to file name in tfcb + MVI B,11 ; 11 chars +DLLOOP: + LDAX D ; Copy + MOV M,A + INX H ; Pt to next + INX D + DCR B ; Count down + JNZ DLLOOP + MVI M,'?' ; Select all extents + INX H ; Pt to next char + MVI M,0 + INX H + MVI M,'?' ; And all modules + INX H + MVI B,21 ; 23 chars + XRA A ; Zero rest of tfcb +DLLOOP1: + MOV M,A ; Store zero + INX H ; Pt to next + DCR B ; Count down + JNZ DLLOOP1 + +;* +;* THIS SECTION OF CODE INITIALIZES THE COUNTERS USED +;* + LXI H,0 ; Hl=0 + SHLD FCOUNT0 ; Total files on disk = 0 +;* +;* NOW WE BEGIN SCANNING FOR FILES TO PLACE INTO THE MEMORY BUFFER +;* + MVI C,17 ; Search for file + JMP DIRLP1 +DIRLP: + CALL PENTRY ; Place entry in dir + JZ DIROVFL ; Memory overflow error + MVI C,18 ; Search for next match +DIRLP1: + LHLD TFCB ; Pt to fcb + XCHG + CALL BDOS + CPI 255 ; Done? + JNZ DIRLP +;* +;* NOW WE ARE DONE WITH THE LOAD -- SET UP RETURN VALUES +;* +DIRDN: + XRA A ; Load ok + DCR A ; Set flags (nz) +DIRDNX: + LHLD FCOUNT0 ; Get total number of files + MOV B,H ; In bc + MOV C,L + RET +;* +;* MEMORY OVERFLOW ERROR +;* +DIROVFL: + XRA A ; Load error + JMP DIRDNX + +;* +;* PENTRY -- +;* PLACE ENTRY IN DIRECTORY BUFFER IF NOT AN ERASED ENTRY +;* +;* ON INPUT, A=0-3 FOR ADR INDEX IN BUFF OF ENTRY FCB +;* FCOUNT0=NUMBER OF FILES IN DIR SO FAR +;* ON OUTPUT, FCOUNT0=NUMBER OF FILES IN DIR SO FAR +;* A=0 AND ZERO FLAG SET IF MEMORY OVERFLOW ERROR +;* +PENTRY: + RRC ; Multiply by 32 for offset computation + RRC + RRC + ANI 60H ; A=byte offset + LXI D,BUFF ; Pt to buffer entry + MOV L,A ; Let hl=offset + MVI H,0 + DAD D ; Hl=ptr to fcb +;* +;* HL=ADR OF FCB IN BUFF +;* + CALL ATTEST ; Test attributes + JZ PEDONE ; Skip if attribute not desired + +;* +;* SCAN DIRECTORY ENTRIES AS LOADED SO FAR FOR ANOTHER ENTRY BY THE SAME +;* NAME; IF FOUND, SET THAT ENTRY TO BE THE ENTRY WITH THE LARGER EX +;* AND RETURN WITH THE ZERO FLAG SET, INDICATING NO NEW FILE; IF NOT +;* FOUND, RETURN WITH ZERO FLAG RESET (NZ) +;* + CALL DUPENTRY ; Check for duplicate and select ex + JZ PEDONE ; Skip if duplicate + +;* +;* COPY FCB PTED TO BY HL INTO DIRECTORY BUFFER +;* + XCHG ; Save ptr in de + LHLD DIRBUF ; Pt to next entry location + XCHG ; Hl pts to fcb, de pts to next entry location + MVI B,ESIZE ; Number of bytes/entry + CALL SDMOVE ; Copy fcb into memory buffer + XCHG ; Hl pts to next entry + SHLD DIRBUF ; Set ptr + XCHG ; Ptr to next entry in de + LHLD BDOS+1 ; Base address of bdos in hl + MOV A,H ; Get base page of bdos + SUI 9 ; Compute 1 page in front of base page of ccp + CMP D ; Is ptr to next entry beyond this? + RZ + +;* INCREMENT TOTAL NUMBER OF FILES + LHLD FCOUNT0 ; Total files = total files + 1 + INX H + SHLD FCOUNT0 + +;* DONE WITH PENTRY AND NO ERROR +PEDONE: + XRA A ; No error + DCR A ; Set flags (nz) + RET + +;* +;* CHECK ATTRIBUTES OF FILE ENTRY PTED TO BY HL AGAINST SELFLG +;* IF SYSTEM FILE AND SYSTEM ATTRIBUTE SET, RETURN NZ +;* IF NORMAL FILE AND NORMAL ATTRIBUTE SET, RETURN NZ +;* +ATTEST: + PUSH H ; Save ptr + LXI B,10 ; Pt to system attribute + DAD B + MOV A,M ; Get system attribute + POP H ; Restore ptr + ANI 80H ; Check for sys + LDA SELFLG ; Get selection flag + JZ ATDIR + ANI 01000000B ; Check system attribute + RET +ATDIR: + ANI 10000000B ; Check normal attribute + RET + +;* +;* SCAN DIRECTORY ENTRIES AS LOADED SO FAR FOR ANOTHER ENTRY BY THE SAME +;* NAME; IF FOUND, SET THAT ENTRY TO BE THE ENTRY WITH THE LARGER EX +;* AND RETURN WITH THE ZERO FLAG SET, INDICATING NO NEW FILE; IF NOT +;* FOUND, RETURN WITH ZERO FLAG RESET (NZ) +;* ON INPUT, HL PTS TO ENTRY TO SCAN FOR, FCOUNT0 = NUMBER OF ENTRIES SO FAR, +;* AND (DSTART) = STARTING ADDRESS OF DIRECTORY LOADED +;* ON OUTPUT, A=0 AND ZERO FLAG SET IF DUPLICATE ENTRY FOUND; A=0FFH AND NZ +;* IF NO DUP ENTRY FOUND +;* ONLY HL NOT AFFECTED +;* +DUPENTRY: + PUSH H ; Save ptr to entry to scan for + XCHG ; Ptr in de + LHLD FCOUNT0 ; Check count + MOV A,H ; No entries? + ORA L + JZ NODUP ; No duplicate entry return + MOV B,H ; Bc=number of entries + MOV C,L + LHLD DSTART ; Hl pts to first entry +DUPELOOP: + PUSH B ; Save count + PUSH H ; Save ptrs + PUSH D + INX H ; Pt to fn + INX D + MVI B,11 ; Compare fn and ft + CALL COMP + JNZ NODUPL ; Continue looking for another entry +; DUPLICATE ENTRIES HAVE BEEN IDENTIFIED AT THIS POINT + MOV C,M ; Extent in low order + INX H + INX H + MOV B,M ; Module in high order + PUSH B ; Save entry size a moment + XCHG ; Point hl to target + MOV E,M ; Extent in low order + INX H + INX H + MOV D,M ; Module in high order + POP H ; Dir in hl, target in de + XCHG + CALL SUBDE ; Subtract dir size from target size + POP D ; Get ptrs + POP H + JC DUPSMALL ; Target is smaller +; NEW TARGET IS LARGER THAN STORED ENTRY + XCHG ; Hl pts to target, de pts to dir entry + MVI B,ESIZE ; Number of bytes to move + CALL SDMOVE ; Move it +; NEW TARGET IS SMALLER THAN STORED ENTRY +DUPSMALL: + POP B ; Clear count from stack + XRA A ; Indicate dup found + POP H ; Restore ptr to entry to scan for + RET +; NO DUPLICATE FOUND; ADVANCE TO NEXT ENTRY +NODUPL: + POP D ; Restore ptrs + POP H + LXI B,ESIZE ; Hl pts to current entry in buffer, so add esize to it + DAD B + POP B ; Get count + DCX B ; Count down + MOV A,B ; Check for done + ORA C + JNZ DUPELOOP +; NO DUPLICATE FOUND +NODUP: + XRA A ; Indicate dup not found + DCR A ; Set flags (nz) + POP H ; Restore ptr to entry to scan for + RET + +;* +;* DIRALPHA -- ALPHABETIZES DIRECTORY PTED TO BY HL; BC CONTAINS +;* THE NUMBER OF FILES IN THE DIRECTORY AND A = SORT FLAG +;* (0=SORT BY FILE NAME/TYPE, <>0 = SORT BY FILE TYPE/NAME) +;* +DIRALPHA: + MOV A,B ; Any files? + ORA C + RZ + PUSH H ; Save regs + PUSH D + PUSH B + SHLD DIRBUF ; Save ptr to directory + PUSH H ; Save hl + MOV H,B ; Hl=bc=file count + MOV L,C + SHLD N ; Set "N" + POP H +;* +;* SHELL SORT -- +;* THIS SORT ROUTINE IS ADAPTED FROM "SOFTWARE TOOLS" +;* BY KERNIGAN AND PLAUGHER, PAGE 106. COPYRIGHT, 1976, ADDISON-WESLEY. +;* ON ENTRY, BC=NUMBER OF ENTRIES +;* +SORT: + XCHG ; Pointer to directory in de + LHLD ORDER ; Pt to order table +;* +;* SET UP ORDER TABLE; HL PTS TO NEXT ENTRY IN ORDER TABLE, DE PTS TO NEXT +;* ENTRY IN DIRECTORY, BC = NUMBER OF ELEMENTS REMAINING +;* +SORT1: + MOV M,E ; Store low-order address + INX H ; Pt to next order byte + MOV M,D ; Store high-order address + INX H ; Pt to next order entry + PUSH H ; Save ptr + LXI H,ESIZE ; Hl=number of bytes/entry + DAD D ; Pt to next dir1 entry + XCHG ; De pts to next entry + POP H ; Get ptr to order table + DCX B ; Count down + MOV A,B ; Done? + ORA C + JNZ SORT1 +;* +;* THIS IS THE MAIN SORT LOOP FOR THE SHELL SORT IN "SOFTWARE TOOLS" BY K&P +;* + +;* +;* SHELL SORT FROM "SOFTWARE TOOLS" BY KERNINGHAN AND PLAUGER +;* + LHLD N ; Number of items to sort + SHLD GAP ; Set initial gap to n for first division by 2 + +;* FOR (GAP = N/2; GAP > 0; GAP = GAP/2) +SRTL0: + ORA A ; Clear carry + LHLD GAP ; Get previous gap + MOV A,H ; Rotate right to divide by 2 + RAR + MOV H,A + MOV A,L + RAR + MOV L,A + +;* TEST FOR ZERO + ORA H + JZ SDONE ; Done with sort if gap = 0 + + SHLD GAP ; Set value of gap + SHLD I ; Set i=gap for following loop + +;* FOR (I = GAP + 1; I <= N; I = I + 1) +SRTL1: + LHLD I ; Add 1 to i + INX H + SHLD I + +;* TEST FOR I <= N + XCHG ; I is in de + LHLD N ; Get n + MOV A,L ; Compare by subtraction + SUB E + MOV A,H + SBB D ; Carry set means i > n + JC SRTL0 ; Don't do for loop if i > n + + LHLD I ; Set j = i initially for first subtraction of gap + SHLD J + +;* FOR (J = I - GAP; J > 0; J = J - GAP) +SRTL2: + LHLD GAP ; Get gap + XCHG ; In de + LHLD J ; Get j + MOV A,L ; Compute j - gap + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + SHLD J ; J = j - gap + JC SRTL1 ; If carry from subtractions, j < 0 and abort + MOV A,H ; J=0? + ORA L + JZ SRTL1 ; If zero, j=0 and abort + +;* SET JG = J + GAP + XCHG ; J in de + LHLD GAP ; Get gap + DAD D ; J + gap + SHLD JG ; Jg = j + gap + +;* IF (V(J) <= V(JG)) + CALL ICOMPARE ; J in de, jg in hl + +;* ... THEN BREAK + JC SRTL1 + +;* ... ELSE EXCHANGE + LHLD J ; Swap j, jg + XCHG + LHLD JG + CALL ISWAP ; J in de, jg in hl + +;* END OF INNER-MOST FOR LOOP + JMP SRTL2 + +;* +;* SORT IS DONE -- RESTRUCTURE DIR1 IN SORTED ORDER IN PLACE +;* +SDONE: + LHLD N ; Number of entries + MOV B,H ; In bc + MOV C,L + LHLD ORDER ; Ptr to ordered pointer table + SHLD PTPTR ; Set ptr ptr + LHLD DIRBUF ; Ptr to unordered directory + SHLD PTDIR ; Set ptr dir buffer + +;* FIND PTR TO NEXT DIR1 ENTRY +SRTDN: + LHLD PTPTR ; Pt to remaining pointers + XCHG ; In de + LHLD PTDIR ; Hl pts to next dir entry + PUSH B ; Save count of remaining entries + +;* FIND PTR TABLE ENTRY +SRTDN1: + LDAX D ; Get current pointer table entry value + INX D ; Pt to high-order pointer byte + CMP L ; Compare against dir1 address low + JNZ SRTDN2 ; Not found yet + LDAX D ; Low-order bytes match -- get high-order pointer byte + CMP H ; Compare against dir1 address high + JZ SRTDN3 ; Match found +SRTDN2: + INX D ; Pt to next ptr table entry + DCX B ; Count down + MOV A,C ; End of table? + ORA B + JNZ SRTDN1 ; Continue if not + +;* FATAL ERROR -- INTERNAL ERROR; POINTER TABLE NOT CONSISTENT +FERR$PTR: + MVI E,7 ; Ring bell + MVI C,2 ; Output + CALL BDOS + JMP CPM + +;* FOUND THE POINTER TABLE ENTRY WHICH POINTS TO THE NEXT UNORDERED DIR1 ENTRY +;* MAKE BOTH POINTERS (PTR TO NEXT, PTR TO CURRENT UNORDERED DIR1 ENTRY) +;* POINT TO SAME LOCATION (PTR TO NEXT DIR1 ENTRY TO BE ORDERED) +SRTDN3: + LHLD PTPTR ; Get ptr to next ordered entry + DCX D ; De pts to low-order pointer address + MOV A,M ; Make ptr to next unordered dir1 pt to buffer for + STAX D ; Dir1 entry to be moved to next unordered dir1 pos + INX H ; Pt to next ptr address + INX D + MOV A,M ; Make high point similarly + STAX D + +;* COPY NEXT UNORDERED DIR1 ENTRY TO HOLD BUFFER + MVI B,ESIZE ; B=number of bytes/entry + LHLD HOLD ; Pt to hold buffer + XCHG + LHLD PTDIR ; Pt to entry + PUSH B ; Save b=number of bytes/entry + CALL SDMOVE + POP B + +;* COPY TO-BE-ORDERED DIR1 ENTRY TO NEXT ORDERED DIR1 POSITION + LHLD PTPTR ; Point to its pointer + MOV E,M ; Get low-address pointer + INX H + MOV D,M ; Get high-address pointer + LHLD PTDIR ; Destination address for next ordered dir1 entry + XCHG ; Hl pts to entry to be moved, de pts to dest + PUSH B ; Save b=number of bytes/entry + CALL SDMOVE + POP B + XCHG ; Hl pts to next unordered dir1 entry + SHLD PTDIR ; Set pointer for next loop + +;* COPY ENTRY IN HOLD BUFFER TO LOC PREVIOUSLY HELD BY LATEST ORDERED ENTRY + LHLD PTPTR ; Get ptr to ptr to the destination + MOV E,M ; Get low-address pointer + INX H + MOV D,M ; High-address pointer + LHLD HOLD ; Hl pts to hold buffer, de pts to entry dest + CALL SDMOVE ; B=number of bytes/entry + +;* POINT TO NEXT ENTRY IN POINTER TABLE + LHLD PTPTR ; Pointer to current entry + INX H ; Skip over it + INX H + SHLD PTPTR + +;* COUNT DOWN + POP B ; Get counter + DCX B ; Count down + MOV A,C ; Done? + ORA B + JNZ SRTDN + POP B ; Restore regs + POP D + POP H + RET ; Done + +;* +;* SWAP (Exchange) the pointers in the ORDER table whose indexes are in +;* HL and DE +;* +ISWAP: + PUSH H ; Save hl + LHLD ORDER ; Address of order table - 2 + MOV B,H ; In bc + MOV C,L + POP H + DCX H ; Adjust index to 0...n-1 from 1...n + DAD H ; Hl pts to offset address indicated by index + ; Of original hl (1, 2, ...) + DAD B ; Hl now pts to pointer involved + XCHG ; De now pts to pointer indexed by hl + DCX H ; Adjust index to 0...n-1 from 1...n + DAD H ; Hl pts to offset address indicated by index + ; Of original de (1, 2, ...) + DAD B ; Hl now pts to pointer involved + MOV C,M ; Exchange pointers -- get old (de) + LDAX D ; -- get old (hl) + XCHG ; Switch + MOV M,C ; Put new (hl) + STAX D ; Put new (de) + INX H ; Pt to next byte of pointer + INX D + MOV C,M ; Get old (hl) + LDAX D ; Get old (de) + XCHG ; Switch + MOV M,C ; Put new (de) + STAX D ; Put new (hl) + RET +;* +;* ICOMPARE compares the entry pointed to by the pointer pointed to by HL +;* with that pointed to by DE (1st level indirect addressing); on entry, +;* HL and DE contain the numbers of the elements to compare (1, 2, ...); +;* on exit, Carry Set means ((DE)) < ((HL)), Zero Set means ((HL)) = ((DE)), +;* and Non-Zero and No-Carry means ((DE)) > ((HL)) +;* +ICOMPARE: + PUSH H ; Save hl + LHLD ORDER ; Address of order - 2 + MOV B,H ; In bc + MOV C,L + POP H + DCX H ; Adjust index to 0...n-1 from 1...n + DAD H ; Double the element number to point to the ptr + DAD B ; Add to this the base address of the ptr table + XCHG ; Result in de + DCX H ; Adjust index to 0...n-1 from 1...n + DAD H ; Do the same with the original de + DAD B + XCHG + +;* +;* HL NOW POINTS TO THE POINTER WHOSE INDEX WAS IN HL TO BEGIN WITH +;* DE NOW POINTS TO THE POINTER WHOSE INDEX WAS IN DE TO BEGIN WITH +;* FOR EXAMPLE, IF DE=5 AND HL=4, DE NOW POINTS TO THE 5TH PTR AND HL +;* TO THE 4TH POINTER +;* + MOV C,M ; Bc is made to point to the object indexed to + INX H ; By the original hl + MOV B,M + XCHG + MOV E,M ; De is made to point to the object indexed to + INX H ; By the original de + MOV D,M + MOV H,B ; Set hl = object pted to indirectly by bc + MOV L,C + +;* +;* COMPARE DIR ENTRY PTED TO BY HL WITH THAT PTED TO BY DE; +;* NO NET EFFECT ON HL, DE; RET W/CARRY SET MEANS DEhVQ~hgvk=ZB$?nfoBSX|+F1(dnU=W@pAiDb>NpR9hpz=zCV^x4`!w zP(J|G)Am%*ZGrFK@fvhJQuKdopJ{t$|AF11@3}$n`F+`fdQ_v&) z;18-JgFy-Ck=39)^yu`UI`rt&pdR$dd{6*-q}lz0O0BcU0IK#!S{&N*g9-vFYLto^ zE0NyOr zeWRy=dbw|;2+7E77$OwjJ5D9}hd5%cY@M$3zmqkHkT|@_o<PBa`%C>=CSUYikSep=*(Xt9ui+E~16Ru8Zg)M}%qC$9G_00ZeGXdmUsg zm=Lfl1=h9Lvjd|5>B8!}rT&?{_Zk(LM9BaNhc)A&aO7Wx(sVOX1M!7D*90VokF-)$ zzilJ~HK;-jN5&A3@V$4aXu3(%;IU?*e`G+RY>3+4{EU{dq4qm~QbdIUz>5Q-r>Fo^ zC=GX@<3ae4AWz@(6zGTt?K%K^;KOdrN-Ur_h6p%5LcR52V6u;qcSL}JNQ{xzL=uTa zN1_$WB>1%=I<7PQ`NJ|IM>G4I8gOh3tE7pXf(^3K2&;CZX}ZP+s2~skpB12i^>EQ( zqaF`L=lMmIo*xhfpMmCR4!G%AV)H3L}ZccA__?CNH`7U%Xb1g%O%^%8Cx&DZ5kbmBh;Ta2i$oTh?x!^J>O{~6C7iAHB9W$hjE17; z5=cg-p3gKRQ25{x4I?vnXdN))=uh_&O|7bk1X9Ojptfh9=Gd`gD^5&t5I;c(c0?II zs0bf1r2OmbQLk^^5%7O;ox=3R*<|=XGj!EbSU`n_ zpt>l^c@AEyx;PM4-w*r?X2mk^j)Ftv`!qNp%x9ehnW*8>3Bzd!${Yu%Kn2l#8{s zI%S&1?06w_HJkdVm~jpL=Ln-U56w=Q|xZ+&aAYrtA9ZV17K zKe!33LnI9qb3~YZhGgP^VA&xf-l%{6z$WqxIf6rtEdmt;#earw{NJJA0Wf;w|BT-K z7iKK#|6u+f{8$vgzXcc%o|Zxpj~u#1P%*@j75W|=Dxyagwc9tjY}Pz@1|>3&ViE-& zzPZ~7rADpaH)4nCV(2zTEsk|<4U9OWXu9oC1B|R6J}`8 z(>@zUMgZ-yWyFJ@EsCOnb?q|JgBCCdEn47?Xefe|zC#O&yR`pyNB3y|?T)Hxdt7Km z;1CIAAadZSszJ|xhW`V*N4o{sF#uG9kqh8k7r93ZeCs4950YaxjuvJu8r?XULmPqX zj-(x9>A6Td=INw#hZgwa3R>WcuhIThjQ^!~eUrQFRB+dk0a`dMD4t7!kZ21`zzE5n zouH-f8KR9l7v9{xK-)05KpQ#04hjD|ByxZvH8>R$`uGS79n&WmrF4Z*N?J-8{dd$~ z!7)Pq@eQ+lbo4!JbkT`^QR(LaN=dr9PB;Z!&oBDF$RIs>bpOHX`4=lF0aj1~te*c* ztYHAF_kXZv($x)S(y8GA(*HrO#sC(jMoU>4kjX#mZKVV2ZKVTbg81)W>+J!kp3wbW z?qy0fHF`5%3$=A^{&wW_j;M>>3eAC|7X3t^#5Kjh&CzA zgY?M%Q~Aq9+rL;r39y0^V72{!V)X!6?f-){ioR|ziXNfj}Z4K7hryPm4^qo2&ROu@0yxPH$QnocV$RimSRCv>P0M8nKc@(C<8 zTqeBb9UB^#d6!sn#{!4RNM?RSxb(>_l|I=S=98(R$f@g8XY13>?522KlgL!g&w{|0 z&?nmpYpMAvAsJR-w|eLBX!_(zC?Wra)*~c?e$Z1+27?phRr!n8^%(VJZ-^|xWIK1< zu5f*T=Y`UDpO;$P2wjg8V$OzYN?5MnmMA4*9lZ)Xg|3yKA+VtMNs4hRA&T6@ke-TX zOcL^?rr8dK=3hPKvGjo_glERx-f?B_PRQavJIfpJk(5ol)!a^e*>-tU_42o~N-CW$ zA3@~~zLdUFa5(vNs1;v+x>K&OPK_z%y$0Kay%Q;J_PRrMM(3Wd)sUxW>g5@_u<0zuYJ(GMpR^> z%(pixi%w5h|CsQpM-u8$dZnW=% zt?o)bim-ekz4M*hO4GJpujREgEq)tZ{@X^jWlUgEM>8fLujzT z!&MBEtoiKPi~Ia#l33_~Q!p;5qSKu#5nbnsy&YeqqesM{{S8JpUc0^MEIma-#~kb= zHlgSK!&n@#kYPEOeULNOsv<9wzckNj|+ zmqqslbl+<<5xP0qsN2kGq&S**p@b=S1JzePtjm(*bbXf%p5cYdf^(~-a_6mJhjEC)`NmTi?W(^v~b>6TF)r_R-4`#d?x`~=j=)CzpP3tPFx%XS1*yp=KF9owd zMxbYk&IBNA83SIaoMGKP%Qa(Zdi`}Pa~x*IkA*u(N$ z%fOa_p*)T~;kD9-QK(|r<@ho6?xv5H&XKNy+_Pood90@71Oq~OS4S!um(^}ZB~~ga zX482=+t@PG)wL_{mN9vhTKD+kCAng`B_zXGd!V<$Ocmtg_B;EH=%HS=GK1j5T#}^d zrAs+IQp}ihk&ZFmti*e#l{QMRK9pnJaxM!TPe_z5V!R-C)-aTl-t6X%5rdqVcF(Ef z%c*!}*R|4T1JbCj-?#CL<}(TS801Y$wx|om@0t=nGclw+&d#lq8vI0UcvHxwK*Uix zxpU#;IkJ_{&_jK7L%xh#*WL&TWp+Gll@zqbxaD2qF=HDT&vCsMs6O;u?xd6>YNTC= zp=+%Y{@q(T*8@cmC9Ei$r!s40<7uBepv^hlpFrOP(Jb_0XhyA2U2(^0;;wO6D#^Na zo^;}G481bWsdt;J&b^|O|22)&wp9-@jM%7^Mnng{&p`X#p&BeXrEShK_>;`&s)0`& zO~|wHKZR(VJ5jfgeN0P}OEXhZ6gDgL3lqX&#`szYHhI}TlddOGzrUN59wB<|?aXG6+a0&7XBx$74b$CSUFBf85w$*V;{C8u>c&vR z5PT}@OY5V(XJgO|4o{yz-^c8Gld^AZeIJU~mv}HeoxPfX*_eFQEZ_EC>BZSl30Mq$ zXlU$zP$6(~K)8!td-vg>`G~S?^MA$=%IIc%dmp<#j=E zTxR36#Gd0SB4jg}ntZ1J#K~L6LAl-g#Pj|#2rF3|l$N8r`_#(a3dz9t(=*>rR_Lek*zGYR+}E6wUPgvt?!Z4 z*OLz~&?pl|uW8-RkTupZDWcW6HaDPa;_?Sq-VuI+DU1=KdK9I!e*8g5`%J&R0SUe> z-8;JPmX@KIyQvDvnOUwZ#CIA%d^V8K0Ir41lkA%~=m=SF%lR@((igT(E!x)?MQ=GN z+UuUJlF&<`Nx#BBpIPD+X1vhZl*b~`cP9O3p>MB1dN|x|s7yOLi|im%?DI6qG_-nl zW+2isBdsDwVxc5 z-69TMpSG)e-nV;P7s_j={Rz`iZgOSl@wVQBgVNU4xt%yEB$@ss8yxSTJJ&3+uo_lr zIp`4ZF6CDNOu>1nTiV{>bHHL+^_r*Ol89cMJ8n!&yq8j@ z4TB64U+;MLOUK+bp+2)_Q+U5dn$W ziaG?Hc&_@VTstky(tDo8OT@8y`LG#%D=ZGqZB!Q$Um@X|e>GB=!6sxZ&IZG@d0szn z;!>`x0dXQbuoTB+9lQIG&E1Wy*AU&ss3Rp&6!cJTc|#^4L|bRoC`b=(ktUE_Yg4@I z{X#PM`RSN0IKPx1ABOcvnT+79aC2ZoU@ot4( z!eOt!5V21f58*PSgan!OSGsr2po=rv+4G0P5WqHa-mZULB>l%c=V{SaFO@QmYIL1%?g(1;7yoPC&;{O{OBB+c5~rjb0Q zOOiShV?&iwNy}HM5lkoQ-!< zsvclN#F36;gv-ej3G2t~-Xx^&@7-^!x*z_bz79{#{3?j-V4@fVe>9x@^CL&~qw0JU zLe~Sa)HN<FQ57Ziv}qAqaZFrT__ZF0Fa6!g;-$PG7S=Aq^Lg zs<|q#mSA`FF^9|5Kx}<@e8nd^vq*{Zb;pM8=cZ|EYy;~q1;28~smj+#`cw|}cEbs! zRn3UK@*$qw>Zd2eg2@3)%xPlLd;REK8&;|mBPEFzub*MFB#aWq6~-*bhRm_kJ{`h- z&pDwbFT*S&P@tZfpnO@sIo2qAo;>@=AfP*-oc4NQ6M|aM^|J)7=sS+}5?2K_ra>DM zHcFaYY4*Aib8moK=Cx$bTt$W+mSYSi-+#SG{0U3O6B*Mdc6;SLolk-~#NM_MexWNw z7DQ(=q}!Brl!RNYr7Pc#!tEQG9_u6eB3jd4>WDB^a=ouS!6yCra%CX)nbE8B69Mgp zH$>J)ZU|c?Vr29e=LF);$F@+HKnzq#=N{>0Hs#nGBr?XC<6&=uI|hfsBik>-a~s&j z3eq2Sz143loxVlXkQH5RV)N^^$dThdUY~rtz=zL}Pd6t2cUvawje){jN<-Dh*>s`# z0Wvey;orH_c0IUE%dYZv8ceh895}!Aa3w4C-1cj#Vj~75xC|aP*fm)Fs)Qyhm?=F_ z`*rup7DA6+M@dIT>*hrBtztHNo7}-W{s*De?SiH%LdNy?9aY47p^8mL1dn!$8<#%! zl>F&=(x+cfI2q3a-4Aq);)#SYoYZqWpB#a}OJZqfWK$2_#UchcV@L`|1$FlF`2$Eh#K#_>MfjX+3Vjc^~PadztTF47G#u{s%TFHi57{G zIdJ(V&(=on1?6^#q<45_%H(TJ+p@{8R9xeWv}q>+tuH#ty&LX>ljrsM2BqJ6 zB|pV&L%urv6G49fMWo_iq`$an@Vdn&NX7NJlhDMF)eD)gMR_~()Xj6;Ed9e$jhT@R zXw!CO>GG?$2h*=gkX}6=ajWdp|+8}xu_e^m+Dbc-bz`& zJHAXkj^58=6tanuoqM2IZ4~E4Q&}@r<;ziha~kpfe5`}df{;v zk6JM%KTaBrN%pGV6I+~X%Qa|^Q8CF>Z)rT+hAYfINi}5os#T@|YoAn`C86K09`|;x zL%M!iMDUryu%m}hE^dxGr$5)@<$$@^sE5>N+6mq#tc4yrN!Ve{OwETXZM+8FRj^?ZY=e=zy3wk)IcPaZl9D( z+E;r`=JWW~+Rd6XKQ&_E`^v;Oa{0y;>Fz#i3j!DSi!VRf``(94JY4)7ci}|Y@!oG$j46N&1QtsNmlQU=ts}a9c!(3$SU3t z+P;dZ61!z?zg~aWQseAaOnp$SSMqaYJZV8V zk(&#>@v7{*{ug!a+Q<}X)elO|Tg7)oCV!tJXgRH(>nZN&^Sq3EzfRC&n6JN5drSK< z{&ocPO430xG|un+=|I}GNv&(Q`JWxe#$xw>cC7p~t2?6i#nVJU%RbJ~y<2BUyf+`* zk+1WvVE?_DuB~?PcTKwD^U66#&3Z>|`PksOHLVR#G~~L=lyzM^N;YBo4qHFZ9_ilY zPac=Uly=`ALkPVVJ3CxttFfoXU#O@SBdL-f=Zs5}>Ut4{WlLCldSx`@N&YI@Wxbr+ zyHey!RxEw=boldo+94;6O4e|!7}Z>trT2#yoQ2NaXt^o&$zO=DWykH)6qh%anEDBt zAFsScP+`{Ok_~665Wv-|BNS?PEBkHdNPhnQAJbC#1?|G-v=EBZ4Ac64~NedBw=#ZoilhZ}h34mAZFwYG7?%Z)4AtF^BZZG%L< zoW(w(>DAw@ROBUoS(AND^1_nztf=;f56X9bc8~L;E%Je zuk9Cx^giaXj-h+1t?dMpZJ0__Rb^sAK%5h^$}n?L<~OBfOitEcQE`5Hz)u)TY)Z}U z|Db`&cfH}^{mb)R7WzT-?tHa`i+>Q`MQ}ja{=*=xt*tbfp% z_3C9Ja=ItjxFV~j;krdPTr}UvoX@r2I9YTlmz96=zA1lc;>z5G8U`+AwuciNSGYee z&`Y~pn!vZ7m5{_srcOTyUXqOy{}8aZ4C|@BvDFhHH%4digXp+)rbt#J=oae`=S^uH zC;YJ2;nm-|ij7}hu#Ii4WYk&2-q)-Ho+fin#)u zPbq{2M^!VK1y60s)N+@j)_*OY7*YL0p3O`x_gKJn>=4W~$m>9MlVR`mEj@#JD{ud&?cA0mDO+~jAeU2|SKmmZ?k zhEfz4wv@jJt4yz83xTuKzSZj(p|PGk9zo(Xc{9>?rs*4)F&?3 zJ4*ZLcFNvemrzXoW#jlafKTG=8$PrhQ&hEvgJUWO6u->Hj9+Rg9?P@GsW_k zdlR-u{DIN)&gD+`LZb5=w3G>-pEGPd7TuOD~=V4!$?$B2cQlf)2NW1?PjY!)gl&5vT}mprU;81Yy1Rf#{c_ zF%4Y*Ai#rB)LHX0>RZI{)FcdX ztjGS=96$&dY6knHTw-IP@=6J;kH7m9VQ6^V7Mqn^z{Ny+T1!?1#>XTTz_h~a4|SMl z+6Ne(b-y~@)0uhKSNkW{z*PQXB`dyRsDi^+@!2)rxpeW@&Dp_*ZdBIA$Px;phn2R9wB$xH7VR;grV>*+yv+Xs=3 z6MkadbS`Qy9+joVeKRNle8WTv#0DD)Srk2ih-f>oS`*qZ&KxJMHNlu%j)%F|5cjszil3X1+;ujCO6uRYM&5{+g6|~4C7*8k zJduaUJgPr+rqBbX&>E8`*TF*SoR|=~H=G$*&HY1GC+Db*`6t%AM6T?hbYd=bx zhlOmzj|e5Fn}yYxi{6nPhE2CNXvTi7I!`li1~ndxNes4I#6Erqob5Z2&k?&fmhB0A z#%z5;fd}*OSSFUz%PUZbaY=#{_YoIm({Xla7A}VCuASv_`&G5-tN!#Gm*dvA>Knmz z5xen1r#`r!y)G$zOLi)f`EvpX^HNkpVpfy^KOu#Q-(Upff3!`WIR(nMy=77;Vdm>Q zgD4Fjx|sXoos{!MbX<^ori<+R8}~#79gA5gW-DimzO6&ha1pIIr^5e4(?jviL9DcZ zB6@KIa044ok%++MG=W4V#omitnyEa;ELk=~ir!wf_=YMyB_8x?hB7P`_pBnXS8(fA zTww5@yG8-$jKb~B;vIU0YYO2^>YfxNvlX7q@dD6zuHZjY7!@p$Ndpll!ef2?qi4_5 z7|VA&9(uE)EGetD-lZZwrQsA~p{-gXArr5oZqH9u+i>pmaXGmwb6vJ-eYfjs>+o19 za@Z+m41rd&>6XFCk|f{m)aSf8xo&_M<`pC~O`G|%VUHiA4^P%AeJkZ3B;d_06|>2F zM8Yg9z3VjnNp;j#%*@V5dOusEyH&VQj1JG5!>%|oYaV6`i$$yRK&!v#HC%y@5#UWK z@780V24tbfenvAM9}L*-++fT5@Y1pSio3rDyyaH^uVY+}81x)fLf*?;xtD-e^h!K! zvv{@G!nWzIH06({KAbMFajyFK18+` z1Y#{WBilhIp^xT424ChpT2_zme2Gb_Tr-L`={=BrN7xWen7NmK?MU#>c^0N7-Vd4v z2ti&04OiHL>b0HcSpp9qgs}+ivXBq^or^nhCqkCTa-wHfCSuHIpH6>#dj9lyQl=E% zuAd@zTu=w_!-Eq6?o|b!kNl>S=fKHGC;itF|W% z!NIFPPAWPdpMYS%GWf?fUlF1G%ya8Pc&E4af;XhVT4!qrz8`!k8~^;rT8N6X0(15m z@w*B#8UCqEuEF1-5c|wZ46cs_Zhkf-_r`ZVNu58^S?x(q@R#r=3#{`jzFdgsl$1tg zSUH`+N9riVC7xY!Kk#YbXp@n7rrr}P=*alpcjwtnS66ds==yo#ux04>ab-^&FxU?P zu73i~CXMHYb7ozMD%=-__i)aYQH9X2Y5@BB}EmS{hGU6wjt zCvz|M{apC>H&)|N?&d$zn%}IrYI3ox;Z5!vXM@-b?r+^99~F#%Zxf zx0|oGI{p!9x+^RD_5H2G%Rm3n5lXKrwssw@MTcF`RjTPz^6NDosA>Y{-*He40uqX0 zN;#LFP6W%>x}{Fg%K7N&6jETUg0gozP7Sb?#tQ(m)gU=ArmfHp z{1h)V8!h3;?RkE~R&cI3S-eICcO>AwF)C)nv}?qrEqKP3ZS5|b>kcp3@fwFqpz{^OBRY^0?ZMq6xcP@zSDUFlcc%#qBc<1biPu#D0X-7$(5`#i44KDVz=hc zSapetc-ESEZruNhb`4Vy2ZG4B*@-LEakJfz^DC~)Bk(?YCuw~>I{k%%5N}C_x_Kv;Mt#$R!b5ht0u+VJ3 zr{8$KN0*Di&J#fdEWak6lq7aD97jM>`8>mHV{@}W@T#_qgwNnw!5g7=U zg0I~Okpv}7=CkHS7+UcvBrvD4X#RE7)-M^!a{t{Ib@9h4f8>7(AoBDGY$#ugoZrV_(5@Q^x1-qpFnm#^pL z7rST?*xpSSoW1(iUXW<~7I8a^hz4EC^C~e24XJ6)GOgR&vPHoj5+kJ_&#_BBD?jev)@7GuTrn&uQ< z90*7(AGrtAe*2k3X3;T1@&iq>z?_swPVPB&ezDpm)-ZE%mi1WG9dkDC^TQTL<$d0@ zk8%Sxz{}&(gM|Jo!xzk&R4qT#LM#2)rsZlskk6qn^jinV6AHI)uw^LGKF8w&7Rdjj zt3roO8~DI`l1I-THAUL@+0JBgeJ()zn^1Dd2O3a_43B**A1N;Nz9Umg*~}dWuRRB^ zA7e1*cz1Kvo@;Ynrm8Z$Pn{cc{_6IWTCe;Ykf!b}lUq<7>0gP2ctHE^gS{iq{tSo; zDBO^7giXbkZLfbVdzw?Q!IJ+}jIWPIbAqimkZIF-NkLfYlQ&yrJS7EmMa0*F7cN0G zu*|7R6jwB-=#Q}U%j+GVx{Rs`TC%0_R?LoU@8}f8R*z{N{AonaAmlGjwlFM3}EhK(Uca11YK0IxfFnLV-yxu)fQm|M`cU64S{?S4yYkrE+L2Ot85*}Y;-)PPGQWZ&l4Yux2tpw6!1KF&rCg5nvs9@^Ggh^3 zLN@LOWFVj%7iNEd^4u@Btr!rKudb&8PX*ZWZ9xQVsX{8|H=^%>T~*~<`1h~gb!$ai z?0n#?s%Ctw#5PUh5#vLqb9rA5JGSP0zHy!WDOz@!cTn=yfK(9la0~ zGSae`*`TQP()t1D*j745!9qr}`AvU8-^}t7=|gNZ0WNL%VyJ~eM0sTU zU5j6Rqa1uF)`U){?-h8>ysTkcVco)}K6Q~`;F0;P!{p7=#|_T1{g2n;PhfM3<=!o; zY4H% z>PNle4++|5ShtisPyP@gJI}H-=@TZjMYtV|+(JH03|IxW{Fc9v!YXHBHuzOr?d#{4 z1N8OJXTD1RWZfzUVdP=-%U>~5kn4W$=B_mF9b{az+1;_ufBww%+Ktvx^j6{dkEurCh=MlyH^TOKjX<%Uik*`OpSlFx_iv}9 zZ=WVV_tM|*sAVF^y&jW~2Rivs={s2U88H!satIC`pXvGe^2Aovq&|?l z{ssnXfwGHdN4MrHdig$RqlLTTtC|F#C#KPIUvVo~yNCUWEfIy(E|9&oUeyZY!9Hb~ z7z?b!y@ZwNd{TV5hrfh=ZN0^!vblSESFM7rCDsX7?45m52gEo8&umvh2n-0m52 z?94rj%ZBXG-g=;=Q%td9Dn*6OYRA)Tgd0)@Lb%g6r^pi2+~0$3 zjDOSDx&+}^K3J(D?WAP##YxJ1{#gvasB?QL^&hbenp6R=Qrb|!U$sf zXUs{R7kEp~HJUx08fyLP7LGqKdfhCDZ0|T9wn5lUs($^M{IACg`0V-!`^F3}nH_8` zuguP6ocs7wz2WeWF@w#N3%}mc9}&dW0;TW$ik%?Wmo7rT$5ZmGv8}R->8!4h!cJ^0 zi5;$2NP5swYHYhK+;Qa_55-0<-YOQCb|*U3#3ulUleeLw_+*kD?|d)`U$hZW;;d}_ zSP`xExk_BGN!UZhyucqGWKjdopo2b9JRU>fqVTSWD7n)K1U*FM=mTiabCYlI6 zDrTMdM9VCDpnhJNYDenliN+awo)VPAlulON$7bN_gO=kftFXYY5;;nk`Au|wP)?~& zihRK4_>ZGNM{zKRoFJ^)7POaMG+<_zICnLEu9w);Rj8_#AsCVk4%ez-nhvvcExB~N3Wmwe+cxO@y;x}i)6*+BjBpvn@W zjyvz7vgU`MvwTeTYO&oE98d1b$=AG*i!)d4?KsdrIqI72`y9p3*2zcxaiHQ=sj}Ar zyTYJA-o%iM0?0OC<&1~qi#`Q)@}bE%ub!MvJ{l=AYNyjQ{+ib|Dv@N%Y5a?a`L>hf^O-bKd=K&7(DQN7n@J#?8$TUZ zjlFu?oUg1-kH%2IhjXrf_weNfkrJ0ROWwvK*PILl%FpoU zS9q=lrp1b%;M{z0oqMtCR=qQ>-nFR0rFl~bz`L@2p_|g^fQ%$3H7G=C1y9~tz+>tU zU;E@lLu5Pt{>d(OyA7*)lzo)QkOK9kc%P>9_TRfNWQc3m!mW2~U{A2g)! zuwg9xBdjX{N7Aw_**d)dCA!oB1S_0yHm)lVpoI{(mAuXDh zIj?9mSm$LYN|;DpUQ$1;vy~AnQ(I+<()PS8mDBvR3H7Nl<7G$ar6w5leaxYz|T=uq^2zZ?b~t^{nzTM z_?)Cp{_jVCPpfqjLO2OsdKAw5oHkcrO|Kr`_k}EGJ&AQOU>|#aWPc2dfi8e#pe%5< z#qXy7p*-*nmYAL0*kC*T$imQpYIFYHbwm%spPc06rQ!Yp#FJ8HPC1sd0HUVG=7uTL$9XNRmyn$E9> zy`#4da8Xq+ax68hw|I)B=5Xf;1>_GTslxMr2oZY!X{mEc(M?m6Y z$B}UK-KB}~KZ{)G7(TrZZmeZFEKpwcQCboZqOpZjq5&+dGi>@A|Jy|DOW7bhWxYo& zzT2rMJhAMu)gvhTC4OJq48~_~q8s^}3!WZcPbq$~$nu_!k>ck`8u}lf_-}eF4Wfv; zFKz_WE3h!8i>WBK)ccxUM+i8!pQZ)-(UK&awP(>5C+5bSWnfblk!N9u{R2j!m@VY5 z$J6kIsjFx2{i*M-oS$NDi=OH+^Y$SuNy24fj;sLk2FeHBxI8@%pK?LuQAc*ohi!#V2;K z)oOQ&hmUN`Wc=w-{T6(fniL=vJo24w?~nFF;ge9=B}uqi|5o-8xA3O;<-l0b{N97# zWzUdGU2QYj-1N!H{)4Tnn2`440@t9;hlga*yF}hE*LeRG%ay-;1kQ2svx{s$)r9#g zR!Rq(xl4Ox|3ic34M-31<6Pb!Nvjwzd&mCO8}r!4hs>izG9MT<+W>{3q^EW}@STqb zZ&|q5Uk0JwxS5h9C$R##B0PcR%5PLI*Dz{)4V5fB_bZeM?5fg)36&qlSzmL-pk>gR z)i$Hyucx4q^w66Nc)>vKQ zl3I|KTA-v==Y8(X-Dfm#B$QY&wZFQLaPot9iGS*taZ(SV03A;(&GySN&01W==w4`m z>zVOeP^P}HDFLR7RA|fTl0_l-!7a0gDhRFTF7cK4*M4KE6v1_+usJtlNeEu~x<9hv zs!EH5Xa4`pI5c>5<;?c37+c;~KHjmE3K`{cL!A6EivU+}-Ghp)xVYowXCS-nSg`V= zVt4kUk%40D`zaWWa7N!J|D=v$o4vM=qsd$FY!s>9!MdU9Q)HTg7J7o^| z%AaNrZc#ZlnzJtR@xG^2hB7{5m8ph&DRsq8JfT5Xph8@gl(J`|csT(M%|TS8t#8eq zhnTjD{aXCVDgs2@`rHEC);UA7^A?ZuEG813s6fHL=s{r6oHb}U9t&>*vTxlI|*klAQ&AqzR1)imcahieq`Y_%I*H%i#zL&3hv~8PZu>IfWY4B*Sy@K*x4#@zwqj{S@y=0(xp~eg~j^Itn~@g zcc1^4;9d`&VbRDAG~FKbb~C|<`oA9*sPrGG)LH`0wq@d*czX#0zITT=D-DXtEt%@R zm6A0M=bkxChRt=uBuRz2{fsvuuCCjL} z3tKPzxV*ja?h7y|5D%;_RWIQ-^VaOah6@a#fi|n@Vm8riSyesp>IqXOka$sAyoy7W zoLfr)A{f0Gt^fJnl-$9{y|+JpQU;WM5Dv0HFRjGJ_p>>vvioR(G#$(sKB8_pT2gRS z90s#S_xotoR3A|4`k3}XT4+t;E?SHIW+yA{VylGktvF}+opC@m$D79&MyxVz!p^il z;-?LA7d!R-y@R&F7H}*-6FXVy#kqL+j>=Nzjt=h4Eo(oYoAl`05BDyd57Tux1zw}Q zK;^Kyfral*1|jagulYqT4^F3go1KPxfQrbuVb8PLw_Qpf5ngJMH}M`DSx0tLe09cg zTC}Nz97Kyz`;dtaQZYbF0%>~nSbnOof(^FS)}ds2HERj==?zyRT@q@ljNppPP{Z|7 zkkvU1K;QAkHMjf1zeb~_B3|Gi*5K_IE1sL0P(u!o&0enmiXpv?e7-;u`)uumzZT$} zd)3TW)4QUt7rb55h@pY@AG%G6vvmr&Pe@S$X_Yhj+eKMJ*MKE{t(_6Dp4fOOI@4ot z*qgM(nxlVCILH5Z;v`woge9TkD(Y_!;S^noYXW0C@CYXD{DHZkNsEe<0@8d-n8v?>Fi{{S>MM}M{ z=RI8yt|6MgYmy|EB%_@WW)6VbQ8}O7k$+`Q98=l_`8BQ#JM+PN8zOQrw-isY-dgfNc+?uQ+ik2 zYPcW!#R&!8EJ`r&0PhavOurTV|29#r=F4ZG*RpjsFjpVz<^YL%DF;W0smAJmI3#ap zF7te=T+x?r^ZFV21EK{=3^+lRbBkM{nN+r zW311UekLW>B<()qzfbAC+~N4oXT(q4+j27Qk>1C3tkz}*oXf-8fK^5T)AVBpxY(Ad zi63NTTaXUaA`p-VBp?1+6etvB6q}>v zE-ZDC_q1sC;p!x3<;~*9wD+6|n%WccEtc!V0WLE!pqXEN!mEMvT)?5xuRV)o+Ox%< zYlsWY`}Ryt?{q(l+PPxCcR?@b3dHItOm|a15e%A8D`dTN)G8^V{ISM{;3aZj^Oxj2 z$kse|W%lATFS+|`v(usTUw?NwGeu4kcl$hBH|z%&a7cVpB5P$^ zmpW^MPWG9j+5y0^5sN^t@6KGnk!Q)GxK&fz4;T7<`N#g$)Avr~0e!BOA%P(O{vmg}Xl5+5ipF?cP24CHt-{maPuyKyIt$CW-o!GMU`KV814M2DqvmD5#xue!^~_ zJD$Cf3r|fFb=5lpTn?UECd86c#_H<&M7?M4@~$2Kb@pzTn8G}cJPMap^D|LA$^Ag<*#$F+d9qO`C-L#@cN&976&iNvKtvPbKMe5 zgsuOHpO_`c?j7wf)1qr|?ufEz#O;;SoGuG4Tvhv%zePCGA2{^4aOK{!3-zFje|Gt7 zc*{96dIQ6p=-sEn8}39v7ypDGaS3i+HX+CO<#%O)45bi-DqxRkUUXla@|Wo)5(ee9 zj?D^AuI4r>%6{O=u66T~U5jjZ4v4>9(P5x)x9Yc;#i@cj+oo>hI(7Y%$rC%_?>mGv zj4Kb73MGlkF7CbaB;|#&&f}w-ZP;0@bE1KD(4FOR2j(xEXDzYt>ODVY56NxXk0vj) z+_kmV+R^EydB)~qiw(*~tZVLvA6|F&YmMPk;M8Z(CVvy)Fjr_M+t!!oPTA?OYCrDM z0ggq4+|BfKR6fAKslRMJ0)1O)>l6 zcZp@*;@PX?LB-&<06$x((ZlJIEd^5uK z@H^*?oY*$#Yl0o~HqlS3*EddG4;tb0;jHp(DhXZpZiTR9L{`_k z>&7elYF>X}Sdr!Xwf*Lr7gOW9-}I&!3vTuOBIP+ZY0+ZY6%V918Po(A9;}fX00014 CS+l|b literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DIRS.HLP b/Images/Source/hd0/s0/u15/DIRS.HLP new file mode 100644 index 00000000..70751d34 --- /dev/null +++ b/Images/Source/hd0/s0/u15/DIRS.HLP @@ -0,0 +1,603 @@ +; + + Directory Display Utilities + + -- Summaries -- -- XDIR Details -- + 0 - Overview B - Basic Use + 1 - XDIR F - File Selection + 2 - XD N - File Name Scan + 3 - DIR O - Output Control + 4 - RCP DIR + 5 - ZCPR3 DIR + + + -- Special Note -- + S - Secure Systems + +:0 + Overview + + Therå  arå  fivå directorù displaù  utilitieó  provideä +witè  thå  ZCPR³ System®  Eacè provideó thå useò  witè  thå +basiã functioî oæ displayinç thå nameó oæ fileó iî á logicaì +disë directorù (á disë anä useò area). + + Thå  first¬  anä simplest¬  utilitù ió builô  intï  thå +ZCPR³ Commanä Processor®  Thió utility¬ invokeä bù thå namå +oæ DIR¬ ió verù primitive¬ displayinç jusô thå filå nameó iî +whatever order they reside on disk. + + Thå seconä utilitù ió availablå aó á utilitù withiî thå +standarä Residenô Commanä Package® Thió utility¬ alsï nameä +DIR, displays the file names sorted in alphabetical order. + + Thå  thirä  utilitù ió DIR.COM¬  á smalì  2Ë  transienô +whicè  displayó filå nameó (sorteä bù filå namå anä typå  oò +bù typå anä name© anä filå sizes. + + Overview + Sincå  alì threå oæ theså utilitieó arå nameä  DIR¬  iô +makeó  senså  tï enablå onlù onå oæ theí  peò  system®  Thå +tradå  ofæ oæ utilitù foò disë spacå ió thå basiã choicå  tï +be made. + + Thå lasô twï utilitieó arå XÄ anä XDIR®  XÄ ió á fast¬ +4Ë  utilitù  whicè  provideó  á  usefuì  seô  oæ   functionó +includinç  horizontaì anä verticaì displaù  formats¬  outpuô +sorteä  bù filå namå anä typå oò typå anä name¬  R/Ï anä SYÓ +flags, and printer output. + + XDIÒ ió 8Ë iî sizå anä provideó alì oæ thå featureó  oæ +XÄ  pluó thå abilitù tï writå itó displaù tï disë anä á filå +scanner. + + Thå  ZCPR³  Systeí useò maù finä uså foò alì  oæ  theså +utilitieó  oî  hió  system¬   dependinç  oî  hió  needó  anä +preference®  Thå  smalleò utilitieó maù dï thå joâ iî  mosô +cases, and they load faster than the full-featured XDIR. + Overview + + Alì  oæ  theså utilitieó arå designeä tï bå  ruî  undeò +ZCPR³ exclusively® Theù wilì noô functioî correctlù undeò á +conventional CP/M 2.2 system. + + Theså  utilitieó automaticallù adapô tï anù Org-° ZCPR³ +System¬  regardlesó oæ thå sizå oæ itó disks® Theù reaä thå +disë  parameteò blocë informatioî froí thå operatinç  systeí +tï  determinå  whaô  thå attributeó oæ  thå  disë  theù  arå +workinç  witè  are¬  anä  theù theî  presenô  theiò  displaù +information. + + + Comparison Matrix + +Attribute Z3 DIR RCP DIR DIR XD XDIR +--------- ------ ------- --- --- ---- +Size N/A N/A 2K 4K 8K +Sort File Names No Yes Yes Yes Yes +Select Sort Order N/A No Yes Yes Yes +Select SYS Files Yes Yes Yes Yes Yes +Select All Files Yes Yes Yes Yes Yes +Negate File Select No No No No Yes +Displ File Attr No No No Yes Yes +Horiz/Vert Format No No No Yes Yes +Printer Output ^P ^P No Yes Yes + Form Feed No No No Yes Yes +Select All Users No No No No Yes +Disk Output No No No No Yes +File Scanner No No No No Yes + + +:1 +Command: XDIR 2.0 + +Syntax: + XDIR dir:afn ooo... +or + XDIR /ooo... + +Function: + XDIÒ  displayó á disë directorù tï thå useò anä actó aó +a file name scanner. + + Options: + Aa - Indicate attributes of files to be selected + a=A for All Files (System and Non-System) + a=N for Non-System Files [default] + a=S for System Files + Ä - Senä Outpuô tï Disë Filå XDIR.DIR + Ff - Enable a File Scanner Function + f=L to Log File Names to FNAMES.DIR + f=P to Print File Names Stored in FNAMES.DIR + f=S to Scan Disk and Compare to FNAMES.DIR + I - Inspect Logged Files (use with FL option only) + N - Negate Selection of Files + Oo - Select Output Features + o=Á tï Disablå Displaù oæ Filå Attributeó (R¬ S) + o=F to Form Feed Printer when Display Done + o=G to Group Files by Name and Type + o=H to Display Files in Horizontal Format + P - Send Display to Printer + PF - Send Display to Printer with Trailing Form Feed + U - Select All User Areas + +Comments: + + XDIR is on the order of 8K in size. + + Thå  principaì  reasonó  tï  uså XDIÒ  oveò  thå  otheò +directorù displaù utilitieó are: + 1. XDIR is able to send its output to disk + 2. XDIR provides the File Scanner Function + 3. XDIR can display all user areas of a disk + + Iæ thå defaulô attributeó oæ XDIÒ arå noô tï thå user'ó +likinç (eg¬  á listinç bù filå namå anä typå ió  preferred)¬ +there are three alternatives: + + 1. XDIR can be reassembled + 2®  thå  attributeó  caî bå patcheä viá DDÔ  (theù +start at the 6th byte from the front of the program) + 3®  aî  ALIAÓ  caî bå createä  whicè  selectó  thå +desired attributes for the user + +Selected Error Messages: + + "TPÁ  Error¢ indicateó memorù overflow»  therå waó  noô +enougè  memorù  availablå  iî  thå  TPÁ  tï  loaä  thå  disë +directory + +Examples of Use: + + XDIR + -- displayó  á listinç oæ thå non-systeí fileó  iî +thå currenô directorù iî thå followinç fashion: + + 1. Sort is by File Type and Name + 2. Listing is in a Vertical Format + 3. Attributes of Each File (R/O, SYS) shown + 4. File Sizes in K + 5. Total of Sizes of All Files + + + XDIR /AA + -- likå thå firsô example¬ buô botè non-systeí anä +system files are displayed + + XDIR /OH + -- likå thå firsô example¬  buô Listinç formaô  ió +Horizontal + + XDIR /OG + -- likå  thå  firsô example¬  buô Sorô ió bù  Filå +Namå anä Type + + XDIR *.COM /NFL + -- thå  nameó oæ alì non-systeí fileó whicè dï noô +match *.COM are stored on disk in a file named FNAMES.DIR + + +:B + + + + XDIR Summary + + + + XDIR runs in two basic modes: + . as a directory display utility + . as a file scanner utility + + XDIR Summary + Aó   á  directorù  displaù   utility¬   XDIÒ   displayó +informatioî abouô thå fileó oî á particulaò disë iî alì useò +areaó oò á particulaò useò area®  Iô provideó thå followinç +information: + + . Name of File + . Size of File (in K bytes) + . Attributes of File (Read/Only or System) + . Sum of Sizes of All Files Displayed + . Total Number of Files on Disk + . Amount of Space Remaining on Disk + . What Disk and What User Area is being displayed + + Aó á filå scanneò utility¬ iô doeó thå following: + . Logs a group of selected files to disk + . Prints the contents of such a log file + ® Scanó á loç filå anä compareó iô witè thå fileó + selected by the user, telling him what files + are missing and what files are additional + XDIR Summary + XDIÒ  ió  quitå  human-oriented¬   witè  manù  built-iî +featureó  whicè providå á human-interfacå typå oæ servicå tï +thå user® Somå oæ theså include: + + . Named Directories may be specified + . The file listing is alphabetized by file name and + type or file type and name, depending on user + preference + . The file listing is organized vertically or + horizontally, depending on user preference + . Output may also be sent to disk or printer + +:O + + XDIR Output Control + + The Output Control options of XDIR are: + + D - Send Output to Disk + Oo - Output Control + OA - Toggle Display of File Attributes + OF - Toggle Send of Form Feed with Print + OG - Toggle File Grouping (name/type or type/name) + OÈ - Togglå Formaô (Horizontaì oò Vertical) + P - Send Output to Printer + PF - Same as POF, which sends output to printer and + form feeds when done + + Iæ  Ð  ió specified¬  thå outpuô goeó tï  youò  printeò +(LSTº  device© aó welì aó youò console®  Iæ Ä ió specified¬ +thå  outpuô  goeó  tï  youò currenô directorù  aó  thå  filå +XDIR.DIR® Iæ XDIR.DIÒ alreadù exists¬ iô ió replaced. + + XDIR Output + + OÁ  allowó thå useò tï selecô thå displaù tï  omiô  thå +filå attributeó field®  Thió field¬  whicè occuró afteò thå +filå sizå ió printeä foò eacè file¬  optionallù containó thå +letteró  Ò  anä S¬  indicatinç thaô thå preceedinç filå  waó +Read/Onlù (iæ thå letteò Ò appears© anä thaô thå  preceedinç +filå  waó á Systeí filå (iæ thå letteò Ó appears)®  Iæ Ò ió +noô present¬  thå filå ió NOÔ Read/Onlù (iô ió  Read/Write)¬ +anä iæ Ó ió noô present¬ thå filå ió Non-System. + + OÆ  allowó  thå useò tï selecô aî automatiã  forí  feeä +wheî  thå  directorù  displaù ió senô tï  thå  printer®  Iæ +printeò outpuô ió selecteä (Ð option© ANÄ thå forí feeä flaç +ió ON¬  theî thå lasô linå oæ thå printouô wilì bå  followeä +bù  á  forí feeä character®  Manù printeró responä tï  thió +characteò bù advancinç tï thå toð oæ thå nexô  page®  Noteº +thå  speciaì  forí PÆ ió provideä tï acô thå samå aó Р (foò +turninç  oî printeò output© anä OÆ (tï togglå thå forí  feeä +function). + XDIR Output + + OÇ  allowó  thå  useò  tï  selecô  hió  displaù  tï  bå +alphabetizeä  bù filå namå anä type®  Iæ bù filå  namå  anä +type¬  theî AA.TXÔ comeó beforå BB.COM® Iæ bù filå typå anä +name¬  theî BB.COÍ comeó beforå AA.TXT®  Alphabetizatioî bù +filå  namå  anä typå groupó fileó oæ thå samå namå  togetheò +(FÎ fields¬  likå alì XDIR.ª files)¬  whilå bù filå typå anä +namå groupó fileó oæ thå samå typå togetheò (FÔ fields¬ likå +alì *.TXÔ files). + + OÈ allowó thå useò tï selecô hió alphabetizeä fileó  tï +bå  listeä acrosó thå screeî (horizontally)®  Thå screeî ió +divideä   intï  threå  columns¬   anä  á  verticaì   listinç +alphabetizeó  dowî thå firsô column¬  theî thå  second¬  anä +theî  thå  third¬  whilå á horizontaì  listinç  alphabetizeó +first¬  second¬  anä thirä columnó oî thå firsô line¬ anä sï +oî witè eacè line. + + XDIR Output + + XDIÒ  provideó sucè á widå varietù oæ  outpuô  displayó +thaô  iô  ió recommendeä thaô thå useò experimenô  witè  thå +variouó  XDIÒ  optionó  tï seå whicè formaô oæ  displayó  hå +prefers®  Thå defaulô settingó foò thå variouó optionó  caî +bå changeä bù intelligenô uså oæ DDÔ oò bù reassemblù oæ thå +XDIR.MAà sourcå  iæ  thå useò preferó á  differenô  seô  oæ +defaults. + +:F + + XDIR File Selection + + Thå followinç optionó (anä thå DIRº field© controì filå +selection: + + Aa - Set the attributes of the files to be displayed + a=S for System Files, a=N for Non-System Files + a=A for All Files (Non-System and System) + N - Negate Selection; select those files which do NOT + match the ambiguous file name + U - Select All User Areas + + Thå  Î optioî negateó aî ambiguouó filå namå reference¬ +buô iô stayó iî thå SAMÅ seô oæ systeí oò non-systeí  files® +Foò instance¬ XDIÒ *.COÍ /NAÓ selectó alì SYSTEÍ fileó whicè +dï NOÔ matcè *.COM. + + XDIR File Select + + Thå  Á  optioî setó thå attributeó oæ thå fileó  tï  bå +displayed®  Iæ  AÁ ió presented¬  theî botè Non-Systeí  anä +Systeí  fileó wilì bå displayed®  Iæ AS¬  theî jusô  Systeí +files¬ anä iæ AN¬ theî jusô Non-System. + + Thå  Î optioî selectó alì fileó whicè dï noô matcè  thå +ambiguouó  filå name®  Thå scopå oæ thå Î optioî ió  withiî +thå attributeó selected¬  sï iæ thå attributeó arå AS¬  onlù +system files are shown. + + Thå  Õ  optioî  selectó  alì useò  areaó  oî  thå  disë +selected®  Filå  nameó arå displayeä witè thå numbeò oæ thå +user area they reside in front of their names. + +:N + + XDIR File Name Scanner + + Thå  optionó  oæ  XDIÒ whicè deaì witè  thå  Filå  Namå +Buffeò Facilitù are: + + Ff - Engage File Name Buffer Facility + f=L to Log File Names to Disk + f=P to Print Names Logged to Disk + f=S to Scan Disk for File Names and Compare to + Log + I - Inspect files selected by FL option + + Thå filå selectioî optionó comå intï plaù aó welì  witè +thå  FÌ optioî tï selecô thå fileó tï bå placeä intï thå loç +file¬ FNAMES.DIR. + + XDIR File Scan + + Thå FÌ optioî writeó thå useò numberó anä filå nameó oæ +thå  selecteä fileó tï disë intï thå filå nameä  FNAMES.DIR® +Iæ  FNAMES.DIÒ alreadù exists¬  theî iô ió  rewritten®  Thå +FNAMES.DIÒ fileó ió useä bù thå FÐ anä FÓ options. + + Thå É optioî (foò inspect© allowó thå useò tï  manuallù +approvå eacè filå beforå itó namå ió placeä intï FNAMES.DIR. + + Thå  FÐ optioî printó ouô thå useò numberó anä nameó oæ +alì thå fileó storeä iî FNAMES.DIR® Iæ FNAMES.DIÒ ió noô iî +thå currenô directory¬  FÐ wilì searcè alonç thå ZCPR³  patè +untiì iô findó iô oò reacheó thå enä oæ thå path. + + XDIR File Scan + + Thå  FÓ optioî scanó FNAMES.DIÒ anä thå fileó  selecteä +bù thå useò (oò implieä iæ nï specifiã filå selectioî optioî +ió given© anä compareó them® Iæ á filå existó iî FNAMES.DIÒ +buô  noô  iî thå selecteä files¬  itó namå ió printeä  aó  á +missinç  file®  Iæ  á  filå existó oî disë buô noô  iî  thå +FNAMES.DIÒ file¬  theî itó namå ió printeä aó aî  additionaì +file. + + Notå  thaô  thå  useò shoulä keeð iî minä  whaô  hå  ió +scanninç  foò  wheî hå useó thå Filå Namå  Buffeò  Facility® +Foò instance¬ iæ hå selectó botè Non-systeí anä Systeí fileó +witè  thå FÌ optioî anä theî defaultó tï Non-Systeí witè thå +FÓ  option¬  theî severaì fileó wilì comå uð  missinç  whilå +thió ió noô necessarilù true. + +:S + + Secure Systems + + Oî  Securå Systems¬  sucè aó Remotå CP/Í  Systems¬  thå +variouó  directorù displaù utilitieó maù bå seô tï recognizå +onlù thå DIÒ forí oæ directorù reference®  Thió ió donå  aô +installation time. + + Associateä witè eacè directorù namå ió á password®  Iæ +thió  passworä  ió blank¬  freå accesó tï thå  directorù  ió +granted®  Iæ iô ió non-blank¬ however¬ thå useò ió prompteä +foò thå passworä bù ZCPR3®  Iæ hå doeó noô givå thå correcô +password¬  ZCPR³  referenceó hió currenô directory¬  anä anù +directorù  displaù utilitù wilì onlù sho÷ thå fileó  iî  hió +current directory. + +:2 + + XD Overview + + Witè  usage¬  iô  haó beeî noteä thaô mosô oæ thå  morå +exotiã featureó oæ XDIÒ arå noô useä mosô oæ thå  time®  Iî +particular¬ theså featureó includå thå Filå Scanneò anä Disë +Outpuô  facility®  Becauså theså featureó cosô iî termó  oæ +thå  sizå  oæ  XDIR.COÍ anä  itó  executioî  speed¬  anotheò +versioî oæ XDIR.COM¬ calleä XD.COM¬ haó beeî created. + + XÄ  ió completelù compatablå witè XDIÒ iî termó oæ  thå +optionó   iô  acceptó  anä  ho÷  iô  operates®   Thå   onlù +differenceó  betweeî  thå twï ió thaô thå Filå  Scanneò  anä +Disë  Outpuô facilitieó havå beeî removeä froí  XD®  Hence¬ +thå  D¬  F¬  anä É optionó arå noô available®  Everù  otheò +optioî oæ XDIÒ ió stilì intact¬ however¬ anä performó iî thå +samå way® Aó á result¬ XÄ ió smalleò thaî XDIR. + + +Command: XD 1.2 + +Syntax: + XD dir:afn ooo... +or + XD /ooo... + +Function: + XÄ  displayó á formatted¬  alphabetizeä listinç oæ  thå +contents of a disk directory. + + +Options: + Aa - Indicate attributes of files to be selected + a=A for All Files (System and Non-System) + a=N for Non-System Files [default] + a=S for System Files + Oo - Select Output Features + o=Á tï Disablå Displaù oæ Filå Attributeó (R¬ S) + o=F to Form Feed Printer when Display Done + o=G to Group Files by Name and Type + o=H to Display Files in Horizontal Format + P - Send Display to Printer + PF - Send Display to Printer with Trailing Form Feed + + +Comments: + + XÄ ió smalleò thaî XDIÒ (4Ë vó 8K)¬ and¬ aó such¬ haó á +largeò memorù buffeò iî whicè tï loaä files® Iô ió possiblå +foò  verù  largå harä disë systemó thaô XDIÒ  maù  noô  havå +enough buffer space to perform its function, but XD may. + + Thå  defaultó oæ XÄ caî bå changeä iî thå samå  fashioî +aó  thoså foò XDIR®  Seå thå "Comments¢ sectioî oî thå XDIÒ +command for details. + +Selected Error Messages: + + "TPÁ  Error¢  meanó thaô therå waó noô enougè  rooí  iî +memory to load the disk directory. + + +Examples of Use: + + XD + -- displaù  thå  non-systeí fileó iî  thå  currenô +directory in the following fashion: + 1. sorted by file type and name + 2. vertical format + 3. R/O and SYS attributes included + + XD *.COM AAOA + -- displaù  botè non-systeí anä systeí fileó whicè +match *.COM in the following fashion: + 1. sorted by file type and name + 2. vertical format + 3. no attributes included in display + + XD ROOT:*.COM AAOA + -- like above, but files in directory named ROOT + +:3 + +Command: DIR 1.0 + +Syntax: + DIR dir:afn o... + +Function: + DIÒ  displayó á formatted¬  alphabetizeä listinç oæ thå +files in a disk directory. + +Options: + + A - Display both non-system and system files + S - Display only system files + T - Display files sorted by file type and name + (sort by name and type is default) + + +Comments: + + DIR is not compatible to XDIR and XD in syntax! + + DIÒ  ió onlù 2Ë iî size®  DIÒ ió designeä tï bå  smalì +anä fast¬  providinç morå utilitù thaî thå ZCPR3-residenô oò +RCP-resident counterparts. + + Iæ  thå useò wisheó tï uså aî option¬  thå AFÎ musô  bå +filleä witè *.ª - otherwise¬  thå optioî wilì bå interpreteä +as a file specification. + + Á  slasè  aó  á  delimiteò  (DIÒ  /A¬   foò   instance© +automatically displays the built-in documentation. + + +Selected Error Messages: + + "Ovfl¢  meanó thaô therå waó noô enougè buffeò spacå iî +the TPA to contain the disk directory. + +Examples of Use: + + DIR + -- displayó  alì non-systeí fileó iî  thå  currenô +directory in the following fashion: + + 1. Horizontal display + 2. Sorted by file name and type + + DIR *.* A + -- likå  above¬  buô  botè non-systeí  anä  systeí +files are selected + +:4 + +Command: DIR (provided in SYS.RCP) + +Syntax: + DIR dir:afn o... + +Function: + Display a sorted disk directory to the user. + +Options: + A - Select both non-system and system files + S - Select only system files + +Comments: + + Thió commanä ió betteò thaî thå DIÒ iî ZCPR³ iî thaô iô +sorts the file listing. + + Horizontal display format is used. + + +Selected Error Messages: + + None + +Examples of Use: + + DIR + -- displayó  alì  non-systeí fileó iî thå  currenô +directory in a sorted fashion (by file name and type) + + DIR *.* A + -- displayó  botè non-systeí anä systeí  fileó  iî +current directory + + DIR ROOT:*.* A + -- displayó  botè  non-systeí anä systeí fileó  iî +ROOT directory + +:5 + +Command: DIR (provided within ZCPR3 Command Processor) + +Syntax: + DIR dir:afn o... + +Function: + Display a disk directory to the user. + +Options: + A - Select non-system and system files + S - Select system files only + +Comments: + None + +Selected Error Messages: + None + + +Examples of Use: + + DIR + -- displays non-system files in current directory + + DIR *.* A + -- displayó  botè non-systeí anä systeí  fileó  iî +current directory + + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DPGFILE.LBR b/Images/Source/hd0/s0/u15/DPGFILE.LBR new file mode 100644 index 0000000000000000000000000000000000000000..9a35207ab8153d175221da4b87cdd5a3c0548ed3 GIT binary patch literal 23168 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 QDef2m_P=@O{l{|u3$8)&hyVZp literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DPROG.COM b/Images/Source/hd0/s0/u15/DPROG.COM new file mode 100644 index 0000000000000000000000000000000000000000..88d813320345d04497bec3b17669dc7687da4682 GIT binary patch literal 2944 zcmcIme{56N6@Iq!-hDr8Cr(SGB6kV3;OQC72Qqp&i(NW!0xjgqxdYFZiofW+EcuM(%>pp@ck-zu_KNyqNJU7Zh_ z`{T)>fx(2iuDK^YG{o&9A5dkepDD#ICEMgHppZQPetaUY<5WajD@7QGDfDj}*JZ{zF{nvHf=J zYf7+S0R!QfySlo~?Sm&0N0!L?^>n2-@&OUVztPkCy`eKwK{;Td<$*&@fe-)@-}+On`etY)=1LNd2=bD8lV@v zTo}p@IIy@pxi5YDz`cZ8X6g=jW2Vql7;qY*C@#@)aTG&NFnlzKCY!-@x@G*B$j<%=(b5Y`&nPk zDU)v>Odjt;P^+cL0$~>jG#UfClyj7-lrWOh3qFU%2;YojnBn@2IFHq|U*Tc;jSBWf z=s#Cj4FX&ASt&Q?(Fz;{M4b>}da#1^RoD+yxXu!DcQTG$PbA~!w!{&0@Tj@x#Ncoo z`w9a5`5`)3!F%ZW3d`Ogi(Fm%&ivU5ZqA)`kuuHlA+--ChLeNG%=Rbxl6{AV<4G_% zZicr~zsx&mz09{!Q^qkzWWI~8lKEa*BlB(=l6lKKui(*nSq3{_c5s>bkpZyv9Wx(F z_MZ@^FNhJK@QPJxV|c_=`^k!!CPYAp(?Zk>p}QD^iWucHoyah3>AcKW(LFN4dslYP zB`RB@QkmC3Nux3f@|^Jbyv$qa>oQ+YUzPa*IxgQ^noCFL23;;n7AJO89s#NQcujX7 z{}PYj5jHIcb%>GamL-MkNKMO6=jY`6Z7QGbJPB~tnaVBa?b`}`*rgzE`xNBupn|*| zP>{DB3i8&WAa5%a9-UjExQW;)(zjE-=U~1jeeeY-+bJVu5CI`h3sEnG?qcx79a#lr ztRU*Ck-n&)oL^EkLPMfa z(2mdzxy^|ypke-f!6&CL3pz|cRxJDPO3bVV_P*k{tv2JT=j;BM4icgJxq@~pPHb^< zp=#V;|5ox@(dCg(h-h?N^|LuAvgiV1Z_YIBZ#o350DWx1c96F$J4W)EhCh)`wDI@J z>$C?g+C@fi1QT2A9#V=0+(bYWof3Oor)LSjFMXEa3M*#1qF2S$^%B9^{DR=>`Xw2~ zwKV07vL{^mG^D7i8Q9ww$aVDgb+NVW^_!aNf3R7?i^F|I;N`KZU1GB>_RH(o4V`bM z@2s;gu4B_tV95HpD9|#H&$gDxM0GY;%idO7Z;{qdNznY}9Wl90T0bMR?6MjykxAOD z217vG(vPVK?~uxVtFn}8Sy;$sMqt((3}St16h^&46T?}1m5RW7)rnH{mb)xV(cA7K z2A`77=x3y>h@|GTnNzJdiP-5Td6S+O+?F+)9l4Z#RvmovNZJ=oR*~`c5yQKiPm#k3jKSnWq!TJ_4$Z)jqs|u^;*n>70X`Xu68vEoz7fH zlA`A{I~Toc}r9*6z7#{TNgEm({Ti*api)0D&f zx}daR4RjBL{fw4lo66|c^fTJnkb2L0Vf2CD#ed-Yj(3T4TY(Ju@hBCzH(wE7`9NekXlWkKLKH$MlKZEd0D1 z57sPe*u#206RdKl^jG=>8VU3JF`vXRlP%SFlq2l2uILcB1iOtQ$b!=I^Vf90eMLXh zJ35)ZuD?RB>tjxhH0r91Ii*r1e(ZC-DE`huB{HKL)0^yWW4Z+bg`%j;GGfhORD2kr zD4aSpdAEUU!gAw?c%)_})MjM=xpu)*jzM5rXg4qcln_;yfc&AuOAxw#8LJHa=zp;4 z&`<8hP>&f=mrLad#v(!n0BU?YY%@v*-w^g5+Tz5moCt@Y#Ut>`@9ciZFtyZ?Uy DC%N!i literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DPROG.HLP b/Images/Source/hd0/s0/u15/DPROG.HLP new file mode 100644 index 00000000..de2ba50e --- /dev/null +++ b/Images/Source/hd0/s0/u15/DPROG.HLP @@ -0,0 +1,242 @@ +; + + DPROG - Device Programmer + + A ZCPR3 Tool + + + + D - DPROG Summary 1 - Characters + P - DPROG Programming 2 - Format Specifications + 3 - Word Definitions + 4 - DPROG Commands + + +:D + +Command: DPROG 1.0 + +Syntax: + + DPROG <-- program from STD.DPG + DPROG filename <-- program from filename.DPG + DPROG filename.typ <-- program from filename.typ + +Function: + + DPROÇ  ió  useä tï prograí thå devicå aô  thå  Console¬ +List¬  oò  Puncè Device®  Iô readó thå indicateä oò implieä +filå afteò á patè searcè anä printó ouô stringó accordinç tï +thå  formató containeä iî thå file®  Thå DPROÇ tooì caî  bå +useä tï senä anù seô oæ bytå valueó iî anù desireä formaô tï +eitheò thå Console¬ List¬ oò Puncè devices. + +Options: None + + Comments: + + Thå  filå useä tï prograí thå devicå ió á  conventionaì +ASCIÉ texô filå whicè containó fouò basiã typeó oæ lines: + + 1®  commenô  lineó - thoså lineó whoså firsô  non- +blanë characteò ió á semicoloî (;) + + 2® worä definitioî lineó - thoså lineó thaô begiî +witè á dasè (-© iî columî onå followeä immediatelù bù á word + + 3®  DPROÇ  commanä lineó - thoså lineó  beginninç +witè á speciaì commanä characteò tï DPROG + + 4®  outpuô lineó - anù otheò linå whicè doeó  noô +fiô  onå  oæ  thå threå typeó oæ lineó  above»  theså  lineó +generatå thå outpuô whicè ió senô tï thå device + + Thå  detailó  oæ  ho÷ tï writå programó  iî  thå  DPROÇ +languagå arå covereä elsewherå iî thió HLÐ file. + +Selected Error Messages: Self-explanatory + +Examples of Use: + + DPROG -- program from STD.DPG + DPROG ASM -- program from ASM.DPG + + +:P + + DPROG Programming + + DPROÇ  ió  á  3Ë interpreteò foò á  devicå  programminç +language®  Wordó (á symboì uð tï 1¶ characteró long©  whicè +contaiî   anù   combinatioî   oæ   outpuô   formaô   controì +instructions¬  texô  strings¬  anä referenceó tï otheò wordó +caî bå defineä iî thió language® Oncå á worä ió defined¬ iô +caî  bå  nameä  iî  aî  outpuô  line¬   anä  itó  definitioî +(includinç embeddeä formaô controls© wilì bå translateä  anä +outpuô  tï  eitheò thå console¬  printer¬  oò puncè  device® +Worä  referenceó caî bå nesteä uð tï 12¸ leveló  deep®  Foò +example: + + + +; +; Sample DPROG programming file +; + +; Define Basic Words +-esc (%c) "\E" ; the escape character +-ctrly "^Y" ; the character control-Y +-test (Char: %c %x %d\n) ; character test format +-normal_form (%c) ; normal output format + +; +; Use Words +; +"This is a test\n" test "ABC" normal_form "\nEnd of Test" + + + + Thå  outpuô froí thå executioî oæ thå outpuô linå  wilì +be: + +This is a test +Char: A 41 65 +Char: B 42 66 +Char: C 43 67 +End of Test + + + + Useä iî conjunctioî witè botè formaô definitionó (wherå +theù  arå outpuô literally© anä quoteä stringó  (wherå  theù +arå outpuô accordinç tï thå currenô formaô definition)¬  thå +followinç escapå sequenceó apply: + + ^c Define control character (2-char sequence) + \b Backspace char + \d Delete char (DEL) + \e Escape char (ESC) + \l New Line char (CRLF pair) + \n Line Feed Char (LF) + \r Carriage Return char (CR) + \t Tab char (TAB) + \# Numeric value (forms are \d for decimal, \dH + for hex, \dq for octal, \dB for + binary: \1, \245, \33h, \0feH, \111b, + \77q, etc) + + + Additionally¬ thå formaô expressioî ió oæ thå form + + () + +wherå  C Direct Output to Console + >L Direct Output to List (Printer) + >P Direct Output to Punch + + Data Dump: + = Dump both Word Table (Symbols) and Format + =F Dump current Format Specification + =S Dump current Word Table (Symbol Table) + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DPROG.MAC b/Images/Source/hd0/s0/u15/DPROG.MAC new file mode 100644 index 00000000..bbc20064 --- /dev/null +++ b/Images/Source/hd0/s0/u15/DPROG.MAC @@ -0,0 +1,1125 @@ +; +; PROGRAM: DPROG +; AUTHOR: Richard Conn +; VERSION: 1.0 +; DATE: 28 July 84 +; PREVIOUS VERSIONS: None +; +vers equ 10 +z3env equ 0f400h + +; +; DPROG is used to program the user's terminal, printer, or punch +; with data from the file specified in the command line. DPROG will +; automatically search for the file along the path starting at the +; indicated (or implied) DU. +; + +; +; Basic Equates +; +opsys equ 0 +fcb equ 5ch +tbuff equ 80h +cr equ 0dh +ff equ 0ch +lf equ 0ah +ctrlc equ 'C'-'@' +ctrls equ 'S'-'@' +ctrlz equ 'Z'-'@' +bel equ 7 +bs equ 8 +tab equ 9 + +; +; DPROG Constants +; +COMMENT equ ';' ;denotes a comment line +WORD equ '-' ;denotes a word definition +SYM equ '=' ;symbol table dump command +DEV equ '>' ;device assignment +INP equ '<' ;input forms (pause, string, delay) +wordl equ 16 ;length of word +fmt equ '(' ;begin format definition +fmtch equ '%' ;format escape char +endfmt equ ')' ;end format definition +quote equ '"' ;quote string +literal equ '\' ;literal interpretation follows +control equ '^' ;control char follows + +; +; SYSLIB Routines +; + ext condin,cin,cout,lout,pout + ext z3init,pfind,z3log + ext moveb,hmovb,logud,pfn1,caps + ext f$open,f$read,f$close + ext eval,pafdc,pa2hc + ext codend + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env +; +; Initial Routines +; + call helpck ;check for help + call bufinit ;initialize buffers +; +; Load File +; + call locfile ;locate file + call logud ;enter directory of file + call load ;load file +; +; Perform Program +; + call program ;program the user's terminal + ret + +; +; Initialize Buffers +; +bufinit: + call codend ;address of free space + shld format ;format string + xchg + lxi h,deffmt ;set default format (char) + mvi b,40 ;allow 40 chars + call moveb + xchg ;HL pts to format buffer + inr h ;next page + shld locstk ;set location stack + shld tos ;set top of stack + mvi m,0 + inx h + mvi m,0 ;zero stack + dcx h + inr h ;next page + shld free ;free area + mvi a,'C' ;assign console as output device + sta outdev + ret + +; +; Check for Help +; +helpck: + lxi h,fcb+1 ;pt to fcb name + mov a,m ;get it + cpi '/' ;help if slash + rnz + pop psw ;clear stack + call eprint + db 'DPROG, Version ' + db (vers/10)+'0','.',(vers mod 10)+'0' + db cr,lf,' Syntax:' + db cr,lf,' DPROG <-- STD.DPG' + db cr,lf,' DPROG filename <-- filename.DPG' + db cr,lf,' DPROG filename.typ <-- filename.typ' + db 0 + ret + +; +; Find File +; If found, return BC=DU and NZ +; +locfile: + lxi d,fcb ;pt to FCB + call z3log + lxi d,fcb+1 ;pt to file name + lxi h,defname ;pt to default file name + mvi b,8 ;8 chars + ldax d ;any type? + cpi ' ' ;none if space + cz moveb + lxi d,fcb+9 ;pt to file type + lxi h,deftype ;pt to default file type + mvi b,3 ;3 chars + ldax d ;any type? + cpi ' ' ;none if space + cz moveb + lxi d,fcb ;pt to FCB + mvi a,0ffh ;search current + call pfind ;search for file + rnz ;get file if found +; +; Abort Attempt to Load File +; +abort: + pop psw ;clear stack + call eprint + db cr,lf,' File ',0 + lxi d,fcb+1 ;pt to file name + call pfn1 + call eprint + db ' NOT Found',0 + ret + +; +; Load File +; +load: + lxi d,fcb ;pt to fcb + call f$open ;open file for input + jnz abort ;abort attempt + lhld free ;buffer area +load1: + lxi d,fcb ;pt to fcb + call f$read ;read next block + jnz load2 ;done, so mark and close + lxi d,tbuff ;copy into buffer + xchg ;copy into buffer at DE from TBUFF at HL + mvi b,128 ;128 bytes + call moveb + lxi h,80h ;pt to next buffer + dad d + jmp load1 +load2: + mvi m,ctrlz ;mark EOF + inr h ;next page + mvi l,0 + shld words ;mark beginning of word definition area + shld nxtword ;mark next word + mvi m,0 ;mark no words + jmp f$close ;close input file + +; +; Program the User's Terminal +; +program: + lhld free ;pt to first char +prog1: + call capa ;capitalize + cpi ctrlz ;done? + rz + cpi CR ;eol? + jz skipl + cpi WORD ;word definition? + jz defword + cpi SYM ;symbol table or format definition dump? + jz dump + cpi DEV ;assign device? + jz device + cpi INP ;input form? + jz input + push h ;save HL +prog2: + call output ;output line at HL + call locpop ;pop stack if any + jnz prog2 ;continue if any element on stack + pop h ;restore HL +; +; Skip to next line +; +skipl: + mov a,m ;get char + call capa ;capitalize + cpi CR ;new line? + jz skipl1 + cpi LF ;new line? + jz skipl1 + cpi CTRLZ ;EOF? + rz + inx h ;pt to next + jmp skipl +skipl1: + mov a,m ;get it + inx h ;pt to next + ani 7fh ;mask + cpi CR ;continue? + jz skipl1 + cpi LF ;continue? + jz skipl1 + dcx h ;pt to non-eol char + jmp prog1 ;continue with next line +; +; Input Form +; +input: + inx h ;pt to next char + call cin ;get any char + ani 7fh ;mask + cpi ctrlc ;abort? + jz opsys + jmp skipl ;continue +; +; Assign Device +; +device: + inx h ;pt to char + call capa ;capitalize + cpi 'C' ;console? + jz setdev + cpi 'L' ;list? + jz setdev + cpi 'P' ;punch? + jz setdev + push psw + call eprint + db cr,lf,bel,' Invalid Device Assignment: ',0 + pop psw + call cout ;print char + dcx h ;back up + jmp skipl ;continue +; +; Perform assignment +; +setdev: + sta outdev ;assign + jmp skipl ;continue +; +; Define Word +; +defword: + inx h ;pt to first char of word + call bufword ;store word in buffer + shld nextch ;save ptr to next char + call wscan ;scan for word + jz defnew ;new word defined + xchg ;ptr to high-order in DE + lhld nextch ;get ptr to word definition + xchg ;word defn in DE, word adr high in HL + mov m,d ;store new address + dcx h + mov m,e + xchg ;HL pts to word + jmp skipl ;skip out line +; +; New Word +; +defnew: + lhld nxtword ;pt to next word + xchg + lxi h,wordbf ;pt to buffer + mvi b,wordl ;number of chars max + call hmovb ;copy into buffer and advance HL + lhld nextch ;get address + xchg + mov m,e ;put low + inx h + mov m,d ;put high + inx h ;set ptr to next word + mvi m,0 ;store zero + shld nxtword ;set ptr + xchg ;HL pts to word definition + jmp skipl ;skip to next line + +; +; Dump Format String or Word Table +; +dump: + inx h ;pt to option + call capa ;check for format display option + cpi 'F' ;format? + jz dfmt ;dump format if so + cpi 'S' ;symbols? + jz dsym + dcx h ;pt to current + call dumpsym ;dump symbols + call dumpfmt ;dump format + jmp skipl ;continue +; +; Dump Format +; +dfmt: + call dumpfmt ;do dump + jmp skipl ;continue +; +; Dump Words +; +dsym: + call dumpsym ;do dump + jmp skipl ;continue +; +; Dump Words in Symbol Table +; +dumpsym: + push h ;save HL + call eprint + db cr,lf,' >> Word Definitions <<',0 + lhld words ;dump word table +sym1: + mov a,m ;get next + ora a + jz symexit + call eprint + db cr,lf,' ',0 + call prword ;print word + mov e,m ;get low + inx h + mov d,m ;get high + inx h ;pt to next word + push h ;save ptr + call eprint + db ' >',0 + xchg ;HL pts to word +sym2: + mov a,m ;get next char + cpi CR ;done? + jz sym3 + cpi TAB ;translate tab to space + jnz sym2out + mvi a,' ' ;space instead of tab +sym2out: + call chout + inx h + jmp sym2 +sym3: + call eprint + db '<',0 + pop h ;pt to next word + jmp sym1 +symexit: + pop h ;pt to char + ret +; +; Output Format String +; +dumpfmt: + push h ;save ptr + call eprint + db cr,lf,' Format: (',0 + lhld format ;pt to string + call epstr ;print it + call eprint + db ')',cr,lf,0 + pop h ;get ptr + ret + +; +; Print Word at HL (advance HL) +; +prword: + mvi b,wordl ;number of chars +prw1: + mov a,m ;get char + call chout + inx h + dcr b + jnz prw1 + ret +; +; Routine to Output a Line +; +output: + call sksp ;skip spaces + cpi COMMENT ;done? + rz + cpi CR ;done? + rz + cpi LF ;done? + rz + cpi CTRLZ ;done? + rz + cpi fmt ;format definition? + jz outfmt + cpi quote ;chars? + jz outch + call bufword ;store word in buffer + shld nextch ;save ptr to next char after word + call wscan ;scan for word in table + jz badword ;word not defined + call locpush ;push location onto stack + xchg ;HL pts to continuation location + jmp output ;continue +; +; Output Quoted String +; +outch: + inx h ;pt to next char +outch1: + mov a,m ;get it + ani 7fh ;mask + cpi CR ;done? + jz outcherr + cpi LF ;done? + jz outcherr + cpi CTRLZ ;done? + jz outcherr + cpi quote ;end of quote? + jz outch2 + call charout ;output char in whatever form + jmp outch1 ;continue +outcherr: + call eprint + db cr,lf,bel,' Premature End of Quote',cr,lf,0 + jmp output +outch2: + inx h ;pt to after quote + jmp output ;continue +; +; Output char in A and set HL to next char on exit +; +charout: + cpi control ;control char follows? + jz charo0 + cpi literal ;literal follows? + jz charo1 +; +; Normal Char in A +; +charnxt: + inx h ;pt to next char + jmp formatout ;output with format +; +; Output control char +; +charo0: + inx h ;pt to char + call capa ;get char + sui '@' ;convert to control + jc ctrlerr + cpi 20h + jnc ctrlerr + inx h ;pt to next + jmp formatout +ctrlerr: + call eprint + db cr,lf,bel,' Invalid Control Character',cr,lf,0 + ret +; +; Output Literal Format +; +charo1: + inx h ;pt to char + call capa ;get char + cpi 'B' ;BS? + jz c1bs + cpi 'D' ;DEL? + jz c1del + cpi 'E' ;ESCAPE? + jz c1esc + cpi 'L' ;CRLF? + jz c1nl + cpi 'N' ;LF? + jz c1lf + cpi 'R' ;CR? + jz c1cr + cpi 'T' ;TAB? + jz c1tab + cpi '0' ;digit? + jc charol ;literal if not + cpi '9'+1 ;range? + jc numout + cpi ' ' ;less than space? + jnc charol + call eprint + db cr,lf,bel,' Invalid Literal Argument',cr,lf,0 + ret + +; +; Output Char in A literally +; +charol: + mov a,m ;get char + ani 7fh ;don't cap this way + inx h ;pt to next + jmp formatout +; +; Output Number +; +numout: + call eval ;convert to binary in DE + mov a,e ;char binary value + jmp formatout ;output with format +; +; Output BS +; +c1bs: + mvi a,bs + jmp charnxt +; +; Output TAB +; +c1tab: + mvi a,tab + jmp charnxt +; +; Output CR +; +c1cr: + mvi a,cr + jmp charnxt +; +; Output DEL +; +c1del: + mvi a,7fh + jmp charnxt +; +; Output ESCAPE +; +c1esc: + mvi a,1bh + jmp charnxt +; +; Output LF +; +c1lf: + mvi a,lf + jmp charnxt +; +; Output CRLF +; +c1nl: + mvi a,cr + call formatout ;output CR + mvi a,lf + jmp charnxt + +; +; Output Char in A According to Format +; +formatout: + push h ;save ptr to next char + push b ;save BC + mov b,a ;char in B + lhld format ;pt to format string +fout1: + mov a,m ;get next char + ani 7fh ;mask + jz foutx ;exit if end of string + cpi fmtch ;expression form? + jz fout2 + cpi literal ;literal? + jz flit +; +; Output char in A and advance +; +fch: + call chout ;output char + inx h ;pt to next + jmp fout1 +; +; Output Value in B according to format +; +fout2: + inx h ;pt to format type + mov a,m ;get char + inx h ;pt to next + ani 7fh ;mask + call caps + ora a ;none? + jz fout1 ;error condition - % at end of string + cpi 'C' ;char? + jz foch + cpi 'D' ;floating decimal chars + jz fod + cpi '2' ;2 decimal chars + jz fo2 + cpi '3' ;3 decimal chars + jz fo3 + cpi 'X' ;2 hex chars + jz fox + push psw + call eprint + db cr,lf,bel,' Invalid Format Char: ',0 + pop psw + call cout + call crlf + jmp fout1 ;continue + +; +; Output value in B as char +; +foch: + mov a,b ;get value + call chout ;output it + jmp fout1 ;continue +; +; Output value in B as floating decimal +; +fod: + mov a,b ;get value + call pafdc ;output + jmp fout1 ;continue +; +; Output value in B as hex +; +fox: + mov a,b ;get value + call pa2hc ;output + jmp fout1 ;continue +; +; Output value in B as 3 decimal chars +; +fo3: + mvi c,100 ;100's + call dec ;output and fall thru to FO2 +; +; Output value in B as 2 decimal chars +; +fo2: + mvi c,10 ;10's + call dec + mov a,b ;get value + adi '0' ;convert + call chout + jmp fout1 ;continue +; +; Subtracting Output +; Output value in B as 100's or 10's digit (leading 0 allowed) +; +dec: + push d ;save DE + mov a,b ;get value + mvi d,'0' ;set digit +dec1: + sub c ;subtract + jc dec2 + inr d ;increment digit + jmp dec1 +dec2: + add c ;add back in + mov b,a + mov a,d ;output digit + call chout + pop d ;restore DE + ret +; +; Exit Format String Output +; +foutx: + pop b ;restore BC + pop h ;restore ptr to next char + ret +; +; Literal Format Output +; +flit: + inx h ;pt to char + call capa ;get char + cpi 'B' ;BS? + jz f1bs + cpi 'D' ;DEL? + jz f1del + cpi 'E' ;ESCAPE? + jz f1esc + cpi 'L' ;CRLF? + jz f1nl + cpi 'N' ;LF? + jz f1lf + cpi 'R' ;CR? + jz f1cr + cpi 'T' ;TAB? + jz f1tab + cpi '0' ;digit? + jc fchck ;literal if not + cpi '9'+1 ;range? + jnc fchck +; +; Output Number +; + call eval ;convert to binary in DE + mov a,e ;char binary value + jmp fch ;output +; +; Check for Valid Literal +; +fchck: + cpi ' ' ;not valid if less than space + jnc fch + call eprint + db cr,lf,bel,' Invalid Literal Argument',cr,lf,0 + jmp fout1 +; +; Output BS +; +f1bs: + mvi a,bs + jmp fch +; +; Output TAB +; +f1tab: + mvi a,tab + jmp fch +; +; Output CR +; +f1cr: + mvi a,cr + jmp fch +; +; Output DEL +; +f1del: + mvi a,7fh + jmp fch +; +; Output ESCAPE +; +f1esc: + mvi a,1bh + jmp fch +; +; Output LF +; +f1lf: + mvi a,lf + jmp fch +; +; Output CRLF +; +f1nl: + mvi a,cr + call chout ;output CR + mvi a,lf + jmp fch + +; +; Define New Output Format +; +outfmt: + inx h ;pt to format char + xchg + lhld format ;pt to format area + xchg +; +; Get next char for format string +; +outf1: + mov a,m ;get next char + ani 7fh ;mask + cpi endfmt ;end of format? + jz outf2 + cpi CR ;end of line? + jz outf3 + cpi LF ;end of line? + jz outf3 + cpi CTRLZ ;end of file? + jz outf3 + stax d ;store char + inx h ;pt to next + inx d + cpi literal ;literal denotation? + jnz outf1 ;continue if not +; +; Literal flag, so store next char exactly as-is without interpretation +; + mov a,m ;get next char + ani 7fh ;mask + stax d ;store it literally + inx h ;pt to next + inx d + jmp outf1 +; +; Format String Stored - Terminate it +; +outf2: + inx h ;pt to next char +outf3: + xra a ;terminate format string + stax d + jmp output + +; +; Invalid Word - So State +; +badword: + call eprint + db cr,lf,bel,' Invalid Word Reference: ',0 + lxi h,wordbf ;pt to buffer + call prword ;print word + lhld nextch ;continue + jmp output +; +; Element must be a word - resolve it +; +bufword: + lxi d,wordbf ;buffer to store word in + mvi b,wordl ;length +; +; Build Word into WORDBF +; +bword1: + call capa ;get char + cpi ' '+1 ;end? + jc bword3 + stax d ;store char + inx h ;pt to next + inx d + dcr b ;count down + jnz bword1 +; +; Word is longer than WORDL - skip trailing chars +; +bword2: + mov a,m ;skip chars to delimiter + ani 7fh ;mask + cpi ' '+1 + jc bword4 + inx h ;pt to next + jmp bword2 +; +; Word is built into WORDBF - space fill it +; +bword3: + mvi a,' ' ;space + stax d ;store char + inx d ;pt to next + dcr b ;count down + jnz bword3 +; +; Word is Stored +; HL pts to next char after the Word +; +bword4: + ret +; +; Scan for Word in Table +; Return with Zero Set if Not Resolved +; If Resolved, DE=address of word +; +wscan: + lhld words ;pt to first word in table +wscan1: + mov a,m ;abort if empty table + ora a + rz + lxi d,wordbf ;pt to buffer + mvi b,wordl ;size of buffer + push h ;save HL +wscan2: + ldax d ;get char + cmp m ;compare + jnz wscan3 + inx h ;pt to next + inx d + dcr b ;count down + jnz wscan2 + mov e,m ;get address in DE + inx h + mov d,m + pop psw ;clear stack + xra a ;return NZ + dcr a + ret +wscan3: + pop h ;get address of current word in table + lxi d,wordl+2 ;advance to next word + dad d + jmp wscan1 + +; +; Push Address in NEXTCH onto Location Stack +; +locpush: + push h ;save regs + push d + lhld nextch ;get address + xchg ;... in DE + lhld tos ;get top of stack + mov m,e ;store address + inx h + mov m,d + inx h + shld tos ;new top of stack + pop d ;restore regs + pop h + ret +; +; Pop Address from Top of Stack +; +locpop: + lhld locstk ;local stack + xchg + lhld tos ;check to see if nothing on stack + mov a,e ;if lows are same, nothing on stack + cmp l + rz + dcx h ;pt to top element + mov d,m ;get high + dcx h + mov e,m ;get low + shld tos ;new top of stack + xchg ;address in HL + xra a ;return with NZ + dcr a + ret +; +; Skip to Non-Space +; +sksp: + mov a,m ;get char + ani 7fh ;mask + call issp ;test for space + rnz ;not space, so return + inx h ;pt to next + jmp sksp +; +; Test char in A for space char +; Ret with Z if yes +; +issp: + push h ;save HL + push b ;save BC + lxi h,sptab ;pt to table + mov b,a ;char in B +issp1: + mov a,m ;get next char + ora a ;end of table? + jz issp3 + cmp b ;match? + jz issp2 + inx h ;pt to next + jmp issp1 +issp2: + mov a,b ;restore char + pop b ;restore regs + pop h + ret ;Z flag is set +issp3: + xra a ;set NZ + dcr a + jmp issp2 +; +; Output New Line +; +crlf: + push psw ;save A + mvi a,cr ;CR + call chout + mvi a,lf ;LF + call chout + pop psw ;get A + ret +; +; Output Char in A with XON/XOFF Flow Control +; +chout: + push psw ;save char + call condin ;conditional input + jz chout1 + cpi ctrls ;pause? + jnz chout1 + call cin ;wait for following char +chout1: + pop psw ;get char + push b ;save BC + mov c,a ;char in C + lda outdev ;get output device + cpi 'C' ;console? + jz chcon + cpi 'L' ;printer? + jz chlst + cpi 'P' ;punch? + jz chpun +; +; Output to Console +; +chcon: + mov a,c ;get char + call cout + pop b + ret +; +; Output to List +; +chlst: + mov a,c ;get char + call lout + pop b + ret +; +; Output to Punch +; +chpun: + mov a,c ;get char + call pout + pop b + ret +; +; Print String Pted to by HL +; +epstr: + mov a,m ;get char + inx h ;pt to next + ani 7fh ;mask MSB + rz ;done + call chout ;print char + jmp epstr +; +; Print String at Return Address +; +eprint: + xthl ;save HL and pt to string + call epstr ;print string + xthl ;restore HL and new exec adr + ret +; +; Input Char, Mask, and Capitalize +; +capa: + mov a,m ;get char + ani 7fh ;mask + jmp caps ;capitalize + +; +; Space Table +; +sptab: + db ' ',tab,bs,ff,',','.',0 ;space chars + +; +; Data Area +; +defname: + db 'STD ' ;default file name +deftype: + db 'DPG' ;default file type +deffmt: + db '%C',0 ;default format string +outdev: + ds 1 ;output device (C=console, L=list, P=punch) +outdev1: + ds 1 ;save area for output device +wordbf: + ds wordl ;current word buffer +format: + ds 2 ;address of format string +free: + ds 2 ;address of free area +words: + ds 2 ;address of scratch area +nxtword: + ds 2 ;pointer to next word +nextch: + ds 2 ;pointer to next char +locstk: + ds 2 ;pointer to location stack +tos: + ds 2 ;pointer to top of stack + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DPROG12.LBR b/Images/Source/hd0/s0/u15/DPROG12.LBR new file mode 100644 index 0000000000000000000000000000000000000000..0a7c4840988dc32565c517e01d11c13d2afe6a7a GIT binary patch literal 13440 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 XkJ+yd)~TtgflRgkKQ`3=P}TnekW*4| literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/DU3.COM b/Images/Source/hd0/s0/u15/DU3.COM new file mode 100644 index 0000000000000000000000000000000000000000..14641e60dafd0e3ce667607ac0c40a61d501bc2b GIT binary patch literal 11520 zcmch7d2n0TdG7@wf&gTY1UC^}q$41XgacfPhF;wXO2MK?iDayWCaJ}iB^x3@3eP0K z0-!`n6s_2fo9CA}_OtzB$4TWR&f+GGV!IB#G#(4ERRYy@O(|3|oJl%}4Au>1)NoRI zTDOJ!`_8@KqNvmViXrcE&i9?=+t2sip4PUWeZAg} zW_P1_6k+?Kt4(&4aA^NdwmW3#8Z z&3+00?{oVH+$x!E_RHM)Nj|FifnS&z=nM&(DP%KlR2dR_betxRU^ zq1Xd#e>^l4ijT9dt}Zt_5RAq`kubZhX{*I-G3)xqM}q7QHV}!j&fw5Uk;N>X_iQNH zcvhO6N<385;`m}@;(clGb_<{8xs4A=hO>%PWtAkwwodtZEgC2Dmh@DSV=})by=nb< z&nrART|_tUhLWko_BBdMuT0k~|4Z-t)bnNT`3kpBh`sX(e%|vq_vt*}ob!Tj!NZGJ;wjv`n)@F zK%e{*y@r)jKF|X>wFHtF*Qc_J{Cz(0X8I}pLM8>;TFg76Q4ma)*&cs?G{Sa{jrhZX zV1TtnhKKRQc89`27LP>O?nro0N=_B=w7MwFoVO%C(5EsON7ofT;U5Yuqxs_u!}4fb9%~;*qHI*|H{`^0o_IVk40g!Qo&yPS5yX`D6P=f>D2* zq-JF^o-Jl3en)qzce?6!hOvAvD{9rT*50RrW1rp|q|N5^`CvHoZ<7+#5f^w2W;A#Dbg#t;D-O+!DZV+W(5c#sJ; z6iLLHRuY5mNGwF;^%g<*8cRIuOVG7u4fIPnYf$!lb0Z;9XxbHGO^s%<}4Qc#=||H8klVBRMFj!B|?Z{JL&Z zIa7z5!;<)ahTLbUuQ>4)1K@67f>W;5m6lJ=KbU_o{Wpd@yPPuknjp$RdDDQt0@iB= z-q9rnuW!+izSGHdc-q*Rc|&H@MatWv{Wdy`-($*!f(^q3uRV>NZOK zMk#ER#*ET!`&>kv_ZvYUu~}8TiN^6@SQ2!=el-F*1OZ7lSszK@=9c5feVW}HbCN8` z5FttVZN2jECEmso>sjgH`%b+t9V7$yREct^s>0Ebc%%d@x#^%QM3rrJgu`O!_F(^i zKXjfYu9rBHe_t}I9I8J(Q_+z4`;sJP1lJvg&5FfH`_mcrf$YTzi!ntTdblC^UXgOH zHp`#qImO<{pTo`Em{Fc=RK8b}TqssXYm*y|WXb_fb^_PuoXV?4Z0&0K{DY7)kUyz6 zs7)8klZTAzW6RRhHaulZeadUJf}%Tt2{};xfhGo%8Nucs8^Pw68hlO3ml{f$GHskM z>-e*?7uRfyKq$u12-J=;{N~Fp8V1KwMABLl7-BIW^hd*?@SvALwTAs6SkWk%xmEh7 z8btecJ8KUP1>?bhBv5q)AXz52MGgvPmW*HCvIv1&NNhFv%y>Xg@^6bKp(y$8#4fW# zJZ(=uVOoTJy!3DbNrr03+k*q4u+YUA#Gy!9$hW4`CdFuWD08Odl_H1rO3`eV;Jc&2 z6QRgxZ1qZ)@d@2x-tJ`*)|6Z{Icg*fQFSVBPAD`I4FdNoox0eJ72*XJlRVUV$wr<} zUH_uG{!Hp>^IVlVZ@ye*KBzjNf?li3R!t=99SQb_214*dp>Sbc!bf2JS#|7O1`dwI zVM~Kp#M1sr^-|vi=rz$r_{xEp7s+6CLf*(21beWGa%p zKjar%)h$xE5%u>!5JLxg_>Z_ldAd#=RdoolEdoFw@+rR5+Yyb7j2I43N!un@=)!esPH}G42~)q3IYNEZ?9a+cq|?qW=l&& z_qzgrQ$vP`R%%g-X%3h`$IgFT^2{qHCFV-{c%WH?rqd!_Rgl?J0Szs{h?B?}5nyq12rGOL)X(5ZaMQd&6+?#$3r z4IVCFy7w@(2wQ3TS%8&RqbGA=?byqSofdj8$2(}DvZxmX6dJTEG!(=Fh|;qgZ;@<< z+VdwJ#fc{@Gb!a8^`~A<|D}b0nL8$4OZ=rJXa6$C3k9B)=($o5%5l~`Z8UgsU-2X!BQoAz;Q=`5n>8HCT(343WHx(V``hN(nn>BqVh!i4z^`N~V@ z8uI$odCz0q^M5%;^E}Hv-{+q1aL!cZl?QJN{9{!H@u(k%9VyCqY~)_;m!(e`Y(?@O*NQ!deJCUI&27u(Cg z&-OAHW5?Cjecsc&WBm0wz~IP2hn3wyIPYj7+Fe0`?6~KLT#+R3drpsV-;uNbgl{yG zxg3Znzjs1M$pcz-61l@~g7luh;P8bRh(?O!0|405MxBIR34MRvsl4uN-;=}Ea_`OV zxYJuAZF_SLao6Jocd9v8a;oQQXD-0|*>XhfP?_$m1h7m>mB37To;F}H?`iF3;Ygez zU>>F@BtSM*4NFwvIvE)q3b12AhHyJN90t zCw7&e{#lxpuLYVur$oxVPvB_PU!E)%O=y4{$RL);@@IH1`7bqyFhJfn$|v(#A4`0p z+_xEXWeXwSd!%^fB9aQ{?D7nm^FLL6w1h3%zr-^>$@2my zjmq&a@thaFxP#OO`rv&5@|CQBzGz!d&Q=smw4z^+M;FoKT&)(aYWk&W7KSDREygIR zRB2mMDQH`q_yLUrLSjY&NN=o!=S+U45>!@I@jMI}$L2E0@^u;)4_AVV->URJ3;17D z5;F^qKx3okJj9wX^dn3Cw2mAm(Ac(g+E;aW=kQ2;TsQ`>N2MK|If!;R@2Ot+M#{m> z6XiYy<&s~o0JWhIdn3%=Vi!CwL~E=o78`}tD4gyom@Q67Rj}FL=g1lON)wG$!p21T=3|3%N16&ZrdM>VjRxpZBL6$BE(^VNlP^>+||c zzpgtoUy?7u9ftbjYR8%Rvc%PDq90s7z&q1kIIwGEAz>h^Yw{1yt*a3h81SF15%9(u z0Du;S0O0h`5^q(fE}%tyTBN0S*I?;=H4Dl2YZvl;>A@Prrw`XaKP>BzP$TXk8rKX3 z3_lvML;ZUkQ2YHnb#qz2Sje!JZTeUFbzZ% zSw~nhF{NtPekrWl4JNIClREYQW_E5%w6F7ijejvB7WWfpPA5rv+uYsj)>4CwR&UB> z94U3vFY+6sOy3<9zINmvvlJ>?5!19J-dcyCNfkMY5~0d*wkt9k*2IkXzYP%cdhEwZ zKk^swJUN8GZ&lMc71}riI+<@um)1g%%4)%?vRc@1q4)FapvlvD_p~G5Gz~U6e5?ZI zpsY59D2J5%HiEycRTP?*t=W4+&Jl`ZS0A^}SHiA>dU=(&Y=a2>5bKA=eBX&ChGG z+ZEC>XS9KcI@M%uqvM9=Z$xAOp21-G+%OOXr5?zb0E4Wle$lOE64mDCmz%qfkHb;sztIj+bnRs^a^1F2xyuYe@1*oT{ z#XxmFhT#;W%Qu0klUrTaRKqu!*QE{h`J(hK_0(Qg4-mR;bvaOz_@_F@H9CJS;ut04 zB=m_~fAQ>nHPQklM&KZJz}Dj=F*4-uR}ijk#%0mhj_ormr@vaAkv!VE?2J9EKaYLbsd#C72Rh! z2_h8ISSjx~_dJDg^(hYeY-!krmn0HcNDvk$Jq@t=6v?SYo!0QUNWJ^}=|F|Zq%9Ig zkb?9MJlxSXYH2+di6Y|<#mnG?nAfMrX$Zv%Id}y@(^OINoYQ9!^Mh0HLHGZ1{=O6h z0Ov5l-IY)K@}@)rCli2s&+++^#48QSj~n3lXBwb6xR?{aX#nClJkf6&5JaBi$?NE! zyH4;ec*P-iUia=N4XcM1lfh*y`6sd|xgB?E?X%>3=tw90&xQL#mv=OJ{{jls)96a} zH1ePD+*-`)eO)vS;yjCp7R%Sfg@of^D1ID)wVLpOs32E@$)2vG^oq>T76)vt8Yt4ztnYYGbd5wKgHiu5!=WS)jD-fnFe{J`G@l3sP{{(=DCH+kf>IVU zz50)-MMXfN;uRVh9rB~H5n7Qr#H<7upi{j+#)AG>Xb5359;vy#y^m3)thcM3jfw&# zQgO^rQP=Wxs|L52SB?&Tsim+csv-4Z#O06;yYRD^mN7#0(rGT`2>iU>6S1>e(^MxCY}fcDSjj=?L>jq5mW5`Y5k!+HTVI z1V@56BP^w~_eR3<_NC43MlBQZw#juk96n;w^~QrE5Nw7wwmE==^RR!&c|>zFF#?oV z08%FFzl7A8C~yiQ)950b1jiNxrAaHGJ1RTz4s!dM-EAjA1cE~$BvzKV*+la>OvuKA zKWeqR+YdoTksulq6_~csXq3vDA|XxC+s4Mmu#2ES+J9U?s6|S&swdw9g6cPcvAoLB z5#)8YKtjQlem@w76gf=<#?z^yWo%3>C>;-uc~wN#7h$L<1em>RFKf0Fm%VITOW>HV zrP(JEBBBV2DVTk8+<(m3>2BWK*5ll~dzW(w`g1$!K@>j;6;<}JI;ypryb$8CxJf6<6hXF$-Zl|kL2tE^5GJrNaD!1Q0Tf!@thr@d zxMkbt#3<~ajK)~+e{`MO3Fx$5|K?NW@2rfP`W521ty3tkaV^gTySdrI#8LlwF;ns zKklb~wz)Od9|{3PM`M@-_po4aHz0@>LfJV$MSTn;;i5x#39aZOK!KT3` z)_)vP#sCZc(dt=O!=kT!X=Ah{wi&s2VF|=G$u65#l+%Tf=*UE=C1vUsZ7VLQsS7ni zaaw#MpcNT3@*>YPG#Wb|3=rzBfpF7692DF|Qb}hQYV8PziKyLM_AsJAzgqcG!*Wt{ zA|=6fF0Gu_TwuuV!+|3}-yInwdsEOKp>V`+^+C+OM~JQo#kLW4Smc=oMPa8f$B{pj zg1s~_yyD*ANul4gjBb;zFETg?b0}m9+Sm)n)PJ1%?lS4LG`=XD{E2A0$E3R_i0?Eu zi`0#CskmUet5?v2=_v80Rb1ep{DLyVZ^C5L5G^nn1X9?Yn#qIFiJ+RS%B7DCX$)RB zD4Mh?KjH4skXImyHPXO7bQaLmg$pP#XUAb-aA{tZ7h=9;RJDIKwg4pTUhouVj=})8 z(o|DlAN8qcgd4l|t7vgyGgcuAr4VAH`BEC`fNG2mgutFvrs#4u{Xx$mlTLiE(XECj1bmM=Vee27ZfMnvlHVP)EftE%m621|Vgj;o zR2w7h3XI-?(RKEKod6)qgTa6dH%Bp(o7qQ2b76s+J++wI;?W_w4XWc0_Xmd{Hv^;L zesZo@s_5$l4@P4nK`2{fG(IvKM+bZvab^UL3ihfHn4kluXy=%Jcm%Paw}=fkGaVwN zBIa@j+^0Nlj_x)x>FC5#Z);*phdxN5sz}Y~@HAohkrC`N%uvW2fl|7)lvqqq%|ny| zplKB6fgvn_0>&Y^pEe%H=U@R^i9H-92jm|NvJ-wPlZx1{uv!Y}R0kcSEf?0nnt&e+?jGg~4PTLvAesfi7PXEsDq2IIQR zf8)HRIFWFs&O8;F`1&ADPdK}vhIGw|s&Ddl&b56<#$HbU&S_hloOj~HY@OnUGSnM3 zevMBqB7=64N<5Shv;P?9oFDPb!pRi7Qsmuj+WrfptF~6|uHDvH)e^G$Zm)FQXTD<- zbOgNN%5J?Ffqs#Mz9)_47|Bo)82am*=6ZM*li-5K^vlHr|=<9P3G?da{g z=bd?J%A7Pa`eH_ z%r#0PP0Ew`jdN>U)+)(%0AKXs>%KKEr9z&`oZpthWf^9R%eqdo;aiIPW%UoBTW$_| zn>|G3RWJg>~N?+ z*IhZ(`+x89T4lv4+wT0<^#5@qgLu}RccmY2=Y8oz?tC=e?aqhNof;mFt>uJ|dl}u8H{AQ` zD&M#~=&t*M@(Z^*WCvQ$VghfO{PEc(IGT9WjV?m~C(+-z4Q6pehNsYxd`jz<)NU#H zH8;kX`sDB2^SX4}?JbwTn8M|e6kgwRC)4hIqWdH2o_B{*e(Lzpot$^i)-*pc_iyg1 z7%|Q>9hcu2~Xy%c)5RXnb$te%X<{U(VWr zi#)A;QqH7sNwu{uBD)}4w@9{K4#(J^QJTp%vp~{_RySsu$xLZ)@~Ssl0rg?TlvFGh jhfjK&Zn4hFv;QcTvdBM@&rGG~< + +wherå Get Saved Block + B Get Block from Queue + G Get Current Group + Gn Get Group N + + ---- Queue Control ---- + Q Print Queue Statistics QZ Zero (Empty) Queue + QSfile Save Queue as File + + + ---- Data Searching ---- +Ff Find File f =string Search for String +Un Set User Area for Find + + ---- Login/Disk Reset ---- +Ld Log in Disk N New Disk Reset + + ---- Printer Output ---- +P Toggle Printer + + ---- Command Manipulation ---- +@ Exec Prev Command *nn Repeat Command Line + + ---- Statistics/Help ---- +# Display Disk Stats ? Display Help Info + + ---- Halt/Sleep ---- +! Halt and Wait for User Zn Sleep n Seconds + +:A + + Thå followinç commandó arå discusseä iî thió sectioî oæ +thå HELÐ file: + + L -- Log in Disk + N -- New Disk (Reset Disk System) + M -- Map Disk Directory + U -- Select User Number + # -- Print Disk and Queue Statistics + + + + L[d] + + Thå simplå "L¢ commanä re-logó iî thå currenô disk® Thå +useò maù pulì ouô á disk¬  puô iî á new¬ anä "L¢ jusô tï loç +iô in® Thå forí "Ld"¬ wherå ä ió á valiä drivå letteò (likå +"LB")¬ ió useä tï loç iî á specifiã disë anä permiô thå useò +tï worë oî thaô particulaò disë froí thió timå foreword. + + Example (actual DU3 session): + +DU3 B1? l + +DU3 B1? la + +DU3 A1? lb + + + N + + Thió  telló DU³ thaô thå useò jusô puô iî á  ne÷  disk® +Foò   thoså  BIOÓ  implementationó  thaô  neeä  tï  bå  tolä +specificallù (Reset© thaô á disë changå haó beeî  made¬  uså +thió  commanä  everù  timå á disë ió changeä  whilå  DU³  ió +running. + + Example: + +DU3 B1? n + + Noteº  Therå waó á significanô delaù beforå thå prompô +returned® Á completå disë systeí reseô tooë place. + + + + M[n] + + Dumpó  á  mað oæ thå grouð allocationó  foò  files®  Mî +showó whicè filå ió allocateä tï grouð "n". + + Example (actual DU3 session, edited): + +DU3 B1? m +0010-0010 07 STD .MSG 00 : 0011-0011 07 TALK .SUM 00 +0012-0012 07 Z2CON .WSH 00 : 0013-0013 00 LDIR .C 00 +0014-0014 00 COMMAND .LBR 01 : 0015-0015 00 LDIR .C 00 + < Detail Left Out > +004B-004B 08 MASTER .CAT 03 : 004C-0050 00 COMMAND .LBR 05 +0051-0051 00 COMMAND .LBR 07 : 0052-0052 00 UNERA15 .COM 00 +0053-0053 08 MENU .CPR 00 : 0054-0057 00 COMMAND .LBR 07 +Type Any Character to Continue or ^C to Abort - +DU3 B1? m54 +0054-0057 00 COMMAND .LBR 07 : +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + + The entries are divided as follows: + +0010-0010 07 STD .MSG 00 : 0011-0011 07 TALK .SUM 00 + ^ ^ ^ ^ + | | Filename Extent + | User Number + Group Range + + Uu + + Logó useò 'u§ foò nexô Æ (Finä File© command. + + Example (actual DU3 session): + +DU3 B1? u7 + +DU3 B7? u1 + + + # + + Prints the disk parameters: + +. Current Disk Drive . Number of Tracks on Disk +. Size of Group in Blocks . Number of Sectors Per Track +. Number of Groups on Disk . Number of Directory Entries +. Number of System Tracks + + Prints the queue statistics: + +. Size of Queue . Space Available + +:B + + Thå followinç commandó arå discusseä iî thió sectioî oæ +thå HELÐ file: + + G -- Position to Group + S -- Position to Sector + T -- Position to Track + R -- Read Block + W -- Write Block + + -- Advance to Next Logical Sector + - -- Backup to Last Logical Sector + + + + G[nn] + + Positioî  tï grouð nî anä reaä block®  Iæ thå forí  ió +simplù "G"¬ sho÷ thå currenô position. + + Example (actual DU3 session): + +DU3 B1? g0 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + +DU3 B1? g4 +Group = 0004:00, Track = 122, Sector = 129, Physical Sector = 129 + +DU3 B1? g +Group = 0004:00, Track = 122, Sector = 129, Physical Sector = 129 + +DU3 B1? g0 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + + + Tnn and Snn + + "Tnn¢  doeó  á  seeë tï tracë nî buô doeó  noô  reaä  á +block®  "Snn¢  positionó tï sectoò nî oî thå currenô  tracë +anä readó thå blocë there® Examplå (actuaì DU³ session): + +DU3 B1? t124 +Group = 0015:00, Track = 124, Sector = 1, Physical Sector = 1 + +DU3 B1? s24 +Group = 0015:17, Track = 124, Sector = 24, Physical Sector = 24 + + + R and W + + Ò  readó thå blocë currentlù positioneä tï intï memory® +Notå Ò (Read© ió impliciô iî thå G¬  +¬  anä - commands¬ buô +NOÔ iî thå Ó anä Ô commands. + + × writeó bacë thå currenô blocë (NOTEº  maù noô bå useä +afteò aî Æ command¬ aó CP/Í waó useä tï finä thå filå iî thå +directory). + + Examples: + +DU3 B1? r + +DU3 B1? w + + + +[nn] and -[nn] + + "+¢ advanceó ± sectoò (iæ belo÷ tracë 2¬  thió advanceó +tï nexô numericaì sectoò anä iæ ² oò more¬ advanceó baseä oî +thå system'ó sectoò skewinç algorithm¬  i.e®  sï « wilì  geô +thå  nexô  logicaì sectoò oæ thå file)®  "-¢ backupó  uð  ± +sectoò iî thå samå sense. + + Notå « anä - maù takå aî amountº foò example¬ +1µ stepó +iî  1µ  sectors®  Notå  alsï thaô "-¢ issueä  aô  thå  firsô +logicaì  sectoò  oæ thå disë wilì wrað bacë tï thå lasô  anä +"+¢ issueä aô lasô sectoò wilì wrað forwarä tï thå first. + + Examples (actual DU3 session): + +DU3 B1? g0 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + + DU3 B1? d +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +10 10000000 00000000 00000000 00000000 |................| +20 004C4449 52202020 20432020 00000038 |.LDIR C ...8| +30 13001500 00000000 00000000 00000000 |................| +40 0843504D 55472020 20434154 01000046 |.CPMUG CAT...F| +50 1C001E00 38003D00 41004300 45000000 |....8.=.A.C.E...| +60 00434F4D 4D414E44 204C4252 01000080 |.COMMAND LBR....| +70 14001600 17001800 19001A00 1B001D00 |................| + +DU3 B1? +d +Group = 0000:01, Track = 122, Sector = 2, Physical Sector = 2 +00 0754414C 4B202020 2053554D 00000049 |.TALK SUM...I| +10 11002300 24000000 00000000 00000000 |..#.$...........| +20 00554E45 52413135 2041534D 00000060 |.UNERA15 ASM...`| +30 3E003F00 40000000 00000000 00000000 |>.?.@...........| +40 075A3249 4E532020 20575348 0000002A |.Z2INS WSH...*| +50 21002500 00000000 00000000 00000000 |!.%.............| +60 075A3243 4F4E2020 20575348 0000003F |.Z2CON WSH...?| +70 12002200 00000000 00000000 00000000 |..".............| + +DU3 B1? +d +Group = 0000:02, Track = 122, Sector = 3, Physical Sector = 3 +00 07445532 20202020 2042414B 00000057 |.DU3 BAK...W| +10 26002800 29000000 00000000 00000000 |&.(.)...........| +20 04535441 52545550 20C3CF4D 0000001E |.STARTUP COM....| +30 27000000 00000000 00000000 00000000 |'...............| +40 00434F4D 4D414E44 204C4252 03000080 |.COMMAND LBR....| +50 1F002000 30003100 32003300 34003500 |.. .0.1.2.3.4.5.| +60 00434F4D 4D414E44 204C4252 05000080 |.COMMAND LBR....| +70 36003700 39004C00 4D004E00 4F005000 |6.7.9.L.M.N.O.P.| + +DU3 B1? +2 +Group = 0000:04, Track = 122, Sector = 5, Physical Sector = 5 + + +DU3 B1? d +00 084D4153 54455220 20434154 01000080 |.MASTER CAT....| +10 2D002F00 3A003B00 3C004200 44004600 |-./.:.;.<.B.D.F.| +20 00464958 54455820 2041534D 0100001E |.FIXTEX ASM....| +30 65006600 69006B00 6C000000 00000000 |e.f.i.k.l.......| +40 00554E45 52413135 20434F4D 00000007 |.UNERA15 COM....| +50 52000000 00000000 00000000 00000000 |R...............| +60 084D454E 55202020 20C35052 00000008 |.MENU CPR....| +70 53000000 00000000 00000000 00000000 |S...............| + +DU3 B1? -3d +Group = 0000:01, Track = 122, Sector = 2, Physical Sector = 2 +00 0754414C 4B202020 2053554D 00000049 |.TALK SUM...I| +10 11002300 24000000 00000000 00000000 |..#.$...........| +20 00554E45 52413135 2041534D 00000060 |.UNERA15 ASM...`| +30 3E003F00 40000000 00000000 00000000 |>.?.@...........| +40 075A3249 4E532020 20575348 0000002A |.Z2INS WSH...|| +50 21002500 00000000 00000000 00000000 |!.%.............| +60 075A3243 4F4E2020 20575348 0000003F |.Z2CON WSH...?| +70 12002200 00000000 00000000 00000000 |..".............| +:C + + The commands for searching for data on the disk are: + + Ffilename.typ -- find all dir entries for file + + =string -- find next occurrance of string + + + + Ffilename.typ + + Prinô directorù foò filå "filename.typ"®  Thió commanä +presentó  thå  directorù  entrieó foò  alì  extentó  oæ  thå +indicateä  file®  Seå thå sectioî oî "Interpretinç thå  DU³ +Directorù   Display¢  foò  infï  oî  ho÷  tï  interpreô  thå +informatioî presented. + + Example (actual DU3 session): + +DU3 B1? fz80.mac +40 015A3830 20202020 204D4143 0000000E |.Z80 MAC....| +50 9A000000 00000000 00000000 00000000 |................| +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + +DU3 B1? ftest.txt +++ File Not Found ++ +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + + + =string + + Thió commanä performó á searcè foò thå indicateä  ASCIÉ +text¬  startinç aô currenô sector® ®  Biô ·  ió +ignoreä unlesó .?.@.A.B.C.D.| +20 075A3243 4F4E2020 20575320 06000077 |.Z2CON WS ...w| +30 45014601 47014801 00000000 00000000 |E.F.G.H.........| +40 E5444953 4B4F5554 20434F4E 00000020 |eDISKOUT CON... | +50 97000000 00000000 00000000 00000000 |................| +60 07445532 20202020 20484C50 01000006 |.DU3 HLP....| +70 98009900 9B009C00 9D000000 00000000 |................| + + +DU3 B1? +=DU3,d +Group = 0000:11, Track = 122, Sector = 18, Physical Sector = 18 += at 24 +Group = 0000:11, Track = 122, Sector = 18, Physical Sector = 18 +00 E547454E 494E5320 204D4143 01000080 |eGENINS MAC....| +10 D700EF00 F000F400 F500F600 F700F800 |W.o.p.t.u.v.w.x.| +20 E5445532 20202020 2041534D 01000080 |eDU3 ASM....| +30 EC00ED00 EE00FA00 07010B01 0E011301 |l.m.n.z.........| +40 04445532 20202020 20C3CF4D 0000004E |.DU3 COM...N| +50 F100F200 F3000000 00000000 00000000 |q.r.s...........| +60 E547454E 494E5320 204D4143 02000039 |eGENINS MAC...9| +70 F9000F01 00000000 00000000 00000000 |y...............| + +:D + + Thå followinç commandó arå discusseä iî thió sectioî oæ +thå HELÐ file: + + < -- Save Current Block + > -- Restore Saved Block + B -- Load Current Block from Head of Queue + G -- Copy Group from Head of Queue and Write + Q -- Print Queue Statistics + QZ -- Zero (Clear) Queue + QS -- Save Queue as a File + + + + < and > + + "<¢  saveó  currenô blocë iî aî internaì  savå  buffer® +">¢  copieó thå internaì savå buffeò intï thå currenô  blocë +areá (buô doeó NOÔ writå iô ouô tï disk). + + B + + "B¢ extractó thå blocë aô thå heaä oæ thå  DU³ +Queuå anä placeó iô intï thå workinç buffeò area. + + G[nn] + + "G¢ copieó thå grouð aô thå heaä oæ thå  DU³ +Queuå  ontï  disk®  Iæ  nî ió specifieä (aó  iî  "Gnn")¬  theî  thå indicateä grouð ió reaä froí oò  writteî +to®  Iæ  nî  ió  noô given¬  theî thå  grouð  thå  useò  ió +currentlù positioneä tï ió affected. + + Q, QZ, and QSfile + + Ñ reportó thå statuó oæ thå DU³ Queue¬  namelù ho÷ manù +blockó  arå  storeä iî iô anä ho÷ mucè  spacå  remains®  QÚ +zeroeó  (clears© thå DU³ Queue®  "QSfilename.typ¢ saveó thå +DU³ Queuå oî disë iî thå currenô useò areá aó thå  indicateä +file. + Examples (actual DU3 session): + +DU3 B1? g0 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + +DU3 B1? d +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +10 10000000 00000000 00000000 00000000 |................| +20 004C4449 52202020 20432020 00000038 |.LDIR C ...8| +30 13001500 00000000 00000000 00000000 |................| +40 0843504D 55472020 20434154 01000046 |.CPMUG CAT...F| +50 1C001E00 38003D00 41004300 45000000 |....8.=.A.C.E...| +60 00434F4D 4D414E44 204C4252 01000080 |.COMMAND LBR....| +70 14001600 17001800 19001A00 1B001D00 |................| + +DU3 B1? < + +DU3 B1? ch0-7f e5 + + DU3 B1? d +00 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| +10 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| +20 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| +30 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| +40 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| +50 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| +60 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| +70 E5E5E5E5 E5E5E5E5 E5E5E5E5 E5E5E5E5 |eeeeeeeeeeeeeeee| + +DU3 B1? >,d +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +10 10000000 00000000 00000000 00000000 |................| +20 004C4449 52202020 20432020 00000038 |.LDIR C ...8| +30 13001500 00000000 00000000 00000000 |................| +40 0843504D 55472020 20434154 01000046 |.CPMUG CAT...F| +50 1C001E00 38003D00 41004300 45000000 |....8.=.A.C.E...| +60 00434F4D 4D414E44 204C4252 01000080 |.COMMAND LBR....| +70 14001600 17001800 19001A00 1B001D00 |................| + + +DU3 B1? q +** Queue Status Summary ** +0 Blocks in Queue +249 Blocks Left in Queue +Address of Head of Queue: 3E00 Hex +Address of Tail of Queue: 3E00 Hex + +DU3 B1? <1a> + + Use W to write changes to disk. + + Ranges may be specified: + +CHaddr-addr byte or CAaddr-addr byte + Changes a range of bytes to the same value + + Examples (actual DU3 session): + +DU3 B7? g0 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + +DU3 B7? d +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +10 10000000 00000000 00000000 00000000 |................| +20 004C4449 52202020 20432020 00000038 |.LDIR C ...8| +30 13001500 00000000 00000000 00000000 |................| +40 0843504D 55472020 20434154 01000046 |.CPMUG CAT...F| +50 1C001E00 38003D00 41004300 45000000 |....8.=.A.C.E...| +60 00434F4D 4D414E44 204C4252 01000080 |.COMMAND LBR....| +70 14001600 17001800 19001A00 1B001D00 |................| + + +DU3 B7? d0-#f +00 07535444 20202020 204D5347 00000002 |.STD MSG....| + +DU3 B7? h0-#f +00 07535444 20202020 204D5347 00000002 + +DU3 B7? a0-#f +00 |.STD MSG....| + +DU3 B7? fdu2.hlp +20 07445532 20202020 20484C50 01000039 |.DU3 HLP...9| +30 28009800 99009B00 9C009D00 00000000 |(...............| +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + +DU3 B7? g28 +Group = 0028:00, Track = 125, Sector = 273, Physical Sector = 273 + + +DU3 B7? d +00 496E766F 6B696E67 20445533 20616E64 |Invoking DU3 and| +10 20445533 20496E73 74616C6C 6174696F | DU3 Installatio| +20 6E0D0A44 55332043 6F6D6D61 6E642053 |n..DU3 Command S| +30 756D6D61 72790D0A 436F6D6D 616E6473 |ummary..Commands| +40 20666F72 204C6F67 67696E67 20446973 | for Logging Dis| +50 6B732061 6E642045 78616D69 6E696E67 |ks and Examining| +60 20446973 6B205061 72616D65 74657273 | Disk Parameters| +70 0D0A436F 6D6D616E 64732066 6F722050 |..Commands for P| + +DU3 B7? v +Invoking DU3 and DU3 Installation +DU3 Command Summary +Commands for Logging Disks and Examining Disk Parameters +Commands for P +Group = 0028:00, Track = 125, Sector = 273, Physical Sector = 273 + + +DU3 B7? v3 +Invoking DU3 and DU3 Installation +DU3 Command Summary +Commands for Logging Disks and Examining Disk Parameters +Commands for Positioning and Reading Data +Commands for Searching for Data +Commands for Saving and Restoring Data +Commands for Viewing data +Commands for Altering Data +Commands for Manipulating Macros and the @ Command +Miscellanea +Examples of command use +Interpret +Group = 0028:02, Track = 125, Sector = 275, Physical Sector = 275 + + +DU3 B7? g28 +Group = 0028:00, Track = 125, Sector = 273, Physical Sector = 273 + +DU3 B7? d +00 496E766F 6B696E67 20445533 20616E64 |Invoking DU3 and| +10 20445533 20496E73 74616C6C 6174696F | DU3 Installatio| +20 6E0D0A44 55332043 6F6D6D61 6E642053 |n..DU3 Command S| +30 756D6D61 72790D0A 436F6D6D 616E6473 |ummary..Commands| +40 20666F72 204C6F67 67696E67 20446973 | for Logging Dis| +50 6B732061 6E642045 78616D69 6E696E67 |ks and Examining| +60 20446973 6B205061 72616D65 74657273 | Disk Parameters| +70 0D0A436F 6D6D616E 64732066 6F722050 |..Commands for P| + + +DU3 B7? ch0-10 0 + +DU3 B7? d +00 00000000 00000000 00000000 00000000 |................| +10 00445533 20496E73 74616C6C 6174696F |.DU3 Installatio| +20 6E0D0A44 55332043 6F6D6D61 6E642053 |n..DU3 Command S| +30 756D6D61 72790D0A 436F6D6D 616E6473 |ummary..Commands| +40 20666F72 204C6F67 67696E67 20446973 | for Logging Dis| +50 6B732061 6E642045 78616D69 6E696E67 |ks and Examining| +60 20446973 6B205061 72616D65 74657273 | Disk Parameters| +70 0D0A436F 6D6D616E 64732066 6F722050 |..Commands for P| + +DU3 B7? ca11 This is a test + +DU3 B7? d0-#1f +00 00000000 00000000 00000000 00000000 |................| +10 00546869 73206973 20612074 6573746F |.This is a testo| + +:G + + Macros + + Á Macrï ió á short-hanä thå useò caî emploù tï definå á +commanä  sequence®  Ratheò thaî havinç tï typå aî  involveä +commanä oveò anä oveò again¬  thå DU³ macrï facilitù  allowó +thå  useò tï assigî thió commanä sequencå tï á numbeò (°  tï +9© anä theî executå iô bù simplù presentinç thió numbeò aó á +command®  Thå  followinç commandó arå associateä witè  thió +facility. + + :ntext and n + + ":n¢  defineó thå texô followinç thå digiô 'n§ tï +bå á Macro®  Aó always¬ ° <½ î <½ 9® Thå macrï definitionó +maù  bå  createä  anä redefineä aô will®  Iæ  á  macrï  haó +alreadù  beeî defineä foò thå indicateä number¬  iô wilì  bå +overwritteî bù thå executioî oæ thió command®  "n"¬ wherå ° +<½ î <½ 9¬ executeó thå indicateä macro. + + + :Pn and :PA + + ":Pn"¬  wherå  ° <½ î <½ 9¬  printó thå texô  oæ  Macrï +Numbeò n® ":PA¢ printó thå texô oæ alì 1° macros. + + @ and :P@ + + "@¢  executeó  thå previouó commanä linå thaô  diä  noô +contaiî  thå  "@¢  Command®  Thió provideó aî easù  waù  tï +repeaô thå lasô commanä linå typed® Foò example: + + g0 <-- go to Group 0 + ch0-7f e5,< <-- Initialize the first block and Save + >,w,+ <-- Read in the Saved Block, Write it + out to disk, and advance to next + logical block + @ <-- Do the Previous Command Again + @ <-- And Again + + + ":P@¢  printó thå previouó commanä linå (anä  doeó  noô +changå it). + + Examples (edited DU3 session): + +DU3 B7? g0 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + +DU3 B7? :1+,d0-#1f + +DU3 B7? :p1 +Macro Definitions -- +1: +,d0-#1f + +DU3 B7? 1 +Group = 0000:01, Track = 122, Sector = 2, Physical Sector = 2 +00 0754414C 4B202020 2053554D 00000049 |.TALK SUM...I| +10 11002300 24000000 00000000 00000000 |..#.$...........| + + +DU3 B7? 1 +Group = 0000:02, Track = 122, Sector = 3, Physical Sector = 3 +00 07444953 4B4F5554 20434F4E 00000000 |.DISKOUT CON....| +10 00000000 00000000 00000000 00000000 |................| + +DU3 B7? 1 +Group = 0000:03, Track = 122, Sector = 4, Physical Sector = 4 +00 04584449 52202020 20C3CF4D 00000054 |.XDIR COM...T| +10 2C002E00 48000000 00000000 00000000 |,...H...........| + +DU3 B7? g0,d0-#1f +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +10 10000000 00000000 00000000 00000000 |................| + +DU3 B7? 1 +Group = 0000:01, Track = 122, Sector = 2, Physical Sector = 2 +00 0754414C 4B202020 2053554D 00000049 |.TALK SUM...I| +10 11002300 24000000 00000000 00000000 |..#.$...........| + + +DU3 B7? :pa +Macro Definitions -- +0: + +1: +,d0-#1f + +2: + + < Detail Left Out > + +9: + + +DU3 B7? g0,d0-#1f,1,1,1 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +10 10000000 00000000 00000000 00000000 |................| +Group = 0000:01, Track = 122, Sector = 2, Physical Sector = 2 +00 0754414C 4B202020 2053554D 00000049 |.TALK SUM...I| +10 11002300 24000000 00000000 00000000 |..#.$...........| +Group = 0000:02, Track = 122, Sector = 3, Physical Sector = 3 +00 07444953 4B4F5554 20434F4E 00000000 |.DISKOUT CON....| +10 00000000 00000000 00000000 00000000 |................| +Group = 0000:03, Track = 122, Sector = 4, Physical Sector = 4 +00 04584449 52202020 20C3CF4D 00000054 |.XDIR COM...T| +10 2C002E00 48000000 00000000 00000000 |,...H...........| + + +DU3 B7? @ + +Command -- +g0,d0-#1f,+,d0-#1f,+,d0-#1f,+,d0-#1f +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +10 10000000 00000000 00000000 00000000 |................| +Group = 0000:01, Track = 122, Sector = 2, Physical Sector = 2 +00 0754414C 4B202020 2053554D 00000049 |.TALK SUM...I| +10 11002300 24000000 00000000 00000000 |..#.$...........| +Group = 0000:02, Track = 122, Sector = 3, Physical Sector = 3 +00 07444953 4B4F5554 20434F4E 00000000 |.DISKOUT CON....| +10 00000000 00000000 00000000 00000000 |................| +Group = 0000:03, Track = 122, Sector = 4, Physical Sector = 4 +00 04584449 52202020 20C3CF4D 00000054 |.XDIR COM...T| +10 2C002E00 48000000 00000000 00000000 |,...H...........| + +:H + + ? + + "?¢ giveó á commanä summarù anä telló thå useò whaô thå +currenô  valueó arå foò Processoò Clocë Speeä anä Lineó  peò +Pagå  oî CONº  aó welì aó thå addresó foò thå Grouð  Storagå +Buffeò (wherå thå DU³ Queuå begins). + + + *[nn] + + "*nn¢  repeató thå currenô commanä linå (aó entereä  sï +far© nî times®  Thió commanä defaultó tï "forever¢ iæ nî ió +noô specified® 'nn§ maù bå ² tï 65535. + + + ! + + "!¢   haltó   processinç  oæ   commands¬   displayó   á +continuatioî messagå tï thå user¬  anä waitó foò thå useò tï +typå anù key® Typinç á Control-à abortó commanä processing® +Thió commanä ió usefuì iî stoppinç loopó tï givå thå useò aó +mucè timå aó hå wantó tï revie÷ thå display. + + + P + + "P¢  toggleó thå printeò switcè oî anä off®  Iô allowó +thå  useò  tï turî oî anä ofæ á recordinç  oæ  youò  consolå +output. + + X + + "X¢ exiôs bacë tï ZCPR3. + + + Z[nn] + + "Znn¢ causeó thå prograí tï sleep¬ oò pause¬ anä maù bå +useä tï looë aô á dumð quicklù iî á loopinç commanä line® Ú +ió  ±  sec®  Znî  ió nî secondó oî  aî  î  MHú  8080®  Thå +processoò  speeä  ió specifieä withiî thå ZCPR³  Environmenô +Descriptor. + + + ^C + + "^C" exits to ZCPR3 and Warm Boots. + + Examples (actual DU3 session): + + +DU3 B7? g0 +Group = 0000:00, Track = 122, Sector = 1, Physical Sector = 1 + +DU3 B7? d0-#f,+,!,* +00 07535444 20202020 204D5347 00000002 |.STD MSG....| +Group = 0000:01, Track = 122, Sector = 2, Physical Sector = 2 + +Type Any Character to Continue or ^C to Abort - +00 0754414C 4B202020 2053554D 00000049 |.TALK SUM...I| +Group = 0000:02, Track = 122, Sector = 3, Physical Sector = 3 + +Type Any Character to Continue or ^C to Abort - +00 07444953 4B4F5554 20434F4E 00000000 |.DISKOUT CON....| +Group = 0000:03, Track = 122, Sector = 4, Physical Sector = 4 + +Type Any Character to Continue or ^C to Abort - +00 04584449 52202020 20C3CF4D 00000054 |.XDIR COM...T| +Group = 0000:04, Track = 122, Sector = 5, Physical Sector = 5 + +Type Any Character to Continue or ^C to Abort - + +DU3 B7? g1 +Group = 0001:00, Track = 122, Sector = 33, Physical Sector = 33 + +DU3 B7? d0-#f,+,*3 +00 E5482020 20202020 2042414B 00000004 |eH BAK....| +Group = 0001:01, Track = 122, Sector = 34, Physical Sector = 34 +00 E5535542 32202020 2042414B 0100007B |eSUB2 BAK...{| +Group = 0001:02, Track = 122, Sector = 35, Physical Sector = 35 +00 E5434420 20202020 204D4143 00000047 |eCD MAC...G| +Group = 0001:03, Track = 122, Sector = 36, Physical Sector = 36 + +DU3 B7? ^C +B7> + +:3 + + DU³ containó á built-in¬  screen-orienteä editor® Thió +editoò deriveó itó screen-orienteä functionó froí thå  ZCPR³ +TCAP¬  sï  thå  DU³ Editoò shoulä bå invokeä onlù  oî  ZCPR³ +Systemó  whicè  arå supportinç á valiä TCAÐ foò  thå  user'ó +terminal. + + + E + + Thå  commanä  "E¢  invokeó thå editor®  Iæ  anù  otheò +commandó  follo÷  Å oî thå samå  line¬  theså  commandó  arå +flushed®  Thå  DU³ Editoò ió á completå subsysteí undeò DU³ +iî  itó owî right®  Iô provideó á varietù oæ  user-friendlù +editinç  featureó  foò thå manipulatioî oæ datá  withiî  thå +currenô sectoò (block© aó welì aó allowinç thå useò tï issuå +anù  DU³ commanä linå hå desires¬  returninç tï  thå  editoò +wheî iô ió completed. + + + Thå  DU³  Editoò presentó á screeî displaù tï thå  useò +whicè  ió structureä tï includå á linå showinç thå  contentó +oæ  thå  sectoò aô thå cursor¬  severaì lineó  oæ  hex/ASCIÉ +(similaò  tï thå Ä commanä output© whicè displaù thå  entirå +sector¬ á menõ oæ commands¬ á cursoò (whicè initiallù pointó +tï thå firsô bytå iî á sector)¬ anä á commanä prompt. + + Thå  useò  maù  emploù  thå  WordStaò  cursoò  movemenô +commandó  tï  movå thå cursoò abouô iî thå  currenô  sector® +Theså commandó are: + + ^E = Cursor UP + ^ + ^S = Cursor LEFT <-+-> ^D = Cursor RIGHT + v + ^X = Cursor DOWN + + ^R refreshes the screen display. + + + Thå followinç commandó arå alsï availablå undeò thå DU³ +Editor: + + A = Enter ASCII Text into block starting at cursor + H = Enter Hex/Dec Numbers into block starting at cursor + + + = Advance to Next Logical Sector and Edit + - = Backup to Last Logical Sector and Edit + + ^W = Write the Current Sector to Disk + + C = Issue Any DU3 Command Line + + X = Exit to DU3 + ^C = Exit to ZCPR3 + + + Alì  oæ theså commandó arå self-explanatorù excepô  foò +thå Á anä È commands. + + Thå  Á  commanä ió useä tï enteò ASCIÉ  texô  intï  thå +sectoò startinç aô thå cursoò position® Iî responså tï thió +command¬  thå DU³ Editoò wilì prompô thå useò foò input® Hå +maù  theî  typå  anù  texô hå wisheó  followeä  bù  strikinç +RETURN® Thió texô ió entereä literallù intï thå sector® Iæ +iô overflowó thå enä oæ thå sector¬ iô ió truncated® Iæ thå +useò  wisheó  tï  embeä  hexadecimaì  values¬  likå  0Ä  foò +Carriagå Return¬ hå maù uså thå forí ""® Example: + + this is a test<0D><0A> + + + Thå  È commanä ió useä tï enteò á grouð oæ  hexadecimaì +anä  decimaì valueó intï thå sectoò startinç aô  thå  cursoò +position®  Numberó  separateä bù spaceó arå typeä iî bù thå +user®  Iæ thå useò wisheó tï enteò á valuå iî decimal¬  thå +forí "#nn¢ ió used® Example: + + 1 2 3 3A b7 #25 + + + Thå  Editoò  ió onå oæ thå mosô  powerfuì  capabilitieó +withiî  DU3®   Iô  ió  highlù  recommendeä  thaô  thå  useò +experimenô   witè   iô  anä  becomå  acquainteä   witè   itó +capabilities® + +:4 + Examples + + + Multiple commands may be separated by ",". + + Anù valiä commanä strinç maù bå placeä aó aî operanä oæ +thå originaì DU³ command¬ i.e.: + + A>DU3 G0,D,G2,=OK<1A>,D + + + Exampleº  thå followinç commandó wilì eraså thå   disë +directorù tï alì E5's: + + lb log in b drive + g0 position to dir. + ch0-7f e5 fill with e5 + < save the sector + >,w,+,/16 restore, write, next, + repeat 16 + + This could be shortened to: + + lb,g0,ch0-7f e5,< + >,w,+,/16 + + + Thå followinç twï macroó can bå defined: + + Macro 0 -- + :0g0,ch0-7f e5,< + Macro 1 -- + :1>,w,+,/16 + + Foò  thå  useò tï initializå thå directorù oî Drivå  Aº +anä  theî  oî  Drivå B:¬  thå followinç  commandó  coulä  bå +issued: + + la,0 <-- Log in A and Initialize first block + 1 <-- Perform write + lb,0 <-- Log in B and Initialize first block + 1 <-- Perform write + n,0 <-- Declare New Disk and Initialize first + block + 1 <-- Perform write + +:5 + Interpretation of Directory Data Presented by DU3 + + Thå  followinç explainó thå formaô oæ á CP/Í  directorù +entrù  aó  showî bù DU3¬  usinç eitheò thå  Æ  (Finä  File© +command¬  oò  jusô doinç Ä (Dump© oæ thå directorù sectors¬ +whicè  arå  locateä iî groupó ° anä ± oî  á  singlå  densitù +disk® Samplå resulô oæ "FSID.COM¢ command: + +First 40 00534944 20202020 20434F4D 0000003A |.SID COM...:| +line || ||| | || || | | + || ||^----hex file name-----^ || || ^file name^ + || || || || in ASCII + || || extent-^^ || + || || || + || || file size in sectors-^^ + || || + || ^^-00 = file active + || E5 = file erased + ^^-displacement of line in directory sector + + +Second 50 33343536 3738393A 00000000 00000000 |3456789:........| +line | | + ^---allocation group numbers-------^ + + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DU3.MAC b/Images/Source/hd0/s0/u15/DU3.MAC new file mode 100644 index 00000000..d774afcf --- /dev/null +++ b/Images/Source/hd0/s0/u15/DU3.MAC @@ -0,0 +1,4446 @@ +; 03/01/85 Richard Conn: Replaced fixed in EDPLOT that was somehow lost +; (see lines suffixed by +; +; 01/18/85 Modified by Jay Sage to incorporate a set of permanent +; macros. These macros can be invoked by the command tail +; when DU is invoked. They are copied from a space of 128 +; bytes near the beginning of the code. The area is +; identified by a string of text to facilitate patching. +; The macros are listed one after another, separated by +; carriage return characters. Macros that are not to be +; defined must be present as carriage returns alone or the +; program will fail. +; +; PROGRAM: DU3 +; AUTHOR: RICHARD CONN +; DERIVATION: DUTIL is derived from DU Version 7.5 +; DU2 is derived from DUTIL Version 1.1 +; DU3 is derived from DU2 Version 1.1 +; VERSION: 1.0 +; DATE: 20 June 84 +; PREVIOUS VERSIONS: None +; NOTE: DU3 must be assembled using M80 (or equiv) +; +VERS EQU 13 +Z3ENV EQU 0F400H + +; +; DU3 is derived from -- +; DU.ASM V7.5 Revised 1/23/81 +; DISK UTILITY - By Ward Christensen +; +; Principal Authors of DU V7.5 are -- +; WLC KBP RGF BRR +; +; Key comments from DU V7.5 and DU3 follow -- +; +;This version of DU is compatible with CP/M 2.x +;and does not require alteration for various hardware +;configurations. It adjusts itself automatically to +;the correct number of sectors, tracks, directory size, +;etc. It has been tested on 5-1/4" and 8" floppy, and +;10 megabyte hard disk systems. +; +;Because of the automatic adaption feature, no conditional +;assembly options are included. +; +;************************************************* +;* * +;* This program has been heavily modified * +;* to allow it to work without modification * +;* on all versions of CP/M 2.x. * +;* One known possible problem involves the * +;* system tracks on some systems, and results * +;* from the system sectors being skewed. There * +;* is NO way for a program executing under CP/M * +;* to know about this. This program assumes the * +;* standard convention of no skew being used on * +;: the system tracks. This usually isn't a prob- * +;* lem because the SYSGEN program can be used to * +;* get the system from the disk so that it can * +;* be modified. * +;* * +;* Ron Fowler * +;* * +;************************************************* +; + +; +; SYSLIB and Z3LIB References +; + ext z3vinit,envptr,cls,at,tinit,dinit,stndout,stndend,gotoxy + ext getspeed,getcrt,getmdisk,getmuser + ext codend + +; +;System equates +; +BASE EQU 0 ;SET TO 4200H FOR HEATH OR TRS-80 ALTCPM +; +;CP/M Key Areas +; +FCB EQU BASE+5CH ;CP/M FCB +BDOS EQU BASE+5 ;CP/M BDOS ENTRY POINT +TBUFF EQU BASE+80H ;CP/M TEMPORARY DISK I/O BUFFER +TPA EQU BASE+100H ;CP/M TRANSCIENT PROGRAM AREA +; +; Some Key Variables in DU3 +; +EOLCH equ ',' ;Marks logical end of line +SEPCH equ ' ' ;Argument Separator +MULCH equ '*' ;Multiplication Command +DIM equ 1 ;Enter DIM Mode for ILPRT +BRIGHT equ 2 ;Enter BRIGHT Mode for ILPRT + +; +;CP/M BDOS Function Codes +; +PRINT EQU 9 +GVERS EQU 12 +RESETDK EQU 13 ;RESET SYSTEM +SELDK EQU 14 ;SELECT DISK +CLOSEF EQU 16 ;CLOSE FILE +SRCHF EQU 17 ;SEARCH FIRST +SRCHN EQU 18 ;SEARCH NEXT +DELF EQU 19 ;DELETE FILE +WRITEF EQU 21 ;WRITE BLOCK TO FILE +MAKEF EQU 22 ;CREATE FILE +SUSER EQU 32 ;SELECT USER +GETDSK EQU 25 +GETDPB EQU 31 +; +;CP/M 1.4 Offsets and Some Key Values +; +TRNOFF EQU 15 ;CP/M 1.4 OFFSET FROM BASE + ;OF BDOS TO SECTRAN ROUTINE +SKWOFF EQU 1AH ;CP/M 1.4 OFFSET TO SKEW TABLE +S2OFF EQU 14 ;OFFSET INTO FCB FOR S2 BYTE +DPBOFF EQU 3AH ;CP/M 1.4 OFFSET TO DPB WITHIN BDOS +S2MASK EQU 0FH ;MASK FOR EXTENDED RC BITS OF S2 +DPBLEN EQU 15 ;SIZE OF CP/M 2.x DISK PARM BLOCK +; +;Define ASCII characters +; +CR EQU 0DH ;CARRIAGE RETURN +LF EQU 0AH ;LINE FEED +TAB EQU 09H ;TAB +BS EQU 08H ;BACKSPACE + +; +; MACROS INCLUDE: +; +; DJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; +DJNZ MACRO ?N ;;DECREMENT B AND JUMP ON NO ZERO + DCR B + JNZ ?N + ENDM +; +; END OF MACROS +; + + +; +;Beginning of Program +; +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env + +; +; Space Added for Initial Macro Definitions -- block added by +; + ;label to help locate when patching + + db 'INITIAL MACROS:' + +imac0: db 'G0,D',cr ;macro 0 + db '-D',cr ;macro 1 + db '+D',cr ;macro 2 + db cr ;macro 3 + db cr ;macro 4 + db cr ;macro 5 + db cr ;macro 6 + db cr ;macro 7 + db cr ;macro 8 + db cr ;macro 9 + + ;fill rest of 128 bytes with nulls + + if imac0 + 128 - $ gt 0 + rept imac0 + 128 - $ + db 0 + endm + endif + +; End of Block Added by + +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3vinit ;initialize the ZCPR3 Env and the VLIB Env + call tinit ;init terminal + LXI H,0 ;GET PTR TO CP/M STACK + DAD SP ;HL=SP + SHLD DUTSTK ;SAVE IT +; + call codend ;get free space + lxi d,100h ;open area + dad d ;large stack area + shld savbuf + dad d ;100H for SAVBUF + push h ;save ptr + mvi m,126 ;allow 126-char input line + inx h + inx h ;ptr to INBUF + shld inbuf + pop h ;pt to beginning + lxi d,400h ;large area for expansion + dad d + shld pinbuf ;ptr to PINBUF + dad d + shld ctemp ;ptr to CTEMP + dad d + shld ctempx ;ptr to CTEMPX + shld mtabl ;ptr to MACRO TABLE + lxi d,100h*10 ;10 macros + dad d + shld gbuff ;group save buffer + shld direct ;directory load buffer +; + lhld savbuf ;top of stack + sphl ; SET STACK +; + call getspeed + sta clock ;set clock speed + call getcrt ;get CRT data + inx h ;pt to screen size + mov a,m ;get it + sta pagsiz ;set page size + call getmdisk ;get max disk + sta mdisk ;and set it + call getmuser ;get max user + sta muser ;and set it +; +;Set up local jumps to BIOS +; +START1: + LHLD BASE+1 ;WARM BOOT POINTER + LXI D,3 ;READY FOR ADD + DAD D + SHLD VCONST+1 ;CON: Status + DAD D + SHLD VCONIN+1 ;CON: Input + DAD D + SHLD VCONOT+1 ;CON: Output + DAD D + SHLD VLIST+1 ;LST: Output + DAD D ;Skip PUNCH + DAD D ;Skip RDR + DAD D + SHLD VHOME+1 ;Home Disk + DAD D + SHLD VSELDK+1 ;Select Disk + DAD D + SHLD VSETRK+1 ;Set Track + DAD D + SHLD VSTSEC+1 ;Set Sector + DAD D + SHLD SETDMA+1 ;Set DMA Address + DAD D + SHLD VREAD+1 ;Read Block From Disk + DAD D + SHLD VWRITE+1 ;Write Block To Disk + DAD D ;Skip LISTST + DAD D + SHLD VSCTRN+1 ;CP/M 2.x Sector Translation Table +; JMP HELLO +; +;Initialization Complete -- Print Signon Message and Begin Command Processing +; +HELLO: + CALL GETSTP ;SET UP CP/M PARAMETERS + CALL INITP ;INITIALIZE BUFFER PARAMETERS + CALL ILPRT + DB 'DU3 - Disk Utility III, Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0' + DB CR,LF,CR,LF + DB DIM,'Type ? for Help',BRIGHT + DB CR,LF,0 +; +;Clear Editor Reference +; + XRA A + STA EDRUN ;EDITOR NOT RUNNING +; +;Save initial command line in INBUF +; + LXI H,TBUFF ;PT TO COMMAND LINE BUFFER + MOV A,M ;GET CHAR COUNTER + ora a ;check for no tail + jnz ctail ;if not, no need to increment + inr a ;allow for blank otherwise present +ctail: ; + INX H ;PT TO FIRST CHAR + ADD L ;COMPUTE LOCATION OF AFTER LAST CHAR + MOV L,A + MOV A,H + ACI 0 + MOV H,A + MVI M,CR ;SET ENDING CR + LHLD INBUF ;PT TO BUFFER + XCHG ;... IN DE + LXI H,TBUFF+2 ;PT TO INPUT LINE (1 changed to 2 ) + MVI B,128 ;COPY BUFFER + CALL MOVE +; +;Establish Initial Position +; + LXI D,0 ;GROUP 0 + CALL DEGROUP ;POSITION TO GROUP + CALL INQSUB ;PRINT POSITION +; +;Check for initial command +; + LHLD INBUF ;INPUT BUFFER + MOV A,M + CPI CR + JZ PRMPTR ;NO INITIAL COMMAND FROM COMMAND LINE + INX H ;PT TO FIRST CHAR +; +;Got initial command, set it up +; + MOV A,M ;GET FIRST CHAR + CPI '/' ;IF SLASH, PRINT INITIAL HELP (TOOLSET CONVENTION) + JZ IHELP ;PRINT INITIAL HELP INFO + XRA A + STA IHFLG ;SET NO INITIAL HELP +; line replaced +; JMP PRMPTI ;PROCESS AS THOUGH COMMAND LINE WAS TYPED + jmp prmpts ;allow processing of macros in command line +; +;Input Command Line From User at Console +; +PRMPTR: + XRA A ;A=0 + STA IHFLG ;Set No Initial Help + LDA EDRUN ;Check for Editor Running + ORA A + JNZ EDIT0 ;Reenter Editor + CALL SINBUF ;Save old INBUF into PINBUF +PRMPTE: + CALL RDBUF ;Read Input Line +PRMPTS: ;Entry when Command Line has Input + CALL EXMAC ;Expand Macros +; +;Begin Processing Command Line in INBUF +; At this point, HL points to next character to process +; +PRMPTI: + MVI A,0FFH ;SET INFINITE LOOP COUNT + STA TOGO ;LOOP COUNT FOR MULTIPLE LOOPS + STA TOGO+1 +; +;Minor Command Loop; This is the entry point for each individual command in +; a Command Line; Commands may be separated by semicolons in this manner +; +PROMPT EQU $ +SETSTK: + SHLD STKSAV ;SAVE HL FOR STACK LOAD + LHLD SAVBUF ;RESET STACK + SPHL + LHLD STKSAV ;RESTORE HL + XRA A ;ZERO 2-UP PRINT FOR DUAL-COLUMN PRINT + STA TWOUP ;..SWITCH + MVI A,1 + STA FTSW ;TELL SEARCH NOT TO INCR + PUSH H + LXI H,TBUFF ;SET NO-READ INPUT BUFFER ADDRESS + SHLD BUFAD ;FOR RDBYTE + POP H + CALL CTLCS ;ABORT? + JZ PRMPTR ;..YES, READ BUFFER +; +;Do we have to position in directory after find? +; + LDA FINDFL + ORA A + JNZ POSDIR ;POSITION IN DIRECTORY +; +;Begin Command Evaluation -- Check for EOL and Capitalize +; + MOV A,M ;GET NEXT CHAR IN COMMAND LINE + INX H ;POINT TO FOLLOWING CHAR + CPI CR ;END OF LINE PHYSICALLY? + JZ PRMPTR ;INPUT NEW COMMAND LINE IF SO + CPI EOLCH ;END OF LINE LOGICALLY? + JZ PROMPT ;PROCESS NEXT ELEMENT IF SO + CALL UPCASE ;CAPITALIZE COMMAND + STA DUMTYP ;TYPE OF DUMP (A,D,H) + LXI D,CMDTBL ;PT TO COMMAND TABLE + CALL CMD ;PROCESS + JMP WHAT ;ERROR RETURN +; +;Command dispatcher +; If command not found, abort with error message +; If command file, process command with HL pting to next command char and +; A containing command letter +; +CMD: + PUSH H ;SAVE HL + MOV B,A ;COMMAND IN B + XCHG ;HL PTS TO COMMAND TABLE +CMDLP: + MOV A,M ;GET COMMAND + ORA A ;0=END OF TABLE + JZ CMDER + CMP B ;COMPARE COMMAND + JZ CMDGO + INX H ;PT TO ADR + INX H + INX H ;PT TO NEXT CMND + JMP CMDLP +CMDGO: + INX H ;PT TO ADDRESS LOW + MOV E,M + INX H ;PT TO ADDRESS HIGH + MOV D,M + POP H ;RESTORE HL + POP PSW ;CLEAR RETURN ADDRESS + MOV A,B ;COMMAND BACK INTO A + PUSH D ;PLACE ADDRESS ON STACK + RET ;"RUN COMMAND" +CMDER: + POP H ;RESTORE HL + MOV A,B ;RESTORE COMMAND CHAR IN CASE CMD RUN + RET ;... IMMEDIATELY AGAIN ON A NEW TABLE +; +;Macro Expansion Routine -- Expand Macros +; +EXMAC: + LHLD CTEMP ;BUILD INTO TEMPORARY BUFFER + XCHG + LHLD INBUF ;PT TO INPUT LINE +EXMAC1: + MOV A,M ;GET CHAR + CPI '0' ;SKIP IF LESS THAN '0' + JC EXMAC2 + CPI '9'+1 ;CHECK FOR RANGE + JNC EXMAC2 + INX H ;PT TO NEXT CHAR + PUSH H ;SAVE PTR TO NEXT CHAR IN LINE + SUI '0' ;CONVERT TO BINARY (0-9) + MOV B,A ;RESULT IN B + MVI C,0 + LHLD MTABL ;PT TO BASE OF MACROS + DAD B ;PT TO MACRO + CALL COPYM ;COPY MACRO INTO LINE + DCX D ;BACK UP OVER + POP H ;GET PTR TO NEXT CHAR IN COMMAND LINE +EXMAC2: + MOV A,M ;GET CHAR + STAX D ;PUT CHAR + INX H ;PT TO NEXT + INX D + CALL MTEST ;TEST FOR END OF BUFFER + CPI CR ;DONE? + JZ EXMAC3 + CPI EOLCH ;LOGICAL EOL? + JNZ EXMAC2 + JMP EXMAC1 ;PROCESS NEXT COMMAND +EXMAC3: + LHLD CTEMP ;COPY COMMAND LINE BACK + XCHG + LHLD INBUF ;INTO INBUF + XCHG + CALL COPYCR ;COPY TO + LHLD INBUF ;PT TO INBUF + RET ;EXPANSION COMPLETE +; +;Copy Macro Into Command Line Buffer +; +COPYM: + MOV A,M ;GET CHAR + STAX D ;PUT CHAR + INX H ;PT TO NEXT + INX D + CALL MTEST ;CHECK FOR LIMIT + CPI CR ;END OF MACRO? + JNZ COPYM + RET +; +;Test for Buffer Full +; +MTEST: + PUSH H ;SAVE HL + PUSH PSW ;SAVE A + LHLD CTEMPX ;CHECK FOR END OF BUFFER + MOV A,H ;GET PAGE + CMP D ;CHECK PAGE + JZ MACERR + POP PSW ;GET A + POP H ;GET HL + RET +; +;Macro Command Expansion Error +; +MACERR: + CALL ILPRT + DB CR,LF,'Error -- Macro Expanded Command Line too Long',0 + JMP PRMPTR ;NEW COMMAND +; +;Save INBUF into PINBUF for later processing by '@' command +; +SINBUF: + LHLD PINBUF ;PT TO PINBUF (PREVIOUS INBUF) + XCHG + LHLD INBUF ;PT TO INBUF +; +;Copy (HL) to (DE) until Encountered +; +COPYCR: + MOV A,M ;GET CHAR + STAX D ;PUT CHAR + INX H ;PT TO NEXT + INX D + CPI CR ;DONE? + JNZ COPYCR + RET + +; +;Command Not Found Error +; +WHAT: + POP H ; RESTORE HL + CALL ILPRT + DB DIM,'Invalid Command at or after ',BRIGHT,0 + MOV A,B ;GET COMMAND LETTER + CALL TYPE ;PRINT IT + JMP PRMPTR +; +;Memory full error +; +MEMFUL: + CALL ILPRT + DB '+++ Out of memory +++' + DB CR,LF,0 + JMP PRMPTR +; +;COMMAND: E +;Edit Current Block +; +EROW EQU 6 ;FIRST ROW OF EDITOR DISPLAY +ECOL EQU 4 ;FIRST COL OF EDITOR DISPLAY +ECOLC EQU ECOL+16*3+2 ;FIRST COL OF EDITOR CHAR DISPLAY +ECURS EQU '>' ;EDITOR CURSOR +; +EDIT: + CALL SINBUF ;SAVE COMMAND LINE AS PREVIOUS + MVI A,0FFH + STA EDRUN ;EDITOR IS RUNNING +; +; SET UP ARROW KEYS +; + LHLD ENVPTR ;PT TO ENVIRONMENT DESCRIPTOR + LXI D,80H+10H ;PT TO ARROW KEY INFO + DAD D + LXI D,EDCURT ;PT TO CURSOR TABLE + MVI B,4 ;4 ARROW KEYS +EDITA: + MOV A,M ;GET CHAR + STAX D ;STORE CHAR + INX H ;PT TO NEXT + INX D ;PT TO NEXT ENTRY + INX D + INX D + DJNZ EDITA ;COUNT DOWN +; +; REENTER EDIT WITH PTRS RESET +; REFRESH EDIT SCREEN +; +EDIT0: + CALL CLS ;NEW SCREEN + CALL AT + DB 2,32 ;ROW 2, COL 32 + CALL ILPRT ;BANNER + DB 'DU3 Block Editor',0 + MVI H,EROW+9 ;POSITION FOR COMMAND DISPLAY + MVI L,1 + CALL GOTOXY ;POSITION CURSOR + CALL ILPRT ;PRINT COMMAND SUMMARY + DB ' -- Movement --' + DB ' -------------- Operation ---------------',CR,LF + DB ' ^E ' + DB DIM,'Enter: ',BRIGHT,'A',DIM,' ASCII Chars',BRIGHT + DB ' +',DIM,' Next Sector',BRIGHT,CR,LF + DB ' ^ ' + DB DIM,' ',BRIGHT,'H',DIM,' Hex Numbers',BRIGHT + DB ' -',DIM,' Last Sector',BRIGHT,CR,LF + DB ' ^S <-+-> ^D ' + DB ' ' + DB ' ^C',DIM,' Exit DU3 ',BRIGHT + DB CR,LF + DB ' v ' + DB 'C',DIM,' DU3 Command Line ',BRIGHT + DB ' ^R',DIM,' Rescreen ',BRIGHT,CR,LF + DB ' ^X ' + DB 'X',DIM,' Exit Editor to DU3',BRIGHT + DB ' ^W',DIM,' Write Block',BRIGHT + DB 0 + CALL AT + DB 2,65 + CALL ILPRT + DB DIM,'Position:',BRIGHT,0 +; JMP EDITCMD +; +; REFRESH SCREEN DISPLAY DATA ONLY +; +EDITR: + XRA A ;A=0 + STA EINDEX ;SET INDEX TO 0 (FIRST ELEMENT) + STA EDERR ;SET NO PREVIOUS ERROR + CALL AT ;POSITION CURSOR + DB EROW-2,ECOL + CALL INQSUB ;PRINT POSITION DATA + CALL EDPLOT ;PLOT BUFFER DATA +; +; INPUT EDITOR COMMAND +; +EDITCMD: + CALL EDERCL ;CLEAR EDITOR INVALID COMMAND MESSAGE +EDITCMD1: + CALL AT ;POSITION FOR COMMAND LINE + DB 22,10 + CALL ILPRT + DB DIM,'Edit Command? ',BRIGHT,BS,0 + CALL CONIN ;GET CHAR + CALL UPCASE ;CAPITALIZE + MOV B,A ;COMMAND IN B + LXI D,EDCURT ;PROCESS CURSOR COMMANDS FIRST + CALL CMD ;PROCESS COMMAND + LXI D,ECMDTBL ;EDITOR COMMAND TABLE + CALL CMD ;PROCESS COMMAND + MVI A,0FFH ;SET ERROR FLAG + STA EDERR + CALL AT ;CLEAR ERROR MESSAGE + DB 23,15 + CALL ILPRT + DB 'Invalid Command',0 + JMP EDITCMD1 +; +;Clear Editor Invalid Command Message +; +EDERCL: + LDA EDERR ;PREVIOUS ERROR? + ORA A ;0=NO + RZ + XRA A ;CLEAR FLAG + STA EDERR + CALL AT ;CLEAR ERROR MESSAGE + DB 23,15 + CALL ILPRT + DB ' ',0 + RET +; +;PLOT BUFFER DATA +; +EDPLOT: + MVI H,EROW ;SET ROW + MVI L,ECOL-1 ;SET COLUMN + CALL GOTOXY ;POSITION CURSOR + XCHG ;POSITION IN DE + LXI H,TBUFF ;PT TO DATA + MVI B,8 ;8 LINES +EDIT00: + MVI C,16 ;16 ELEMENTS + CALL SPACE ;PRINT LEADING SPACE +EDIT01: + MOV A,M ;GET BYTE + CALL HEX ;PRINT AS HEX + CALL SPACE ;PRINT 1 SPACE + INX H ;PT TO NEXT + DCR C ;COUNT DOWN + JNZ EDIT01 + XCHG ;POSITION AGAIN + INR H ;NEXT ROW + CALL GOTOXY + XCHG + DCR B ;COUNT DOWN + JNZ EDIT00 + MVI H,EROW ;RESET ROW + MVI L,ECOLC ;RESET COL + CALL GOTOXY ;POSITION CURSOR + XCHG ;POSITION IN DE + LXI H,TBUFF ;PT TO DATA + MVI B,8 ;8 LINES +EDIT02: + CALL ASTER ;PRINT BAR + MVI C,16 ;16 ELEMENTS +EDIT03: + MOV A,M ;GET BYTE + ANI 7FH ;MASK MSB + CPI 7FH ;7FH IS DOT + JZ EDIT7F + CPI ' ' ;SPACE OR MORE? + JNC EDIT04 +EDIT7F: + MVI A,'.' ;PRINT DOT +EDIT04: + CALL TYPE ;PRINT BYTE + INX H ;PT TO NEXT + DCR C ;COUNT DOWN + JNZ EDIT03 + CALL ASTER ;PRINT ENDING BAR + XCHG ;POSITION AGAIN + INR H ;NEXT ROW + CALL GOTOXY + XCHG + DCR B ;COUNT DOWN + JNZ EDIT02 + CALL EDCUR ;POSITION CURSOR + RET +; +;EDITOR COMMAND TABLE +; +ECMDTBL: + DB CR ;NOP + DW EDITCMD + DB 'C'-'@' ;^C = EXIT DU3 + DW EDCC + DB 'R'-'@' ;^R = REFRESH + DW EDIT0 + DB 'E'-'@' ;^E=UP + DW EDUP + DB 'X'-'@' ;^X=DOWN + DW EDDOWN + DB 'D'-'@' ;^D=RIGHT + DW EDRIGHT + DB 'S'-'@' ;^S=LEFT + DW EDLEFT + DB 'W'-'@' ;WRITE BLOCK + DW EDITWR + DB ' ' ;NOP + DW EDITCMD + DB '+' ;ADVANCE + DW EDITPLUS + DB '-' ;BACKUP + DW EDITMINUS + DB 'A' ;CHANGE ALPHA + DW EDITALP + DB 'C' ;COMMAND LINE + DW EDITCL + DB 'H' ;CHANGE HEX + DW EDITHEX + DB 'X' ;EXIT + DW EDITX + DB 0 ;END OF TABLE +; +; ARROW KEY DEFINITONS FROM TCAP +; +EDCURT: + DB 0 ;0 INDICATES NO ARROW KEYS + DW EDUP + DB 0 + DW EDDOWN + DB 0 + DW EDRIGHT + DB 0 + DW EDLEFT + DB 0 ;END OF TABLE +; +;EDITOR BUFFERS +; +EINDEX: + DS 1 ;INDEX ENTRY +EDERR: + DS 1 ;ERROR FLAG +EDRUN: + DS 1 ;FLAG SAYING THAT EDITOR IS RUNNING +; +;Write Block to Disk +; +EDITWR: + CALL EDERCL ;CLEAR ERROR LINE + CALL WRITE ;WRITE BLOCK + CALL AT + DB 23,15 ;MESSAGE + CALL ILPRT + DB 'Block Written',0 + MVI A,0FFH ;SET ERROR + STA EDERR + JMP EDITCMD1 +; +;Enter ASCII Chars +; +EDITALP: + CALL EDERCL ;CLEAR ERROR LINE + CALL AT + DB 22,35 + CALL ILPRT + DB DIM,'Enter Text ( for Hex)',BRIGHT + DB CR,LF,' --> ',0 + CALL RDBUF1 ;INPUT TEXT WITHOUT PROMPT + CALL EDPRCL ;CLEAR PROMPT LINE + LDA EINDEX ;PT TO POSITION + LXI D,TBUFF ;COMPUTE OFFSET + ADD E + MOV E,A + MOV A,D + ACI 0 + MOV D,A ;DE PTS TO BYTE, HL PTS TO TEXT +EDITA1: + MOV A,M ;GET CHAR + CPI CR ;EOL? + JZ EDITA2 ;REFRESH SCREEN + CALL GETVAL ;GET ASCII OR VALUE + STAX D ;UPDATE BYTE + INX H ;PT TO NEXT INPUT CHAR + INR E ;PT TO NEXT BUFFER BYTE + JNZ EDITA1 +EDITA2: + CALL EDPLOT ;REPLOT + JMP EDITCMD1 ;DONE-REFRESH SCREEN +; +;Enter Numbers +; +EDITHEX: + CALL EDERCL ;CLEAR ERROR LINE + CALL AT + DB 22,35 + CALL ILPRT + DB DIM,'Enter Hex Numbers (#nn for Dec)' + DB BRIGHT + DB CR,LF,' --> ',0 + CALL RDBUF1 ;INPUT TEXT WITHOUT PROMPT + CALL EDPRCL ;CLEAR PROMPT LINE + LDA EINDEX ;PT TO POSITION + LXI D,TBUFF ;COMPUTE OFFSET + ADD E + MOV E,A + MOV A,D + ACI 0 + MOV D,A ;DE PTS TO BYTE, HL PTS TO TEXT +EDITH1: + MOV A,M ;GET HEX DIGIT + CPI CR ;EOL? + JZ EDITA2 ;REFRESH SCREEN + CPI ' ' ;SKIP SPACES + JNZ EDITH2 + INX H ;SKIP SPACE + JMP EDITH1 +EDITH2: + PUSH D ;SAVE PTR + CALL HEXIN ;GET VALUE AND POSITION HL + MOV A,E ;... IN A + POP D ;GET PTR + STAX D ;PUT BYTE + INR E ;ADVANCE TO NEXT BYTE + JNZ EDITH1 + JMP EDITA2 ;DONE-REFRESH +; +;CLEAR PROMPT LINE +; +EDPRCL: + CALL AT ;PROMPT LINE + DB 22,35 + MVI B,40 ;40 POSITIONS + CALL EDPCL + CALL AT ;USER INPUT + DB 23,1 + MVI B,79 ;79 POSITIONS +EDPCL: + CALL SPACE ;CLEAR PROMPT LINE WITH SPACES + DCR B + JNZ EDPCL + RET +; +;Enter Command Line from Editor +; +EDITCL: + CALL EDERCL ;CLEAR ERROR LINE + CALL CRLF ;NEW LINE + JMP PRMPTE ;GET COMMAND LINE FROM USER +; +;Advance to Next Block +; +EDITPLUS: + CALL NXTSEC ;ADVANCE SECTORS +EDITP1: + PUSH H + LHLD CURSEC + XCHG + CALL SETSEC ;SET SECTOR + LHLD CURTRK + XCHG + CALL SETTRK ;SET TRACK + POP H + CALL READ ;READ IN BLOCK + CALL CLCSUB ;CALCULATE GROUP DATA + JMP EDITR ;REFRESH DATA +; +;Backup to Last Block +; +EDITMINUS: + CALL LSTSEC ;BACKUP BLOCK + JMP EDITP1 +; +;Exit EDIT Mode +; +EDITX: + XRA A + STA EDRUN ;EDITOR IS NOT RUNNING NOW + CALL EDERCL ;CLEAR ERROR LINE + JMP PRMPTR +; +;Exit DU3 +; +EDCC: + CALL EDERCL ;CLEAR ERROR LINE + JMP EXIT +; +;EDIT MOVE: UP +; +EDUP: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;BACKUP INDEX BY 16 + SUI 16 +; +;Common EDIT MOVE Routine - on input, A=new index +; +EDMOVE: + ANI 7FH ;MOD 128 + STA EINDEX + CALL EDCUR ;SET CURSOR + JMP EDITCMD +; +;EDIT MOVE: DOWN +; +EDDOWN: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;INCREMENT INDEX BY 16 + ADI 16 + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT MOVE: RIGHT +; +EDRIGHT: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;INCREMENT INDEX BY 1 + INR A + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT MOVE: LEFT +; +EDLEFT: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;DECREMENT INDEX BY 1 + DCR A + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT SUBROUTINE: EDCUR +; Position Editor Cursor at EINDEX +;EDIT SUBROUTINE: EDCCUR +; Clear Editor Cursor at EINDEX +; +EDCUR: + PUSH H ;SAVE HL + MVI C,ECURS ;CURSOR CHAR + CALL EDSETCUR + CALL AT ;UPDATE DATA + DB 2,75 + LDA EINDEX ;PT TO BYTE AT CURSOR + LXI H,TBUFF + ADD L + MOV L,A + MOV A,H + ACI 0 + MOV H,A ;HL PTS TO BYTE AT CURSOR + MOV A,M ;GET BYTE + CALL HEX ;PRINT AS HEX + CALL SPACE + MOV A,M ;GET BYTE + POP H ;RESTORE HL + ANI 7FH ;MASK + CPI 7FH ;7FH IS DOT + JZ EDC7F + CPI ' ' ;OUTPUT CHAR OR DOT + JNC TYPE +EDC7F: + MVI A,'.' ;DOT + JMP TYPE +EDCCUR: + MVI C,' ' ;CLEAR CURSOR +EDSETCUR: + CALL EDROW ;COMPUTE ROW + ANI 0FH ;COMPUTE COL MOD 16 + MOV B,A ;RESULT IN B + ADD A ;*2 + ADD B ;*3 + ADI ECOL ;ADD IN COL + DCR A ;SUBTRACT 1 + MOV L,A ;COL POSITION SET + CALL GOTOXY ;POSITION CURSOR + MOV A,C ;OUTPUT CHAR + JMP TYPE +; +;Compute Row from EINDEX +; +EDROW: + LDA EINDEX ;GET INDEX + MOV B,A ;SAVE IN B + RRC ;DIVIDE BY 16 + RRC + RRC + RRC + ANI 0FH ;MASK FOR LSB ONLY + ADI EROW ;COMPUTE ROW + MOV H,A ;ROW SET + MOV A,B ;GET INDEX + RET +; +;COMMAND: @ +;Repeat Previous Command Line +; +PCMD: + MOV A,M ;GET NEXT CHAR + CPI CR ;SHOULD BE + JZ PCMD1 + CALL ILPRT + DB CR,LF,'Warning: Remainder of Command Line after "@" Deleted',0 +PCMD1: + CALL ILPRT + DB CR,LF,DIM,'Command --',BRIGHT,CR,LF,0 + LHLD INBUF ;COPY INTO INBUF + XCHG + LHLD PINBUF ;GET PREVIOUS COMMAND +PCMD2: + MOV A,M ;GET CHAR + STAX D ;PUT CHAR + INX H ;PT TO NEXT + INX D + CPI CR ;END OF LINE? + PUSH PSW ;SAVE FLAG + CALL TYPE ;PRINT CHAR + POP PSW ;GET FLAG + JNZ PCMD2 + MVI A,LF ; + CALL TYPE + LHLD INBUF ;RESTART COMMAND PROCESSING + JMP PRMPTI ;INCLUDE LOOP CAPABILITY +; +;COMMAND: : +;Define or Print Macro +;:n Defines Macro n, 0<=n<=9; ::n Prints Macro n, 0<=n<=9 +; +MAC: + MOV A,M ;GET NEXT CHAR + CALL UPCASE ;CAPITALIZE + CPI 'P' ;PRINT MACRO? + JNZ MACROD ;IF NOT, DEFINE MACRO + INX H ;PT TO MACRO NUMBER + MOV A,M ;GET IT + CALL UPCASE ;CAPITALIZE + CPI '@' ;PRINT PREVIOUS COMMAND? + JZ PCPR + PUSH PSW ;SAVE A + call cls + cz crlf + CALL ILPRT + DB DIM,'Macro Definitions --',BRIGHT,0 + POP PSW ;GET A + CPI 'A' ;PRINT ALL MACROS? + JZ AMACPR + CALL MNUM ;CHECK FOR VALID NUMBER AND RETURN # IN D + INX H ;PT TO CHAR AFTER MACRO NUMBER + CALL MACPR ;PRINT MACRO WHOSE NUMBER IS IN D + JMP PROMPT +; +;Print Previous Command +; +PCPR: + INX H ;PT TO CHAR AFTER '@' + LXI D,PROMPT ;SET UP RET ADR + PUSH D ;RETURN ADR ON STACK + PUSH H ;SAVE PTR + CALL ILPRT + DB DIM,'Previous Command Line Definition --',BRIGHT + DB CR,LF,'@: ',0 + LHLD PINBUF ;PT TO PREVIOUS COMMAND + JMP MPRINT ;USE MACRO PRINT FACILITY +; +;Print All Macros +; +AMACPR: + INX H ;PT TO CHAR AFTER 'A' + MVI D,0 ;SET FOR FIRST MACRO +AMPRL: + CALL MACPR ;PRINT MACRO WHOSE NUMBER IS IN D + INR D ;INCREMENT MACRO NUMBER + MOV A,D ;GET VALUE + CPI 10 ;DONE? + JNZ AMPRL + JMP PROMPT ;CONTINUE PROCESSING +; +;Print Macro Whose Number (0-9) is in D +; +MACPR: + PUSH H ;SAVE PTR + CALL ILPRT ;PRINT HEADER + DB CR,LF,DIM,0 + MOV A,D ;GET NUMBER + ADI '0' ;CONVERT TO ASCII + CALL TYPE ;PRINT + CALL ILPRT + DB ': ',BRIGHT,0 + LHLD MTABL ;PT TO TABLE OF MACROS + MVI E,0 ;PAGE OFFSET OF ZERO; MACRO NUMBER ALREADY IN D + DAD D ;PT TO MACRO +MPRINT: + MOV A,M ;GET CHAR + INX H ;PT TO NEXT + CPI CR ;END OF MACRO? + PUSH PSW ;SAVE FLAG + CALL TYPE ;PRINT CHAR + POP PSW ;GET FLAG + JNZ MPRINT + MVI A,LF ; + CALL TYPE + POP H ;GET PTR TO NEXT CHAR + RET +; +;Check char in A for valid Macro Number (0-9), print error message if +; not, return number in D if so +; +MNUM: + SUI '0' ;CONVERT TO 0-9 + JC MNERR ;ERROR IF LESS + CPI 10 ;RANGE? + JNC MNERR + MOV D,A ;RESULT IN D + RET +MNERR: + CALL ILPRT + DB CR,LF,'Invalid Macro Number Specified in Command',0 + JMP PRMPTR ;NEW COMMAND +; +;Define Macro +; +MACROD: + CALL MNUM ;CHECK NUMBER AND RETURN IN D + INX H ;PT TO CHAR AFTER MACRO NUMBER + PUSH H ;SAVE PTR + LHLD MTABL ;PT TO MACRO TABLE + MVI E,0 ;SET EVEN PAGE + DAD D ;PT TO MACRO ENTRY IN HL + XCHG ;... IN DE + POP H ;PT TO MACRO TEXT + CALL COPYCR ;COPY TO + JMP PRMPTR ;NEW COMMAND +; +;COMMAND: ! +;Delay for user input +; +UWAIT: + CALL WAIT ; USE WAIT ROUTINE + JMP PROMPT +; +;COMMAND: # +;Print disk statistics +; +STATS: + PUSH H ;SAVE POINTER TO NEXT COMMAND + call cls + cz crlf + CALL ILPRT + DB DIM + DB ' -- Queue Information --',BRIGHT,CR,LF + DB CR,LF + DB 0 + CALL QSTATS ;PRINT STATUS INFO + CALL ILPRT + DB CR,LF + DB DIM + DB ' -- Disk Information --',BRIGHT,CR,LF + DB CR,LF + DB DIM,'Disk Drive: ',BRIGHT,0 + LDA DRIVE + ADI 'A' ;CONVERT TO ASCII + CALL TYPE ;PRINT DRIVE LETTER + CALL ILPRT + DB CR,LF,DIM,'Tracks: ',BRIGHT,0 + LHLD MAXTRK ;PRINT NUMBER OF TRACKS + INX H + CALL DEC + CALL ILPRT + DB CR,LF,DIM,'Sectors/Track: ',BRIGHT,0 + LHLD SPT ;PRINT NUMBER OF SECTORS/TRACK + CALL DEC + CALL ILPRT + DB CR,LF,DIM,'Group Size: ',BRIGHT,0 + LDA BLM ;PRINT SIZE OF A GROUP + INR A + MOV L,A + MVI H,0 + CALL DEC + CALL ILPRT + DB DIM,' Blocks/Group',BRIGHT + DB CR,LF,DIM,'Total Groups: ',BRIGHT,0 + LHLD DSM ;PRINT TOTAL NUMBER OF GROUPS ON A DISK + CALL DEC + CALL ILPRT + DB CR,LF,DIM,'Directory Entries: ',BRIGHT,0 + LHLD DRM ;PRINT NUMBER OF DIRECTORY ENTRIES + INX H + CALL DEC + CALL ILPRT + DB CR,LF,DIM,'System Tracks: ',BRIGHT,0 + LHLD SYSTRK ;PRINT NUMBER OF SYSTEM TRACKS + CALL DEC + CALL SWAIT + POP H ;RESTORE POINTER TO NEXT COMMAND + JMP PROMPT +; +;COMMAND: N +;The following command resets the disk +;system thru CP/M, and may be usable for +;changing the disk density or format. +;This can only be done if your BIOS resets +;the auto-density select parameters at +;every track-zero access. +; +NEWDSK: + PUSH H ;SAVE POINTER TO NEXT LETTER + MVI C,RESETDK ;BDOS RESET DISK FUNCTION + CALL BDOS + LDA DRIVE ;RESELECT CURRENT DRIVE + MOV C,A + POP H + CALL SELECT + JMP PROMPT +; +;COMMAND: Q +;Queue Control +; +QUEUER: + MOV A,M ;GET 2ND ARGUMENT + CALL UPCASE ;CAPITALIZE + CPI EOLCH ;END OF LINE? + JZ QSTAT ;STATUS REPORT + CPI CR ;END OF LINE? + JZ QSTAT + INX H ;PT TO AFTER KEY CHAR + PUSH H ;SAVE PTR + CPI 'Z' ;ZERO QUEUE? + JZ QZERO + CPI 'S' ;SAVE QUEUE? + JZ QFSAVE + POP H ;GET PTR + CALL ILPRT + DB 'Invalid Queue Command',CR,LF,0 + JMP PRMPTR ;ABORT LINE ON ERROR +; +; Zero the Queue +; +QZERO: + LHLD DIRECT ;ZERO QUEUE + SHLD QNXT ;SET NEXT + SHLD QLST ;SET LAST + LXI H,0 ;ZERO COUNT + SHLD QCNT + POP H ;GET PTR AND FALL THRU TO QSTAT +; +; Print Status of Queue +; +QSTAT: + PUSH H ;SAVE PTR TO NEXT CHAR + call cls + cz crlf + CALL ILPRT + DB DIM + DB '** Queue Status Summary **' + DB BRIGHT + DB CR,LF,0 + CALL QSTATS ;PRINT STATUS + POP H ;RESTORE PTR + JMP PROMPT +QSTATS: + LHLD QCNT ;GET SIZE OF QUEUE + CALL PRQCNT ;PRINT DATA + CALL PRQSPAC ;PRINT SPACE AVAILABLE INFO + CALL ILPRT + DB CR,LF + DB DIM,'Group Save Buffer Address: ',BRIGHT,0 + PUSH H + LHLD GBUFF ;BC=ADDRESS + MOV B,H + MOV C,L + POP H + CALL HEXB1 ;PRINT AS HEX + CALL ILPRT + DB ' Hex',CR,LF + DB 0 + CALL ILPRT + DB DIM,'Address of Head of Queue: ',BRIGHT,0 + LHLD QNXT ;PRINT ADDRESS OF HEAD OF QUEUE + MOV B,H ;... ADDRESS IN BC + MOV C,L + CALL HEXB1 ;PRINT IN HEX + CALL ILPRT + DB ' Hex',CR,LF + DB DIM,'Address of Tail of Queue: ',BRIGHT,0 + LHLD QLST ;PRINT ADDRESS OF TAIL OF QUEUE + MOV B,H + MOV C,L + CALL HEXB1 + CALL ILPRT + DB ' Hex',CR,LF,0 + RET +; +; Print Amount of Space Left in Queue +; +PRQSPAC: + LXI B,-1 ;SET COUNT + LHLD QLST ;GET PTR TO QUEUE TAIL +QSTAT1: + INX B ;INCREMENT COUNT + LXI D,80H ;PT TO NEXT QUEUE ELEMENT + DAD D + XCHG ;WRAP AROUND + CALL QWRAP + LHLD QNXT ;GET PTR TO FIRST ELEMENT + XCHG + MOV A,H ;COMPARE + CMP D + JNZ QSTAT1 + MOV A,L + CMP E + JNZ QSTAT1 + MOV H,B ;HL=BLOCK COUNT + MOV L,C + CALL DEC ;PRINT AS DECIMAL + CALL ILPRT + DB DIM,' Blocks Left in Queue',BRIGHT,CR,LF,0 + RET +; +; Save Queue as a File +; +QFSAVE: + MOV A,M ;GET FIRST CHAR OF FILE NAME + CPI EOLCH ;EOL? + JZ WHAT + CPI CR ;EOL? + JZ WHAT + LXI D,FCB ;START TO FILL FCB + XRA A ;A=0 + STAX D ;SELECT DEFAULT DRIVE + INX D ;PT TO FILE NAME + MVI B,8 ;SAVE FILE NAME + CALL MVNAME + MVI B,3 ;SAVE FILE TYPE + CALL MVNAME + PUSH H ;SAVE PTR TO NEXT CHAR + LHLD QCNT ;ANY ELEMENTS IN QUEUE? + MOV A,H + ORA L + JZ QEMPTY + PUSH H ;SAVE QUEUE COUNT + CALL NORITE ;CAN'T WRITE NOW + LXI D,FCB ;PT TO FCB + CALL FCBINIT ;INIT FCB + MVI C,DELF ;DELETE FILE + PUSH D ;SAVE DE + CALL BDOS + POP D + CALL FCBINIT ;INIT FCB AGAIN + MVI C,MAKEF ;CREATE FILE + CALL BDOS + POP B ;GET QUEUE COUNT IN BC + LHLD QNXT ;PT TO NEXT BLOCK IN QUEUE +QFS1: + PUSH B ;SAVE COUNT + LXI D,TBUFF ;COPY INTO TBUFF + MVI B,128 ;128 BYTES + CALL MOVE + XCHG ;PT TO NEXT QUEUE BLOCK IN DE + CALL QWRAP ;WRAP AROUND + PUSH D ;SAVE PTRS + LXI D,FCB ;PT TO FCB + MVI C,WRITEF ;WRITE BLOCK TO FILE + CALL BDOS + POP H ;GET PTR TO NEXT BLOCK + POP B ;GET COUNT + DCX B ;COUNT DOWN + MOV A,B ;DONE? + ORA C + JNZ QFS1 + LXI D,FCB ;CLOSE FILE + MVI C,CLOSEF + CALL BDOS + CALL ILPRT + DB 'Queue Saved in File',CR,LF,0 + POP H ;PT TO NEXT CHAR + JMP PROMPT +FCBINIT: + PUSH D ;SAVE PTR + LXI H,12 ;SKIP TO EX FIELD + DAD D + MVI B,24 ;ZERO 36 BYTES + XRA A ;A=0 +FCBIN1: + MOV M,A ;STORE ZEROES + INX H + DJNZ FCBIN1 + POP D ;RESTORE PTR + RET +; +;COMMAND: * +;Repeat buffer contents +; +REPEAT: + CALL DECIN ;NN SPECIFIED? + MOV A,D + ORA E + JZ NNN ;NO -- SET FOR INFINITE LOOP OR SIMPLE REPEAT + LHLD TOGO ;LOAD LOOP FLAG + INX H ;TEST FOR FIRST TIME + MOV A,H + ORA L ;WAS IT 0FFFFH?; IF SO, WE HAVE NEW VALUE + JNZ NNN ;NO: COUNTING + XCHG ;GET COUNT + SHLD TOGO ;SET COUNT +; +NNN: + LHLD TOGO ;GET CURRENT COUNT + XCHG ;DE=CURRENT COUNT, HL=COUNT LIMIT + LHLD INBUF ;PT TO FIRST CHAR FOR REPEAT + INX D ;TEST FOR 0FFFFH + MOV A,D ;IF 0FFFFH, INX D MADE DE=0 + ORA E + JZ PROMPT ;CONTINOUS LOOP IF 0FFFFH + DCX D ;COUNT DOWN + DCX D ;MAKE UP FOR PREV INX D + XCHG + SHLD TOGO ;SET NEW COUNT (1 LESS THAN BEFORE) + MOV A,H ;ALL DONE? + ORA L + XCHG ;GET BACK INBUF PTR IN HL + JNZ PROMPT ;KEEP GOING IF NOT YET ZERO + JMP PRMPTR ;ALL DONE +; +;COMMAND: U +;Set CP/M 2.x user number +; +USER: + CALL DECIN ;GET REQUESTED USER NO. + LDA MUSER ;GET MAX USER + MOV B,A ;... IN B + MOV A,E + CMP B ;VALID? + JNC USRERR + MOV A,D ;HIGH-ORDER BYTE MUST BE ZERO FOR VALID NUMBER + ORA A + JNZ USRERR + MOV A,E ;SAVE USER NUMBER + STA UNUM + MVI C,SUSER ;SET USER NUMBER + PUSH H ;SAVE CHAR POINTER + CALL BDOS ;SET USER NO. + POP H + JMP PROMPT +USRERR: + CALL ILPRT + DB 'User Number Out of Range',CR,LF,0 + JMP PRMPTR +; +;COMMAND: P +;Toggle print flag +; +PRNTFF: + LDA PFLAG ;TOGGLE PRINT FLAG + XRI 1 + STA PFLAG + JMP PROMPT +; +;COMMAND: Z +;Sleep routine, in seconds +; +SLEEP: + CALL DECIN ;GET COUNT IF ANY + MOV A,E ;ANY? + ORA A + JNZ SLEPLP + MVI E,1 ; 1 SEC DEFAULT +; +SLEPLP: + LDA CLOCK ; GET CLOCK SPEED + MOV D,A +; +SLEEP1: + LXI B,41700 ; APPROX 1 SEC @ 1MHz +; +SLEEP2: + DCX B ;COUNT DOWN FOR 1 MHz [5 CYCLES] + MOV A,B ;[5 CYCLES] <-- TOTAL TIME: 24 CYCLES + ORA C ;[4 CYCLES] <-- (24 MU-SECS AT 1MHz) + JNZ SLEEP2 ;[10 CYCLES] + PUSH D + CALL CTLCS ;ABORT? + POP D + JZ PRMPTR + DCR D ;COUNT DOWN FOR CLOCK SPEED + JNZ SLEEP1 + DCR E ;COUNT DOWN NUMBER OF REQUESTED SECONDS + JNZ SLEPLP + JMP PROMPT +; +;Check for control-C or S +; +CTLCS: + CALL CONST ;CHAR AVAILABLE? + ORA A + JNZ GETC + ORI 1 ;NO CHAR, RETURN NZ + RET +; +GETC: CALL CONIN ;INPUT CHAR + ANI 1FH ;ALLOW ASCII + CPI 'S'-40H ;WAIT FOR NEXT CHAR IF ^S OR S OR s + CZ CONIN + CPI 'C'-40H ;CHECK FOR ^C OR C OR c + RET ;0 SET IF CTL-C +; +;Initialize Memory Buffers +; +INITP: + XRA A ;A=0 + STA HEXAD ;CLEAR ADDRESS + STA HEXAD+1 + STA PFLAG ;SET NO PRINT + STA SAVEFL ;SET NO SAVE DONE + STA WRFLG ;MAY NOT WRITE + STA DIRPOS ;SET NO DIRECTORY POSITION + STA FINDFL ;SET NO POSITION + INR A ;A=1 + STA FTSW ;SET SEARCH WITHOUT INCREMENT + STA NOTPOS ;NOT POSITIONED + LXI H,0 ;HL=0 + SHLD QCNT ;SET NO ELEMENTS IN QUEUE + SHLD MFPTR ;SET NO MULTI FILE PTR + SHLD CURTRK ;SET TRACK 0 + INX H ;HL=1 + SHLD CURSEC ;SET LOGICAL SECTOR 1 + SHLD PHYSEC ;SET PHYSICAL SECTOR 1 + LHLD PINBUF ;SET PREVIOUS COMMAND TO NIL + MVI M,CR ;CLEAR PREVIOUS COMMAND + LHLD DIRECT ;SET FIRST AND LAST QUEUE ELEMENT PTRS + SHLD QNXT + SHLD QLST + + ; Initialize Default Macros -- new block by + + LHLD MTABL ;CLEAR MACRO TABLE + MVI B,10 ;10 ENTRIES + lxi d,imac0 ;point to beginning of default macro table + +initp1: push h ;save pointer to start of each macro + +initp2: ldax d ;get next initial macro character + mov m,a ;store it in macro table + inx d + inx h + cpi cr ;end of macro? + jnz initp2 + + pop h ;retrieve pointer to start of this macro + dcr b ;see if we've done all macros + rz ;if so, return + inr h ;point to next macro + jmp initp1 + +;INITP1: +; MVI M,CR ;STORE +; INR H ;PT TO NEXT PAGE +; DJNZ INITP1 +; RET + +; End of Block Changed by + +; +;Set up flags, etc, at initialization +;Find our way at initialization +; +GETSTP: + PUSH H + LHLD INBUF ;PT TO INPUT BUFFER + MVI M,CR ;INITIALIZE INPUT BUFFER + POP H + MVI C,SUSER ;GET USER NUMBER + MVI E,0FFH ;GET USER + CALL BDOS + STA UNUM ;SET USER NUMBER + MVI C,GETDSK + CALL BDOS ;GET CURRENT DISK + MOV C,A ;WE HAVE TO SELECT + JMP SELECT ;TO GET THE DPH +; +;COMMAND: L +;Log in the selected disk +; +LOGIN: + CALL DOLOG + JMP PROMPT +; +DOLOG: + MOV A,M ;DISK REQUESTED? + LXI D,0 + CPI CR ;NO REQUEST OF PHYSICAL EOL + JZ LGNODK + CPI EOLCH ;NO REQUEST IF LOGICAL EOL + JZ LGNODK + CALL UPCASE ;CAPITALIZE + INX H ;POINT TO NEXT CHAR + SUI 'A' ;CONVERT TO 0-15 + MOV C,A ;DISK NUMBER IN C + LDA MDISK ;GET MAX DISK + MOV B,A ;... IN B + MOV A,C + CMP B + JC SELECT + CALL ILPRT + DB 'Disk Letter Out of Range',CR,LF,0 + JMP PRMPTR +; +;Select Disk Whose Number is in C (A=0, B=1, etc) +; +SELECT: + PUSH H ;SAVE PTR TO NEXT COMMAND LETTER + MOV A,C + STA DRIVE ;REMEMBER LATER WHERE WE ARE +; +VSELDK: CALL $-$ ;ADDR FILLED IN BY 'INIT' + MOV A,H + ORA L + JZ WHAT ;SELECT ERROR + MOV E,M ;GET THE SECTOR TABLE PNTR + INX H + MOV D,M + INX H + XCHG + SHLD SECTBL ;SET THE SECTOR TABLE PTR + LXI H,8 ;OFFSET TO DPBPTR + DAD D + MOV A,M ;PICK UP DPB POINTER + INX H ; TO USE + MOV H,M ; AS PARAMETER + MOV L,A ; TO LOGIT + CALL LOGIT + LHLD SYSTRK ;RESET TRACK AND SECTOR + XCHG ; TO DIRECTORY + CALL SETTRK ; ON EVERY + LXI D,1 ; LOGIN + CALL SETSEC ; CHANGE + LHLD PHYSEC ;THIS LOGIC WILL TELL + MOV A,H ; IF FIRST SEC + ORA L ; IS PHYSICAL 0 + STA FIRST0 + CALL CLCSUB ;CALCULATE WHAT GROUP/GRPDISP WE ARE IN + POP H ;GET PTR TO NEXT LETTER +; +LGNODK: + CALL NORITE ;SET NO DISK I/O DONE (NO POSITION) + RET +; +;Read in the disk directory +; +REDDIR: + PUSH H ;SAVE PTR TO NEXT LETTER + CALL NORITE ;POSITIONING LOST + LHLD SYSTRK ;SAVE CURRENT TRACK + SHLD CURTRK + LXI H,1 ;SET SECTOR 1 + SHLD CURSEC + LHLD DRM ;GET DIR SIZE FROM DPB + INX H ;MAKE 1-RELATIVE + CALL ROTRHL + CALL ROTRHL ;DIVIDE BY 4 (4 NAMES/SECTOR) + MOV B,H ;BC=NUMBER OF BLOCKS TO READ + MOV C,L + XCHG + LHLD DIRECT ;DMA ADDR + XCHG ;... IN DE +; +;Read Disk Directory Loop +; +RDIRLP: + PUSH B ;SAVE REGS + PUSH D + MOV B,D ;BC=DMA ADDRESS + MOV C,E + LDA BDOS+2 ;CHECK MEM AVAIL + DCR A ;ARE WE RNNING INTO BDOS? + CMP D + JC MEMFUL ;MEMORY FULL ERROR IF SO + CALL SETDMA ;SET DMA ADDRESS TO THAT IN BC + LHLD CURTRK ;SET TRACK + XCHG + CALL SETTRK + LHLD CURSEC ;SET SECTOR + XCHG + CALL SETSEC + CALL READ ;READ DIRECTORY BLOCK + CALL NXTSEC ;INCREMENT TO NEXT SECTOR + POP D + POP B + LXI H,80H ;ADVANCE TO NEXT DMA ADDRESS + DAD D + XCHG ;DE=NEXT DMA ADDRESS + DCX B ;COUNT DOWN DIRECTORY BLOCKS + MOV A,B + ORA C + JNZ RDIRLP + LXI B,TBUFF ;RESET DMA ADDRESS TO TBUFF + CALL SETDMA + POP H ;GET PTR TO NEXT CHAR + RET +; +;COMMAND: M +;Map the directory +; +MAP: + PUSH H ;SAVE PTR + LHLD QCNT ;GET COUNT + MOV A,H + ORA L + POP H + JZ MAP1 ;PROCEED IF QUEUE EMPTY + CALL ILPRT ;PRINT ABORT MESSAGE + DB CR,LF,'MAP not permitted -- Block Queue would be overlaid',0 + JMP PRMPTR +MAP1: + CALL PAGSET ;SET PAGING COUNTER + XRA A + STA ONLY1 ;SET FLAG FOR ALL GROUPS (NOT ONLY 1) + CALL REDDIR ;READ IN DIRECTORY + MVI C,0 ;INIT START GRP # + LDA AL0 ;READ DIR GRP BITS + CALL COLECT ;COLLECT COUNT OF DIR GRPS.. + LDA AL1 ;..IN REGISTER C + CALL COLECT + MVI B,0 ;BC NOW HAS A DEFAULT START GRP # + CALL HEXIN ;GET SPECIFIED GROUP IF ANY + PUSH H ;SAVE INBUF PTR + MOV A,E ;GET START + ORA D ;NOTHING? + JZ MAPDF ;..YES, DFLT + MVI A,0FFH ;SET FLAG FOR ONLY 1 GROUP + STA ONLY1 + MOV B,D ;GET VALUE IN BC + MOV C,E +; +MAPDF: + CALL HEXB ;PRINT FIRST GROUP NUMBER + MVI A,'-' ;PRINT SEPARATOR + CALL TYPE + MVI A,' ' ;SET NO DUPLICATES + STA DUPFLG + CALL GETGRP ;GET GRP(C) TO HL +; +MAPCNT: + INX B ;NEXT GRP # + PUSH H + LHLD DSM ;GET HIGHEST GRP # + INX H ;PLUS 1 FOR COMPARISON + MOV A,L ;WHEN BC REACHES DSM+1.. + CMP C ;..THEN WE HAVE EXCEEDED.. + JNZ MAPC1 ;..THE DISK CAPACITY.. + MOV A,H + CMP B +; +MAPC1: + POP H + JZ MAPEND ;..AND WE ARE DONE + PUSH H + CALL GETGRP ;GET ANOTHER + POP D ;SEE IF SAME + CALL CTLCS ;ABORT? + JZ MAPND2 + MOV A,D + CMP H + JNZ MAPDIF + MOV A,E + CMP L + JZ MAPCNT ;SAME, CONTINUE +; +;Different file encountered +; +MAPDIF: + DCX B + CALL HEXB ;PRINT ENDING GROUP NUMBER + INX B + XCHG + CALL MAPNAM ;PRINT FILE NAME + LDA ONLY1 ;ONLY 1 NAME TO BE PRINTED? + ORA A ;0=NO + JNZ MAPND1 + JMP MAPDF +; +;End of map +; +MAPEND: + DCX B ;GET LAST + CALL HEXB ;PRINT LAST GROUP NUMBER + CALL MAPNAM ;PRINT FILE NAME + CALL WAIT ;DELAY FOR USER +MAPND1: + POP H + CALL CRLF ;NEW LINE +; +;End of map - reposition to previous group +; +MAPND2: + PUSH H + LHLD GROUP ;POINT TO GROUP IN DE + XCHG + JMP POSGP2 +; +;Print file name pointed to by HL +; +MAPNAM: + CALL SPACE ;LEADING SPACE + MOV A,H + ORA L ;NONE? + JZ NONAME + MOV A,M ;SEE IF ALLOC + CPI 0E5H ;FREE? + MVI A,' ' ;MARK ALLOCATED + JNZ MPNSP1 + MVI A,'(' ;MARK NOT ALLOCATED (ERASED FILE) +; +MPNSP1: + CALL TYPE ;PRINT ALLOCATION INDICATOR (SPACE OR '(') + PUSH H ;SAVE POINTER + MOV A,M + CALL HEX ;SHOW USER NUMBER + CALL SPACE + INX H ;SKIP USER BYTE + PUSH B + MVI B,8 ;PRINT FILE NAME + CALL MAPN2 + MVI A,'.' ;PRINT DECIMAL SEPARATOR + CALL TYPE + MVI B,3 ;PRINT FILE TYPE + CALL MAPN2 + LDA DUPFLG ;DUPLICATE? + CALL TYPE ;SPACE OR STAR + POP B + MOV A,M ;GET EXT + CALL HEX ;PRINT EXTENT NUMBER + POP H + MOV A,M + CPI 0E5H ;DELETED ENTRY? + MVI A,' ' ;PRINT ENDING SPACE + JNZ MPNSP2 + MVI A,')' ;PRINT ALLOCATION FLAG +; +MPNSP2: + CALL TYPE ;")" IF ERASED FILE OR SPACE IF NOT + JMP FLIP +; +NONAME: + CALL ILPRT + DB DIM,' ++ Free ++ ',BRIGHT,0 +; +FLIP: + LDA TWOUP ;FLIP FLAG FOR TWO ENTRIES PER LINE + XRI 1 + STA TWOUP + JZ PAGER ;NEW LINE WITH PAGING IF REQUIRED +; +DELIM: + MVI A,':' ;PRINT DELIMITER BETWEEN ADJACENT ENTRIES ON LINE + CALL TYPE + JMP SPACE +; +;Print name pted to by HL, length in B +; +MAPN2: + MOV A,M + ANI 7FH ;STRIP POSSIBLE 2.x ATTRIBUTE BIT + INX H + CPI ' ' ;PRINTABLE? + JC MAPN2H ;..NO, IN HEX + CPI 7EH ;7E IS LEADIN ON SOME CRTS + JC MAPN2A +; +MAPN2H: + CALL BHEX ;PRINT A AS HEX CHARS + JMP MAPN2Z +; +MAPN2A: + CALL TYPE ;PRINT AS CHAR +; +MAPN2Z: + DJNZ MAPN2 + RET +; +;Find which file group (BC) belongs to +; +GETGRP: + LHLD DRM ;MAX DIR ENTRY # + INX H ;MAKE 1-RELATIVE + SHLD FILECT + LXI H,0 + SHLD MFPTR ;SET MULTI-FILE (MORE THAN ONE USER) PTR + LHLD DIRECT ;PT TO DIRECTORY +; +GETGLP: + PUSH H ;SAVE POINTER TO NAME + MOV A,M ;PICK UP DN BYTE + CPI 0E5H ;ERASED? + JZ GETGNF + LXI D,14 ;NOW GET RECORD COUNT + DAD D ; S2 PORTION .. + MOV A,M ; IS 0 IN CP/M 1.4 + ANI 0FH + MOV E,A + INX H + MOV A,M + ORA E + JZ GETGNF + MVI E,16 ;FIRST SET FOR 8-BIT GRPS + LDA DSM+1 + ORA A + JZ SMALGP + MVI E,8 ;NOPE, BIG GROUPS +; +SMALGP: + MOV D,A ;SAVE GRP SIZE INDICATOR +; +GETGL2: + INX H ;POINTING INTO DM FIELD + CALL GRPCMP ;COMPARE BC GP # AGAINST 1 DM FLD + JNZ NOTGOT ;JUMP IF NOT FOUND +; +;Found the file +; + PUSH H ;SAVE GROUP PTR + LHLD MFPTR + MOV A,H ;ANY ENTRIES? + ORA L + POP H ;GET PTR + XTHL ;SAVE ENTRY START AND SAVE PTR + JZ MPFRST ;IF ZERO, THEN FIRST ENTRY + MVI A,'*' ;SET MULTI FLAG + STA DUPFLG +MPFRST: + SHLD MFPTR ;SAVE POINTER + XTHL ;RESTORE ENTRY START AND GET PTR +NOTGOT: + DCR E ;COUNT DOWN + JNZ GETGL2 ;GO TEST SOME MORE +; +GETGNF: + POP H ;NOT THIS ONE + LXI D,32 ;SO GO TO NEXT + DAD D + XCHG + LHLD FILECT ;THERE IS LIMIT TO EVERYTHING + DCX H + SHLD FILECT + MOV A,H + ORA L + XCHG ;RE-ALIGN + JNZ GETGLP +; +;Set the allocation address, if any +; + LHLD MFPTR ;GET ADDRESS + RET +; +;COMMAND: < +;Save the current sector +; Special Form of +;Restore the current sector +; Special Form >S gets next block from queue +; Special Form >G gets next group from queue +; +RESTOR: + MOV A,M ;CHECK FOR SPECIAL FORM + CALL UPCASE ;CAPITALIZE + CPI 'B' ;BLOCK SAVE? + JZ QRESTOR + CPI 'G' ;GROUP SAVE? + JZ RESTRG + LDA SAVEFL ;SAVE DONE PREVIOUSLY? + ORA A + JZ NOSAVE ;NONE TO SAVE + PUSH H + LHLD SAVBUF ;COPY FROM SAVBUF + LXI D,TBUFF ;INTO TBUFF + MVI B,128 ;128 BYTES + CALL MOVE + POP H ;GET PTR TO NEXT CHAR + JMP PROMPT +; +; Restore Sector from Queue +; +QRESTOR: + INX H ;PT TO NEXT CHAR + PUSH H ;SAVE PTR ON STACK + LHLD QCNT ;GET ELEMENT COUNT + MOV A,H ;EMPTY? + ORA L + JZ QEMPTY ;ABORT IF EMPTY + DCX H ;COUNT DOWN + SHLD QCNT + CALL PRQCNT ;PRINT COUNT + LHLD QNXT ;PT TO NEXT ELEMENT IN QUEUE + LXI D,TBUFF ;COPY INTO TBUFF + MVI B,128 ;128 BYTES + CALL MOVE + XCHG ;DE=PTR TO NEXT ELEMENT IN QUEUE + CALL QWRAP ;CHECK FOR WRAP AROUND + XCHG ;HL PTS TO NEXT ELEMENT IN QUEUE + SHLD QNXT ;SAVE PTR + POP H ;RESTORE PTR + JMP PROMPT +QEMPTY: + CALL ILPRT + DB 'Error -- Queue Empty',CR,LF,0 + POP H ;RESTORE NEXT CHAR PTR + JMP PRMPTR +; +;Write Group Loaded in GBUFF to Disk +; +RESTRG: + CALL COMG ;GET GROUP NUMBER FROM COMMAND LINE AND POS + PUSH H + CALL ILPRT + DB 'Writing to Group ',0 + LHLD GROUP ;GET GROUP NUMBER + MOV B,H ;VALUE IN BC + MOV C,L + CALL HEXB ;PRINT IN HEX + CALL ILPRT + DB CR,LF,0 + LHLD QNXT ;NEXT PTR USED FOR WRITE + SHLD QPTR + POP H + MVI A,0FFH ;WRITE FUNCTION + STA CPYFCT ;COPY FUNCTION FOR GROUP COPY ROUTINE + JMP COPYG ;GROUP COPY ROUTINE +; +NOSAVE: + CALL ILPRT + DB '++ No "<" Save Command Issued ++' + DB CR,LF,0 + JMP PRMPTR +; +;Move (HL) to (DE) length in B +; +MOVE: + MOV A,M + STAX D + INX H + INX D + DJNZ MOVE + RET +; +NORITE: + XRA A ;GET 0 + STA WRFLG ;CAN'T WRITE NOW + RET +; +;No match in search, try next char +; +SRNOMT: + POP H + CALL CTLCS ;ABORT? + JNZ SEARCH ;..YES + LHLD INBUF + MVI M,CR + JMP CLCGRP ;SHOW WHERE STOPPED +; +;COMMAND: = +;Search for character string +; +SEARCH: + PUSH H ;SAVE STRING POINTER +; +SRCHL: + CALL RDBYTE ;GET A BYTE + MOV B,A ;SAVE IT + MOV A,M ;CHECK NEXT MATCH CHAR. + CPI '<' ;WILL IT BE HEX? + MOV A,B ;RESTORE DISK CHAR + JZ SRCHL1 + ANI 7FH ;NEXT CHAR IS ASCII...STRIP BIT 7 +; +SRCHL1: + PUSH PSW + CALL GETVAL ;GET SEARCH VALUE + MOV B,A + POP PSW + CMP B ;MATCH? + JNZ SRNOMT ;NO MATCH + INX H + MOV A,M ;DONE? + CPI CR ;END OF LINE? + JZ SREQU + CPI EOLCH ;LOGICAL EOL? + JNZ SRCHL +; +;Got match +; +SREQU: + CALL ILPRT + DB '= at ',0 + LDA BUFAD + ANI 7FH + CALL HEX + CALL CRLF + JMP CLCGRP +; +;Get value from input buffer +; +GETVAL: + MOV A,M ;GET NEXT CHAR + CPI '<' ;HEX ESCAPE? + RNZ ;NO, RETURN +;"<<" means one "<" + INX H + MOV A,M + CPI '<' + RZ +;Got hex + PUSH D + CALL HEXIN ;GET VALUE + CPI '>' ;PROPER DELIM? + MOV A,E ;GET VALUE + POP D + JNZ WHAT ;ERROR + RET +; +;Read a byte at a time from disk +; +RDBYTE: + PUSH H + LDA FTSW ;FIRST READ? + ORA A + JNZ READ1 + LHLD BUFAD + MOV A,L + ORA A ;IN BUFFER? + JM NORD ;YES, SKIP READ +; +;Have to read +; + CALL NXTSEC ;ADVANCE TO NEXT BLOCK +; +READ1: + XRA A + STA FTSW ;NOT FIRST READ + LHLD CURSEC + XCHG + CALL SETSEC + LHLD CURTRK + XCHG + CALL SETTRK + CALL READ + CALL CLCSUB + LXI H,TBUFF +; +NORD: + MOV A,M + INX H + SHLD BUFAD + POP H + RET +; +;COMMAND: V +;View the file in ASCII starting at +;current sector, stepping thru the disk +; +VIEW: + LDA WRFLG + ORA A + JZ BADDMP + CALL DECIN ;GET DISPL IF ANY + PUSH H + MOV A,E + ORA A + JNZ VIEWLP + INR E ;DFLT=1 +; +VIEWLP: + LXI H,TBUFF ;TO DATA +; +VEWCHR: + CALL CTLCS ;ABORT? + JZ VEWEND + MOV A,M ;GET NEXT CHAR + CPI 1AH ;EOF? + JZ VEWEOF + ANI 7FH ;MASK + CPI 7EH ;ESC CHAR FOR H1500 + JNC VIEWHX ;SHOW RUBOUT AND TILDE AS HEX + CPI ' ' + JNC VIEWPR + CPI CR ;CR PASS + JZ VIEWPR + CPI LF ;LF PASS + JZ VIEWPR + CPI TAB ;TAB PASS + JZ VIEWPR +; +VIEWHX: + MOV A,M ;NOT ASCII...PRINT AS + CALL BHEX + JMP VIEWNP +; +VIEWPR: + CALL TYPE +; +VIEWNP: + INR L + JNZ VEWCHR + DCR E + JZ VEWEND + PUSH D ;SAVE COUNT + CALL NXTSEC + LHLD CURSEC + XCHG + CALL SETSEC + LHLD CURTRK + XCHG + CALL SETTRK + CALL READ + POP D ;RESTORE COUNT + JMP VIEWLP +; +VEWEOF: + CALL ILPRT + DB CR,LF,DIM,' ++ EOF ++',BRIGHT,CR,LF,0 +; +VEWEND: + POP H + CALL CRLF + JMP CLCGRP +; +;COMMAND: A or D +;Dump in hex or ASCII +; +DUMP: + LDA WRFLG + ORA A + JNZ DUMPOK +; +BADDMP: + CALL ILPRT + DB '++ Can''t dump, no sector read ++',CR,LF,0 +; +EXPL: + CALL ILPRT + DB 'Use G command following F,',CR,LF + DB 'or R or S following T',CR,LF,0 + JMP PRMPTR +; +DUMPOK: + MOV A,M ;GET NEXT CHAR + CPI EOLCH ;LOGICAL EOL? + JZ DUMPDF ;DFLT + CPI CR ;PHYSICAL EOL? + JNZ DMPNDF +; +;Use default +; +DUMPDF: + LXI B,TBUFF + LXI D,0FFH + JMP DUMP1 +; +DMPNDF: + CALL DISP + MOV B,D + MOV C,E + CPI CR + JZ DUMP1 + CPI EOLCH + JZ DUMP1 + INX H ;SKIP SEPCH + CALL DISP +; +;BC = start, DE = end +; +DUMP1: + PUSH H ;SAVE COMMAND POINTER + MOV H,B + MOV L,C +; +DUMPLP: + CALL DUMPHL ;PERFORM DUMP OF DIR ENTRY AT HL + POP H ;RESTORE HL + JMP PROMPT +; +; PERFORM DUMP AT HL +; +DUMPHL: + CALL STNDOUT ;DIM + MOV A,L + ANI 7FH + CALL HEX ;PRINT HEX VALUE + CALL STNDEND ;BRIGHT + CALL SPACE + CALL SPACE + LDA DUMTYP + CPI 'A' + JZ DUMPAS + PUSH H ;SAVE START +; +; DUMP 16 BYTES STARTING AT HL (CHECK FOR DE TERMINATION) +; +DHEX: + MOV A,M + CALL HEX ;PRINT HEX VALUE PTED TO BY HL + MOV A,L + ANI 3 + CPI 3 ;EXTRA SPACE EVERY 4 + CZ SPACE + MOV A,L + ANI 7 + CPI 7 ;TWO EXTRA SPACES EVERY 8 + CZ SPACE + MOV A,E ;CHECK FOR END OF BYTES TO DUMP + CMP L + JZ DPOP + INX H + MOV A,L ;CHECK FOR END OF 16 BYTES + ANI 0FH + JNZ DHEX +; +DPOP: + CALL CTLCS ;ABORT? + JZ PRMPTR + LDA DUMTYP ;CHECK FOR ASCII ALSO + CPI 'H' + JZ DNOAS ;HEX ONLY + POP H ;GET START ADDR +; +; DUMP ASCII CHARS - HL PTS TO FIRST BYTE +; +DUMPAS: + CALL ASTER ;PRINT FIRST ASTERISK TO SEPARATE TEXT +; +DCHR: + MOV A,M ;GET CHAR + ANI 7FH + CPI ' ' + JC DPER + CPI 7FH ;TRAP DEL + JC DOK +; +DPER: + MVI A,'.' ;PRINT PRINTING CHAR +; +DOK: + CALL TYPE ;PRINT CHAR + MOV A,E ;CHECK FOR END OF DUMP + CMP L + JZ DEND + INX H + MOV A,L ;CHECK FOR END OF 16 BYTES + ANI 0FH + JNZ DCHR +; +; END OF ASCII DUMP +; +DEND: + CALL ASTER ;PRINT ENDING ASTERISK + CALL CRLF ;NEW LINE + PUSH D + CALL CTLCS ;ABORT? + POP D + JZ PRMPTR + MOV A,E ;DONE WITH DUMP? + CMP L + JNZ DUMPHL + RET +; +; NO ASCII DUMP +; +DNOAS: + POP B ;CLEAR STACK (START ADDRESS OF DUMP) + CALL CRLF ;NEW LINE + MOV A,E ;DONE WITH DUMP? + CMP L + JNZ DUMPHL + RET +; +;COMMAND: G +;Position +; +POS: + PUSH PSW + MOV A,M + CPI EOLCH ;LOGICAL EOL? + JZ POSINQ + CPI CR ;PHYSICAL EOL? + JNZ POSOK +; +POSINQ: + POP PSW + JMP INQ +; +POSOK: + POP PSW + CPI 'T' ;TRACK? + JZ POSTKD + CPI 'S' ;SECTOR? + JZ POSSCD + CPI 'G' ;GROUP? + JZ POSGPH + JMP WHAT ;ERROR OTHERWISE +; +;Position to Track +; +POSTKD: + CALL DECIN ;GET NUMBER IN DECIMAL +; +POSTRK: + PUSH H + LHLD MAXTRK ;CHECK FOR BEYOND END OF DISK + CALL SUBDE + POP H + JC OUTLIM + CALL SETTRK ;SET TRACK + CALL NORITE ;TRACK DOESN'T READ + MVI A,1 + STA NOTPOS ;SHOW NOT POSITIONED + JMP CLCGRP +; +;Position to Sector +; +POSSCD: + CALL DECIN ;GET NUMBER IN DECIMAL + MOV A,D + ORA E + JZ WHAT ;DON'T ALLOW SECTOR 0 +; +POSSEC: + PUSH H + LHLD SPT ;CHECK FOR WITHIN RANGE + CALL SUBDE + POP H + JC WHAT + CALL SETSEC ;SET SECTOR + CALL READ ;READ + XRA A + STA NOTPOS ;POSITIONED OK +; +;Calculate Group Number/Group Displacement and Print +; +CLCGRP: + CALL CLCSUB + JMP INQ +; +;Calculate group from track and sector +; On exit, GROUP = Group Number and GRPDIS = Displacement within Group +; +CLCSUB: + PUSH H + LHLD SYSTRK + XCHG + LHLD CURTRK + CALL SUBDE ;COMPUTE RELATIVE TRACK NUMBER (SKIP SYSTEM TRACKS) + XCHG + LHLD SPT ;MULTIPLY BY NUMBER OF SECTORS/TRACK + CALL MULT + XCHG ;DE=TOTAL NUMBER OF SECTORS IN TRACKS + LHLD CURSEC ;GET SECTOR OFFSET FROM BEGINNING OF TRACK + DCX H + DAD D ;HL=TOTAL NUMBER OF SECTORS WITH OFFSET + LDA BLM + MOV B,A + MOV A,L + ANA B + STA GRPDIS ;DISPLACEMENT WITHIN GROUP + LDA BSH + MOV B,A +; +CLCLOP: + CALL ROTRHL + DJNZ CLCLOP + SHLD GROUP ;GROUP NUMBER + POP H + RET +; +;Position in the directory after a find +;(Does not work in CP/M-2.x) +; +POSDIR: + PUSH H ;SAVE INBUF + LHLD BSH + XRA A + STA FINDFL ;CANCEL POS REQ + LDA DIRPOS ;GET POSITION + RAR + RAR + PUSH PSW + ANA H + STA GRPDIS + POP PSW +; +POSDLP: + RAR + DCR L + JNZ POSDLP + ANI 1 ;GET GROUP + MOV L,A ;SETUP FOR POSGP2 + MVI H,0 + SHLD GROUP + XCHG +; +POSGP2: + CALL GTKSEC ;CONVERT GROUP TO SECTOR/TRACK + CALL SETTRK ;SET TRACK + XCHG + CALL SETSEC ;SET SECTOR + CALL READ ;READ BLOCK + XRA A + STA NOTPOS ;NOW POSITIONED + POP H + JMP INQ +; +;Position to Group +; +POSGPH: + CALL HEXIN ;GET PARAMETER +; +;Position to Group Numbered in DE and Print Position +; +POSGRP: + CALL DEGROUP ;GOTO GROUP + JC OUTLIM + JMP INQ ;PRINT POSITION +; +;Position to Group Numbered in DE +; Return with Carry Set if Out of Limits +; +DEGROUP: + PUSH H + LHLD DSM ;CHECK FOR WITHIN BOUNDS + CALL SUBDE + POP H + RC + PUSH H ;SAVE HL + XCHG + SHLD GROUP ;SET GROUP NUMBER + XCHG + XRA A + STA GRPDIS ;SET ZERO DISPLACEMENT + CALL GTKSEC ;CONVERT GROUP TO SECTOR/TRACK + CALL SETTRK ;SET TRACK + XCHG + CALL SETSEC ;SET SECTOR + CALL READ ;READ BLOCK + XRA A ;SET NC AND FLAG + STA NOTPOS ;NOW POSITIONED + POP H + RET +; +;Convert Group Number in DE to Sector and Track; also, GRPDIS = Offset in Grp +; On exit, DE = Track Number, HL = Sector Number +; +GTKSEC: + MOV H,D ;HL=GROUP NUMBER + MOV L,E + LDA BSH ;GET NUMBER OF SECTORS IN GROUP +; +GLOOP: + DAD H + DCR A + JNZ GLOOP + LDA GRPDIS ;ADD IN DISPLACEMENT WITHIN GROUP + ADD L ;CAN'T CARRY + MOV L,A +; +;Divide by number of sectors, quotient=track, remainder=sector +; + XCHG ;DE=TOTAL NUMBER OF SECTORS + LHLD SPT ;GET NUMBER OF SECTORS/TRACK + CALL NEG ;HL = -SECTORS/TRACK + XCHG + LXI B,0 ;SET TRACK COUNTER TO ZERO +; +DIVLP: + INX B ;INCREMENT TRACK COUNT + DAD D ;SUBTRACT SECTORS/TRACK FROM SECTORS TOTAL + JC DIVLP + DCX B ;ADJUST TRACK COUNT + XCHG + LHLD SPT ;ADD SECTORS/TRACK BACK IN TO ADJUST + DAD D ;HL=NUMBER OF SECTORS ON LAST TRACK OF GROUP + PUSH H + LHLD SYSTRK ;ADD IN NUMBER OF SYSTEM TRACKS + DAD B + XCHG ;DE=TRACK NUMBER + POP H + INX H ;HL=SECTOR NUMBER + RET +; +;COMMAND: F +;Find Directory Entry for specified file +; +POSFIL: + CALL NORITE + MVI A,1 + STA FINDFL ;SO WE POSITION LATER + LXI D,FCB + XRA A ;LOGGED IN DISK + STAX D + INX D + MVI B,8 + CALL MVNAME + MVI B,3 + CALL MVNAME + MVI A,'?' + STAX D ;LOOK IN ALL EXTENTS + MVI A,'D' ;SET TYPE OF DUMP TO FULL + STA DUMTYP + PUSH H ;SAVE PTR TO NEXT CHAR + LXI D,FCB + MVI C,SRCHF + CALL BDOS + INR A + JNZ FLOK + STA DIRPOS ;GRP 0 IF NOT FOUND + CALL ILPRT + DB '++ File Not Found ++',CR,LF,0 + POP H ;RESTORE PTR TO NEXT CHAR + JMP PROMPT +; +FLOK: + DCR A + STA DIRPOS ;SAVE POS. IN DIR + ANI 3 + MOV L,A + MVI H,0 + DAD H ;X32 BYTES/ENTRY + DAD H + DAD H + DAD H + DAD H + LXI D,TBUFF + DAD D ;HL POINTS TO ENTRY + LXI D,32 + XCHG + DAD D + XCHG + CALL DUMPHL ;PRINT DIR ENTRY + LXI D,FCB ;LOOK FOR NEXT EXTENT + MVI C,SRCHN + CALL BDOS + INR A + JNZ FLOK + POP H ;RESTORE PTR TO NEXT CHAR + JMP PROMPT +; +MVNAME: + MOV A,M ;GET NEXT CHAR OF FILE NAME/TYPE + CPI '.' ;END OF FILE NAME? + JZ MVIPAD ;PAD OUT IF SO + CPI CR ;END OF ENTRY? + JZ PAD ;PAD OUT IF SO + CPI EOLCH ;END OF ENTRY? + JZ PAD ;PAD OUT IF SO + CALL UPCASE ;CAPITALIZE + STAX D ;STORE + INX H ;PT TO NEXT + INX D + DJNZ MVNAME + MOV A,M ;CHECK FOR ERROR + CPI CR ;OK IF EOL + RZ + CPI EOLCH ;OK IF LOGICAL EOL + RZ + INX H + CPI '.' ;OK IF DECIMAL + RZ + JMP WHAT +; +MVIPAD: + INX H +; +PAD: + MVI A,' ' ;PRINT PADDING SPACES + STAX D + INX D + DJNZ PAD + RET +; +;COMMAND: + +;Advance to Next Logical Sector +; +PLUS: + LXI D,1 ;DFLT TO 1 SECT + MOV A,M ;GET NEXT CHAR + CPI CR ;CR? + JZ PLUSGO ;..YES, DFLT TO 1 + CPI EOLCH + JZ PLUSGO + CALL DECIN ;GET # + MOV A,D + ORA E + JNZ PLUSGO + LXI D,1 ;SET 1 IF VALUE OF ZERO +; +PLUSGO: + CALL NXTSEC ;ADVANCE TO NEXT LOGICAL SECTOR + DCX D ;MORE TO GO? + MOV A,D + ORA E + JNZ PLUSGO ;..YES +; +;Ok, incremented to sector. Setup and read +; +PLUSMI: + PUSH H + LHLD CURSEC + XCHG + CALL SETSEC ;SET SECTOR + LHLD CURTRK + XCHG + CALL SETTRK ;SET TRACK + POP H + CALL READ ;READ IT + JMP CLCGRP ;CALCULATE GROUP AND DISPLAY +; +;COMMAND: - +;Back up to previous sector +; +MINUS: + LXI D,1 ;SET DFLT + MOV A,M ;GET CHAR + CPI CR ;CR? + JZ MINGO ;..YES, DFLT=1 + CPI EOLCH + JZ MINGO + CALL DECIN ;..NO, GET ## + MOV A,D + ORA E + JNZ MINGO + LXI D,1 ;ASSUME 1 +; +MINGO: + CALL LSTSEC ;BACK UP ONE SECTOR + DCX D ;COUNT DOWN ON NUMBER OF TIMES TO BACKUP + MOV A,D + ORA E + JNZ MINGO + JMP PLUSMI ;READ BLOCK +; +;Go to last sector +; Wrap around to last sector of previous track or last sector of +; last track, as necessary +; +LSTSEC: + PUSH H + LHLD CURSEC ;BACK UP SECTOR + DCX H + MOV A,H + ORA L + JNZ LSEC1 + LHLD CURTRK ;BEYOND SECTOR ZERO, SO BACK UP TRACK + MOV A,H + ORA L + JNZ LSEC0 + LHLD MAXTRK ;WRAP TO END OF DISK + SHLD CURTRK + LHLD MAXSEC + JMP LSEC1 +; +LSEC0: + DCX H + SHLD CURTRK + LHLD SPT ;GET NUMBER OF SECTORS/TRACK +; +LSEC1: + SHLD CURSEC ;SET NEW CURRENT SECTOR + POP H + RET +; +;Go to next sector +; On exit, CURSEC = Current Sector and CURTRK = Current Track +; +NXTSEC: + PUSH H + PUSH D + LHLD CURSEC ;INCREMENT CURRENT SECTOR + INX H + XCHG + LHLD SPT ;CHECK TO SEE IF BEYOND END OF TRACK + CALL SUBDE + XCHG + JNC NEXTOK + LHLD CURTRK ;BEYOND END OF TRACK, SO INCR CURRENT TRACK + INX H + XCHG + LHLD MAXTRK ;SEE IF BEYOND END OF DISK + CALL SUBDE + JNC TRASK + LXI D,0 ;WRAP TO START OF DISK +; +TRASK: + XCHG + SHLD CURTRK ;SET NEW CURRENT TRACK + LXI H,1 ;SET SECTOR 1 +; +NEXTOK: + SHLD CURSEC ;SET NEW CURRENT SECTOR + POP D + POP H + RET +; +;Tell what group, displacement, track, sector, physical sector +; +INQ: + CALL INQSUB + JMP PROMPT +; +;Position inquiry subroutine +;Executed via: G S or T (with no operands) +; +INQSUB: + PUSH H + LHLD SYSTRK ;CHECK IF IN SYSTEM TRACKS + XCHG + LHLD CURTRK + CALL SUBDE + JC NOGRP + CALL ILPRT ;PRINT GROUP NUMBER IF NOT IN SYSTEM TRACKS + DB DIM,'Group = ',BRIGHT,0 + LHLD GROUP + MOV B,H + MOV C,L + CALL HEXB ;PRINT GROUP NUMBER IN BC + MVI A,':' + CALL TYPE + LDA GRPDIS + CALL HEX ;PRINT GROUP DISPLACEMENT IN A + MVI A,',' + CALL TYPE +; +NOGRP: + CALL ILPRT ;PRINT TRACK NUMBER + DB DIM,' Track = ',BRIGHT,0 + LHLD CURTRK + CALL DEC ;TRACK NUMBER IN DECIMAL + CALL ILPRT ;PRINT SECTOR NUMBER + DB DIM,', Sector = ',BRIGHT,0 + LHLD CURSEC + CALL DEC ;SECTOR NUMBER IN DECIMAL + CALL ILPRT ;PRINT PHYSCIAL SECTOR NUMBER + DB DIM,', Physical Sector = ',BRIGHT,0 + LHLD PHYSEC + CALL DEC ;PHYSICAL SECTOR NUMBER IN DECIMAL + CALL CRLF + POP H + RET +; +;COMMAND: C +;Change Contents of Current Block +; +CHG: + MOV A,M ;GET TYPE (HEX, ASCII) + CALL UPCASE + PUSH PSW ;SAVE "H" OR "A" + INX H + CALL HEXIN ;GET DISP IN HEX + CALL DISP1 ;VALIDATE DISP TO DE + INX H + LXI B,0 ;SHOW NO 'THRU' ADDR + CPI '-' ;TEST DELIM FR. DISP + JNZ CHGNTH ;NO THRU + PUSH D ;SAVE FROM + CALL HEXIN + CALL DISP1 ;GET THRU + INX H ;SKIP END DELIM + MOV B,D + MOV C,E ;BC = THRU + POP D ;GET FROM + JMP CHGAH +; +CHGNTH: + CPI SEPCH + JNZ WHAT +; +CHGAH: + POP PSW + CPI 'H' ;HEX? + JZ CHGHEX + CPI 'A' ;ASCII? + JNZ WHAT +; +;Change ASCII +; +CHGALP: + MOV A,M ;GET CHAR + CPI CR + JZ PROMPT + CPI EOLCH + JZ PROMPT +; +;The following print of the deleted byte is commented out; if leading +; semicolons are removed, deleted bytes will be printed +; +; LDAX D ;GET BYTE THAT IS REPLACED +; CPI ' ' +; JC CHGAHX +; CPI 7EH ;DON'T PRINT ESC CHAR FOR H1500 +; JNC CHGAHX +; JMP CHGA2 +; +;CHGAHX: +; CALL BHEX +; JMP CHGA3 +; +;CHGA2: +; CALL TYPE +; +;End of print of delete bytes +; +CHGA3: + SHLD BACK ;IN CASE "THRU" + CALL GETVAL ;GET ASCII OR VALUE + STAX D ;UPDATE BYTE + INX H ;PT TO NEXT INPUT CHAR +; +;See if 'THRU' requested +; + MOV A,C + ORA A + JZ CHANTH + CMP E ;DONE?.. + JZ PROMPT ;..YES + LHLD BACK +; +CHANTH: + INR E + JNZ CHGALP + MOV A,M + CPI CR + JZ PROMPT + CPI EOLCH + JZ PROMPT + JMP WHAT +; +;Change hex +; +CHGHCM: + INX H +; +CHGHEX: + MOV A,M ;GET HEX DIGIT + CPI CR + JZ PROMPT + CPI EOLCH + JZ PROMPT + CPI SEPCH ;DELIM? + JZ CHGHCM + PUSH D + SHLD HEXAD ;IN CASE 'THRU' + CALL HEXIN ;POSITIONS TO DELIM + MOV A,E ;GET VALUE + POP D ;..ADDR +; +;The following comments out the echo of the deleted byte; removing the +; leading semicolons restores the echo +; +; PUSH PSW ;SAVE VALUE +; LDAX D ;GET OLD +; CALL HEX ;ECHO IN HEX +; POP PSW ;GET NEW +; +;End of echo of bytes +; + STAX D ;SAVE NEW BYTE + MOV A,C ;SEE IF 'THRU' + ORA A + JZ CHHNTH ;..NO. + CMP E ;..YES, DONE? + JZ PROMPT + LHLD HEXAD ;..NO: MORE +; +CHHNTH: + INR E + JNZ CHGHEX + MOV A,M + CPI CR + JZ PROMPT + CPI EOLCH + JZ PROMPT + JMP WHAT +; +;COMMAND: R +;Read Current Block into TBUFF +;COMMAND: RG +;Read Specified Group into GBUFF +; +DOREAD: + LDA NOTPOS ;POSITIONED? + ORA A + JNZ CANTRD + CALL READ ;READ BLOCK + JMP PROMPT +; +CANTRD: + CALL ILPRT + DB '++ Can''t read - not positioned ++',CR,LF + DB 'Position by:',CR,LF + DB ' Track then Sector, or',CR,LF + DB ' Group',CR,LF,0 + JMP PROMPT +; +;COMMAND: W +;Write Current Block to Disk +;COMMAND: WG +;Write Specified Group from GBUFF +; +DORITE: + CALL WRITE ;DO WRITE + JMP PROMPT +; +;Print Byte in A as Hex Digits +; +BHEX: + PUSH PSW + MVI A,'<' + CALL TYPE + POP PSW + CALL HEX + MVI A,'>' + CALL TYPE + RET +; +;Print Number in BC as Hex Digits +; HEXB does not print MS Byte if DSM shows small disk size +; HEXB1 prints BC regardless +; +HEXB: + LDA DSM+1 + ORA A + JZ HEXX +HEXB1: + MOV A,B + CALL HEX +; +HEXX: + MOV A,C +; +;Print Byte in A as 2 Hex Digits +; +HEX: + PUSH PSW + RAR ;GET HIGH NYBBLE + RAR + RAR + RAR + CALL NIBBL ;PRINT IT + POP PSW ;GET LOW NYBBLE +; +NIBBL: + ANI 0FH ;MASK LOW NYBBLE + CPI 10 ;0-9? + JC HEXNU + ADI 7 ;CONVERT TO A-F +; +HEXNU: + ADI '0' ;CONVERT TO ASCII + JMP TYPE ;PRINT IT +; +;Decimal output routine +; Print Number in HL as decimal digits +; +DEC: + PUSH B + PUSH D + PUSH H + XRA A ;SET NO LEADING DIGIT + STA DDIG + LXI B,10000 + CALL DPRT + DAD B + LXI B,1000 + CALL DPRT + DAD B + LXI B,100 + CALL DPRT + DAD B + LXI B,10 + CALL DPRT + DAD B + MOV A,L ;ALWAYS PRINT LSD + ADI '0' ;ASCII + CALL TYPE + POP H + POP D + POP B + RET +DPRT: + PUSH B ;SAVE BC + MVI D,0FFH ;SET -1 +DPRTL: + INR D ;ADD 1 TO OUTPUT DIGIT + MOV A,L ;L-C + SUB C + MOV L,A + MOV A,H ;H-B + SBB B + MOV H,A + JNC DPRTL + POP B ;RESTORE BC + LDA DDIG ;GET LEADING DIGIT FLAG + ORA D ;CHECK FOR ZERO STILL + STA DDIG ;SET FLAG + MOV A,D ;GET DIGIT TO PRINT + RZ ;ABORT IF BOTH ZERO + ADI '0' ;ASCII + JMP TYPE +DDIG: DS 1 ;TEMP FOR DEC USE ONLY +; +;Print +; +SPACE: + MVI A,' ' + JMP TYPE +; +;Print a dim '|' +; +ASTER: + CALL STNDOUT ;DIM + MVI A,'|' + CALL TYPE + JMP STNDEND ;BRIGHT +; +;Inline print routine +; Print Chars ending in 0 pted to by Return Address; return to byte after +; +ILPRT: + XTHL ;PT TO STRING +ILPLP: + CALL CTLCS ;ABORT? + JZ PRMPTR + MOV A,M ;GET CHAR +; CPI 1 ;PAUSE? -- ^A +; JNZ ILPOK +; CALL CONIN ;WAIT FOR ANY CHAR +; CPI 3 ;ABORT? +; JZ PRMPTR +; JMP ILPNX +; +;ILPOK: + CPI DIM ;GOTO DIM? + JZ ILPDIM + CPI BRIGHT ;GOTO BRIGHT? + JZ ILPBRI + CALL TYPE ;PRINT CHAR + JMP ILPNX +ILPDIM: + CALL STNDOUT ;ENTER STANDOUT MODE + JMP ILPNX +ILPBRI: + CALL STNDEND ;EXIT STANDOUT MODE +; +ILPNX: + INX H ;PT TO NEXT + MOV A,M ;GET IT + ORA A ;DONE? + JNZ ILPLP + INX H ;PT TO BYTE AFTER ENDING 0 + XTHL ;RESTORE HL AND RET ADR + RET +; +;DISP calls DECIN, and validates a sector +;displacement, then converts it to an address +; +DISP: + CALL DECIN +DISP1: + PUSH PSW ;SAVE DELIMITER + MOV A,D + ORA A + JNZ BADISP + MOV A,E + ORA A + JM BADISP + ADI 80H ;TO POINT TO BUFFER AT BASE+80H + MOV E,A + MVI D,BASE/256 + POP PSW ;GET DELIM + RET +; +BADISP: + CALL ILPRT + DB '++ Bad Displacement (Not 0-7FH) ++' + DB CR,LF,0 + JMP PRMPTR +; +;Input Number from Command Line -- Assume it to be Hex +; Number returned in DE +; +HEXIN: + LXI D,0 ;INIT VALUE + MOV A,M + CPI '#' ;DECIMAL? + JZ HDIN ;MAKE DECIMAL +; +HINLP: + MOV A,M ;GET CHAR + CALL UPCASE ;CAPITALIZE + CPI CR ;EOL? + RZ + CPI EOLCH ;EOL? + RZ + CPI SEPCH + RZ + CPI ' ' ;SPACE? + RZ + CPI '-' ;'THRU'? + RZ + CPI '>' + RZ + INX H ;PT TO NEXT CHAR + CPI '0' ;RANGE? + JC WHAT + CPI '9'+1 ;RANGE? + JC HINNUM + CPI 'A' ;RANGE? + JC WHAT + CPI 'F'+1 ;RANGE? + JNC WHAT + SUI 7 ;ADJUST FROM A-F TO 10-15 +; +HINNUM: + SUI '0' ;CONVERT FROM ASCII TO BINARY + XCHG + DAD H ;MULT PREVIOUS VALUE BY 16 + DAD H + DAD H + DAD H + ADD L ;ADD IN NEW DIGIT + MOV L,A + XCHG + JMP HINLP +; +HDIN: + INX H ;SKIP '#' +; +;Input Number in Command Line as Decimal +; Number is returned in DE +; +DECIN: + LXI D,0 + MOV A,M ; GET 1ST CHAR + CPI '#' ; HEX? + JNZ DINLP + INX H ; PT TO DIGIT + JMP HINLP ; DO HEX PROCESSING +; +DINLP: + MOV A,M ;GET DIGIT + CALL UPCASE ;CAPITALIZE + CPI '0' ;RANGE? + RC + CPI '9'+1 ;RANGE? + RNC + SUI '0' ;CONVERT TO BINARY + INX H ;PT TO NEXT + PUSH H + MOV H,D + MOV L,E + DAD H ;X2 + DAD H ;X4 + DAD D ;X5 + DAD H ;X10 + ADD L ;ADD IN DIGIT + MOV L,A + MOV A,H + ACI 0 + MOV H,A + XCHG ;RESULT IN DE + POP H + JMP DINLP +; +;Read in a console buffer +; +RDBUF: + CALL ILPRT ;PRINT PROMPT + DB CR,LF,'DU3 ',0 + LDA DRIVE ;GET DRIVE NUMBER + ADI 'A' ;CONVERT TO ASCII + CALL TYPE + LDA UNUM ;DISPLAY USER NUMBER + MOV L,A ;VALUE IN HL + MVI H,0 + CALL DEC ;PRINT IN DECIMAL + CALL ILPRT ;PRINT PROMPT + DB '? ',0 +; +;ENTRY POINT TO READ BUFFER WITHOUT PROMPT +; +RDBUF1: + LHLD INBUF ;USE CP/M READLN + DCX H + DCX H + XCHG + MVI C,10 + PUSH D + CALL BDOS + POP D + INX D ;PT TO CHAR COUNT + LDAX D ;GET CHAR COUNT + MOV B,A ;CHAR COUNT IN B + INX D ;PT TO INPUT LINE + XCHG ;... IN HL + ADD L ;ADD CHAR COUNT TO HL + MOV L,A + MOV A,H + ACI 0 + MOV H,A + MVI A,CR ;STORE ENDING CR + MOV M,A ;SET CR + CALL TYPE ;ECHO IT + MVI A,LF ;ECHO.. + CALL TYPE ;..LF + LHLD INBUF ;SET PTR TO FIRST CHAR IN LINE + RET +; +;Set paging flag for page routine +; +PAGSET: + LDA PAGSIZ ;GET SIZE OF PAGE + STA PAGFLG ;SET FLAG + RET +; +;Page output +; +PAGER: + LDA PAGFLG ;GET FLAG + CPI 2 ;2 LINES LEFT? + JZ WAIT ;SAME AS USER DELAY + DCR A ;COUNT DOWN + STA PAGFLG + JMP CRLF +; +;Delay Routine +; +SWAIT: + CALL AT + DB 23,5 ;POSITION CURSOR + JMP WAIT0 +WAIT: + CALL CRLF ;NEW LINE +WAIT0: + PUSH H + CALL ILPRT + DB DIM,'Type Any Character to Continue or ^C to Abort - ',BRIGHT,0 + POP H + CALL CONIN ;GET RESPONSE + CPI 'C'-40H ;^C? + JZ WAIT1 + CALL CRLF ;NEW LINE + CALL PAGSET ;RESET PAGE COUNT + RET +WAIT1: + LDA IHFLG ;INITIAL HELP? + ORA A ;0=NO + JZ PRMPTR ;ABORT TO COMMAND PROMPT + JMP EXIT1 ;ABORT TO CP/M +; +;CRLF Routine +; +CRLF: + MVI A,CR + CALL TYPE + MVI A,LF + JMP TYPE +; +;Convert to Upper Case +; +UPCASE: + ANI 7FH ;MASK OUT MSB + CPI 60H ;LESS THAN SMALL A? + RC ;RETURN IF SO + ANI 5FH ;MAKE UPPER CASE + RET +; +;CON: Status Routine +; +CONST: + PUSH B + PUSH D + PUSH H +VCONST: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + POP H + POP D + POP B + RET +; +;CON: Input Routine +; +CONIN: + PUSH B + PUSH D + PUSH H +VCONIN: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + POP H + POP D + POP B + RET +; +;Console out with TAB expansion +; Char in A +; +TYPE: + PUSH B ;SAVE REGS + PUSH D + PUSH H + MOV C,A ;FOR OUTPUT ROUTINE + CPI TAB + JNZ TYPE2 +;Tabulate +TYPTAB: + MVI A,' ' ;PRINT SPACE + CALL TYPE + LDA TABCOL ;GET COL COUNT + ANI 7 ;DONE? + JNZ TYPTAB + JMP TYPRET +; +;Filter out control characters to +;prevent garbage during view of file +; +TYPE2: + CPI ' ' + JNC TYPEQ + CPI CR + JZ TYPEQ + CPI LF + JNZ TYPNCR +; +TYPEQ: +; +;CON: Output Routine +; +VCONOT: CALL $-$ ;ADDR FILLED IN BY 'INIT' +; +;Update column used in tab expansion +; + MOV A,C ;GET CHAR + CPI CR + JNZ TYPNCR + MVI A,0 ;RESET TAB COLUMN IF + STA TABCOL + JMP TYPLST +; +TYPNCR: + CPI ' ' ;CTL CHAR? + JC TYPLST ;..NO CHANGE IN COL + LDA TABCOL ;INCR TAB COUNT + INR A + STA TABCOL +; +TYPLST: + LDA PFLAG ;CHECK FOR PRINTER OUTPUT + ANI 1 + CNZ LIST ;FROM C REG +; +TYPRET: + POP H ;RESTORE REGS + POP D + POP B + RET +; +;LST: Output Routine +; Char in C +; +LIST: + PUSH B ;SAVED REGS + PUSH D + PUSH H +VLIST: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + POP H + POP D + POP B + RET +; +;Home Disk Routine +; +HOME: + PUSH H +VHOME: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + POP H + RET +; +;Set track # in DE +; +SETTRK: + PUSH H + LHLD MAXTRK ;CHECK FOR WITHIN BOUNDS + CALL SUBDE ;IF TRACK # IN DE > MAX, THEN ERROR + POP H + JC OUTLIM + XCHG ;RESET CURRENT TRACK + SHLD CURTRK + XCHG + MOV B,D ;BC=TRACK NUMBER + MOV C,E + PUSH H +; +VSETRK: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + POP H + RET +; +;Set Sector Number in DE +; +SETSEC: + PUSH H + PUSH D + LHLD SYSTRK ;GET NUMBER OF SYSTEM TRACKS + XCHG + SHLD CURSEC ;SET CURRENT SECTOR + LHLD CURTRK ;GET CURRENT TRACK + CALL SUBDE ;SEE IF WE ARE IN THE SYSTEM TRACKS + POP B ;BC=SECTOR NUMBER + MOV H,B ;HL=SECTOR NUMBER + MOV L,C + JNC NOTSYS ;IF NO CARRY FOR SUBDE, WE ARE NOT IN SYSTEM TRACKS + LDA FIRST0 ;SEE IF FIRST SEC 0 + ORA A + JNZ GSTSEC ;NO, JUMP AWAY + DCX H ;YES, SO DECREMENT + JMP GSTSEC ;REQUESTED, THEN GO +; +;Not in System Tracks, so Skew Factor is effective +; +NOTSYS: + LHLD SECTBL ;GET PTR TO SECTOR TABLE + XCHG ;... IN DE + DCX B ;DECREMENT SECTOR NUMBER BY 1 +; +VSCTRN: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + LDA SPT+1 ;IF SPT<256 (HI-ORD = 0) + ORA A ; THEN FORCE 8-BIT TRANSLATION + JNZ GSTSEC ; ELSE KEEP ALL 16 BITS + MOV H,A +GSTSEC: + SHLD PHYSEC + MOV B,H + MOV C,L +; +VSTSEC: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + POP H ;RESTORE PTR TO NEXT CHAR + RET +; +;Out of Disk Track Limit +; +OUTLIM: + CALL ILPRT + DB '++ Not Within Tracks 0-',0 + PUSH H + LHLD MAXTRK ;PRINT MAX TRACK NUMBER + CALL DEC + POP H + CALL ILPRT + DB ' ++',CR,LF,0 + CALL NORITE ;NOT POSITIONED + JMP PRMPTR +; +;Set DMA Address +; +SETDMA: + JMP $-$ ;ADDR FILLED IN BY 'INIT' +; +;Read Next Block into DMA Address +; +READ: + MVI A,1 ;SET FLAG + STA WRFLG + PUSH H ;SAVE PTR TO NEXT CHAR +; +VREAD: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + ORA A ;ERROR? + JZ READOK + CALL ILPRT + DB '++ READ Failed, Sector may be Invalid ++' + DB CR,LF,0 +; +READOK: + POP H ;GET PTR TO NEXT CHAR + RET +; +;Write Block in DMA Address to Disk +; +WRITE: + LDA WRFLG ;READ ALREADY PERFORMED? + ORA A ;ERROR IF NOT + JNZ PWRITE +; +BADW: + CALL ILPRT + DB '++ Cannot Write Unless Read Issued ++' + DB CR,LF,0 + JMP EXPL +; +;Do Write +; +PWRITE: + PUSH H ;SAVE PTR TO NEXT CHAR + MVI C,1 ;FORCE WRITE TYPE 1 IN CASE 2.x DEBLOCK USED +; +VWRITE: + CALL $-$ ;ADDR FILLED IN BY 'INIT' + ORA A ;ERROR? + JZ WRITOK + CALL ILPRT + DB '++ WRITE Failed ++',CR,LF,0 +; +WRITOK: + POP H + RET +; +;Help; HELP is entry point for HELP (?) command, HELP1 is entry point for +; Initial Help Command, and IHELP is entry point for HELP (/) from command +; line +; +IHELP: + call cls + cz crlf + call helpban + CALL ILPRT + DB DIM,'Introductory HELP on DU3 (Disk Utility)',BRIGHT,CR,LF + DB ' The DU3 program is designed to provide the user with' + DB CR,LF + DB 'the ability to manipulate information on the disk as easily' + DB CR,LF + DB 'as the DDT and SID utilities allow the user to manipulate' + DB CR,LF + DB 'information in memory.',CR,LF + DB ' The following is a summary of the commands available to' + DB CR,LF + DB 'the DU3 user. This same list is invoked internally by the' + DB CR,LF + DB '? Command of DU3. For additional information on disk' + DB CR,LF + DB 'structures and how to use DU3 in general, refer to the' + DB CR,LF + DB 'file DU3.HLP.',CR,LF,0 + MVI A,0FFH ;A=0FFH + STA IHFLG ;SET INITIAL HELP + CALL SWAIT + JMP HELP1 ;PROCESS NORMALLY +HELP: + XRA A ;A=0 + STA IHFLG ;SET NO INITIAL HELP +HELP1: + call cls + cz crlf + call helpban ;print help banner + CALL ILPRT + DB 'Operands in brackets [...] are optional' + DB CR,LF,CR,LF + DB ' @ ',DIM,'Repeat Previous Non-@ Command Line' + DB BRIGHT,CR,LF + DB ' +[nn] ',DIM,'Step In [nn (decimal)] Sectors' + DB BRIGHT,CR,LF + DB ' -[nn] ',DIM,'Step Out [nn (decimal)] Sectors' + DB BRIGHT,CR,LF + DB DIM + DB ' Note: + or - need not be followed by a "," to ' + DB 'delimit commands.' + DB BRIGHT + DB CR,LF + DB ' # ',DIM,'Print Disk Parameters for Current Drive' + DB BRIGHT + DB CR,LF + DB ' =xxx ',DIM + DB 'Search for ASCII xxx from Current Sector' + DB BRIGHT + DB CR,LF + DB DIM + DB ' Note: upper/lower case matters. Use for hex:' + DB BRIGHT + DB CR,LF + DB DIM + DB ' To find "IN 0" use: =<0> or' + DB BRIGHT + DB CR,LF + DB DIM + DB ' "(tab)H,0(CR)(LF)" use: =<9>H,0' + DB BRIGHT + DB CR,LF + DB ' *[nn] ',DIM,'Repeat [nn (decimal) times]' + DB BRIGHT,CR,LF + DB ' ! ',DIM,'Pause for User',BRIGHT,CR,LF + DB ' :ntext ',DIM,'Define ''text'' to be Macro n' + DB BRIGHT,CR,LF + DB ' n ',DIM,'Perform Macro n, 0<=n<=9',BRIGHT,CR,LF + DB ' :Pn ',DIM,'Print Macro n, 0<=n<=9',BRIGHT + DB CR,LF + DB ' :Px ',DIM + DB 'Print All Macros if x=A or Print Prev Line if x=@' + DB BRIGHT + DB 0 + CALL SWAIT + call cls + cz crlf + call helpban + CALL ILPRT + DB ' A[ff,tt] ',DIM,'ASCII Dump',BRIGHT + DB CR,LF + DB ' C ',DIM,'Change:',BRIGHT + DB CR,LF + DB ' CHaddr byte byte... (hex)' + DB CR,LF + DB ' ',DIM,'or',BRIGHT + DB ' CAaddr data... (Ascii)' + DB CR,LF + DB DIM + DB ' Allowed for imbedded hex.' + DB BRIGHT + DB CR,LF + DB ' ',DIM,'or',BRIGHT + DB ' CHfrom-thru byte e.g. ch0-7f e5' + DB CR,LF + DB ' ',DIM,'or',BRIGHT,' CAfrom-thru byte' + DB CR,LF + DB ' D[ff,tt] ',DIM,'Dump (Hex and ASCII)',BRIGHT + DB CR,LF + DB ' E ',DIM,'DU3 Editor',BRIGHT,CR,LF + DB ' ',DIM,' Note: Rest of Command Line ' + DB 'is Flushed',BRIGHT,CR,LF + DB ' Ffn.ft ',DIM,'Find File',BRIGHT + DB CR,LF + DB ' Gnn ',DIM,'CP/M Allocation Group nn (hex)' + DB BRIGHT,CR,LF + DB ' H[ff,tt] ',DIM,'Hex Dump',BRIGHT + DB CR,LF + DB ' L[d] ',DIM,'Log in Current Drive or Drive d' + DB BRIGHT,CR,LF + DB ' M[nn] ',DIM,'Map [from group nn (hex)]' + DB BRIGHT + DB 0 + CALL SWAIT + call cls + cz crlf + call helpban + CALL ILPRT + DB ' N ',DIM,'Load New Disk',BRIGHT,CR,LF + DB ' P ',DIM,'Toggle Printer Switch',BRIGHT,CR,LF + DB ' Q ',DIM,'Queue Status;',BRIGHT,CR,LF + DB ' QZ ',DIM,'Zero (Empty) Queue',BRIGHT,CR,LF + DB ' QSfn.ft ',DIM,'Save Queue as a File on Disk',BRIGHT + DB CR,LF + DB ' < ',DIM,'Save Current Block into Temp',BRIGHT + DB CR,LF + DB ' > ',DIM,'Restore Temp Block',BRIGHT,CR,LF + DB ' B ',DIM,'Restore Queue Block',BRIGHT,CR,LF + DB ' G[n] ',DIM,'Restore Queue Group',BRIGHT,CR,LF + DB ' Snn ',DIM,'Sector nn (decimal)',BRIGHT,CR,LF + DB ' Tnn ',DIM,'Track nn (decimal)',BRIGHT,CR,LF + DB ' Unn ',DIM,'Set User nn (decimal) for Find command' + DB BRIGHT,CR,LF + DB ' V[nn] ',DIM,'View [nn (decimal)] ASCII Blocks',BRIGHT + DB CR,LF + DB ' R ',DIM,'Read Current Block',BRIGHT,CR,LF + DB ' W ',DIM,'Write Current Block',BRIGHT,CR,LF + DB ' X ',DIM,'Exit Program',BRIGHT,CR,LF + DB ' Z[nn] ',DIM,'Sleep [nn (decimal) seconds]',BRIGHT + DB 0 + CALL SWAIT + call cls + cz crlf + call helpban + CALL ILPRT + DB DIM,'Command Line is of the form: ',BRIGHT,'DU3 du?',CR,LF + DB ' ',DIM,'"d" is Logged-In Disk, "u" is Current User' + DB BRIGHT,CR,LF + DB CR,LF + DB 'Ctrl-C ',DIM,'Cancel a function',BRIGHT,CR,LF + DB 'Ctrl-S ',DIM,'Suspend output',BRIGHT,CR,LF + DB '"," ',DIM,'Separate commands',BRIGHT,CR,LF + DB CR,LF + DB DIM,'Examples:',BRIGHT,' g0 ',DIM,'and',BRIGHT + DB ' +,d,z2,*' + DB CR,LF + DB DIM,'Causes:',BRIGHT,CR,LF + DB ' 1. Position to group 0',CR,LF + DB ' 2. Loops on step in, dump, sleep 2 sec',CR,LF + DB ' until control-c is typed',CR,LF,CR,LF + DB '"nn" usage varies with command as follows:',CR,LF + DB ' +, -, *, T, S, U, V, Z ',DIM,'nn in Decimal' + DB BRIGHT,CR,LF + DB ' ',DIM,'(use #nn for Hex)' + DB BRIGHT,CR,LF + DB ' G, M ',DIM,'nn in Hexadecimal' + DB BRIGHT,CR,LF + DB ' ',DIM,'(use #nn for Decimal)' + DB BRIGHT,CR,LF + DB CR,LF + DB '"ff" and "tt" are in Hexadecimal (use #ff or #tt for Decimal)' + DB 0 + CALL SWAIT + LDA IHFLG ;INITIAL HELP? + ORA A ;0=NO + JNZ EXIT1 ;RETURN TO CP/M IF SO + JMP PRMPTR ;NEW LINE INPUT IF NOT +helpban: + call ilprt + DB ' ',DIM,'-- DU3 Command Summary --',BRIGHT + DB CR,LF,CR,LF,0 + ret +; +;COMMAND: X +;Exit to CP/M +; +EXIT: + call dinit ;deinit terminal + JMP BASE ;WARM BOOT +; +;Quick Exit to CP/M +; +EXIT1: + LHLD DUTSTK ;GET CP/M STACK PTR + SPHL ;SET SP + RET + +; +;******************************** +;* * +;* Utility Subroutines * +;* * +;******************************** +; +GRPCMP: + MOV A,C + INR D + DCR D + JZ CMP8 + CMP M + INX H + RNZ + MOV A,B +; +CMP8: + CMP M + RET +; +;2's complement HL ==> HL +; +NEG: + MOV A,L + CMA + MOV L,A + MOV A,H + CMA + MOV H,A + INX H + RET +; +;HL/2 ==> HL +; +ROTRHL: + ORA A + MOV A,H + RAR + MOV H,A + MOV A,L + RAR + MOV L,A + RET +; +;Collect the number of '1' bits +;in A as a count in C +; +COLECT: + MVI B,8 ;NUMBER OF BITS +; +COLOP: + RAL + JNC COSKIP + INR C +; +COSKIP: + DCR B + JNZ COLOP + RET +; +;HL-DE ==> HL +; Carry Flag is Significant +; +SUBDE: + MOV A,L + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + RET +; +;Quick Kludge multiply +;HL*DE ==> HL +; +MULT: + PUSH B + PUSH D + XCHG + MOV B,D + MOV C,E + MOV A,B + ORA C + JNZ MULCON + LXI H,0 ;FILTER SPECIAL CASE + JMP MLDONE ; OF MULTIPLY BY 0 +; +MULCON: + DCX B + MOV D,H + MOV E,L +; +MULTLP: + MOV A,B + ORA C + JZ MLDONE + DAD D + DCX B + JMP MULTLP +; +MLDONE: + POP D + POP B + RET +; +;Routine to fill in disk params +;with every drive change +; +LOGIT: + LXI D,DPB ; THEN MOVE TO LOCAL + MVI B,DPBLEN ; WORKSPACE + CALL MOVE + LXI H,GRPDIS + MOV A,M + PUSH PSW + LDA BLM + MOV M,A + PUSH H + LHLD DSM + XCHG + CALL GTKSEC + SHLD MAXSEC + XCHG + SHLD MAXTRK + POP H + POP PSW + MOV M,A + RET + +;*********************************** +; +; DU3 Command Table +; +;*********************************** +CMDTBL: + DB ' ' ;null command + DW PROMPT +; + DB ':' + DW MAC +; + DB '@' + DW PCMD +; + DB '+' + DW PLUS +; + DB '-' + DW MINUS +; + DB '=' + DW SEARCH +; + DB '<' + DW SAVE +; + DB '>' + DW RESTOR +; + DB '#' + DW STATS +; + DB '?' + DW HELP +; + DB MULCH + DW REPEAT +; + DB '!' + DW UWAIT +; + DB 'A' + DW DUMP +; + DB 'C' + DW CHG +; + DB 'D' + DW DUMP +; + DB 'E' + DW EDIT +; + DB 'F' + DW POSFIL +; + DB 'G' + DW POS +; + DB 'H' + DW DUMP +; + DB 'L' + DW LOGIN +; + DB 'M' + DW MAP +; + DB 'N' + DW NEWDSK +; + DB 'P' + DW PRNTFF +; + DB 'Q' + DW QUEUER +; + DB 'R' + DW DOREAD +; + DB 'S' + DW POS +; + DB 'T' + DW POS +; + DB 'U' + DW USER +; + DB 'V' + DW VIEW +; + DB 'W' + DW DORITE +; + DB 'X' + DW EXIT +; + DB 'Z' + DW SLEEP +; + DB 0 ; End of Table +;************************************* + +; +;Temporary storage area +; +clock: + ds 1 ;clock speed +pagsiz: + ds 1 ;page size +muser: + ds 1 ;max user +mdisk: + ds 1 ;max disk +STKSAV: + DS 2 ;SAVE HL VALUE +DUTSTK: + DS 2 ;OLD CP/M STACK POINTER; TOP OF DU3 STACK +BUFAD: + DS 2 ;FORCES INITIAL READ +QCNT: + DS 2 ;NUMBER OF SECTORS IN QUEUE +QNXT: + DS 2 ;PTR TO NEXT SECTOR IN QUEUE +QLST: + DS 2 ;PTR TO LAST SECTOR IN QUEUE +QPTR: + DS 2 ;G-P QUEUE PTR +HEXAD: + DS 2 ;TO RE-FETCH A VALUE +TOGO: + DS 2 ;REPEAT COUNT (FFFF=CONT) +TWOUP: + DS 1 +UNUM: + DS 1 ;NUMBER OF CURRENT USER +ONLY1: + DS 1 ;FLAG TO PRINT ONLY 1 MAP ENTRY (0=NO) +MFPTR: + DS 2 ;MULTI FILE PTR FOR GETGRP +PAGFLG: + DS 1 ;LINE COUNTER FOR PAGING +PFLAG: + DS 1 ;1=PRINT +GROUP: + DS 2 ;GROUP NUMBER +GRPDIS: + DS 1 ;DISPLACEMENT INTO GROUP +SAVEFL: + DS 1 ;SAVE FLAG +CURTRK: + DS 2 ;CURRENT TRACK NUMBER +CURSEC: + DS 2 ;CURRENT SECTOR NUMBER +PHYSEC: + DS 2 ;CURRENT PHYSICAL SECTOR NUMBER +TABCOL: + DS 1 ;TAB COLUMN +CPYFCT: + DS 1 ;GROUP COPY FUNCTION; 0=READ, 0FFH=WRITE +FILECT: + DS 2 ;FILE COUNT +DIRPOS: + DS 1 ;POSITION IN DIRECTORY +FINDFL: + DS 1 ;1=MUST POSITION AFTER FIND +FTSW: + DS 1 ;SEARCH W/O INCREMENT +NOTPOS: + DS 1 ;INITIALLY NOT POSITIONED +WRFLG: + DS 1 ;MAY NOT WRITE UNTIL '+', '-', +; OR 'G' COMMAND +TGRP: + DS 2 ;TEMPORARY GROUP FLAG +FIRST0: + DS 1 ;SETS TO 0 IF FIRST SEC # IS 0 +DRIVE: + DS 1 ;DRIVE NUMBER +MAXTRK: + DS 2 ;MAX TRACK NUMBER +MAXSEC: + DS 2 ;MAX SECTOR NUMBER +SECTBL: + DS 2 ;POINTER TO SECTOR SKEW TABLE +; +IHFLG: + DS 1 ;0=NOT AT INITIAL HELP, 0FFH=AT INITIAL HELP +DUPFLG: + DS 1 ;SPACE OR STAR TO INDICATE MULTIPLE USERS +BACK: + DS 2 ;TO BACK UP IN "CA0-7F,X" +DUMTYP: + DS 1 +; +;The disk parameter block +;is moved here from CP/M +; +DPB EQU $ ;DISK PARAMETER BLOCK (COPY) +SPT: + DS 2 +BSH: + DS 1 +BLM: + DS 1 +EXM: + DS 1 +DSM: + DS 2 +DRM: + DS 2 +AL0: + DS 1 +AL1: + DS 1 +CKS: + DS 2 +SYSTRK: + DS 2 +; +;End of disk parameter block +; +SAVBUF: + DS 2 +INBUF: + DS 2 ;INPUT LINE BUFFER +PINBUF: + DS 2 ;PREVIOUS CONTENTS OF INPUT BUFFER +CTEMP: + DS 2 ;BUILD NEW COMMAND LINE BUFFER +CTEMPX: + DS 2 ;END OF CTEMP +MTABL: + DS 2 ;10 PAGES FOR 10 MACROS +GBUFF: + DS 2 +DIRECT: + DS 2 +; + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/DU312.LBR b/Images/Source/hd0/s0/u15/DU312.LBR new file mode 100644 index 0000000000000000000000000000000000000000..ec5d779786a9f854b873cace8d9256ac898778c0 GIT binary patch literal 64896 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 F|0m5H!7Ts) literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ECHO.MAC b/Images/Source/hd0/s0/u15/ECHO.MAC new file mode 100644 index 00000000..cbd4f7ea --- /dev/null +++ b/Images/Source/hd0/s0/u15/ECHO.MAC @@ -0,0 +1,181 @@ +; +; Program: ECHO +; Author: Richard Conn +; Version: 1.0 +; Date: 22 Mar 84 +; +version equ 10 +z3env SET 0F400H ;base address of ZCPR3 Environment Descriptor + +; +; The purpose of ECHO is two-fold: +; 1) to provide a convenient way of sending messages to +; the console during the execution of a command file or multiple command +; line; for example: +; +; echo Assembling;m80 =$1;^E +; if input;echo Linking;l80 /P:100,$1,A:SYSLIB/S,$1/N,/E;fi +; +; as a single multiple command line will print the informative messages of +; "ASSEMBLING" and "LINKING" during the respective phases of the commands +; +; 2) to provide a convenient way to send escape sequences +; to the CRT and printer; ECHO does no character translation, using direct +; BIOS calls, so sequences used to program intelligent devices can be +; issued by running echo and typing in those sequences +; + +; +; Z3LIB and SYSLIB References +; + ext z3init,print + +; +; Equates +; +wboot equ 00h +tbuff equ 80h +fcb1 equ 5ch +cr equ 0dh +ff equ 0ch +lf equ 0ah + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + +; +; Check for Help +; + lda fcb1+1 ;get first char + cpi '/' ;if slash, then print help + jnz echo + call print + db 'ECHO, Version ' + db (version/10)+'0','.',(version mod 10)+'0',cr,lf + db 'Syntax:',cr,lf + db ' ECHO text <-- send text to console',cr,lf + db ' ECHO $text <-- send text to printer',cr,lf + db ' ECHO $text^L <-- send text to printer',cr,lf + db ' terminated by CR,LF,FF' + db 0 + ret +; +; Run ECHO Routine +; +ECHO: + LXI H,TBUFF+1 ;PT TO FIRST CHAR +ECHO1: + MOV A,M ;SKIP LEADING SPACES + INX H ;PT TO NEXT + CPI ' ' + JZ ECHO1 + MOV B,A ;CHAR IN B + CPI '$' ;PRINT FLAG? + JZ ECHO2 + DCX H ;PT TO CHAR +; +; LOOP TO ECHO CHARS +; +ECHO2: + MOV A,M ;GET CHAR + ORA A ;EOL? + JZ ECHO4 + CPI FF ;FORM FEED? + JZ ECHO3 +ECHO2C: + CALL ECHOUT ;SEND CHAR + INX H ;PT TO NEXT + JMP ECHO2 +; +; FORM FEED - SEND NEW LINE FOLLOWED BY FORM FEED IF PRINTER OUTPUT +; +ECHO3: + MOV A,B ;CHECK FOR PRINTER OUTPUT + CPI '$' + JNZ ECHOFF ;SEND FORM FEED NORMALLY IF NOT PRINTER + CALL ECHONL ;SEND NEW LINE + MVI A,FF ;SEND FORM FEED + JMP ECHOUT +; +; SEND FORM FEED CHAR TO CONSOLE +; +ECHOFF: + MVI A,FF ;GET CHAR + JMP ECHO2C +; +; END OF PRINT LOOP - CHECK FOR PRINTER TERMINATION +; +ECHO4: + MOV A,B ;CHECK FOR PRINTER OUTPUT + CPI '$' + RNZ ;DONE IF NO PRINTER OUTPUT +; +; OUTPUT A NEW LINE +; +ECHONL: + MVI A,CR ;OUTPUT NEW LINE ON PRINTER + CALL ECHOUT + MVI A,LF ;FALL THRU TO ECHOUT +; +; OUTPUT CHAR TO PRINTER OR CONSOLE +; +ECHOUT: + MOV C,A ;CHAR IN C + PUSH H ;SAVE HL + PUSH B ;SAVE BC + LXI D,0CH-3 ;OFFSET FOR CONSOLE OUTPUT + MOV A,B ;CHECK FOR PRINTER + CPI '$' + JNZ ECHOUT1 + INX D ;ADD 3 FOR PRINTER OFFSET + INX D + INX D +; +; OUTPUT CHAR IN C WITH BIOS OFFSET IN DE +; +ECHOUT1: + CALL BIOUT ;BIOS OUTPUT + POP B ;RESTORE BC,HL + POP H + RET + +; +; OUTPUT CHAR IN C TO BIOS WITH OFFSET IN DE +; +BIOUT: + LHLD WBOOT+1 ;GET ADDRESS OF WARM BOOT + DAD D ;PT TO ROUTINE + PCHL ;JUMP TO IT + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ERASE.COM b/Images/Source/hd0/s0/u15/ERASE.COM new file mode 100644 index 0000000000000000000000000000000000000000..7862e26634f596898d31fb240385c5c5f6c736f7 GIT binary patch literal 2560 zcmZ8je{3699e=j(-uayqH@0ESsc0{EEu**8DQ;oHU7S`l3sFg|CM0RPw)s&zZPYYw zleAez;-m$sV-jK-LTCe|3I0L*19vcHItHrG^6;H_67J-xiuTWGIi?*3s9`nyUz^oO_&p|8qmj(#M{<6H=NqVj1jDo=9v z>7YobNcX_u!EQ+!&dkkEXJ@4^$M&JbDdco$n;zJ07A2{1B0W8qn3|r+%uZa$#1@t= zw!6S=Y-*uB7K=$)5Y1xh;sTJ&CzzVlEA8DY_0G;;%$!+}`m*Vaiw-cfdv0PrBMo$< zq^E##URs=9IG4S=AYGixUI2>Ov(n}H%$$3Eu)%U>=5jhC4KB?uWG*z6Q0YStoe|YE zcVAb>IlJvD!fW)tFCQP`;v-ygEk4Xa?D9ztc5{xTNnWM&h&NX-VqQlAp_C*q#CgE0 z0CwK10C)fZ3}!+0H_<|2pfU-ai$9jl9Ba-Goh0x ziRct3pWxa~AsomlPM22m^4j;ji6O24Q#YrL@DI<-G$QGe5RHk{5^0y{j2c^q4o_z1 zSSnEIBM

A7gcrOAK>t{zpvz<5f>USnb+BA&_Uiw26a!Jo8$mOxr|D!G7xHk})8} zKA4%zx^c-zJAKYEQh(~3jcTMJpDy&UJYO8`=zQhOw`Ey1CwPU4~rsr9i(Iev71jE$KhIp#&I;c}`+2Kv1RpSUt48^ORu5OLjU`+9v%`X)TdhrSU&c3^jczZYQ(w~4zu}s5%SjT~+M7uFVplr~7KA7@a zH{NQgZ(zMEAOBaERa0NWp%^rK)hs}iY}NihtG!z*ck8n#dRiG)a(1<#%P(P_KV;R) zo3&sR`uWM8DrDuCxQB0RM$!KA@n8_p;%HEUVWS9@sl_LV+(SIO5Rpenv_{{@Rf`@J z%xYzmR)h^*o+R`UK^-HuI!U6`C$L9O6Sn}iiqW%g-3|%BR5ds9dT=KYD@rc@Gy!pv zDA2>hwj!S*_SS5S=n-{ukndDS$&o%iU%Db}+qSJf9$G`$FQ6#>wP4&3Y&8w7+d`AX2LG6A%Xi3|6;M%t zl= z$nws!D?78V8v}j-eVSi~C!2zqL zL|j16)mKxk_0^lVSixgttK*YI&tu=7@AKOB{crE11N%2Rwa@K`s2={kM`y@;I`nf8 z<&=VPi#Wu1l{B#rShMjX;)upih$ArJH(nv7OC*RuG{dt5-yzcM&gw!>(*Huw)fC*n zE|J&XUk`dsaYGNHMn%_ov8i;A ztb9AW{QTLaf)*8T7*R1PmEc2&mfqe6<7ToMw36&&yP<<2)q`RrbWp5)08Fmw6oZ;V z{S9ct#oTKfzb@{0;NH>rb7JY5$lOa@7suS&n|KZ;?EbnAnV!v>1Uz|K71V``a7|xTfjF$-xVPsvw>Ct{RGtK6u0d~y}s&9+;zV7=lYnw SsXF3H!T7hhD~2|76! +LF EQU 10 ; + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env +; + LXI H,0 ; GET STACK PTR + DAD SP + SHLD STACK ; SAVE IT +; +; Compute Buffer Locations +; + CALL CODEND ; DETERMINE FREE SPACE + SHLD CMDLNE ; SET PTR TO COMMAND LINE + LXI D,100H ; BUFFER SIZE + DAD D ; COMMAND LINE + SHLD ERAFCB ; FCB FOR ERASE + DAD D + SHLD DIRBUF ; SET PTR TO DIRECTORY BUFFER + SPHL ; SET STACK PTR +; +; Save Location +; + CALL PUTUD ; SAVE AWAY CURRENT DU + +; +; Print Banner +; + CALL EPRINT + DB 'ERASE Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0',0 + LDA FCB+1 ; GET FIRST CHAR OF FILE NAME + CPI '/' ; OPTION CAUGHT? + JNZ ECONT + +; PRINT HELP INFORMATION +HELP: + CALL EPRINT + DB CR,LF,' ERASE dir:filename.typ,dir:fn.ft,... o...' + DB CR,LF,'Options:' + DB CR,LF,' I -- Inspect Mode' + DB CR,LF,' R -- Erase R/O Files without prompting user' + DB CR,LF,' S -- Include System Files' + DB 0 + JMP RETURN + +; RETURN TO OS +RETURN: + CALL GETUD ; RESET USER IF NECESSARY +RETX: + LHLD STACK ; GET OLD STACK + SPHL ; SET IT + RET + +; COPY BUFFER INTO TEMP BUFFER +ECONT: + LHLD CMDLNE ; PT TO COMMAND LINE + XCHG ; ... IN DE + LXI H,BUFF+1 ; PT TO BUFFER + MVI B,80H ; BUFFER SIZE (MAX) + CALL MOVEB ; COPY INTO COMMAND LINE BUFFER + +; EXTRACT FLAGS IF PRESENT + XRA A ; SET NO INSPECT, NO R/O, AND NO SYSTEM FILES + STA INSPECT + STA READONLY + MVI A,80H ; SELECT NON-SYS + STA SYSTEM + LXI H,0 ; SET FILE COUNT + SHLD FILECNT + LHLD CMDLNE ; PT TO BUFFER + +; SKIP TO FILE NAME STRING +SBLANK: + MOV A,M ; SKIP TO NON-BLANK + CPI ' ' ; ? + JNZ SBL1 + INX H ; PT TO NEXT CHAR + JMP SBLANK + +; SKIP TO END OF FILE NAME STRING +SBL1: + MOV A,M ; SKIP TO OR EOL + ORA A ; DONE? + JZ OPT + CPI ' ' ; + JZ OPT + INX H ; PT TO NEXT + JMP SBL1 + +; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO +OPT: + CPI '/' ; OPTION CHAR? + JNZ OPTION + INX H ; SKIP SLASH + +; PROCESS LIST OF OPTIONS +OPTION: + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ DSPEC + INX H ; PT TO NEXT CHAR + CPI ' ' ; SKIP OVER SPACES + JZ OPTION + CPI '/' ; IF OPTION LETTER, OBVIOUS ERROR, SO HELP + JZ HELP + CPI 'I' ; INSPECT? + JZ OPTINS + CPI 'R' ; READ/ONLY? + JZ OPTRO + CPI 'S' ; SYSTEM FILES? + JNZ HELP + +; SET SYS SELECTION + MVI A,0C0H ; SET FOR SYS AND NON-SYS FILES + STA SYSTEM + JMP OPTION + +; SET INSPECT OPTION +OPTINS: + MVI A,0FFH ; INSPECT + STA INSPECT + JMP OPTION + +; SET R/O OPTION +OPTRO: + MVI A,0FFH ; SET R/O + STA READONLY + JMP OPTION + +; EXTRACT DISK, USER, AND FILE NAME INFORMATION +DSPEC: + LHLD CMDLNE ; PT TO BEFORE FIRST BYTE + DCX H ; PT TO BEFORE FIRST BYTE FOR FOLLOWING INX +DSPEC0: + INX H ; PT TO BYTE + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ HELP + CPI ' ' ; ? + JZ DSPEC0 +; +; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS +; HL PTS TO FIRST BYTE OF NEXT FILE SPEC +; +DSPEC1: + CALL GETUD ; RETURN HOME + LXI D,FCB ; PT TO FCB IN DE, PT TO FIRST CHAR OF FILE NAME IN HL + MVI A,0 ; SCAN FOR DIR FORM BEFORE DU + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + LXI H,FCB+1 ; SEE IF FILE NAME IS ALL WILD + MVI B,11 ; 11 BYTES +WTEST: + MOV A,M ; GET BYTE + INX H ; PT TO NEXT + CPI '?' ; WILD? + JNZ NOWILD + DCR B ; COUNT DOWN + JNZ WTEST + LDA INSPECT ; INSPECT? + ORA A ; 0=NO + JNZ NOWILD + CALL EPRINT + DB CR,LF,'Erase All Files? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + CALL COUT ; ECHO + CPI 'Y' ; YES? + JZ NOWILD + CALL EPRINT + DB CR,LF,'Aborting',0 + JMP RETX +NOWILD: + LXI D,FCB ; PT TO FCB + CALL Z3LOG ; LOG INTO DIRECTORY + +; LOAD DIRECTORY AND ERASE FILES +ERASE: + LHLD DIRBUF ; PT TO DIR BUFFER + LDA SYSTEM ; GET SYS/NON-SYS FLAGS + LXI D,FCB ; PT TO FCB + CALL DIRQ ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE + +; ERASE DIR FILES; HL PTS TO FIRST FILE, BC=FILE COUNT + CALL ERAFILES + +; CHECK FOR NEXT FILE SPEC + LHLD NEXTCH ; GET PTR + MOV A,M ; GET DELIM + CPI ',' ; ANOTHER FILE? + JNZ ERADONE + INX H ; PT TO CHAR AFTER COMMA + JMP DSPEC1 ; CONTINUE PROCESSING + +; ERASE COMPLETE -- PRINT COUNT AND EXIT +ERADONE: + CALL PRCOUNT ; PRINT FILE COUNT + JMP RETURN + +; ERASE SELECTED FILES +ERAFILES: + MOV A,B ; CHECK FOR ANY FILES LOADED + ORA C + RZ + +; PRINT FILE NAME +ERAFLP: + PUSH B ; SAVE ENTRY COUNT + CALL CRLF ; NEW LINE + PUSH H ; SAVE PTR TO FCB + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL PRNT + MVI A,'.' ; DECIMAL + CALL COUT + MVI B,3 ; PRINT TYPE + CALL PRNT + POP H ; GET PTR + +; CHECK FOR INSPECTION AND INSPECT IF SET + LDA INSPECT ; GET FLAG + ORA A ; 0=NO + JZ ERAIT + +; PROMPT USER FOR ERASE + CALL ERAQ ; ERASE QUESTION + CPI 'Q' ; QUIT? + JZ QUIT + CPI 'Y' ; YES? + JZ ERAIT + +; DON'T ERASE FILE +ERANO: + CALL EPRINT + DB ' NOT Erased',0 + JMP ERATEST + +; PROMPT USER FOR ERASE +ERAQ: + CALL EPRINT ; PRINT PROMPT + DB ' -- Erase (Y/N/Q=Quit/other=N)? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + CALL COUT ; ECHO + RET + +; QUIT ERASE PROGRAM +QUIT: + CALL PRCOUNT ; PRINT COUNT OF FILES ERASED + JMP RETURN + +; ERASE FILE +ERAIT: + PUSH H + LXI D,9 ; PT TO R/O ATTRIBUTE + DAD D + MOV A,M ; GET R/O ATTRIBUTE + POP H ; RESTORE PTR + ANI 80H ; R/O? + JZ ERAIT1 ; R/W - PROCEED + LDA READONLY ; GET R/O ERASE FLAG + ORA A ; 0=QUERY + JNZ ERAIT0 ; ERASE WITHOUT QUESTION IF FLAG SET + CALL EPRINT ; NOTIFY USER AND PROMPT + DB CR,LF,' File is R/O',0 + CALL ERAQ ; ASK QUESTION + CPI 'Q' ; QUIT? + JZ QUIT + CPI 'Y' ; ERASE R/O + JNZ ERATEST ; DO NOT ERASE IF NOT YES + +; ERASE R/O FILE +ERAIT0: + PUSH H ; SAVE PTR TO FILE ENTRY + LXI D,9 ; PT TO R/O ATTRIBUTE + DAD D + MOV A,M ; GET ATTRIBUTE + ANI 7FH ; MAKE R/W + MOV M,A + POP H ; GET PTR TO FCB + PUSH H ; SAVE PTR AGAIN + XCHG ; DE PTS TO FCB + XRA A ; MAKE SURE CURRENT DISK IS SELECTED + STAX D + MVI C,30 ; SET FILE ATTRIBUTES + CALL BDOS + POP H + +; ERASE R/W FILE +ERAIT1: + PUSH H ; SAVE PTR TO FILE NAME TO ERASE + INX H ; PT TO FIRST BYTE OF NAME + PUSH H ; SAVE HL + LHLD ERAFCB ; SET UP FCB + XCHG ; ... IN DE + POP H ; GET HL + PUSH D ; SAVE PTR + XRA A ; A=0 + STAX D ; CURRENT DISK + INX D ; PT TO FIRST CHAR + MVI B,11 ; COPY 11 BYTES + CALL MOVEB ; COPY HL TO DE FOR 11 BYTES + XCHG ; HL PTS TO REST OF FCB + MVI B,24 ; FILL REST OF FCB WITH ZEROES + XRA A ; A=0 + CALL FILLB + POP D ; GET PTR + MVI C,19 ; DELETE FILE + CALL BDOS + CALL EPRINT + DB ' Erased',0 + LHLD FILECNT ; INCREMENT COUNT + INX H + SHLD FILECNT + POP H ; GET PTR TO DIRECTORY ENTRY + +; PT TO NEXT ENTRY +ERATEST: + LXI D,ESIZE ; PT TO NEXT ENTRY + DAD D + POP B ; GET COUNT + DCX B ; COUNT DOWN + MOV A,B ; CHECK FOR ZERO + ORA C + JNZ ERAFLP + +; RETURN TO CALLER + RET + +; +; COPY HL TO DE FOR B BYTES +; +MOVEB: + MOV A,M ; GET BYTE + STAX D ; PUT BYTE + INX H ; PT TO NEXT + INX D + DCR B ; COUNT DOWN + JNZ MOVEB + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; +PRNT: + MOV A,M ; GET CHAR + CALL COUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PRNT + RET + +; +; PRINT COUNT OF NUMBER OF FILES ERASED +; +PRCOUNT: + CALL CRLF ; NEW LINE + LHLD FILECNT ; GET COUNT + MOV A,L ; CHECK FOR NONE + ORA H + JZ PRNO + CALL PHLDC ; PRINT DECIMAL COUNT + JMP PRMS +PRNO: + CALL EPRINT + DB 'No',0 +PRMS: + LHLD FILECNT ; 1 FILE ERASED? + MOV A,H ; HIGH ZERO? + ORA A + JNZ PRMULT + MOV A,L ; LOW ONE? + CPI 1 + JZ PRSING +PRMULT: + CALL EPRINT + DB ' Files Erased',0 + RET +PRSING: + CALL EPRINT + DB ' File Erased',0 + RET + +; +; BUFFERS +; +INSPECT: + DS 1 ; INSPECT FLAG (0=NO, 0FFH=YES) +SYSTEM: + DS 1 ; SYSTEM FLAG (0=NO, 80H=YES) +READONLY: + DS 1 ; READ/ONLY FLAG (0=QUERY FOR R/O, 0FFH=DON'T) +USER: + DS 1 ; NEW USER, OR 0FFH IF NO CHANGE +CURUSER: + DS 1 ; CURRENT USER NUMBER +NEXTCH: + DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE +FILECNT: + DS 2 ; COUNT OF NUMBER OF FILES ERASED +ERAFCB: + DS 2 ; PTR TO FCB FOR ERASE +CMDLNE: + DS 2 ; PTR TO COMMAND LINE +DIRBUF: + DS 2 ; PTR TO DIRECTORY BUFFER +STACK: + DS 2 ; OLD STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ERROR1.COM b/Images/Source/hd0/s0/u15/ERROR1.COM new file mode 100644 index 0000000000000000000000000000000000000000..3c50b652e0a48d7e675f33df1877778db97336a9 GIT binary patch literal 1536 zcma)6UuauZ7(ds0?`fMh)hs^PbjV5X9wh4$`^Tc`nrx1`P0K1#@-Sf|w6|R#P3leB zwAe<9`Z5tjuogBS_8_7N-Jm1>VPJDx>AiBwZdtVG!^pZ6M^K3@AP#Q*PHwwK@xh1t zo%8*^-}k%U`ObH*+Q^;l>OT|a(0xw>M?VngFMNL}G#Kh=Ct+DhMiX(;;eFa}L$qGd zM>#4BdXSSGn>?@-Wiq^FoQP z;kG-xE1lKnII|awq*R@|* ze>@dcWKumIEf{Cdbo}X;Le~>N$}B)%e7oLJjku4SPk7$wMh( z^^F{Xc0Pycj%ar1y}a3}kML%fp5)DL{X^>pPRA!BvFPxALP$<2(=ZL{0ta`n+w3tp z{;)kkb_jO%5=_N{K<9a&GS^+;EeG;yF2UkgxsE-C#&IZL^lbBnE4#AJtbUd6>6Pd@ z--BpK_-b=1`>jJj#TKKKloTMAAe1&VS9UGU!&t5F&M;Jh=$9|~{|Z*<+k*apFK<;c zQa1MoY_zg^MJ!h6giuZwG*~1_%2cF`G?FNrk7&hw5tB?-KO#tC?n$9w6c!oD@fd0` ztT}x~0IW}|ZrJe`er+QeRSOAzVD-Xm%FR4yW6b<10wyXm!5U`yZX#$Z$Y$*->XuV zf&t!&(j}kg*P}Dn_3yn!dfQd-FC9DD`C4%0wrdd<)$qCpeDtQzJ;dqJc(a9UE|6_*V_{Feo7 z3qHv$Ex%f6MsRcb1JP{Ii((UP!lqr{5KWu@qiEJKQ?LIls$YoB2#g(`>8uW$>TbL4 zWT5{2lXHUsLc>_hl^L|iRDz&S?y?pT#f zgIEn?+K<&6col|~L*52Q28~DxM$k SY*xR84|!2p+rZ=!)_(A;OG+!xnsp9l$gyTOb)7&L7q=MN1b1qDY2-Lk zE6G*jCaMb!N&1%=Yc~c<=^y(i1d_0&H?L4)U7h$IysZ}yxM5=mA+uF0n_voEV3&QL z&T*V=Li)b}gqH`#4onH?pJ7#CRm{G|W0R8;llu3_l#$6M(tA&ZP8O>)YI!JeN!vq^}RLyoi15Pa^EgK2ew=J>iS&2&Flv@?C&Wyq<#= zWSda4mHkAFM#!Y``ds3$LH4GPABPi=WNMQ&pUfR4339;5-;W{IOd@0}NkHK@M7|XS znz0r=LPlraOr(G@mxkmMx%=6Kvrih?`Qrw8K9fFdWV5`tTb$d{fHwOu?ZAUV$5Odu z#_-O(tw!F12W0n8C7{h-Y!$dWLS8(YN$1IEK5>$4C*$?)O#^#sejC#^@D`aOK}Wkf zUohs3!@13_f?g2&k?KZivDMY-KU&=Z`tMeEHw}rP5ru#*-b~CTXCA;Oja=p=vSwSu z@Pr1Xo$#P+E~l;b9yd~3-TNVElkm3GKz5g8ris>yz?VHK(OY<_+a8yf(uDi(gKR-S zrD}Lybb{t*2f3xg;^2_R4vK?_y(%xSpD?fcMO5u}YFRAmqoA4eW6>4pMbT}cS41|eT0a#*q}(bJ*m}jT zmcn;1yoR^G5dEE~drH%^f=Ry+*?ZV2Ummu>Jiv&O|C^}03$b8 ztv`fbg@$;$ACdgufa^d%k2TFh9+7J0Dmx~{&SUlwE;}nw47c{KzRUVqte?ZdfVt-G zqDzu{h@O-9>2gvKh5#P}?hGXuF1K0p=*+xq}Mm|;sOvt z9*k%C$f9^67+AjbXDRp&o4_9BICvLfgV>NI0gL&76lj{aEV%u}MSRkv@8Sj6tnS#-$R23&FR|txD*g-?G+x4cc)|JzH=x%OCN1LdMcLmA ztu~9l#c^?bmEFWE?Zsu@;kwQKfTiM1Yv+(ewZW&^_Wg*@MH z94=i*dlJ@8*|ed4``KaZEoBYSrKqcdVS{bf2T|tqTc@M!YFqJG)cO^l+&$KGei&t6 z`ryywX4G1avKuh~y6yBr47{6;8!?wq%E@TdWM9QXyG9`11jXCgP|Ugzt2Sbfj+pdb zv{Va!XQX?#Q{Q;IarW+hJ=`_|t@wdnUmX{FC93I#()VBKy4USkojL@b)rZG>3!(%Q zwmu+PVZGkFXPEBQd#xe8P_|dfb{w(Ns=lE3FUuW1CZV1yazQ(jKJ|O_+8~N8C?>t6 z^jwvJ?2^J9HLqD8Dk~0nVpn9l0{V)Qp~4~lr98rj3gvGou8-CfSLQ~c ze^;#QN(Tbd4nNQwOq#O|c|5KxjlVMyC!jW|D5(&yuQ+xCjz6o$eO#HgOK#1oE}~#$ zZWL~O+_ZyfG~&}7c4MRoW-qALtjb4vkU5~H{(87c{!(kcl%Sdcv(ID35>>> ',1,'VIDEO ERROR HANDLER',2,' <<<<',0 + call gxymsg + db 5,28 + db '-- Error Line --',0 + call at + db 6,10 + call stndout ;reverse video + call erradr ;get address of error line + call pstr + call stndend ;normal video + mvi h,10 ;position cursor + mvi l,15 + shld infoxy + call gxymsg + db 8,30 + db '-- Options --',0 + call atinfo + call vprint + db '1. Replace Command in Error with a New Command',0 + call atinfo + call vprint + db ' Replace ',1,0 + lhld badcmd + call pstr + call atinfo + call atinfo + call vprint + db 2,'2. Advance to Next Command and Resume Processing',0 + call atinfo + call vprint + db ' Advance to ',1,0 + lhld restcmd + call pstr + call atinfo + call atinfo + call vprint + db 2,'3. Replace Entire Line with a New Line',0 + call atinfo + call vprint + db ' Replace ',1,0 + call erradr ;pt to error line + call pstr + call atinfo + call atinfo + call vprint + db 2,'4. Throw Away Entire Line and Continue',0 + call atinfo + call vprint + db ' Throw Away ',1,0 + call erradr ;pt to error line + call pstr + call stndend +userin: + call gxymsg + db 22,20 + db 'Select Option - ',0 + call capine + cpi '1' ;option 1 + jz replace ;replace command in error + cpi '2' ;option 2 + jz advance ;advance to next command + cpi '3' ;option 3 + jz newline ;enter new line + cpi '4' ;option 4 + jz flush ;throw away line + call print + db 8,' Invalid Option - Retry',0 ;backspace over error + jmp userin +; +; Position at INFOXY and advance ptr to next line +; +atinfo: + lhld infoxy ;pt to next position + call gotoxy ;go there + inr h ;next line + shld infoxy + ret +; +; Replace Command in Error +; +replace: + call print + db ' Replacement Command?',cr,lf,' ',0 + lhld restcmd ;pt to rest of command line in DE + xchg + mvi a,0ffh ;capitalize + call bbline ;get line from user + call build ;build and run command + jmp prompt ;continue if error +; +; Advance to Rest of Command Line +; +advance: + lhld restcmd ;pt to it + xchg + lxi h,empty ;HL pts to empty command, DE pts to tail + call build ;build and run command + jmp prompt ;continue if error +; +; Enter New Line +; +newline: + call print + db ' New Command?',cr,lf,' ',0 + mvi a,0ffh ;capitalize + call bbline ;get line from user + lxi d,empty ;HL pts to user command, DE pts to empty command + call build ;build and run command + jmp prompt ;continue if error +; +; Flush Commands +; +flush: + ret ;simply exit if no more commands +; +; Build New Command Line in SCRATCH Area and Run it by returning to ZCPR3 +; On input, HL pts to header, DE pts to tail +; +build: + lxi b,1 ;set char count (1 for ending zero) + push d ;save ptr to tail + push h ;save ptr to header + lhld scratch ;pt to scratch area + pop d ;get ptr to header + ldax d ;get first char + ora a ;any there? + cnz copy ;copy line into buffer + pop d ;get ptr to tail + ldax d ;anything there? + ora a + jz bldt ;terminate build if not + mvi m,cmtch ;begin with semicolon + inx h ;pt to next + call copy +bldt: + mvi m,0 ;store ending zero +; +; Store Command Line into MCL Buffer +; + call getcl1 ;pt to command line + cmp c ;check for char count within range + rc + mov a,b ;check for line too long + ora a ;line too long? + rnz ;error if so + lxi d,4 ;pt to first char + push h ;save ptr to current + dad d + pop d ;get ptr to current + xchg ;DE pts to first char position, HL pts to CL buffer + mov m,e ;set address to resume processing + inx h + mov m,d + lhld scratch ;pt to new line + xchg ;in DE, while HL pts to first char position + call copy ;copy it + mov m,a ;store ending zero + pop d ;clear stack + ret ;resume processing +; +; Copy string pted to by DE into buffer pted to by HL +; +copy: + ldax d ;get next char + ora a ;done? + rz + mov m,a ;store it + inx b ;increment count + inx h ;pt to next + inx d + jmp copy +; +; Buffers +; +ername: + db 'ERROR2 ',0 ;name of error handler +empty: + db 0 ;empty command line +infoxy: + ds 2 ;xy-coordinate for display +badcmd: + ds 2 ;ptr to bad command extracted +restcmd: + ds 2 ;ptr to tail of bad command line +scratch: + ds 2 ;ptr to scratch area used to build new lines + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ERROR3.COM b/Images/Source/hd0/s0/u15/ERROR3.COM new file mode 100644 index 0000000000000000000000000000000000000000..50755b22bc17422434b2a4011b1e6b3d04f7c314 GIT binary patch literal 640 zcmbV}&ubGw6vt;~+x%>5*BmtQGR>48VhGhjLB*iRHtnGerB?apojUq_xmEdy_Nx`+GicB=^}KZjF(OUd^v_8f+HB(MON#Ev zn-=>8$^7s;bZz&o45>>XXXkq)YYl%x;oYTyBkehmlasbjouY=+t01>W8csHww_H22 zR{kfBKSa6^>Gw7*Xo%h}or#y9QD+=10+U$mH42mL1zO;5P?%vyC`_?F3gZ$9c7jHA zv zCrN{`xc?s=MG$!a literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ERROR3.MAC b/Images/Source/hd0/s0/u15/ERROR3.MAC new file mode 100644 index 00000000..49e79a21 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ERROR3.MAC @@ -0,0 +1,154 @@ +; +; Program: ERROR3 +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; +version equ 10 + +; +; This error handler displays the name of the COM file which was +; not found and then flushes the command line, returning control to the +; user. +; +; This program is transportable from one ZCPR3 system to another +; provided it is reassembled with the correct address for the ZCPR3 +; Environment Descriptor (Z3ENV) or DDT is used to patch this address +; (which is the first two bytes after the opening JMP). If an external +; ZCPR3 Environment Descriptor is not available, one will have to be +; provided by setting the Z3ENV equate to 0 and providing SYSENV.LIB in +; the current directory at assembly time. +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +cmtch equ ';' ;comment character +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext z3init + ext print,pstr,codend,moveb + ext erradr,puter1,puterc ;Error Handler Routines + ext getefcb,getcl1,qerror ;Z3 Messages et al + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment +; +; Determine if Program Invoked as an Error Handler or By the User +; + call qerror ;error? + jz handler ;handle error +; +; Invoked by the User, so Install as an Error Handler +; + call getefcb ;pt to external FCB + jz start1 ;proceed if external FCB not available +; +; Make Name Invoked by User the Name of the Error Handler +; + inx h ;pt to first char + lxi d,ername ;pt to name of error handler message + mvi b,8 ;at most 8 bytes + call moveb ;copy into buffer +; +; Make Command Line in Buffer the Error Handler +; +start1: + lxi h,ername ;make name in buffer the error handler + call puterc ;set command + mvi a,0ffh ;set error code + call puter1 ;set message + call print + db 'ERROR3, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db cr,lf,' Error Handler Installed',0 + ret +; +; Handle Error +; +handler: + call erradr ;get address of error line + xchg ;HL pts to free area, DE pts to error line + call codend ;get ptr to free area +; +; Extract Bad Command and Store It in Memory Starting at CODEND +; DE pts to bad command, HL pts to location to store it at +; +savebad: + ldax d ;get next char + mov m,a ;put it + ora a ;done? + jz sbad1 + cpi cmtch ;check for comment + jz sbad1 + cpi ' ' ;check for space + jz sbad1 + inx h ;pt to next + inx d + jmp savebad +; +; Set ending 0 in bad command buffer and print error message and command +; +sbad1: + mvi m,0 ;store ending zero + call print + db ' File ',0 + call codend ;pt to name + call pstr + call print + db '.COM Not Found',0 + call getcl1 ;pt to command line buffer + lxi d,4 ;pt to first char position + push h ;save current ptr + dad d + mvi m,0 ;zero command line + xchg ;DE pts to command line + pop h + mov m,e ;store address + inx h + mov m,d + ret + +; +; Buffers +; +ername: + db 'ERROR3 ',0 ;name of error handler + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ERROR4.COM b/Images/Source/hd0/s0/u15/ERROR4.COM new file mode 100644 index 0000000000000000000000000000000000000000..1aaf537dc2a54db3a993f84284421230ad3156ff GIT binary patch literal 640 zcmaix&ubGw6vt=Yw)xo<(|9oHW$XkGu>{3Z55b^FntCvS9C8RHP)#b8kie!Ag*M_J zAczOgo;(RsP#5Y!k`U<(%wdJS^tO~(WG^nb9=FaU-aX7`-uKJ*z1^7^MRDy$p;X1_ zcP5NQ6~qbV53#rj{0gS=V;l&HCGGMt77osz3lobiC{!xt%GxTaHudgqr%kSBuf-yy zpz9r-Y;Lz3t)@=ywYz)UtyZ&vn79azC~2vl!JlJ4r$8iVV)PiVBRP+3?6#T&$&7da zQfKd$?~_tzk8E_Fv>QnF_YHoCsh=CZ!xNE)_#ASQPM7L-e~BiH;aALN|3nCyc%ley z&t`I?l=eN^r#l_j2R5-L0U{@zV>&BRRphEErC~2m8YEBTOcZ+$Jvgc4zb($`- zGBt=_LdiOgCFK^VL=>$ zALB2h@kKdL#2L&F->aZIFqu!jpMj6K zL{K555K)LpcwW9P^X|9Xip(2ZlX3>5>_YqxSU+uZ;4=BH~9nRqf!5+|^}ApB_p%?T@OwG_Niz^Nu!J*SyS@c3|+Dmd+xV)wTbB|1Yc| B5)S|X literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ERROR4.MAC b/Images/Source/hd0/s0/u15/ERROR4.MAC new file mode 100644 index 00000000..364ba928 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ERROR4.MAC @@ -0,0 +1,179 @@ +; +; Program: ERROR4 +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; +version equ 10 + +; +; This error handler prints the name of the COM file which was not +; found and then advances to the next entry (assuming a multiple command +; line) and resumes with the next command in the line. +; +; This program is transportable from one ZCPR3 system to another +; provided it is reassembled with the correct address for the ZCPR3 +; Environment Descriptor (Z3ENV) or DDT is used to patch this address +; (which is the first two bytes after the opening JMP). If an external +; ZCPR3 Environment Descriptor is not available, one will have to be +; provided by setting the Z3ENV equate to 0 and providing SYSENV.LIB in +; the current directory at assembly time. +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +cmtch equ ';' ;comment character +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext z3init + ext print,pstr,codend,moveb + ext erradr,puter1,puterc ;Error Handler Routines + ext getefcb,getcl1,qerror ;Z3 Messages et al + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment +; +; Determine if Program Invoked as an Error Handler or By the User +; + call qerror ;error? + jz handler ;handle error +; +; Invoked by the User, so Install as an Error Handler +; + call getefcb ;pt to external FCB + jz start1 ;proceed if external FCB not available +; +; Make Name Invoked by User the Name of the Error Handler +; + inx h ;pt to first char + lxi d,ername ;pt to name of error handler message + mvi b,8 ;at most 8 bytes + call moveb ;copy into buffer +; +; Make Command Line in Buffer the Error Handler +; +start1: + lxi h,ername ;make name in buffer the error handler + call puterc ;set command + mvi a,0ffh ;set error code + call puter1 ;set message + call print + db 'ERROR4, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db cr,lf,' Error Handler Installed',0 + ret +; +; Handle Error +; +handler: + call erradr ;get address of error line + xchg ;HL pts to free area, DE pts to error line + call codend ;get ptr to free area +; +; Extract Bad Command and Store It in Memory Starting at CODEND +; DE pts to bad command, HL pts to location to store it at +; +savebad: + ldax d ;get next char + mov m,a ;put it + ora a ;done? + jz sbad1 + cpi cmtch ;check for comment + jz sbad1 + cpi ' ' ;check for space + jz sbad1 + inx h ;pt to next + inx d + jmp savebad +; +; Set ending 0 in bad command buffer and print error message and command +; +sbad1: + mvi m,0 ;store ending zero + call print + db ' File ',0 + call codend ;pt to name + call pstr + call print + db '.COM Not Found',0 +; +; Advance to Next Entry in Error Line +; + call erradr ;pt to error +sbad2: + mov a,m ;skip to comment or eol + ora a ;eol? + jz sbad3 + inx h ;pt to next + cpi cmtch ;comment? + jnz sbad2 +; +; Set Up Command Line Pointer +; +sbad3: + push h ;save ptr to error text + call getcl1 ;pt to command line buffer + lxi d,4 ;pt to first char position + xchg + dad d + xchg ;DE pts to command line + mov m,e ;store address + inx h + mov m,d + pop h ;HL pts to next command, DE pts to cmd line +; +; Set Up Command Line Contents +; +sbad4: + mov a,m ;copy + stax d + inx h ;pt to next + inx d + ora a ;done? + jnz sbad4 + ret + +; +; Buffers +; +ername: + db 'ERROR4 ',0 ;name of error handler + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ERRORX.COM b/Images/Source/hd0/s0/u15/ERRORX.COM new file mode 100644 index 0000000000000000000000000000000000000000..9446a567c2a18a0c6808542b69a3c3fd9ff2c1de GIT binary patch literal 384 zcmX@i%@}3u>KDey@I{N0@oXZa9m82q#b343c%qY57|&o>WR@ zJX!bc@!4F)$0x5I{mREsr@Z~tLB@Zar&craoIT3;kN4CJ#(!L=<}&_c2N4{n7BU_# zV&r2061+fMx&0K70cJg8cemr1;NIwOr*QTYBkQ5nRsK?WPN}otYp{dL=$2+ss0#y?qVP5k9+Pt z-}&x&&AF4XbML>lwWFIOf2gZC`WT#qye_AKW<~iSloGx|HsBfEVWo{6eV3z`I65WL zFL-*HSJUuJqfeowt)sc6TI%i(jtm9-lE>vHn)d@@Zqj#grW8en!`3zKAKkgn>##|Z zRNzZH2mIB4FPFO(M`2MG=GX}X3_Wu10XVPw3wp$?5<#jMt^a~shbri1*f*`=5Bg^b$# zpY9wU>XTN2N;NeS3DcCA*v0u?pnE0ph)aXrCzX{8aVMXmpYc#cYx%J0iYj2iP4DIl z9#y@EFH?|(Mg}N}b{@5EUh_4u%RM{-ky+CO~B?5` zeYl*O`^MtEiy01Es;Vk;lTq~^_|{%SR6UBmj)Hmw1Ka~Brn{|%%oHG@Ted56=PdXQ z=3!d%y@;?0bJ&`;bZ&o}eWZ@SsI=7|7#rLzwfFA{1jnU;Kv3E;HZXwW$ExNg37rA# zRVNU76+)M0>D(02RF0Hh0C0!P zSZ{V)HEb~Egxzdzr%~2t-1AnN0IETbd%|hh93(WitA`<(r5CN4SZOh-uIbq%(xCi=PcK!L@k^=9l5*vzP})G}J>dq6C$!6Jr_~7PVYZ&w_j&BI2K98TH?ElaUOg9_!5c~`J zLDPe7uh3ZM5gM0sMNf*Ns6=K_)FV=-DPglJ-pd#fw!Ko=mTNWn&j#=FhI-HQ28}+l znd{>zx7t#VKNtOm+gybro22j9>F@4XMsBH(-*EfZd*o%%UNx8KGg#8n$$SY3D-pe2 zM0%}QOurLNhrUiUZTbe$6qzW}Ys7>JB?N^7*LXz7L*bMYTYW_*S`T*mB%CmO^^CY2 zOKHh;el 0; GAP = GAP/2) +SRTL0: + ORA A ; CLEAR CARRY + LHLD GAP ; GET PREVIOUS GAP + MOV A,H ; ROTATE RIGHT TO DIVIDE BY 2 + RAR + MOV H,A + MOV A,L + RAR + MOV L,A + +; TEST FOR ZERO + ORA H + JZ SDONE ; DONE WITH SORT IF GAP = 0 + + SHLD GAP ; SET VALUE OF GAP + SHLD I ; SET I=GAP FOR FOLLOWING LOOP + +; FOR (I = GAP + 1; I <= N; I = I + 1) +SRTL1: + LHLD I ; ADD 1 TO I + INX H + SHLD I + +; TEST FOR I <= N + XCHG ; I IS IN DE + LHLD N ; GET N + MOV A,L ; COMPARE BY SUBTRACTION + SUB E + MOV A,H + SBB D ; CARRY SET MEANS I > N + JC SRTL0 ; DON'T DO FOR LOOP IF I > N + + LHLD I ; SET J = I INITIALLY FOR FIRST SUBTRACTION OF GAP + SHLD J + +; FOR (J = I - GAP; J > 0; J = J - GAP) +SRTL2: + LHLD GAP ; GET GAP + XCHG ; ... IN DE + LHLD J ; GET J + MOV A,L ; COMPUTE J - GAP + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + SHLD J ; J = J - GAP + JC SRTL1 ; IF CARRY FROM SUBTRACTIONS, J < 0 AND ABORT + MOV A,H ; J=0? + ORA L + JZ SRTL1 ; IF ZERO, J=0 AND ABORT + +; SET JG = J + GAP + XCHG ; J IN DE + LHLD GAP ; GET GAP + DAD D ; J + GAP + SHLD JG ; JG = J + GAP + +; IF (V(J) <= V(JG)) + CALL ICOMPARE ; J IN DE, JG IN HL + +; ... THEN BREAK + JC SRTL1 + +; ... ELSE EXCHANGE + LHLD J ; SWAP J, JG + XCHG + LHLD JG + CALL ISWAP ; J IN DE, JG IN HL + +; END OF INNER-MOST FOR LOOP + JMP SRTL2 + +; +; SORT IS DONE -- RESTRUCTURE DIR1 IN SORTED ORDER IN PLACE +; +SDONE: + LHLD N ; NUMBER OF ENTRIES + MOV B,H ; ... IN BC + MOV C,L + LHLD ORDER ; PTR TO ORDERED POINTER TABLE + SHLD PTPTR ; SET PTR PTR + LHLD DIRBUF ; PTR TO UNORDERED DIRECTORY + SHLD PTDIR ; SET PTR DIR BUFFER + +; FIND PTR TO NEXT DIR1 ENTRY +SRTDN: + LHLD PTPTR ; PT TO REMAINING POINTERS + XCHG ; ... IN DE + LHLD PTDIR ; HL PTS TO NEXT DIR ENTRY + PUSH B ; SAVE COUNT OF REMAINING ENTRIES + +; FIND PTR TABLE ENTRY +SRTDN1: + LDAX D ; GET CURRENT POINTER TABLE ENTRY VALUE + INX D ; PT TO HIGH-ORDER POINTER BYTE + CMP L ; COMPARE AGAINST DIR1 ADDRESS LOW + JNZ SRTDN2 ; NOT FOUND YET + LDAX D ; LOW-ORDER BYTES MATCH -- GET HIGH-ORDER POINTER BYTE + CMP H ; COMPARE AGAINST DIR1 ADDRESS HIGH + JZ SRTDN3 ; MATCH FOUND +SRTDN2: + INX D ; PT TO NEXT PTR TABLE ENTRY + DCX B ; COUNT DOWN + MOV A,C ; END OF TABLE? + ORA B + JNZ SRTDN1 ; CONTINUE IF NOT + +; FATAL ERROR -- INTERNAL ERROR; POINTER TABLE NOT CONSISTENT +FERR$PTR: + CALL PRINT + DB 0DH,0AH,'DIRALPHA -- Pointer Error',0 + JMP RETURN + +; FOUND THE POINTER TABLE ENTRY WHICH POINTS TO THE NEXT UNORDERED DIR1 ENTRY +; MAKE BOTH POINTERS (PTR TO NEXT, PTR TO CURRENT UNORDERED DIR1 ENTRY) +; POINT TO SAME LOCATION (PTR TO NEXT DIR1 ENTRY TO BE ORDERED) +SRTDN3: + LHLD PTPTR ; GET PTR TO NEXT ORDERED ENTRY + DCX D ; DE PTS TO LOW-ORDER POINTER ADDRESS + MOV A,M ; MAKE PTR TO NEXT UNORDERED DIR1 PT TO BUFFER FOR + STAX D ; DIR1 ENTRY TO BE MOVED TO NEXT UNORDERED DIR1 POS + INX H ; PT TO NEXT PTR ADDRESS + INX D + MOV A,M ; MAKE HIGH POINT SIMILARLY + STAX D + +; COPY NEXT UNORDERED DIR1 ENTRY TO HOLD BUFFER + MVI B,ESIZE ; B=NUMBER OF BYTES/ENTRY + LHLD PTDIR ; PT TO ENTRY + LXI D,HOLD ; PT TO HOLD BUFFER + PUSH B ; SAVE B=NUMBER OF BYTES/ENTRY + CALL MOVE + POP B + +; COPY TO-BE-ORDERED DIR1 ENTRY TO NEXT ORDERED DIR1 POSITION + LHLD PTPTR ; POINT TO ITS POINTER + MOV E,M ; GET LOW-ADDRESS POINTER + INX H + MOV D,M ; GET HIGH-ADDRESS POINTER + LHLD PTDIR ; DESTINATION ADDRESS FOR NEXT ORDERED DIR1 ENTRY + XCHG ; HL PTS TO ENTRY TO BE MOVED, DE PTS TO DEST + PUSH B ; SAVE B=NUMBER OF BYTES/ENTRY + CALL MOVE + POP B + XCHG ; HL PTS TO NEXT UNORDERED DIR1 ENTRY + SHLD PTDIR ; SET POINTER FOR NEXT LOOP + +; COPY ENTRY IN HOLD BUFFER TO LOC PREVIOUSLY HELD BY LATEST ORDERED ENTRY + LHLD PTPTR ; GET PTR TO PTR TO THE DESTINATION + MOV E,M ; GET LOW-ADDRESS POINTER + INX H + MOV D,M ; HIGH-ADDRESS POINTER + LXI H,HOLD ; HL PTS TO HOLD BUFFER, DE PTS TO ENTRY DEST + CALL MOVE ; B=NUMBER OF BYTES/ENTRY + +; POINT TO NEXT ENTRY IN POINTER TABLE + LHLD PTPTR ; POINTER TO CURRENT ENTRY + INX H ; SKIP OVER IT + INX H + SHLD PTPTR + +; COUNT DOWN + POP B ; GET COUNTER + DCX B ; COUNT DOWN + MOV A,C ; DONE? + ORA B + JNZ SRTDN + RET ; DONE + +; +; SWAP (Exchange) the pointers in the ORDER table whose indexes are in +; HL and DE +; +ISWAP: + PUSH H ; SAVE HL + LHLD ORDER ; ADDRESS OF ORDER TABLE - 2 + MOV B,H ; ... IN BC + MOV C,L + POP H + DCX H ; ADJUST INDEX TO 0...N-1 FROM 1...N + DAD H ; HL PTS TO OFFSET ADDRESS INDICATED BY INDEX + ; OF ORIGINAL HL (1, 2, ...) + DAD B ; HL NOW PTS TO POINTER INVOLVED + XCHG ; DE NOW PTS TO POINTER INDEXED BY HL + DCX H ; ADJUST INDEX TO 0...N-1 FROM 1...N + DAD H ; HL PTS TO OFFSET ADDRESS INDICATED BY INDEX + ; OF ORIGINAL DE (1, 2, ...) + DAD B ; HL NOW PTS TO POINTER INVOLVED + MOV C,M ; EXCHANGE POINTERS -- GET OLD (DE) + LDAX D ; -- GET OLD (HL) + XCHG ; SWITCH + MOV M,C ; PUT NEW (HL) + STAX D ; PUT NEW (DE) + INX H ; PT TO NEXT BYTE OF POINTER + INX D + MOV C,M ; GET OLD (HL) + LDAX D ; GET OLD (DE) + XCHG ; SWITCH + MOV M,C ; PUT NEW (DE) + STAX D ; PUT NEW (HL) + RET +; +; ICOMPARE compares the entry pointed to by the pointer pointed to by HL +; with that pointed to by DE (1st level indirect addressing); on entry, +; HL and DE contain the numbers of the elements to compare (1, 2, ...); +; on exit, Carry Set means ((DE)) < ((HL)), Zero Set means ((HL)) = ((DE)), +; and Non-Zero and No-Carry means ((DE)) > ((HL)) +; +ICOMPARE: + PUSH H ; SAVE HL + LHLD ORDER ; ADDRESS OF ORDER - 2 + MOV B,H ; ... IN BC + MOV C,L + POP H + DCX H ; ADJUST INDEX TO 0...N-1 FROM 1...N + DAD H ; DOUBLE THE ELEMENT NUMBER TO POINT TO THE PTR + DAD B ; ADD TO THIS THE BASE ADDRESS OF THE PTR TABLE + XCHG ; RESULT IN DE + DCX H ; ADJUST INDEX TO 0...N-1 FROM 1...N + DAD H ; DO THE SAME WITH THE ORIGINAL DE + DAD B + XCHG + +; +; HL NOW POINTS TO THE POINTER WHOSE INDEX WAS IN HL TO BEGIN WITH +; DE NOW POINTS TO THE POINTER WHOSE INDEX WAS IN DE TO BEGIN WITH +; FOR EXAMPLE, IF DE=5 AND HL=4, DE NOW POINTS TO THE 5TH PTR AND HL +; TO THE 4TH POINTER +; + MOV C,M ; BC IS MADE TO POINT TO THE OBJECT INDEXED TO + INX H ; ... BY THE ORIGINAL HL + MOV B,M + XCHG + MOV E,M ; DE IS MADE TO POINT TO THE OBJECT INDEXED TO + INX H ; ... BY THE ORIGINAL DE + MOV D,M + MOV H,B ; SET HL = OBJECT PTED TO INDIRECTLY BY BC + MOV L,C + +; +; COMPARE DIR ENTRY PTED TO BY HL WITH THAT PTED TO BY DE; +; NO NET EFFECT ON HL, DE; RET W/CARRY SET MEANS DEQVWN3$^ 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/GOTO.COM b/Images/Source/hd0/s0/u15/GOTO.COM new file mode 100644 index 0000000000000000000000000000000000000000..69a84def305799e9e5705abecedc2a0b74b457fb GIT binary patch literal 768 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/HELP.HLP b/Images/Source/hd0/s0/u15/HELP.HLP new file mode 100644 index 00000000..d4433da6 --- /dev/null +++ b/Images/Source/hd0/s0/u15/HELP.HLP @@ -0,0 +1,21 @@ +:The HELP Subsystem for Online Documentation + + Thió  ió HELP¬  thå Onlinå Documentatioî Subsysteí  foò +ZCPR3®  Thå  purposå  oæ  HELР ió tï  allo÷  thå  useò  tï +interactivelù  querù thå *.HLÐ fileó oæ thå systeí iî  ordeò +tï  receivå informatioî summarieó oî variouó aspectó oæ  thå +useró workinç environment¬  sucè aó thå languagå systemó  hå +ió usinç anä certaiî subsystemó availablå tï him. + + Iæ thå useò desireó informatioî oî á specifiã topiã anä +hå haó á HELÐ Filå oæ thaô namå (ie¬  CPM.HLÐ ió á HELÐ Filå +oî CP/M)¬ hå maù issuå oæ HELÐ Commanä oæ thå form: + + HELP topic + +"topic¢  ió  thå  namå oæ thå  HELР Filå  (topic.HLP¬  likå +CPM.HLP). + + Pleaså  refeò  tï thå HELÐ Filå "HELPSYS.HLP¢ foò  morå +information. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/HELP.MAC b/Images/Source/hd0/s0/u15/HELP.MAC new file mode 100644 index 00000000..27c4f4d9 --- /dev/null +++ b/Images/Source/hd0/s0/u15/HELP.MAC @@ -0,0 +1,1207 @@ +; +; PROGRAM NAME: HELP +; AUTHOR: RICHARD CONN +; DATE: 18 MAY 84 +; VERSION: 5.0 +; PREVIOUS VERSIONS: None +; DERIVATION: HELP2.ASM 4.1 (23 MAY 83) +; NOTE: FOR USE WITH ZCPR3 ONLY +; +VERS EQU 50 +Z3ENV SET 0F400H + +; +; HELP supports an online documentation system under ZCPR3. Refer +; to the file HELP.HLP for more details. +; + +FALSE EQU 0 +TRUE EQU NOT FALSE + +; +; USER EQUATES: +; Set this to TRUE if all files must be of type HLP +; +FORCEHLP EQU TRUE ; TRUE IF FILES MUST BE OF TYPE HLP + +; +; Directory of Help Files if HELP Directory not found +; +HDISK EQU 'A'-'A' ; DISK +HUSER EQU 15 ; USER + +; +; Enter/Exit Standout Mode (Recommended that these values not be changed) +; +DIM EQU 'A'-'@' ; ^A TO ENTER STANDOUT +NOTDIM EQU 'B'-'@' ; ^B TO EXIT STANDOUT + +; +; SYSLIB ROUTINES +; + EXT Z3VINIT,CLS,STNDOUT,STNDEND + EXT GETCRT,GETPRT,PFIND,Z3LOG,DIRTDU + EXT CODEND + EXT LOGUD,RETUD,PUTUD,GETUD + EXT EPSTR,EPRINT,COUT,CIN,CAPS,PFN2,PAFDC + EXT INITFCB,F$EXIST,F$OPEN,F$READ,F$CLOSE + +; +; CP/M Constants +; +UDFLAG EQU 4 ; ADDRESS OF USER/DISK FLAG +BDOS EQU 5 ; ADDRESS OF BDOS ENTRY POINT +FCB EQU 5CH ; ADDRESS OF FILE CONTROL BLOCK +BUFF EQU 80H ; ADDRESS OF DMA BUFFER + +CR EQU 0DH ; +LF EQU 0AH ; +BEL EQU 'G'-'@' ; ^G +FF EQU 'L'-'@' ; ^L = FORM FEED +CTRLZ EQU 'Z'-'@' ; ^Z +CTRLC EQU 'C'-'@' ; ^C + +; +; HELP Control Characters +; +IHCHAR EQU ';' ; FLAG INDICATING INDEXED BY USER +SECTCHAR EQU ':' ; DEFINED TO BE COLON +BACKUPCHAR EQU 'L' ; BACK UP TO PREVIOUS FRAME CHAR +STRTCHAR EQU 'S' ; JUMP TO START OF INFORMATION CHAR +MENUCHAR EQU 'M' ; CHAR TO ABORT TO MENU +CPMABORTCHAR EQU CTRLC ; CHAR TO EXIT +LRCHAR EQU '^' ; RETURN TO PREVIOUS HELP LEVEL +ROOTCHAR EQU '.' ; RETURN TO ROOT OF HELP +PRCHAR EQU 'P' ; PRINT CURRENT FRAME +CPRCHAR EQU 'P'-'@' ; PRINT CURRENT INFORMATION SECTION + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3vinit ;initialize the ZCPR3 Env and the VLIB Env + jmp startx +; +; DEFAULT FILE NAME +; +HELPDIR: +DEFFN: + DB 'HELP ' ; BOTH HELP FILE AND HELP DIR SAME NAME +DEFTYP: + DB 'HLP' + +; +; Start of Program +; +STARTX: + LXI H,0 ; GET SP + DAD SP + SHLD STACK + CALL CODEND ; DETERMINE FREE MEMORY SPACE + SHLD HLPNSTK ; SET PTR TO HELP NAME STACK + LXI D,200H ; ALLOW 25+ ELEMENT HELP NAME STACK AND LARGE STACK + DAD D + SHLD HLPBUF + SPHL ; SET STACK + + LDA BDOS+2 ; BASE PAGE OF BDOS + SUI 10 ; 2K + 2 PAGES + STA TPAEND + + XRA A ; A=0 + STA HLPLVL ; SET HELP LEVEL TO 0 (NO RETURN FILE) + + LXI D,FCB ; PT TO FCB + CALL Z3LOG ; LOG INTO IT FOR DEFAULT + CALL PUTUD ; SAVE HOME + + LXI H,FCB+1 ; CHECK FOR FILE NAME + MOV A,M + CPI '/' ; OPTION CAUGHT? + JZ STRT0 + CPI ' ' ; NONE? + JNZ STRT1 +; +; INSERT 'HELP.HLP' INTO FCB OR CLEAR FCB +; +STRT0: + LXI D,DEFFN ; PT TO DEFAULT NAME + MVI B,11 ; 11 BYTES + XCHG + CALL MOVE ; MOVE (HL) TO (DE) FOR (B) BYTES + +; +; START/RESTART HELP PROGRAM (START ON INITIAL ENTRY, RESTART ON NODE LOAD) +; +STRT1: + LHLD HLPBUF ; RESET STACK + SPHL +; +; CHECK FOR WILD CARDS IN FILE NAME -- ERROR IF SO +; + LXI H,FCB+1 ; PT TO FIRST BYTE OF FILE NAME + MVI B,11 ; 11 BYTES +FCBWCK: + MOV A,M ; GET BYTE + ANI 7FH ; MASK + CPI '?' ; WILD? + JZ FCBWERR + INX H ; PT TO NEXT + DCR B + JNZ FCBWCK +; +; CHECK FOR FILE TYPE +; + LXI H,FCB+9 ; CHECK FOR FILE TYPE + + IF NOT FORCEHLP + MOV A,M ; CHECK FOR FILE TYPE SPECIFIED + CPI ' ' ; NONE? + JNZ STRT2 + ENDIF +; +; PLACE DEFAULT FILE TYPE OF '.HLP' IN FCB +; + LXI D,DEFTYP ; DEFAULT FILE TYPE + MVI B,3 + XCHG + CALL MOVE ; MOVE (HL) TO (DE) FOR (B) BYTES + +; +; FIND FILE +; +STRT2: +; +; LOOK INTO DIRECTORY PTED TO BY USER (OR CURRENT IF USER DID NOT SPEC ONE) +; + LXI D,FCB ; PT TO FCB +; CALL Z3LOG ; LOG INTO DIRECTORY + CALL INITFCB ; RESET FCB + CALL RETUD ; GET HOME LOCATION + CALL F$EXIST ; IS FILE THERE? + JNZ STRT3 +; +; LOOK ALONG PATH FROM CURRENT DIR (NOT INCLUDING CURRENT) +; + CALL GETUD ; RETURN HOME + LXI D,FCB ; PT TO FCB + MVI A,0 ; DON'T SEARCH CURRENT DIR ALSO + CALL PFIND ; SEARCH FOR FILE + JNZ STRT3 ; FILE FOUND, SO PROCESS +; +; LOOK IN HELP FILE DIRECTORY +; + LXI H,HELPDIR ; LOOK FOR HELP DIRECTORY + CALL DIRTDU ; CONVERT TO DU IN BC + JNZ LOGHLP ; LOG INTO DU IN BC IF FOUND + MVI B,HDISK ; LOG INTO HELP DIRECTORY + MVI C,HUSER +LOGHLP: + CALL LOGUD + LXI D,FCB ; PT TO FCB + CALL F$EXIST ; LOOK FOR FILE + JNZ STRT3 ; FILE FOUND +; +; FILE NOT FOUND +; + CALL EPRINT + DB CR,LF,' File Not Found',0 + JMP HLPEXIT + +; +; FILE CONTAINS WILD CARDS +; +FCBWERR: + CALL EPRINT + DB CR,LF,' AFN Not Allowed',0 + JMP HLPEXIT + +; +; LOAD HELP FILE INFORMATION +; ON INPUT, BC=DIRECTORY +; +STRT3: + CALL LOGUD ; LOG INTO DIRECTORY + LXI D,FCB ; OPEN FILE + CALL F$OPEN + LHLD HLPBUF ; PT TO BUFFER + SHLD NEXTADR ; SET PTR +; +; READ RECORDS UNTIL EOF +; +STRT4: + CALL READ ; READ INFO + JZ STRT4 ; NOT DONE IF ZERO RETURN + LXI D,FCB ; CLOSE FILE + CALL F$CLOSE + CALL GETUD ; RESTORE CURRENT DISK AND USER IF CHANGED + +; +; START OF HELP PROGRAM +; +HELP: + LHLD HLPBUF ; PT TO BUFFER + SPHL ; SET STACK + MVI A,0 ; SET NO FRAME + STA FRNUM + MOV A,M ; NO HEADER SECTION? + ANI 7FH ; MASK OUT MSB + CPI SECTCHAR + JNZ HELP1 ; HEADER SECTION EXISTS + CALL CLS ; NEW SCREEN + CALL PRINFO ; PRINT HELP INFO PTED TO BY HL + LDA HLPLVL ; CHECK TO SEE IF WE ARE NOT AT LEVEL 0 + ORA A ; 0=LEVEL 0 + JZ HLPEXIT ; ABORT IF SO + JMP LRURN ; GO TO PREVIOUS LEVEL IF NOT + +; +; EXIT POINT FOR ANY EXIT FROM THE REST OF THE HELP PROGRAM +; +HLPEXIT: + CALL GETUD ; RESET CALLING DISK/USER NUMBER + LHLD STACK ; GET CP/M SP + SPHL + RET ; DONE + +; +; PRINT HEADER INFORMATION AND SELECT AN OPTION +; +HELP1: + CALL PRHEADER ; PRINT HEADER + PUSH B ; SAVE C (NUMBER OF VALID SELECTIONS) + CALL CRLF1 ; NEW LINE + CALL STNDOUT ; GOTO DIM + CALL PRLEVEL ; PRINT LEVEL NUMBER + CALL EPRINT + DB 'Enter Selection ',0 + CALL PRP1 ; PRINT LEVEL MOVEMENT PROMPT + CALL STNDEND ; GOTO BRIGHT + POP B ; GET C + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + PUSH PSW + CALL CLS ; CLEAR SCREEN + POP PSW + CPI CTRLC ; EXIT + JZ HLPEXIT + CPI ROOTCHAR ; GO TO ROOT + JZ GOROOT + CPI LRCHAR ; RETURN TO PREVIOUS LEVEL + JZ LRURN + MOV B,A ; USER INPUT IN B + LDA HTYPE ; TYPE OF HELP FILE + CPI IHCHAR ; INDEXED BY USER? + JZ HELP5 ; FIND INFORMATION SECTION VIA INDEX SCAN + MOV A,B ; FIND INFORMATION SECITON VIA COUNT + SUI 'A'-1 ; ADJUST FOR COUNT + MOV B,A ; SAVE COUNT + JZ BADRESPONSE + JNC HELP2 +; +; INVALID RESPONSE +; +BADRESPONSE: + CALL SAK ; RING BELL + JMP HELP1 + +; +; VALID RESPONSE -- LOOK FOR AND PRINT INFORMATION SECTION +; +HELP2: + INR C ; 1 MORE THAN NUMBER OF POSSIBLE SELECTIONS + CMP C ; GREATER THAN NUMBER OF POSSIBLE SELECTIONS? + JNC BADRESPONSE + LHLD FIRSTENTRY ; GET PTR TO FIRST ENTRY + +; +; PRINT INFORMATION WHEN COUNT IS ZERO +; +HELP3: + DCR B ; COUNT DOWN SELECTIONS + JNZ HELP4 + CALL PRINFO ; PRINT INFO PTED TO BY HL + JMP HELP1 +; +; LOCATE NEXT INFORMATION SECTION +; +HELP4: + CALL FINDI ; SKIP TO NEXT INFORMATION SECTION + CPI CTRLZ ; END OF FILE? + JNZ HELP3 ; CONTINUE LOOPING IF NOT ELSE FALL THRU TO HELPERR +; +; ERROR -- REACHED END OF HELP FILE +; +HELPERR: + CALL EPRINT + DB CR,LF,' EOF on Help File',0 + JMP HELP1 + +; +; LOCATE NEXT INFORMATION SECTION VIA INDEX SCAN +; +HELP5: + LHLD FIRSTENTRY ; PT TO FIRST ENTRY +; +; LOOK FOR USER INDEX +; +HELP6: + PUSH H ; SAVE PTR TO THIS LINE +HELP7: + INX H ; SKIP OVER SECTION CHAR + MOV A,M ; GET CHAR + ANI 7FH ; MASK OUT MSB + CALL CAPS ; CAPITALIZE + CPI ' ' ; SKIP SPACES + JZ HELP7 + CPI SECTCHAR ; NEW SECTION? + JZ HELP8 ; FIND NEXT SECTION + CPI CR ; END OF LINE? + JZ HELP8 ; FIND NEXT SECTION + CPI CTRLZ ; EOF? + JZ HELP8 + CMP B ; CHECK FOR USER INPUT + JNZ HELP7 + POP H ; FOUND IT -- PRINT IT + INX H ; SKIP OVER SECTION CHAR +HELP7A: + MOV A,M ; SKIP TO BEGINNING FOR 1ST LINE + INX H ; PT TO NEXT + ANI 7FH + CPI CTRLZ ; TRAP EOF + JZ BADRESPONSE + CPI SECTCHAR ; FILE SPECIFIED? + JZ HELP7B ; PROCESS IT + CPI LF ; BEGIN NEW LINE + JZ HELP7C + CPI CR ; AT END OF INDEX LINE? + JNZ HELP7A + MOV A,M ; GET LF + ANI 7FH + CPI LF ; SKIP FOLLOWING LF IF ANY + JNZ HELP7C + INX H ; SKIP LF + JMP HELP7C +; +; LOAD NEXT HELP LEVEL +; +HELP7B: + DCX H ; PT TO SECTION CHAR + DCX H ; PT TO BEFORE SECTION CHAR FOR PRINFO +; +; PROCESS HELP LEVEL OR LOAD AND PROCESS NEXT LEVEL PTED TO BY HL +; +HELP7C: + CALL PRINFO ; PRINT INFORMATION SECTION + JMP HELP1 ; RESUME +HELP8: + POP H ; PT TO INFO SECTION + CALL FINDI ; FIND NEXT INFO SECTION + CPI CTRLZ ; EOF? + JNZ HELP6 ; KEEP LOOKING + JMP BADRESPONSE + +; +; SKIP TO NEXT INFORMATION SECTIONS +; RETURN WITH A=SECTCHAR IF FOUND OR A=^Z IF NOT +; +FINDI: + MOV A,M ; ? + ANI 7FH ; MASK OUT MSB + INX H ; PT TO NEXT BYTE + CPI CTRLZ + RZ + CPI LF ; LINE FEED? + JZ FINDI1 + CPI CR ; ? + JNZ FINDI + MOV A,M ; MAKE SURE LF + ANI 7FH + CPI LF + JNZ FINDI1 + INX H ; SKIP OVER LF +FINDI1: + MOV A,M ; GET CHAR + ANI 7FH ; MASK OUT MSB + CPI SECTCHAR ; NEW SECTION? + JNZ FINDI ; CONTINUE LOOPING + RET + +; +; HELP SUPPORT ROUTINE SECTION +; + +; +; PRINT ERROR MSG PTED TO BY DE; ENDS IN 0 +; +PRMSG: + XCHG ; MSG PTED TO BY HL + CALL EPSTR + XCHG + RET + +; +; MOVE BYTES PTED TO BY HL TO AREA PTED TO BY DE; B BYTES TO MOVE +; +MOVE: + MOV A,M ; GET BYTE + ANI 7FH ; MASK OFF MSB -- IN CASE A WS FILE + STAX D ; PUT BYTE + INX H ; PT TO NEXT + INX D + DCR B + JNZ MOVE + RET + +; +; READ RECORD FROM DISK; NEXTADR CONTAINS ADDRESS TO READ TO +; ON RETURN, BDOS ERROR CODE IS IN A (0=NO ERROR) +; +READ: + LXI D,FCB ; PT TO FCB + CALL F$READ ; READ NEXT RECORD + PUSH PSW ; SAVE RETURN CODE + LHLD NEXTADR ; PT TO LOAD ADDRESS + LDA TPAEND ; CHECK AGAINST END PAGE OF TPA + CMP H ; IF AT SAME PAGE, YES + JZ READERROR + LXI D,BUFF ; PT TO BUFFER TO LOAD FROM + MVI B,128 ; NUMBER OF BYTES TO MOVE + XCHG + CALL MOVE + XCHG + MVI M,CTRLZ ; STORE ENDING CTRLZ IN CASE OF EOF + POP PSW ; GET RETURN CODE + ORA A ; DONE? <>0 IF SO +; +; READ DONE -- SAVE PTR TO NEXT BLOCK +; + SHLD NEXTADR ; SET NEXT ADDRESS + RET + +READERROR: + CALL EPRINT + DB CR,LF,' Mem Full',0 + JMP HLPEXIT + +; +; PRINT ONE LINE OF INFO SECTION; HL PTS TO LINE UPON ENTRY; +; HL PTS TO FIRST CHAR OF NEXT LINE UPON EXIT +; +PRLINE: + MOV A,M ; GET CHAR + ANI 7FH ; MASK OUT MSB + CPI CR ; EOL? + JZ CRLF + CPI LF ; LINE FEED? (WS FILE) + JZ CRLF0 + CPI CTRLZ ; END OF FILE? + JZ CRLFC ; DONE IF SO + INX H ; PT TO NEXT + CPI DIM ; GOTO STANDOUT MODE? + JZ PRLDIM + CPI NOTDIM ; GOTO NORMAL MODE? + JZ PRLNDIM + CALL COUT ; PRINT CHAR + JMP PRLINE +PRLDIM: + CALL STNDOUT ; ENTER STANDOUT MODE + JMP PRLINE +PRLNDIM: + CALL STNDEND ; END STANDOUT MODE + JMP PRLINE +; +; PRINT CRLF, PT TO FIRST CHAR OF NEXT LINE, AND PAGE IF NECESSARY +; +CRLF: + INX H ; PT TO LF +CRLF0: + INX H ; PT TO 1ST CHAR OF NEXT LINE +CRLFC: + CALL CRLF1 ; PRINT CRLF + LDA LCOUNT ; GET LINE COUNT + DCR A + STA LCOUNT + RNZ ; OK -- CONTINUE + MOV A,M ; SET MSB OF FIRST CHAR OF NEXT LINE + ORI 80H + MOV M,A ; MSB IS SET FOR LATER BACKUP + CALL PRPROMPT ; PRINT PROMPT AND PROCESS COMMON OPTIONS + CPI BACKUPCHAR ; BACK UP? + JZ FBACKUP + CPI STRTCHAR ; JUMP TO START OF INFO + JZ INFOSTRT +FRESUME: + SHLD STRTFRAME + JMP SETLCOUNT +; +; PRINT PROMPT AND PROCESS COMMON OPTIONS +; +PRPROMPT: + CALL STNDOUT ; GOTO DIM + CALL PRLEVEL ; PRINT LEVEL NUMBER + LDA FRNUM ; INCREMENT FRAME NUMBER + INR A + STA FRNUM + CALL PRP1 ; PRINT FUNDAMENTAL LEVEL DATA PROMPT + CALL EPRINT + DB MENUCHAR,'=Menu ' ; ABORT TO MENU CHAR + DB STRTCHAR,'=Start ' ; JUMP TO START OF INFORMATION CHAR + DB BACKUPCHAR,'=Last ' ; BACK UP TO PREVIOUS FRAME CHAR + DB PRCHAR,'=Print ' ; PRINT CURRENT FRAME + DB 0 + CALL STNDEND ; GOTO BRIGHT + CALL CIN ; GET RESPONSE + CALL CAPS + PUSH PSW + CALL CLS ; CLEAR SCREEN + POP PSW + POP D ; CLEAR STACK + CPI MENUCHAR ; ABORT? + JZ HELP ; START OVER IF SO + CPI CPMABORTCHAR ; ABORT TO OS + JZ HLPEXIT + CPI PRCHAR ; PRINT FRAME? + JZ LIST0INFO + CPI CPRCHAR ; PRINT INFORMATION SECTION? + JZ LIST1INFO + CPI ROOTCHAR ; GO TO ROOT + JZ GOROOT + CPI LRCHAR ; RETURN TO HIGHER LEVEL + JZ LRURN + PUSH D ; RESTORE STACK + RET + +; +; PRINT FUNDAMENTAL LEVEL PROMPT +; +PRP1: + LDA HLPLVL ; DON'T PRINT IF AT LEVEL 0 + ORA A + RZ + CALL EPRINT + DB LRCHAR,'=Level ' ; RETURN TO HIGHER NODE + DB ROOTCHAR,'=Root ' ; RETURN TO ROOT + DB 0 + RET + +; +; JUMP TO START OF INFORMATION +; +INFOSTRT: + LHLD STRTINFO ; PT TO START OF INFO + MVI A,1 ; RESET FRAME COUNT + STA FRNUM + JMP FRESUME ; CONTINUE PROCESSING + +; +; BACK UP TO PREVIOUS FRAME +; +FBACKUP: + CALL BOICHECK ; AT BEGINNING OF INFORMATION? + JZ INFOSTRT +FB1: + DCX H ; BACK UP UNTIL BYTE WITH MSB SET IS FOUND + MOV A,M ; GET BYTE + ANI 80H + JZ FB1 + LDA FRNUM ; DECREMENT FRAME NUMBER + DCR A ; BACK UP TO CURRENT FRAME NUMBER + DCR A ; BACK UP TO PREVIOUS FRAME NUMBER + STA FRNUM + JMP FRESUME ; CONTINUE PROCESSING +; +; PRINT CR AND LF ONLY +; +CRLF1: + MVI A,CR ; PRINT CR + CALL COUT + MVI A,LF ; PRINT LF + JMP COUT + +; +; SET LCOUNT VARIABLE TO SCREEN SIZE +; +SETLCOUNT: + PUSH H ; SAVE HL + CALL GETCRT ; GET CRT DATA + INX H ; PT TO LINE COUNT + MOV A,M ; GET LINE COUNT + POP H ; RESTORE HL + DCR A ; 1 LESS FOR PROMPT + STA LCOUNT + RET + +; +; PRINT THE HEADER SECTION AND LOAD FIRSTENTRY PTR +; ON RETURN, C=NUMBER OF POSSIBLE SELECTIONS +; +PRHEADER: + MVI A,0 ; SET NO FRAME + STA FRNUM + CALL SETLCOUNT + LDA LCOUNT + SUI 3 ; -3 lines for top and bottom + STA LCOUNT + MVI A,'A' ; INIT SELECTION CHAR + STA SELCHAR + CALL CLS ; CLEAR SCREEN + CALL EPRINT + DB 'HELP ' + db (vers/10)+'0','.',(vers mod 10)+'0' + DB ' ',0 + LXI D,FCB+1 ; PT TO FCB + CALL PFN2 ; PRINT WITH NO SPACES + CALL EPRINT + db ' Index',CR,LF,CR,LF,0 + MVI C,0 ; COUNT NUMBER OF SELECTIONS + LHLD HLPBUF ; PT TO BUFFER + MOV A,M ; GET FIRST CHAR + STA HTYPE ; SET TYPE OF HELP FILE + CPI IHCHAR ; INDEXED HELP TYPE? + JNZ PH1 + INX H ; SKIP OVER INDEX HELP TYPE FLAG +; +; PRINT LINE UNTIL FIRST INFORMATION SECTION FOUND +; +PH1: + MOV A,M ; GET CHAR + ANI 7FH ; MASK OUT MSB + CPI SECTCHAR + JZ PH2 + CPI CTRLZ ; EOF? -- ABORT + JZ HLPEXIT + INR C ; INCREMENT SELECTION COUNT + LDA HTYPE ; CHECK FOR INDEX + CPI IHCHAR + JZ PH1A ; SKIP LETTERS IF INDEXED + LDA SELCHAR ; DISPLAY SELECTION CHAR + CALL COUT + INR A ; INCR CHAR + STA SELCHAR + CALL EPRINT + DB '. ',0 +PH1A: + CALL PRLINE ; PRINT HEADER LINE + JMP PH1 +; +; SAVE PTR TO FIRST ENTRY +; +PH2: + SHLD FIRSTENTRY + LDA LCOUNT ; GET COUNT OF REMAINING LINES + MOV B,A ; ... IN B + ORA A ; ANY LEFT? + RZ +PH3: + CALL CRLF1 ; NEW LINE + DCR B + JNZ PH3 + RET + +; +; PRINT AN INFORMATION SECTION +; INFORMATION SECTION IS PTED TO BY HL +; +PRINFO: + SHLD STRTINFO ; SET START OF INFORMATION POINTER + CALL LDNOD ; LOAD NEW NODE IF DUAL SECTCHAR + SHLD STRTFRAME ; SET FRAME POINTER + MOV A,M ; SET MSB + ORI 80H + MOV M,A + CALL SETLCOUNT + MVI A,1 ; A=1 + STA FRNUM ; SET FRAME NUMBER +PI1: + CALL PRLINE ; PRINT LINE FROM INFO FILE + MOV A,M ; DONE? + ANI 7FH ; MASK OUT MSB + CPI CTRLZ ; EOF? + JZ PI2 + CPI SECTCHAR ; NEXT SECTION + JZ PI2 + CPI FF ; FORM FEED? + JNZ PI1 + INX H ; PT TO CHAR AFTER FORM FEED + CALL FORMFEED ; FEED SCREEN + JMP PI1 +; +; FORM FEED SCREEN +; +FORMFEED: + LDA LCOUNT ; GET LINE COUNT + MOV B,A ; ... IN B +FEEDLOOP: + PUSH B ; SAVE B + CALL CRLFC ; NEW LINE + POP B ; GET B + DCR B + JNZ FEEDLOOP + RET + +; +; END OF INFO +; +PI2: + MOV A,M ; SET MSB OF NEXT BYTE + ORI 80H + MOV M,A +PI2A: + CALL CRLF1 ; NEW LINE + LDA LCOUNT ; COUNT DOWN + DCR A + STA LCOUNT + JNZ PI2A +PI2MSG: + CALL EPRINT ; PRINT END OF INFORMATION INDICATOR + DB 'EOI ',0 + CALL PRPROMPT ; PRINT PROMPT AND PROCESS COMMON OPTIONS + CPI BACKUPCHAR ; BACK UP FROM EOI? + JZ PI2BACKUP + CPI STRTCHAR ; START OF INFO? + JZ PI2STRT + JMP SETLCOUNT ; RESET LINE COUNT IN CASE OF ALL + +; +; JUMP TO START OF INFO FROM EOI +; +PI2STRT: + LHLD STRTINFO ; PT TO START OF INFO + CALL FRESUME ; RESET POINTERS + MVI A,1 ; RESET FRAME COUNT + STA FRNUM + JMP PI1 ; CONTINUE PROCESSING + +; +; BACK UP TO PREVIOUS FRAME FROM EOI +; +PI2BACKUP: + CALL BOICHECK ; AT BEGINNING OF INFORMATION? + JZ PI2STRT +PI2BACK: + CALL FB1 ; BACK UP TO PREVIOUS FRAME + JMP PI1 ; CONTINUE PROCESSING + +; +; CHECK FOR POSITION AT BEGINNING OF INFORMATION SECTION +; IF SO, PRINT BACKUP ERROR MSG AND RETURN W/ZERO SET +; +BOICHECK: + LHLD STRTINFO ; START ADDRESS + XCHG ; ... IN DE + LHLD STRTFRAME ; FRAME ADDRESS + MOV A,D ; EQUAL? + CMP H + RNZ + MOV A,E + CMP L + RNZ + CALL SAK ; ERROR BELL + XRA A ; ZERO FLAG SET + STA FRNUM ; SET FRAME NUMBER + RET + +; +; THIS BODY OF CODE LISTS INFORMATION FROM HELP2 TO THE +; PRINTER +; + +; +; LIST ONE LINE OF INFO SECTION; HL PTS TO LINE UPON ENTRY; +; HL PTS TO FIRST CHAR OF NEXT LINE UPON EXIT +; +LISTLINE: + MOV A,M ; GET CHAR + ANI 7FH ; MASK OUT MSB + CPI CR ; EOL? + JZ LCRLF + CPI LF ; LINE FEED? (WS FILE) + JZ LCRLF0 + CPI CTRLZ ; END OF FILE? + JZ LCRLFC ; DONE IF SO + CALL LSTOUT ; PRINT CHAR + RZ ; ABORT + INX H ; PT TO NEXT + JMP LISTLINE + +; +; LIST CRLF, PT TO FIRST CHAR OF NEXT LINE, AND PAGE IF NECESSARY +; +LCRLF: + INX H ; PT TO LF +LCRLF0: + INX H ; PT TO 1ST CHAR OF NEXT LINE +LCRLFC: + CALL LCRLF1 ; PRINT CRLF + LDA LCOUNT ; GET LINE COUNT + DCR A + STA LCOUNT + JNZ LNOABT ; OK -- CONTINUE + CALL LFORMFEED ; ADVANCE TO NEXT PAGE +SETPLC: + PUSH H ; SAVE HL + CALL GETPRT ; GET PRINTER DATA + INX H ; PT TO TEXT LINE COUNT + INX H + MOV A,M ; GET TEXT LINE COUNT + STA LCOUNT ; SET LINE COUNT + POP H ; RESTORE HL + RET +LCRLF1: + MVI A,CR ; SEND TO PRINTER + CALL LSTOUT + RZ ; ABORT + MVI A,LF ; FALL THRU TO LSTOUT + +; +; PRINT CHARACTER IN A ON PRINTER; AFFECT NO REGISTERS +; +LSTOUT: + PUSH H ; SAVE REGS + PUSH D + PUSH B + MOV E,A ; CHAR IN E + MVI C,5 ; BDOS PRER OUTPUT ROUTINE + CALL BDOS + MVI E,0FFH ; CONDITIONAL INPUT + MVI C,6 ; DIRECT CONSOLE I/O + CALL BDOS + POP B ; RESTORE REGS + POP D + POP H + CPI CTRLC ; ABORT? + RET +LNOABT: + MVI A,0FFH ; SET NO ABORT RETURN + ORA A ; SET FLAGS + RET + +; +; LIST THE CURRENT INFORMATION SECTION +; INFORMATION SECTION IS PTED TO BY STRTINFO +; +; LIST0INFO -- LIST CURRENT FRAME ONLY +; LIST1INFO -- LIST CURRENT INFORMATION SECTION +; +LIST0INFO: + LHLD STRTFRAME ; LIST CURRENT FRAME ONLY + MVI A,0FFH ; SET FLAG + STA LFRFLAG ; LIST FRAME ONLY + JMP LIST2INFO +LIST1INFO: + LHLD STRTINFO ; PREPARE TO LIST ENTIRE INFO SECTION + XRA A ; CLEAR FRAME LIST FLAG + STA LFRFLAG +LIST2INFO: + CALL LISTINFO ; DO PRINT + CALL CLS ; CLEAR SCREEN + CALL LFORMFEED ; FORM FEED PRINTER + LHLD STRTFRAME ; RETURN TO FRAME WE WERE ON + CALL FRESUME + LDA FRNUM ; ADJUST FRAME NUMBERING + DCR A + STA FRNUM + JMP PI1 ; RESUME AT PI1 +; +; MAIN PRINT ROUTINE +; +LISTINFO: + CALL CLS ; PRINT FRAME OR INFO SECTION + CALL EPRINT + DB CR,LF,' Printing ',0 + CALL SETPLC ; SET PRINTER LINE COUNT +LI1: + CALL LISTLINE ; LIST LINE FROM INFO FILE + CPI CTRLC ; ABORT? + RZ ; FEED PRINTER AND EXIT + MOV A,M ; DONE? + ANI 7FH ; MASK OUT MSB + CPI CTRLZ ; EOF? + RZ ; RESUME IF AT END OF INFO + CPI SECTCHAR ; NEXT SECTION + RZ ; RESUME IF AT END OF INFO + CPI FF ; FORM FEED? + JNZ LI1 + LDA LFRFLAG ; LIST FRAME ONLY? + ORA A ; 0=NO + RNZ + INX H ; PT TO CHAR AFTER FORM FEED + CALL LCRLFC ; NEW LINE + MVI B,10 ; PRINT SEPARATOR +LI2: + MVI A,'-' ; DASHES + CALL LSTOUT + RZ ; ABORT? + DCR B ; COUNT DOWN + JNZ LI2 + CALL LCRLFC ; 2 NEW LINES + CALL LCRLFC + JMP LI1 + +; +; FORM FEED PRINTER +; +LFORMFEED: + CALL LCRLF1 ; NEW LINE + MVI A,FF ; OUTPUT FORM FEED + CALL LSTOUT + JMP SETPLC ; RESET LINE COUNT + +; +; END OF BODY OF CODE WHICH LISTS INFORMATION FROM HELP2 TO +; THE PRINTER +; + +; +; AT THE BEGINNING OF AN INFORMATION SECTION (HL PTS TO FIRST CHAR) +; CHECK TO SEE IF ANOTHER SECTCHAR FOLLOWS, AND, IF SO, LOAD THE +; SPECIFIED FILE AS A NEW NODE AND BEGIN PROCESSING IT +; +LDNOD: + INX H ; PT TO POSSIBLE 2ND SECTCHAR + MOV A,M ; GET IT + DCX H ; PREP FOR RETURN + ANI 7FH ; MASK MSB + CPI SECTCHAR ; ANOTHER ONE? + RNZ ; PROCESS NORMALLY IF NOT +; +; WE HAVE A NEW NODE -- CHECK TO SEE IF WE CAN NEST AGAIN +; + LDA HLPLVL ; GET CURRENT HELP LEVEL + CPI 25 ; AT MAXIMUM? + JNZ LDNOD1 + CALL CLS ; NEW SCREEN + CALL EPRINT + db cr,lf,' Node Level Limit',0 + JMP HLPEXIT + +; +; WE HAVE NOT REACHED LEVEL LIMIT, SO CONTINUE +; AT THIS TIME, A=HELP LEVEL INDEX AND HL = PTR TO CURRENT SECTION (::) +; +LDNOD1: +; +; SAVE CURRENT HELP FILE NAME FOR RETURN +; + INX H ; PT TO SECTION SECTCHAR + INX H ; NOW POINTING TO FILE NAME + PUSH H ; SAVE PTR + CALL COMPTR ; HL=POINTER TO STACK ELT INDEXED BY A + XCHG ; DE=ADDRESS OF NEXT ELEMENT +; +; COPY CURRENT NODE ELEMENT NAME INTO NEXT STACK ELEMENT +; + LXI H,FCB+1 ; PT TO FILE NAME + MVI B,11 ; 11 BYTES + CALL MOVE +; +; INCREMENT HELP LEVEL +; + LDA HLPLVL ; GET OLD LEVEL + INR A ; SET NEW LEVEL + STA HLPLVL +; +; SET UP FCB FOR NEW FILE +; + POP H ; GET PTR TO NEW FILE NAME + LXI D,FCB+1 ; PT TO FCB NAME + MVI B,8 ; 8 CHARS MAX + CALL LDFCB ; PLACE INTO FCB WITH ERROR CHECKING + MVI B,3 ; 3 CHARS MAX FOR TYPE + CPI '.' ; CONTINUE IF FILE TYPE PRESENT + CZ LDFCB ; PLACE INTO FCB WITH ERROR CHECKING +; +; PRINT LOADING HELP FILE MESSAGE +; +PLHFM: + CALL EPRINT + DB CR,LF,' Loading HELP File ',0 + LXI D,FCB+1 ; PRINT FILE NAME + CALL PFN2 + JMP STRT1 ; LOAD NEW HELP FILE + +; +; LOAD FCB PTED TO BY DE WITH "NORMAL" FILE NAME PTED TO BY HL FOR B BYTES +; +LDFCB: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CPI '.' ; DONE IF DECIMAL + JZ LDFCB2 + CPI ' '+1 ; DONE IF <= + JC LDFCB2 + CALL CAPS ; CAPITALIZE + STAX D ; STORE CHAR + INX D ; PT TO NEXT + DCR B + JNZ LDFCB +LDFCB1: + MOV A,M ; CHECK FOR ERROR + ANI 7FH ; MASK MSB + INX H ; PT TO NEXT CHAR + CPI '.' ; OK IF '.' + RZ + CPI ' '+1 ; OK IF <= + RC + JMP LDFCB1 +LDFCB2: + MOV C,A ; SAVE CHAR THAT TERMINATED STRING +LDFCB3: + MVI A,' ' ; FILL REST OF FCB + STAX D ; STORE + INX D ; PT TO NEXT + DCR B + JNZ LDFCB3 + MOV A,C ; GET CHAR THAT TERMINATED STRING + RET + +; +; GO TO ROOT +; +GOROOT: + LDA HLPLVL ; AT ROOT? + ORA A ; 0=YES + JZ HELP ; RETURN TO HELP + MVI A,0 ; SET ROOT INDEX + JMP GORET + +; +; RETURN TO PREVIOUS HELP LEVEL +; +LRURN: + LDA HLPLVL ; ARE WE AT THE LOWEST LEVEL? + ORA A ; 0=YES + JNZ LRET + CALL SAK ; ERROR BELL + JMP HELP + +; +; SET NEW HELP LEVEL +; +LRET: + DCR A ; DOWN 1 AND FALL THRU TO GORET + +; +; GO TO HELP LEVEL INDEXED IN A +; +GORET: + STA HLPLVL ; SET NEW HELP LEVEL + CALL COMPTR ; HL=POINTER TO TARGET HELP FILE NAME + LXI D,FCB+1 ; COPY ELEMENT INTO FCB + MVI B,11 ; 11 BYTES + CALL MOVE + JMP PLHFM ; PRINT LOADING MESSAGE AND LOAD + +; +; COMPUTE POINTER TO HELP NAME ENTRY INDEXED BY HELP LEVEL IN A +; +COMPTR: + MOV L,A ; VALUE IN HL + MVI H,0 ; COMPUTE OFFSET AS INDEX*11 + MOV E,L ; DE=HL + MOV D,H + DAD H ; *2 + DAD H ; *4 + DAD H ; *8 + DAD D ; *9 + DAD D ; *10 + DAD D ; *11 + XCHG ; RESULT IN DE + LHLD HLPNSTK ; PT TO BASE OF HELP NAMES + DAD D ; ADD IN OFFSET + RET + +; +; PRINT LEVEL NUMBER +; +PRLEVEL: + LDA HLPLVL ; DON'T PRINT LEVEL 0 + ORA A ; 0? + JZ PRFRAME + CALL EPRINT + DB 'Level ',0 + LDA HLPLVL ; GET NUMBER + CALL PAFDC ; PRINT AS DECIMAL + LDA FRNUM ; GET FRAME NUMBER + ORA A ; SET FLAGS + MVI A,'/' ; PREP TO PRINT SLASH + CNZ COUT ; PRINT SLASH IF FRAME IS NON-ZERO +PRFRAME: + LDA FRNUM ; GET NUMBER + ORA A + MVI A,' ' ; PREP TO PRINT SPACE ON EXIT + JZ COUT + LDA FRNUM ; GET FRAME NUMBER AGAIN + CALL PAFDC ; PRINT AS DECIMAL + CALL EPRINT + DB ': ',0 + RET + +; +; RING ERROR BELL +; +SAK: + MVI A,BEL + JMP COUT + +; +; BUFFER SECTION +; +HTYPE: + DS 1 ; TYPE OF HELP FILE (IF = IHCHAR, IT IS INDEXED BY USR) +LFRFLAG: + DS 1 ; LIST FRAME ONLY FLAG (FOR PRINT FUNCTION) +TPAEND: + DS 1 ; END PAGE ADDRESS OF TPA +STRTINFO: + DS 2 ; PTR TO START OF CURRENT INFORMATION BLOCK +STRTFRAME: + DS 2 ; PTR TO START OF CURRENT FRAME +SELCHAR: + DS 1 ; SELECTION TABLE OPTION CHAR +FIRSTENTRY: + DS 2 ; PTR TO FIRST ENTRY OF INFORMATION SECTION +LCOUNT: + DS 1 ; LINE COUNT BUFFER +NEXTADR: + DS 2 ; NEXT LOAD ADDRESS +HLPLVL: + DS 1 ; NUMBER OF HELP LEVEL CURRENT NODE IS AT (0=BOTTOM) +FRNUM: + DS 1 ; NUMBER OF CURRENT FRAME +HLPNSTK: + DS 2 ; PTR TO STACK OF HELP FILE NAMES OF EACH LEVEL +HLPBUF: + DS 2 ; PTR TO HELP BUFFER +STACK: + DS 2 ; OPSYS STACK PTR + + END diff --git a/Images/Source/hd0/s0/u15/HELPCK.COM b/Images/Source/hd0/s0/u15/HELPCK.COM new file mode 100644 index 0000000000000000000000000000000000000000..0a3c498028f6c9d57fd90a7053123e746cefda09 GIT binary patch literal 2048 zcmb_dZ){Ul6u(`2?|YQBP}J$>)LY&M;|z0-M3U#I!q~b+*cyloR9MRT2F0##bX~Rv zC?h5iBpMQv1tE|S;|HTS-0m2-%^W;s_k(2MK-eZasykTHnR2 zMP@fhSI5Rs`%9E=)e<97Jx-r(ZbAMXC~ZGu^*L;s`_%y;k9$iho(zwx9yg`cHzLu5 zIv9;<@$it=oJ31mWnWNEs1$bP{J)+ji4-Qm}eZxR#dB0KJcf<=xlEjBC)Q7Q86 zK!sf(;&>>eV_QzvX$pB zn{--xYk1@*!n$S9`3!~|UXhynsLFdgJ&leCs_uA18wV=(l*?*)B%L`$r? zg*E=X7o>ViccsKM5c|prq-FICZi7lnc0=w)jmk4v15OC84T_#%9^LUlJuwvK0@E$p zfOxh;+euy{QqSUx);6wRcYHukBmjVn0e)_;o+{c@H(-MvhZ!UFyi}Z+W$$4{QPP>& zK&{azgAyy02XOAVQ|R^^DL0+N>M8uWb;;?QKxBf?Y4N#+QU=sCOQj0$CT&Phq-f`8 zEQZVgYCVh7wrVXp?FP&3V#hGl*9Jl3TV4`$voRXiMrbrnyR>jbOTd@`!8ViX2tx@C zS{+Sjw4=9^hLcrTb;9>i1A$&ZAx3GXU6n*ax7&hk&><^dnDyFjNIn)#?x8ADDuOc? z)SR1kDb+VS#$jXQ;TR;pvyFwcQar@Y$+rL67cMp_86Udx(4X-T2Ftb!M|4Q}GC=l7 zbU+({{-7)cBzfCqyR8-2rq+VX_E<|WZ~;w#a;^mzFP`5kKvnQN(8|*|&y`$*LCG~d zN1^F7R(RNW3>T`E_KXhgf@Jz&MOVlMAod5&o1Cw~ieOv)@-998y+^P?9Ye#(6sq87 z727>)9K-NUBQH|tUz;Fh5hC_trCv z+JbWp8S6V7#C{K|@0r==^+Ghe-Amz7%FgA@^2~gJAmcAA9EWfDlk5rN``O7Yd}3hT z+#bBr0-EIKvL(}t4!)xwIJNs)GpRNFll5j@;0dcnC(90+oAULv!7QlJ?+BTn#mv;p>lPEShkq3@GmBE9gZAXuD8P5&s3 z7aghTk0p@(u5hC)!m +LF EQU 0AH ; +BEL EQU 'G'-'@' ; ^G +FF EQU 'L'-'@' ; ^L = FORM FEED +CTRLZ EQU 'Z'-'@' ; ^Z +CTRLC EQU 'C'-'@' ; ^C + +; +; HELP Control Characters +; +IHCHAR EQU ';' ; FLAG INDICATING INDEXED BY USER +SECTCHAR EQU ':' ; DEFINED TO BE COLON +PRCHAR EQU 'P' ; PRINTER OUTPUT + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + + MVI A,1 ; SELECT CONSOLE ONLY + STA SCTLFL ; SET SWITCHED OUTPUT FLAG + LDA FCB2+1 ; LOOK FOR PRINT OPTION + CPI 'P' + JNZ START1 + MVI A,81H ; SELECT CONSOLE AND PRINTER + STA SCTLFL + +START1: + LDA BDOS+2 ; BASE PAGE OF BDOS + SUI 10 ; 2K + 2 PAGES + STA TPAEND + + XRA A ; A=0 + STA ITYPE ; SET NON-INDEXED FOR TYPE OF FILE + + CALL PUTUD ; SAVE HOME + + CALL SPRINT + DB 'HELPCK Version ' + db (vers/10)+'0','.',(vers mod 10)+'0',0 + + LXI H,FCB+1 ; CHECK FOR FILE NAME + MOV A,M + CPI '/' ; OPTION CAUGHT? + JZ STRT0 + CPI ' ' ; NONE? + JNZ STRT1 +; +; PRINT HELP MESSAGE +; +STRT0: + CALL SPRINT + DB CR,LF,'Syntax:' + DB CR,LF,' HELPCK dir:filename.typ o <-- Check File' + DB CR,LF,' HELPCK dir:filename o <-- Check filename.HLP' + DB CR,LF,'Options:' + DB CR,LF,' P = Output to Printer' + DB 0 + RET + +; +; BEGIN HELP CHECK PROGRAM +; +STRT1: +; +; CHECK FOR WILD CARDS IN FILE NAME -- ERROR IF SO +; + LXI H,FCB+1 ; PT TO FIRST BYTE OF FILE NAME + MVI B,11 ; 11 BYTES +FCBWCK: + MOV A,M ; GET BYTE + ANI 7FH ; MASK + CPI '?' ; WILD? + JZ FCBWERR + INX H ; PT TO NEXT + DCR B + JNZ FCBWCK +; +; CHECK FOR FILE TYPE +; + LXI H,FCB+9 ; CHECK FOR FILE TYPE + + IF NOT FORCEHLP + MOV A,M ; CHECK FOR FILE TYPE SPECIFIED + CPI ' ' ; NONE? + JNZ STRT2 + ENDIF +; +; PLACE DEFAULT FILE TYPE OF '.HLP' IN FCB +; + LXI D,DEFTYP ; DEFAULT FILE TYPE + MVI B,3 + XCHG + CALL MOVE ; MOVE (HL) TO (DE) FOR (B) BYTES + +; +; READ IN FILE +; +STRT2: + CALL SPRINT + DB ' Help File: ',0 + LXI D,FCB+1 ; PT TO NAME + CALL SFN2 + LXI D,FCB ; PT TO FCB + CALL Z3LOG ; LOG INTO DIRECTORY + CALL INITFCB ; RESET FCB + CALL F$EXIST ; IS FILE THERE? + JNZ STRT3 +; +; FILE NOT FOUND +; + CALL SPRINT + DB CR,LF,' File Not Found',0 + RET + +; +; FILE CONTAINS WILD CARDS +; +FCBWERR: + CALL SPRINT + DB CR,LF,' AFN Not Allowed',0 + RET + +; +; LOAD HELP FILE INFORMATION +; +STRT3: + LXI D,FCB ; OPEN FILE + CALL F$OPEN + LXI H,HLPBUF ; PT TO BUFFER + SHLD NEXTADR ; SET PTR +; +; READ RECORDS UNTIL EOF +; +STRT4: + CALL READ ; READ INFO + JZ STRT4 ; NOT DONE IF ZERO RETURN + LXI D,FCB ; CLOSE FILE + CALL F$CLOSE + CALL GETUD ; RESTORE CURRENT DISK AND USER IF CHANGED + +; +; START OF HELP PROGRAM +; +HELP: + MVI A,1 ; SET NUMBER OF INFO SECTION + STA INFONUM + LXI H,HLPBUF ; PT TO FIRST CHAR + MOV A,M ; NO HEADER SECTION? + ANI 7FH ; MASK OUT MSB + CPI SECTCHAR + JNZ HELP1 ; HEADER SECTION EXISTS +; +; CHECK NON-INDEXED HELP FILE +; + CALL SPRINT + DB CR,LF,' Help File is Not Indexed',0 + CALL CKINFO ; CHECK HELP INFO PTED TO BY HL + RET +; +; CHECK INDEXED HELP FILE +; +HELP1: + STA ITYPE ; SET INDEX TYPE + CPI IHCHAR ; INDEXED BY USER? + JNZ HELP1A + CALL SPRINT + DB CR,LF,' Help File is User-Indexed',0 + JMP HELP1B +HELP1A: + CALL SPRINT + DB CR,LF,' Help File is Indexed by HELP',0 +HELP1B: + CALL CKHEADER ; CHECK HEADER +; +; CHECK INFORMATION SECTIONS OF INDEXED HELP FILE +; +HELP2: + CALL CKINFO ; CHECK INFO SECTION + PUSH PSW ; SAVE FLAG + LDA INFONUM ; INCREMENT NUMBER OF INFORMATION SECTION + INR A + STA INFONUM + POP PSW + CPI CTRLZ ; DONE? + JNZ HELP2 + LDA ITYPE ; USER INDEXED? + CPI IHCHAR + JZ HELP3 + LDA INFONUM ; GET COUNT OF INFO SECTIONS + DCR A ; ADJUST TO CORRECT NUMBER + MOV B,A ; SAVE IN B + CALL SPRINT + DB CR,LF,CR,LF,' Information Section Count is ',0 + LDA IDXNUM ; GET NUMBER OF INDEX ENTRIES + CMP B + JZ HELP2A + CALL SPRINT + DB 'Incorrect',0 + JMP HELP3 +HELP2A: + CALL SPRINT + DB 'Correct',0 +HELP3: + CALL SPRINT + DB CR,LF,' HELPCK Done',CR,LF,0 + LDA SCTLFL ; CHECK FOR PRINTER SELECTED + ANI 80H + RZ ; DONE IF NO PRINTER OUTPUT + CALL GETPRT ; GET PRINTER DATA + INX H ; PT TO FF FLAG + INX H + INX H + MOV A,M ; GET FLAG + ORA A ; 0=NO FF + RZ + MVI A,FF ; OUTPUT FF + JMP LOUT + +; +; MOVE BYTES PTED TO BY HL TO AREA PTED TO BY DE; B BYTES TO MOVE +; +MOVE: + MOV A,M ; GET BYTE + ANI 7FH ; MASK OFF MSB -- IN CASE A WS FILE + STAX D ; PUT BYTE + INX H ; PT TO NEXT + INX D + DCR B + JNZ MOVE + RET + +; +; READ RECORD FROM DISK; NEXTADR CONTAINS ADDRESS TO READ TO +; ON RETURN, BDOS ERROR CODE IS IN A (0=NO ERROR) +; +READ: + LXI D,FCB ; PT TO FCB + CALL F$READ ; READ NEXT RECORD + PUSH PSW ; SAVE RETURN CODE + LHLD NEXTADR ; PT TO LOAD ADDRESS + LDA TPAEND ; CHECK AGAINST END PAGE OF TPA + CMP H ; IF AT SAME PAGE, YES + JZ READERROR + LXI D,BUFF ; PT TO BUFFER TO LOAD FROM + MVI B,128 ; NUMBER OF BYTES TO MOVE + XCHG + CALL MOVE + XCHG + MVI M,CTRLZ ; STORE ENDING CTRLZ IN CASE OF EOF + POP PSW ; GET RETURN CODE + ORA A ; DONE? <>0 IF SO +; +; READ DONE -- SAVE PTR TO NEXT BLOCK +; + SHLD NEXTADR ; SET NEXT ADDRESS + RET + +READERROR: + POP PSW ; CLEAR PSW + POP PSW ; CLEAR RET ADR + CALL SPRINT + DB CR,LF,' Memory Full',0 + RET + +; +; CHECK HEADER +; +CKHEADER: + MVI A,0 ; SET LINE COUNT + STA IDXNUM +CKH1: + MOV A,M ; CHECK FOR DONE + CPI SECTCHAR ; DONE? + JZ CKH2 + CPI CTRLZ ; EOF? + JZ CKH3 + CALL SKPLINE ; SKIP TO NEXT LINE + LDA IDXNUM ; INCREMENT LINE COUNT + INR A + STA IDXNUM + JMP CKH1 +CKH2: + CALL SPRINT + DB CR,LF,' Lines in Header: ',0 + LDA IDXNUM ; GET COUNT + CALL SADC + RET +CKH3: + CALL SPRINT + DB CR,LF,' Premature EOF at Header',0 + RET + +; +; CHECK INFORMATION SECTION PTED TO BY HL +; +CKINFO: + CALL SPRINT + DB CR,LF,CR,LF,' Information Section ',0 + LDA INFONUM ; GET NUMBER OF INFO SECTION + CALL SADC ; PRINT IT + MOV A,M ; CHECK FOR VALID SECTION CHAR + ANI 7FH + CPI SECTCHAR + JZ CKINFO1 + CALL SPRINT + DB CR,LF,' Info Section Does Not Begin with :',0 +CKINFO1: + INX H ; PT TO FIRST CHAR + LDA ITYPE ; TYPE OF INFO SECTION + CPI IHCHAR ; USER-INDEXED? + JZ CKINFO2 + MOV A,M ; CHECK FOR EXTERNAL FILE REFERENCE + CPI SECTCHAR + JNZ CKINFO1C + INX H ; PT TO FIRST CHAR OF FILE NAME +CKIHF: + CALL SPRINT + DB CR,LF,' External Help File: ',0 + PUSH H ; SAVE HL +CKINFO1A: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + ANI 7FH + CALL CAPS + CPI ' '+1 ; CHECK FOR RANGE + JC CKINFO1B + CALL SOUT ; PRINT CHAR + JMP CKINFO1A +CKINFO1B: + POP H ; RESTORE HL + CALL SKPLINE ; SKIP TO EOL + JMP CKINFO3 +CKINFO1C: + CALL SKPLINE ; SKIP TO EOL + CALL EMPCK ; CHECK FOR EMPTY + JMP CKINFO3 +CKINFO2: + CALL SPRINT + DB CR,LF,' User Indices: ',0 +CKI2A: + MOV A,M ; GET CHAR + ANI 7FH + INX H ; PT TO NEXT + CPI SECTCHAR ; EXTERNAL HELP FILE? + JZ CKIHF + CPI LF + JZ CKI2C + CPI ' ' + JZ CKI2A + CPI CR + JZ CKI2B + CALL CAPS ; CAPITALIZE + CALL SOUT ; PRINT INDEX + MVI A,' ' ; FOLLOWING SPACE + CALL SOUT + JMP CKI2A +CKI2B: + MOV A,M ; CHECK FOR LF + ANI 7FH + CPI LF + JZ CKI2C + INX H ; SKIP LF +CKI2C: + CALL EMPCK ; CHECK FOR EMPTY +CKINFO3: + PUSH H + LXI H,1 ; SET LINE COUNTER + SHLD LCOUNT + POP H +CKINFO4: + MOV A,M ; CHECK FOR NEW INFO SECTION + CPI SECTCHAR + JZ CKISUM + CPI CTRLZ ; EOF? + JZ CKISUM + CALL SKPLINE ; SKIP TO NEXT LINE + PUSH H ; INCREMENT LINE COUNT + LHLD LCOUNT + INX H + SHLD LCOUNT + POP H + JMP CKINFO4 +CKISUM: + PUSH H + CALL SPRINT + DB CR,LF,' Number of Lines: ',0 + LHLD LCOUNT + CALL SHLDC + POP H + RET + +; +; CHECK TO SEE IF AT EOF OR INFO SECTION AND PRINT EMPTY MESSAGE IF SO +; +EMPCK: + MOV A,M ; GET CHAR + ANI 7FH + CPI CTRLZ ; EOF? + JZ EMPCK1 + CPI SECTCHAR + RNZ +EMPCK1: + CALL SPRINT + DB CR,LF,' Information Section is Empty',0 + RET + +; +; SKIP TO END OF CURRENT LINE +; +SKPLINE: + MOV A,M ; GET CHAR + ANI 7FH ; MASK + CPI CTRLZ ; EOF? + RZ + INX H ; PT TO NEXT + CPI LF + RZ + JMP SKPLINE + +; +; BUFFER SECTION +; +DEFTYP: + DB 'HLP' ; DEFAULT TYPE OF HELP FILE +ITYPE: + DS 1 ; TYPE OF HELP FILE (IF = IHCHAR, IT IS INDEXED BY USR) +TPAEND: + DS 1 ; END PAGE ADDRESS OF TPA +LCOUNT: + DS 2 ; LINE COUNTER +INFONUM: + DS 1 ; INFORMATION SECTION NUMBER +IDXNUM: + DS 1 ; INDEX NUMBER +FIRSTENTRY: + DS 2 ; PTR TO FIRST ENTRY OF INFORMATION SECTION +NEXTADR: + DS 2 ; NEXT LOAD ADDRESS + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/HELPPR.COM b/Images/Source/hd0/s0/u15/HELPPR.COM new file mode 100644 index 0000000000000000000000000000000000000000..97639218ce07a93aa4335e684cacb1997cdca3a8 GIT binary patch literal 4480 zcmZV?ZEzFU@yEE_jqJGKcH zwuK>?lC~*flKv^bNSaQDv>lO9MnFhv-62JX`yORth>-6Hg|*?WS%r=XvhVGYl-G+08HOh__;#2HeI#8gCzpmK(6sd*Au}dpybdu-y(E$Sej80_JCEIEK z09~XD($^$q0!LGsxaS!fB+vv48i5gv3Jz3Y%O-dy(f_{sV1b*Jiwjnk5uO%W^HRj% z1oMV3NXIkT1Ug(0&wxyO0lTnbA{&W~-7NE($-^XAnVT1Og?f7N=093iLF8j;4tMqi`~7$~=dA?WIv-sFz_+HXtW4+v zU}qY;angDXx!UUepa+#TE(GD@R)LDr~-zAm8&+`&S@&Q_thFWA%ft+jV7ti7YFy&WoeN5{dCu&JZB z`#>;EC?(5CzBqsIqQ2#%Po%Tn2g$=3MXCFhx%O@I)<2mWPn(z1xVovlPl@dxQf>_k0{-k_wPQh8{Xx+!lx zT{UaiYIk6~$iNRfVk1ClCBp20L_tLT`dP!ZifR%}HK z%@Gm3=xVbyqR*->i(aIbTST2!zh}|y>Z2Cjh5@7ApmeKRXVER{Zi{{tlfvW;3MDKy z^sGg`K_yTd6$fVl4G44WaLyuq4^Kvwh|WllTSPb`2@9N&gvHp|m=cbGselz2c94Ss zpkJhG{ENv`6N_pfQ8BgG(m!FT>Ay4*(d|jynxsrw5m5D{#Vie5Pkk^?J|2BF(q;n*n z)vQ;{=XeQ;R$DW8zYbUxkO9iSl#EHc3jD^D3<##DEcr=!%2E?c8Xg$@I_pB0FiU=` zk|%9)kk1QYAG44vH01zS!OM)2#WPpm#Hm8RwW7;bd;lVu*wrts8AA!JcgpLX;G*VT zK@MIX8Tv3^$oa|R4&wk4Fb_tRc_!`(-&7~8Q{tte-({`P?}E7BWvvQS5a7`70LS|V z8pNFbv=w|nuR4@Goq&|Z)DpVUNP}HkM#mMdlKf(}>1n!f@+)6f8@zD!o-g2!ACucE zqovm>(DurJc_vDkN?$ii#g(HKwOgB}*Go$)<*Ld}C{Vc>9-Dn6PyzD&E8vG}D*JPe z(F)x^xxI4KVzWzam3l=o;p=CS%BRs&Y$}b;(5blp2pdzPF5dv_JHkR+5Bmn$G=x^n zq$0jBtNW!dXwl!#!VQ5&wT$`?*i{TMO9G;n@ei=BbRpWwrlMftK3#v9)krHrYm`YZ zlWdHb##S}b3@ra3>oS%`cbH_M?v=`zzy=rE$jECMm#A+T+sHtm44xI`Czx!>5%&9# z+cauoQW*sevFay`CZb=kHH#wp#>qp>MD@k-w;2cnYF$X80DCh_6#%Nf&Hyp_76Xat zXMiES#bnU0*+v^;*h^Stkc}#t=z47Y4~Fq~^Ty#8^a)c~n1zUnK9>H%;O;O20_rVB zBb^X~e1QSA;v%pBU;xZS^pZ&{tFKS$ElIsBsr!@qnxwuisRxp=r2eE5RT3n@M<6Qo zF;>KWJ<0A4TL9wc*xYy=#zwQmvEg`3i9e=HRNT~=@mh9+@)%?a?=<|m6pDrN+0SAQ zq|H@GnE*9Q`&lJobh0j1d2Veu=gg+PH(0)ma7R*^7(|JwHQ%BhnWK!U2MG6b;w~|w zrDDpA!Kr|0k*5gvi4!eL2zP2)@!Vh)^;|Zcm`QVPWG2?tq+qwE*cx+*op3iKp5{2< z#`kan4AXJQSlV}o^NexiN`m&>;@oK@+EQ8ck}Z=;&Y*fbn4IF!Hk&ucY2GQY8L;8U zqj5%J@TKs`mGP}Mu$0P7M-^@b7{+(se{ukBbD{`7Yoh0KPMgDWoZ|VEEA-yts^DtE z79GavJ8rAmAW}=ChoKlw+3?HgGmhisvo;jBsUO)m7l>KjSvlD^WRS zb2uEi=lNlx>mkC8zO<=#ZOCBFcOqcM-Icza1Vs@{W8X=Jpd*>wu>TIH z+U&V%B{!^OH4qrQpw`(p)q6kX;MOb_QY<>pN$c!IAEz>tkK6M`<53(hF19$nz%I8( z*Jl)bt4$|hx$N^Do|{|-Z&QBaj$RtU zb#tDZJ5w^JRFNLGdNoI&*L*cLRK=ns3oqCCPdFG8JV8VzDkgacoLb&7limA5X{ozZ z%S^xAa^xDZTa>4{fw+QJ@i|f_lW?0?66x%W7Cp?{2sgD1-QuS+sW@hG4kYnVjJ1xy zY)r0mME{S^Et!{)f8fX_IHy6XeU2#Hzkyy1bPUkj@bad}& zoZ$R<@Kn9%fXfO1t9r#D|I)z`0POI-n1%UNmy)>Add@OvxBo279q2*+EQ0beOX z{gfEMk_!MVwhGqB422eB~F{X*g5oa*Wl0F!!c>C^PIZY z84%zNPZ8nK3K(Y=?f}yeN0aluINotW94DPN{4r!#2b>VcuoL0{U{zmn$~&D9$4;jm z9*6@F1G_(tdWhpR7Q}HR(lbj4`GOOVB-M(NPKp5lZrAhEkP?nKH8~CrtIpvTaQ1WO z2kPhGEX)olOR&2Jh8?cQpEjVR=)ySMkO&ok1p_Mv3VGjl49(={3B_=z;|@Z#|4t$u>PKM#xY7@vWeT8cnf zKCWcJ?ruc6AibG9_bcEoFqIw=_a@4vz=r_V!sidpLAfiD#|%s5u6%@pmnR!tQnhR7 zLl|+tz`E5g!%G&+n +CR EQU 13 ; +FF EQU 12 ; +LF EQU 10 ; +CTRLC EQU 'C'-'@' ; ^C +CTRLG EQU 'G'-'@' +CTRLH EQU 'H'-'@' +CTRLI EQU 'I'-'@' +CTRLS EQU 'S'-'@' +CTRLX EQU 'X'-'@' +CTRLZ EQU 'Z'-'@' +eold equ 0FFH ;End of Load Indicator + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + jmp startx +; +; **** Special Initial Value Area for User Installation +; +LWIDTH: + DB 132 ; PRINTER LINE WIDTH +LTPP: + DB 44 ; LINES OF TEXT PER PAGE +LSPP: + DB 5 ; LINES TO SKIP PER PAGE +LFF: + DB 1 ; FORM FEED FLAG +; +; NOTE: LTPP + LSPP + 2 (HEADER SIZE) = TOTAL LINES PER PAGE ON PRINTER +; +DLNUMFL: + DB 0 ; LINE NUMBER FLAG (DEFAULT TO NO) +DTIMEPFL: + DB 0FFH ; TIME PRINT FLAG (DEFAULT TO YES) +DINSPECT: + DB 0 ; INSPECT FILES (DEFAULT TO NO) +; +; WORKING BUFFERS +; +LNUMFL: + DB 0 ; LINE NUMBER FLAG +TIMEPFL: + DB 0FFH ; TIME PRINT FLAG +INSPECT: + DB 0 ; INSPECT FLAG +SKIPFL: + DB 0 ; SKIP FLAG (DEFAULT TO NO) +SKIPNUM: + DS 2 ; PAGE NUMBER TO SKIP TO +LNUM: + DS 2 ; CURRENT LINE NUMBER +PNUM: + DS 2 ; CURRENT PAGE NUMBER +HBUF: + DS 2 ; BUFFER FOR HEADING +; + if timeok +TIMEBF: + DS 100 ; BUFFER FOR TIME STAMP + endif +; +; Start of Program +; +STARTX: + LXI H,0 ; GET STACK PTR + DAD SP + SHLD V$STACK ; SAVE IT + XRA A ; A=0 + STA V$INSPECT ; TURN OFF FILE INSPECTION + CALL PUTUD ; SAVE CURRENT USER/DISK AWAY + call codend ; determine free space + shld V$CMDLNE ; set command line ptr + lxi d,100h ; arbitrary size + dad d + shld HBUF ; ptr to heading buffer + dad d + shld dirbuf ; ptr to dir buffer + sphl ; new stack + +; +; Save Command Line +; + lhld V$CMDLNE ; save command line + LXI D,TBUFF+1 ; SAVE COMMAND LINE + xchg + mvi b,80h ; 128 bytes + call moveb + +; +; Setup Printer Data +; + call getprt + mov a,m ;get width + sta lwidth + inx h + inx h + mov a,m ;get lines of text per page + sta ltpp + mov b,a ;save in B + dcx h + mov a,m ;get lines per page + sub b ;compute difference + sta lspp ;lines to skip per page + inx h + inx h + mov a,m ;get form feed flag + sta lff + +; +; Banner of Program +; + CALL BANNER ; PRINT BANNER +; +; Check for Help Request +; + LDA FCB+1 ; GET FIRST CHAR OF FILE NAME + CPI ' ' ; NO FILE SPEC? + JZ T$HELPENT + CPI '/' ; OPTION CAUGHT? + JNZ T$ECONT + +; +; Print Help Information +; +T$HELPENT: + CALL HELP ; PRINT PROGRAM'S HELP MESSAGE + +; +; RETURN TO OS +; +T$RETURN: + CALL DINIT ; DEINIT PROGRAM + LHLD V$STACK ; GET OLD STACK + SPHL ; SET IT + RET + +; +; PROGRAM'S INIT ROUTINE +; +T$ECONT: + CALL INIT ; PROG INIT ROUTINE +; +; EXTRACT FLAGS IF PRESENT +; + LXI H,0 ; SET FILE COUNT + SHLD V$FILECNT + LHLD V$CMDLNE ; PT TO BUFFER +; +; SKIP TO FILE NAME STRING +; + CALL T$SBLANK ; SKIP OVER BLANKS +; +; SKIP TO END OF FILE NAME STRING +; + CALL T$SNBLANK ; SKIP OVER NON-BLANKS +; +; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO +; +T$OPT: + CPI '/' ; OPTION CHAR? + JNZ T$OPTION + INX H ; SKIP SLASH +; +; PROCESS LIST OF OPTIONS +; +T$OPTION: + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ T$DSPEC + INX H ; PT TO NEXT CHAR + CPI ' ' ; SKIP OVER SPACES + JZ T$OPTION + MOV C,A ; COMMAND IN C + LXI D,OPTAB ; PT TO OPTION TABLE +T$OPTL: + LDAX D ; GET OPTION LETTER + ORA A ; END OF TABLE? + JZ T$HELPENT ; HELP IF SO + CMP C ; MATCH? + JZ T$OPTM ; PROCESS IF SO + INX D ; PT TO NEXT ENTRY + INX D + INX D + JMP T$OPTL +; +; PROCESS OPTION +; +T$OPTM: + PUSH H ; SAVE HL ON STACK + LXI H,T$OPTION ; GET RETURN ADDRESS + XTHL ; ... ON STACK AND RESTORE HL + INX D ; PT TO ADDRESS + LDAX D ; GET ADDRESS LOW + MOV B,A ; ... IN B + INX D + LDAX D ; GET ADDRESS HIGH + MOV D,A ; ... IN D + MOV E,B ; LOW IN E + PUSH D ; PUT ADDRESS ON STACK + MOV A,C ; COMMAND IN A + RET ; "CALL" OPTION ROUTINE +; +; BEGIN MOVING THROUGH FILE NAMES, SEPARATED BY COMMAS +; +T$DSPEC: + LHLD V$CMDLNE ; PT TO FIRST BYTE + CALL T$SBLANK ; SKIP TO NON-BLANK +; +; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS +; HL PTS TO FIRST BYTE OF NEXT FILE SPEC +; +T$DSPEC1: + shld hltemp ; save HL + lhld dirbuf ; reset stack + sphl + lhld hltemp ; restore HL + CALL GETUD ; RESET USER IF NECESSARY + LXI D,V$NTFCB ; PT TO FCB IN DE, PT TO 1ST CHAR OF FN IN HL + MVI A,0 ; DIR before DU + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + + push b ;save disk/user + push h ;save others + push d + lxi h,hlptyp ;optionally set default HLP type + lxi d,V$NTFCB+9 ;check for any specified + ldax d ;' ' means none + cpi ' ' + jnz hlpskp + mvi b,3 ;3 chars + call moveb +hlpskp: + pop d ;restore others + pop h + pop b ;restore disk/user + SHLD V$NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + +; +; LOAD DIRECTORY AND PERFORM FUNCTION +; +T$FCT: + LXI D,V$NTFCB ; PT TO FCB + CALL Z3LOG ; LOG INTO ACCOUNT + LHLD DIRBUF ; PT TO DIR BUFFER + MVI A,11000000B ; SELECT SYS AND NON-SYS FILES + LXI D,V$NTFCB ; PT TO FCB + CALL INITFCB ; INIT THE FCB + CALL DIRQS ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE +; +; DETERMINE BEGINNING OF SCRATCH AREA (SCRATCH) AND SIZE IN PAGES (BCNT) +; + PUSH H ; SAVE PTR AND COUNT + PUSH B + LXI D,C$ESIZE ; SET PTR TO NEXT FREE BLOCK +T$FCTFRE: + MOV A,B ; DONE? + ORA C + JZ T$FCTFR1 + DAD D ; PT TO NEXT + DCX B ; COUNT DOWN + JMP T$FCTFRE +T$FCTFR1: + INR H ; NEXT PAGE + MVI L,0 + SHLD V$SCRATCH ; SET PTR TO SCRATCH AREA + XCHG ; PTR IN DE + LHLD BDOSE+1 ; COMPUTE BLOCK BUFFER SIZE + MOV A,H ; ADJUST FOR ZCPR3 + SUI 10 + SUB D ; A=SIZE IN BLOCKS + STA V$BCNT ; SET BLOCK COUNT + POP B ; RESTORE AND SAVE REGS + POP H +; +; ALLOW USER TO INSPECT FILES +; + PUSH H + PUSH B + CALL T$ICHECK ; CHECK FOR INSPECT OPTION AND INSPECT IF SET + POP B ; RESTORE COUNT AND PTR + POP H + +; +; PERFORM FUNCTION; HL PTS TO FILE AND BC CONTAINS NUMBER OF FILES +; +T$FCTL: + MOV A,B ; CHECK FOR COMPLETION (COUNT = 0) + ORA C + JZ T$FCTL1 + DCX B ; COUNT DOWN + SHLD HLTEMP ; SET STACK + LHLD DIRBUF + SPHL + LHLD HLTEMP + PUSH B ; SAVE COUNT AND PTR + PUSH H + MOV A,M ; SELECTED FILE? + ORA A ; 0=YES + CZ FUNCTION ; PERFORM FUNCTION +; +; ENTRY POINT TO SKIP TO NEXT FILE IN LIST +; +E$FCTLNXT: + LHLD DIRBUF ; RESTORE STACK + LXI D,-4 ; 4 DOWN + DAD D + SPHL + POP H ; RESTORE PTR + POP B ; RESTORE COUNT + LXI D,C$ESIZE ; PT TO NEXT ENTRY + DAD D + JMP T$FCTL + +; +; CHECK FOR NEXT FILE SPEC +; +T$FCTL1: + CALL GETUD ; RETURN TO BASE USER/DISK + LHLD V$NEXTCH ; GET PTR + MOV A,M ; GET DELIM + CPI ',' ; ANOTHER FILE? + JNZ T$RETURN + INX H ; PT TO CHAR AFTER COMMA + JMP T$DSPEC1 ; CONTINUE PROCESSING +; +; INSPECT FILES -- THIS ROUTINE IS TO PERFORM A FILE INSPECTION +; ON INPUT, HL PTS TO FIRST 16-BYTE ENTRY AND BC=NUMBER OF ENTRIES +; +T$ICHECK: + MOV A,B ;ANY FILES? + ORA C ;0=NO + RZ + PUSH H ;SAVE PTRS + PUSH B + LXI D,C$ESIZE ;SIZE OF ENTRY +T$ICHK1: + MVI M,0 ;CLEAR MSBYTES + DAD D ;PT TO NEXT + DCX B ;COUNT DOWN + MOV A,B ;DONE? + ORA C + JNZ T$ICHK1 + POP B ;RESTORE PTRS + POP H + LDA V$INSPECT ;INSPECT? + ORA A ;0=NO + RZ + CALL EPRINT + DB CR,LF,' File Inspect Mode' + db cr,lf,' Cmd Function Cmd Function' + DB CR,LF,' Y(def) Select File Q Select Rest of Files' + DB CR,LF,' N Don''t Select S Skip Rest of Files' + db cr,lf,0 +T$ICHK2: + CALL EPRINT + DB CR,LF,'Select ',0 + CALL E$PRFN ;PRINT FILE NAME + CALL EPRINT + DB ' -- (Y/N/Q/S)? ' + DB 0 + CALL CIN ;GET RESPONSE + CALL CAPS ;CAPITALIZE + CALL COUT ;ECHO + CPI 'Q' ;SELECT REST? + JZ T$ICHKYR + CPI 'S' ;SKIP REST + JZ T$ICHKNR + CPI 'N' ;NO TO THIS ONE? + JNZ T$ICHK3 + MVI M,0FFH ;SET NO FLAG IN FILE FCB +T$ICHK3: + DAD D ;PT TO NEXT ONE + DCX B ;COUNT DOWN + MOV A,B ;DONE? + ORA C + JNZ T$ICHK2 + RET +; CHECK REST OF FILES AS SELECTED +T$ICHKYR: + CALL EPRINT + DB CR,LF,' Rest of Files Selected',0 + RET +; CHECK REST OF FILES AS NOT SELECTED +T$ICHKNR: + MVI M,0FFH ;SET NO FLAG + DAD D ;PT TO NEXT + DCX B ;COUNT DOWN + MOV A,B ;DONE? + ORA C + JNZ T$ICHKNR + CALL EPRINT + DB CR,LF,' Rest of Files NOT Selected',0 + RET +; +; UTILITIES +; T$SBLANK -- SKIP BLANKS PTED TO BY HL UNTIL NON-BLANK ENCOUNTERED; HL +; T$SNBLANK -- SKIP NON-BLANKS PTED TO BY HL UNTIL BLANK OR EOL; HL +; E$PRFN -- PRINT FILE NAME PTED TO BY HL; AFFECT NOTHING + +; +; SKIP UNTIL NON-BLANK +; +T$SBLANK: + MOV A,M ; LOOK FOR BLANK + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ T$SBLANK + DCX H ; BACK UP + RET + +; +; SKIP UNTIL BLANK OR EOL +; +T$SNBLANK: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ T$SNB1 + ORA A ; EOL? + JNZ T$SNBLANK +T$SNB1: + DCX H ; BACK UP + RET + +; +; PRINT FILE NAME PTED TO BY HL +; OUTPUT TO CON: +; +E$PRFN: + PUSH H ; SAVE REGS + PUSH B + CALL RETUD ; GET CURRENT USER/DISK + MOV A,B ; GET DISK NUMBER + ADI 'A' ; CONVERT TO LETTER + CALL COUT ; PRINT LETTER + MOV A,C ; GET USER NUMBER + CALL PADC ; PRINT USER NUMBER + CALL EPRINT + DB ': ',0 + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL T$PRNT + MVI A,'.' ; DECIMAL + CALL COUT + MVI B,3 ; PRINT TYPE + CALL T$PRNT + POP B ; GET REGS + POP H + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; OUTPUT TO CON: +; +T$PRNT: + MOV A,M ; GET CHAR + CALL COUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ T$PRNT + RET + +;*********************************************** +;* Application-Specific Section +;*********************************************** + +;**************************************************** +;* +;* Function-Specific Routines +;* These routines need to be customized for the +;* specific function being performed. These, in +;* effect, implement the function. Other Entry Points +;* useful to the programmer are: +;* E$FCTLNXT -- Clean Abort of Current +;* Processing and Skip +;* to Next File in List; +;* This is a Clean Way to +;* Abort FUNCTION for the +;* Next File +;* E$PRFN -- Print File Name Pted to +;* by HL; No Regs Affected +;* +;**************************************************** + +; +; **** EMERGENCY ABORT +; +ABORT: + CALL EPRINT + db cr,lf,' HELPPR Abort' + DB 0 + mvi a,cr ; new line + call lout + mvi a,lf + call lout + CALL GETUD ; RETURN HOME + JMP T$RETURN +; +; **** BANNER -- PRINT BANNER FOR PROGRAM (PROGRAM NAME ET AL) +; +BANNER: + CALL EPRINT + db 'HELPPR Version ' + db (vers/10)+'0','.',(vers mod 10)+'0' + DB 0 + RET +; +; **** HELP -- PRINT PROGRAM'S HELP MESSAGE +; +HELP: + CALL EPRINT + db cr,lf,'Syntax:' + db cr,lf,' HELPPR afn1,afn2,... o...' + db cr,lf,'Options:' + db cr,lf,' H@head@ -- Use "head" as header on every page' + db cr,lf,' I -- Inspect Files for Printing' + db cr,lf,' L -- Number Each Line' + db cr,lf,' Onn -- Offset Each Line by nn Spaces' + db cr,lf,' Snn -- Skip to Page nn and Start Printing' + db cr,lf,' T -- Toggle Time Display' + DB 0 + RET +; +; **** PROGRAM INIT ROUTINE +; THIS ROUTINE IS USED BY THE PROGRAM TO PERFORM ANY NECESSARY +; INITIALIZATIONS +; +INIT: + lxi h,dlnumfl ;copy defaults into buffers + lxi d,lnumfl + mvi b,3 ;3 bytes + call moveb + xra a ;A=0 + sta skipfl ;set no skip + sta offset ;set no offset + push h + lhld hbuf ;pt to heading buffer + mov m,a ;store zero to set no heading + pop h +; + if timeok + call time ;get time string + lxi d,timebf ;store in buffer +initt: + mov a,m ;get byte + stax d + inx h ;pt to next + inx d + ora a ;done? + jnz initt + endif +; + RET +; +; **** FUNCTION COMPLETE -- CLEANUP AND EXIT +; FILL THIS IN WITH CLEANUP CODE FOR EXIT +; +DINIT: + RET +; +; **** OPTION TABLE USED TO PROCESS COMMAND LINE +; EACH OPTION IS A CAPITAL LETTER OR SPECIAL CHAR FOLLOWED BY +; AN ADDRESS; THE TABLE IS TERMINATED BY A BINARY ZERO +; +OPTAB: + DB 'I' ; FILE INSPECTION OPTION + DW OPTINSP ; REMOVE THESE TWO LINES AND THE FOLLOWING ROUTINE + ; IF YOU DO NOT WANT FILE INSPECTION OPTION IN + ; COMMAND LINE + db 'H' ;heading + dw opthead + db 'L' ;line numbers + dw optln + db 'O' ;offset + dw optoffs + db 'S' ;skip + dw optskip +; + if timeok + db 'T' ;time display + dw opttime + endif +; + DB 0 ; END OF TABLE +; +; **** OPTION ROUTINES +; EACH ROUTINE IS PROVIDED THE OPTION CHARACTER IN THE A REGISTER +; AND A POINTER TO THE NEXT CHARACTER IN THE COMMAND LINE IN THE +; HL REGISTER PAIR; ONLY HL NEED TO BE PRESERVED (WITH OPTIONAL +; ADVANCEMENT TO THE NEXT OPTION) ON EXIT +; +OPTINSP: + MVI A,0FFH ; TURN ON FILE INSPECTION OPTION + STA V$INSPECT ; THIS IS PROVIDED AS A SAMPLE ROUTINE + ; AND FOR THE INDICATED FUNCTION + RET +; +; Set Page Offset +; +optoffs: + call eval10 ;get number + mov a,e ;get low-order byte + sta offset ;set offset + ret +; +; Option: H (Set Heading) +; +opthead: + xchg + lhld hbuf ;pt to heading buffer + xchg + mov a,m ;get delim + ora a ;none? + rz + mov b,a ;delim in B + inx h ;pt to next char +opthd1: + mov a,m ;get next char + ora a ;done? + jz opthd3 + cmp b ;done? + jz opthd2 + stax d ;save char + inx h ;pt to next + inx d + jmp opthd1 +opthd2: + inx h ;skip over delim +opthd3: + xra a ;store ending 0 + stax d + ret +; +; Option: L (Set Line Numbering) +; +optln: + lda lnumfl ;flip flag + cma + sta lnumfl + ret +; +; Option: S (Skip Lines) +; +optskip: + mvi a,0ffh ;set flag + sta skipfl + call eval10 ;get number + xchg + shld skipnum ;set page number to skip to + xchg ;HL pts to next char + mov a,d ;see if page number was zero + ora e + rnz + xra a ;if zero, turn off skip flag + sta skipfl + ret +; + if timeok +; +; Set Time Flag +; +opttime: + lda timepfl ;flip flag + cma + sta timepfl + ret +; + endif +; +; **** FUNCTION -- MAIN FUNCTION OF TEMPLATE +; ON ENTRY, HL PTS TO NAME OF FILE (16 BYTES) AND USER IS LOGGED INTO +; DIRECTORY CONTAINING INDICATED FILE +; +FUNCTION: +; +; HELP FILE PRINT Routine -- Print the Help File Whose Name is Pointed to by +; HL; we are already logged into the correct directory +; + call prinit ;init print buffers + call fload ;load buffer initially + call prhead ;print heading line + lhld V$SCRATCH ;pt to first char in file + shld nxtln ;set pointer to next line + mvi a,0ffh ;first line + sta firstf + call prline ;print first line (special case) + xra a ;not first line now + sta firstf +fprloop: + call prline ;print line of file + jnz fprloop ;done if EOF + call page ;advance to top of next page + ret +; +; Init Print Buffers and Print File Name +; +prinit: + lxi d,tfcb ;set up FCB + mvi b,12 ;12 bytes + call moveb + lxi h,0 ;HL=0 + shld lnum ;set line number + inx h ;HL=1 + shld pnum ;set page number + lda ltpp ;set line count + sta lcount + call eprint + db cr,lf,' Printing Help File ',0 + lxi h,tfcb ;pt to FCB + call e$prfn ;print file name + ret +; +; FILE LOAD (FLOAD) Routine -- Initial Load of memory buffer +; +fload: + lxi d,tfcb ;pt to file fcb + call initfcb ;init file's fcb + call f$open ;open file for input + jz fload1 ;open was OK + call eprint + db cr,lf,' File ',0 + xchg ;HL pts to FCB + call e$prfn ;print file name + call eprint + db ' NOT Found',0 + pop d ;clear return address + ret ;abort printout of this file +; +; This is an entry point for further memory loads of the file +; +fload1: + lda V$BCNT ;get number of blocks to load + mov c,a ;... in C + lhld V$SCRATCH ;get address of first block to load into + shld nxtblk ;set pointer to next block to load +fload2: + call rdblk ;read a block (128 bytes) + jnz eof ;eof encountered? + call rdblk ;read another block (128 bytes) + jnz eof ;eof encountered? + dcr c ;count down + jnz fload2 + lhld nxtblk ;pt to next byte to load + mvi m,eold ;mark end of load + ret +eof: + lxi d,tfcb ;close file + call f$close + lhld nxtblk ;ensure ^Z + mvi m,ctrlz + ret +rdblk: + lxi d,tfcb ;pt to FCB + call f$read ;read next block + ora a ;error? + rnz + lhld nxtblk ;get ptr to next block + xchg ; as dest + lxi h,tbuff ;ptr to DMA address + mvi b,128 ;copy 128 bytes +rdblk1: + mov a,m ;get byte + ani 7fh ;mask out msb + stax d ;put byte + inx h ;pt to next + inx d + dcr b ;count down + jnz rdblk1 + xchg ;new nxtblock + shld nxtblk + ret + +; +; Line Print Routine +; Print Next Line with Optional Disk Load +; Input Parameter is NXTLN, which is the address of the first char +; on the next line +; Output Parameter is Zero Flag, with Z meaning done with print, NZ +; meaning more yet to print +; +prline: + lhld lnum ;increment line number + inx h + shld lnum +prl0: + lhld nxtln ;pt to first char of next line + lda firstf ;first char? + ora a ;0=no + jnz prl01 + mov a,m ;get first char of line + cpi ':' ;new information section? + cz page ;page eject with heading +prl01: + call proffs ;print offset + mvi c,0 ;init char count + mov a,m ;get first char of line + cpi ctrlz ;EOF? + cnz prlnum ;print line number (optional) +prl1: + mov a,m ;get char + cpi eold ;end of load? + jz prload + cpi ctrlz ;eof? + jz prexit + inx h ;pt to next char + cpi ctrli ;tab? + jz prtab + cpi cr ;? + jz prldn + cpi ff ;form feed? + jz prldn + cpi lf ;end of line? + jz prl1 + cpi ctrlh ;back space? + jz prbs + cpi ctrlg ;ring bell? + jz prbell + cpi del ;delete char? + jz prl1 ;skip it + cpi ' ' ;other control char? + jc prl1 ;skip if other control char + call prout ;print char + inr c ;increment char count + call eoltest ;check to see if at end of line and newline if so + jmp prl1 +; +; End of Load Reached -- Load More of File from Disk +; +prload: + push b ;save char count + call fload1 ;use load routine + pop b ;get char count + lhld V$SCRATCH ;next byte is here + jmp prl1 ;continue processing +; +; Tabulate +; +prtab: + mvi a,' ' ;space + call prout + inr c ;new char + call eoltest ;process EOL + mov a,c ;done? + ani 7 + jnz prtab ;continue tabulation + jmp prl1 ;continue processing +; +; Exit with Zero Flag Set if Done +; +prexit: + xra a ;set zero flag + ret +; +; Carriage Return -- End of Routine +; +prldn: + mov a,m ;skip to non-LF + cpi lf + jnz prldn1 + inx h ;skip to first char of next line +prldn1: + mvi a,cr ;output + call prout + mvi a,lf ;output + call prout ;echo LF to printer + shld nxtln ;set ptr to first char of next line + mvi a,0ffh ;set not done + ora a ;set flags + ret +; +; Backspace on Printer +; +prbs: + mov a,c ;check for beginning of line + ora a + jz prl1 ;continue if at BOL + mvi a,ctrlh ;backspace + call prout + dcr c ;back up char position + jmp prl1 ;continue +; +; Ring Bell on Printer +; +prbell: + call prout ;ring the bell + jmp prl1 ;continue without advancing char position +; +; Test for End of Line and Process if so +; +eoltest: + lda offset ;get offset + mov b,a ;... in B + lda lwidth ;get line width + sub b ;subtract offset + sui 4 ;4 chars less for continuation mark + mov b,a ;result in B + lda lnumfl ;line numbering (lines are 7 chars shorter if so) + ora a ;0=no + jz eolt1 + mov a,b ;reduce by 7 for line numbers + sui 7 + mov b,a +eolt1: + mov a,b ;get line width + cmp c ;there? + rnz ;continue if not + mov a,m ;get next char + cpi cr ;new line next? + rz ;continue if so + cpi ctrlh ;backspace next? + rz ;continue if so + mvi b,3 ;look ahead 3 chars + push h +eolt2: + inx h ;pt to next + mov a,m ;get char + cpi cr ;EOL? + jz eolt3 + dcr b ;count down + jnz eolt2 + jmp eolt4 +eolt3: + pop h ;restore ptr + ret +eolt4: + pop h ;restore ptr + mvi a,' ' ;print continuation chars + call prout + mvi a,'<' + call prout + mvi a,'<' + call prout + mvi a,cr ;new line + call prout + mvi a,lf + call prout + mvi c,0 ;reset char position + lda skipfl ;skipping? + ora a ;0=no + rnz + call proffs ;print offset + lda lnumfl ;printing line numbers? + ora a ;0=no + rz + call lprint + db ' : ',0 + ret +; +; Output a character to the printer +; A = Character +; +prout: + mov b,a ;char in B + call condin ;check for abort + jz prout1 + cpi ctrlc ;abort? + jz abort + cpi ctrlx ;abort this one file? + jz cxabort +prout1: + lda skipfl ;skipping? + ora a ;set flags (Z=no skip=print char) + mov a,b ;restore char + cz lout ;send character to printer + cpi lf ;special tests if it is a line feed + rnz ;done if non-LF char + lda lcount ;decrement line counter + dcr a + sta lcount + rnz +; +; Paging Required +; Skip to top of next page; reset LCOUNT (Lines Left on Page Count); +; print header +; +prout0: + lda ltpp ;get number of text lines per page + sta lcount ;set as new line count + push h ;save ptr + lhld pnum ;increment page number + inx h + shld pnum + lda lspp ;get number of lines to skip per page + call lineskp ;skip lines + pop h ;restore ptr + mov a,m ;check next character + cpi ctrlz ;EOF? + cnz prhead ;print 2-line heading if NOT EOF + ret +; +; Abort current file with final page eject +; +cxabort: + lda lcount ;get count of remaining lines + call lineskp ;skip lines + lda lff ;form feed? + ora a ;NZ=yes + jnz e$fctlnxt ;continue with next file since already FF + lda lspp ;number of lines to skip per page + call lineskp ;skip lines + jmp e$fctlnxt ;continue with next file +; +; Skip out rest of page +; Form Feed Function +; +page: + lda lff ;form feed? + ora a ;NZ=yes + jnz prout0 ;PROUT0 will FF + lda lcount ;get count of remaining lines + call lineskp ;skip lines + jmp prout0 ;process top of new page +; +; Skip out lines on page +; A = number of lines to skip +; +lineskp: + mov b,a ;line count in B + ora a ;any? + rz + lda skipfl ;skipping? + ora a + rnz + lda lff ;form feed? + ora a ;NZ=yes + jnz lines2 +lines1: + mvi a,cr ;output new line to printer + call lout + mvi a,lf + call lout + dcr b ;count down + jnz lines1 + ret +lines2: + mvi a,cr ;output new line + call lout + mvi a,ff ;output form feed + jmp lout + +; +; Print Line Number (optional) +; +prlnum: + lda skipfl ;skipping? + ora a ;0=no + rnz + lda lnumfl ;get flag + ora a ;0=don't number lines + rz + push h ;save ptr + lhld lnum ;get line number + call lhldc ;print line number + call lprint ;print separator + db ': ',0 + pop h ;restore ptr + ret +; +; Print 2-line heading and control skipping +; +prhead: + push h ;save ptr + lda skipfl ;currently skipping? + ora a ;0=no + cnz skiptst ;test for shut off + call proffs ;print offset + call prpnum ;print page heading and number + call e$prfname ;print file name +; + if timeok ;time available? + lda timepfl ;print time? + ora a ;0=no + cnz prtime ;print time + endif +; + push h ;get first char of heading + lhld hbuf + mov a,m + pop h + ora a ;0=no + cnz prhdg ;print heading + pop h ;restore ptr + lda skipfl ;skipping? + ora a + rnz + call lcrlf ;new line + jmp lcrlf +; +; Test for completion of skipping +; +skiptst: + lhld pnum ;get page number + xchg ;... in DE + lhld skipnum ;get page to skip to + mov a,h ;compare them + cmp d + rnz + mov a,l + cmp e + rnz + xra a ;A=0 to stop skipping + sta skipfl ;set flag + ret +; +; Print Page Number +; +prpnum: + lda skipfl ;skipping? + ora a + rnz + call lprint ;print header + db 'Page ',0 + lhld pnum ;print current page number + call lhldc ;print as decimal + ret +; +; Print File Name +; +e$prfname: + lda skipfl ;skipping? + ora a + rnz + call lprint ;print separator + db ' -- Help File: ',0 + lxi h,tfcb+1 ;pt to first char + mvi b,8 ;8 chars + call lfn1 + mvi a,'.' + call lout + mvi b,3 ;3 chars + call lfn1 + ret +lfn1: + mov a,m ;get char + ani 7fh ;mask + call lout ;send to printer + inx h ;pt to next + dcr b ;count down + jnz lfn1 + ret +; +; Print Separator +; +prdash: + call lprint + db ' -- ',0 + ret +; + if timeok +; +; Print Time +; +prtime: + lda skipfl ;skipping? + ora a + rnz + call prdash ;print separator + lxi h,timebf ;pt to time stamp + call lpstr ;print + ret +; + endif +; +; Print Header +; +prhdg: + lda skipfl ;skipping? + ora a + rnz + call prdash ;print separator + lhld hbuf ;pt to heading + call lpstr ;print + ret + RET +; +; Print Line Offset +; +proffs: + lda skipfl ;skipping? + ora a + rnz + push b ;save BC + lda offset ;get offset + ora a ;any? + jz proff2 + mov c,a ;offset in C +proff1: + mvi a,' ' ;space over + call prout + dcr c ;count down + jnz proff1 +proff2: + pop b + ret +; +; **** HELPPR BUFFERS +; +offset: + ds 1 ;line offset +hltemp: + ds 2 ;temporary save area for HL +dirbuf: + ds 2 ;ptr to directory +firstf: + ds 1 ;first line in file flag +tfcb: + ds 36 ;FCB for current file +nxtblk: + ds 2 ;ptr to next block to load +nxtln: + ds 2 ;ptr to next line to read +lcount: + ds 1 ;count of text lines left on page +hlptyp: + db 'HLP' ;file type of HLP file + +;*********************************************** +;* End of Application-Specific Section +;*********************************************** + +; +; BUFFERS +; +V$DISK: + DS 1 ; HOME DISK NUMBER +V$USER: + DS 1 ; HOME USER NUMBER +V$CDISK: + DS 1 ; CURRENT DISK NUMBER +V$CUSER: + DS 1 ; CURRENT USER NUMBER +V$CMDLNE: + DS 2 ; PTR TO COMMAND LINE STRING +V$NEXTCH: + DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE +V$FILECNT: + DS 2 ; COUNT OF NUMBER OF FILES RENAMED +V$SCRATCH: + DS 2 ; ADDRESS OF FIRST BYTE OF SCRATCH AREA +V$BCNT: + DS 1 ; NUMBER OF PAGES IN SCRATCH AREA +V$INSPECT: + DS 1 ; INSPECT FLAG +V$NTFCB: + DS 36 ; FCB FOR NEW FILE +; +; Stack +; +V$STACK: + DS 2 ; OLD STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/HELPSYS.HLP b/Images/Source/hd0/s0/u15/HELPSYS.HLP new file mode 100644 index 00000000..a69131bc --- /dev/null +++ b/Images/Source/hd0/s0/u15/HELPSYS.HLP @@ -0,0 +1,793 @@ +; + HELP - The Online Documentation System for ZCPR3 + + W - Welcome to the HELP Command + + -- HELP Subsystem -- -- Using HELP -- + 1 - HELP Command U - How to Use HELP + 2 - HELPCK Command M - Moving Around in HELP + 3 - HELPPR Command P - Help Command Prompts + E - HELP Error Messages + O - Printing Help Files + + -- Writing HELP Files -- + H - How to Write HELP Files + V - Accessing Video Attributes + T - HELP File Tree Structure + S - Sample HELP Files + +:1 + +Command: HELP 5.0 + +Syntax: + HELP <-- display HELP.HLP +or + HELP filename.typ <-- display HELP file + (iæ 'typ§ omitted¬ HLÐ ió used) + +Function: + + HELР displayó HELÐ fileó iî aî interactivå waù tï  thå +useò oî hió consolå CRT®  Iô ió alsï ablå tï prinô selecteä +screens or information sections on the printer. + +Options: + None + + +Comments: + See text + +Selected Error Messages: + See appropriate information section + +Examples of Use: + + HELP + -- display HELP.HLP + + HELP myfile + -- display myfile.HLP + + HELP myfile.txt + -- display myfile.txt + +:2 + +Command: HELPCK 1.0 + +Syntax: + + HELPCK dir:ufn o <-- default file type is HLP + +Function: + + HELPCË ió useä tï checë thå syntaø oæ á HELÐ file®  Iô +analyzeó  thå file¬  providinç á varietù oæ  statisticó  anä +reportinç  oî  structuraì errors®  Theså reportó includå  á +listinç oæ thå optionó iæ thå filå ió user-indexed¬ anä thió +listinç caî bå manuallù checkeä bù thå useò tï seå thaô  alì +optionó  arå  includeä  anä nï  additional¬  hiddeî  optionó +exist. + +Options: + P - Send report to Printer + + +Comments: + + None + +Selected Error Messages: + + Messages as self-explanatory + +Examples of Use: + + HELPCK myhelp + -- report on myhelp.HLP + +:3 + +Command: HELPPR 1.0 + +Syntax: + + HELPPR afn1,afn2,... o... + +Function: + + HELPPÒ  ió useä tï prinô ouô á HELР file®  Iô  breakó +pageó  oî  eacè informatioî sectioî anä ignoreó  forí  feedó +(useä  tï  separatå frames)¬  sï thå datá ió presenteä iî  á +sequentiaì  fashion®  Thió  tooì  ió  usefuì  iî  providinç +printouts of HELP files in a reasonable format. + + +Options: + + H@head@ Heading Text which appears at the top of + each page + I Inspect Files (select) before printing + L Number each line + Occ Offset each line by cc spaces + Snn Skip to page nn before beginning print + T (If TIMELIB installed) turn off time display + +Comments: + + HELPÒ  ió preferreä oveò PRINÔ foò printinç HELР fileó +becauså  oæ HELPPR'ó knowledgå oæ thå internaì structurå  oæ +HELP files and its special way of formatting their printout. + + +Selected Error Messages: + + Error Messages are Self-explanatory + +Examples of Use: + + HELPPR myfile1,myfile2 o5 + -- prinô  myfile1.HLÐ anä myfile2.HLÐ offseô bù  µ +spaces on each line + + HELPPR myfile s5 + -- print myfile.HLP starting at the 5th page + +:W + + Welcome to the HELP Command + + Welcomå  tï  thå HELÐ Command¡  Thå HELÐ Commanä  ió +designeä tï assisô you¬  thå ZCPR³ user¬  iî thå uså oæ +ZCPR³   iî  generaì  anä  specifiã  ZCPR³  commandó   iî +particular®  Iô ió designeä aó aî  interactive¬  on- +linå assistancå system. + + HELР pulló iî fileó nameä .HLÐ froí disë anä +displayó  theså tï thå useò iî á pageä mode®  Theså  fileó +arå oæ twï basiã typeó -- indexeä anä non-indexed. + + + Indexeä fileó arå thoså HELÐ fileó whicè starô witè  aî +index®  Thió  ió aî examplå oæ aî indexeä  file®  Wheî +HELР loadó aî indexeä file¬  iô displayó thió indeø tï +thå  useò  anä allowó hií tï selecô entrieó  froí  it®  Thå +useò  maù selecô aó manù entrieó aó hå desireó iî anù  ordeò +hå  desireó bù simplù typinç thå letteò oæ hió  selection® +Oncå thå useò haó madå hió selection¬  HELÐ wilì looë uð thå +bodù  oæ texô hå selecteä anä displaù iô tï hií iî á  pageä +mode®  Wheî thå useò haó finisheä readinç hió selection¬ +HELР theî  returnó  hií tï  thå  indeø  menu®  Typinç  á +Control-à wilì returî thå useò tï ZCPR3. + + Therå  arå  twï  typeó oæ indexeä  HELР fileó  - user- +indexeä anä HELP-indexed®  Á user-indexeä HELÐ filå ió  onå +iî  whicè  thå writeò oæ thå HELÐ filå ió alloweä tï  creatå +thå imagå oæ thå indeø oî hió screeî iî thå forí whicè  wilì +bå displayeä tï thå useò oæ thå HELÐ file®  Thió ió á user- +indexeä  HELÐ file® + + + Á  HELP-indexeä HELÐ filå ió onå whicè containó á  lisô +oæ thå optionó aô thå beginninç oæ it¬  anä HELÐ createó thå +menu¬  assigninç sequentiaì letteró (A¬  B¬ etc© tï thå menõ +options. + + Non-indexeä  fileó arå thoså HELÐ fileó whicè dï noô +starô  witè  aî  index®   Iî  sucè  cases¬   HELР wilì +immediatelù  displaù thå contentó oæ thå filå tï  thå  useò +and¬  wheî thå useò haó finisheä lookinç aô it¬  HELÐ wilì +returî tï ZCPR3. + + + HELÐ ió menu-driven¬  anä alì thå commandó availablå tï +thå useò aô anù giveî timå arå displayeä tï him® + + Thå  versioî  oæ  HELÐ describeä iî thió  HLР filå  ió +designeä tï worë witè thå ZCPR³ systeí anä takå advantagå oæ +somå oæ itó speciaì features. + + + Richard Conn +:U + + How to Use the HELP Command + + The HELP Command is executed in one of three ways: + + (1) by just typing 'HELP' + (2) by typing 'HELP FILENAME', where FILENAME + is the name of a disk file named FILENAME.HLP + (3) by typing 'HELP FILENAME.TYP', where + FILENAME.TYP is the name of a file created in + the format of a help file + + Iæ thå useò typeó jusô 'HELP'¬ hå wilì revie÷ thå filå +HELP.HLP¬ whicè shoulä contaiî á brieæ summarù oæ ho÷ tï uså +thå HELÐ command®  Foò alì otheò formó oæ thå HELÐ command¬ +thå  useò  wilì  seå thå specifieä  helð  filå  information® +Generallù  speaking¬  thå namå oæ thå helð filå  shoulä  bå +indicativå  oæ itó subject¬  likå CPM.HLÐ shoulä  contaiî +helð informatioî oî ZCPR3. + + + The HELP File Search Hierarchy + + Wheneveò  HELÐ lookó foò á specifieä HELÐ Filå (eitheò +froí  thå HELÐ Commanä oò froí aî  Informatioî  Sectioî +whicè specifieó á Nodå [seå later])¬  HELÐ wilì perforí +á  searcè  foò  thå indicateä file®  Thió searcè  goeó  aó +follows: + + 1®  Undeò  ZCPR3¬  HELÐ wilì follo÷ thå  command- +searcè  path®   Aó  such¬  HELР wilì  searcè  thå  currenô +directorù (disë anä user© first. + + 2® Iæ thå HLÐ filå ió noô founä undeò thå currenô +directory¬ HELÐ wilì searcè alonç thå ZCPR³ patè foò it. + + +(Continued Next Frame) + +HELP File Search Hierarchy, Continued + + 3®  Iæ  thå HLÐ filå ió noô founä alonç thå ZCPR³ +path¬  theî HELÐ wilì looë iî thå directorù nameä "HELP¢ foò +thå indicateä file® Thió ió á majoò differencå betweeî HELÐ +anä otheò ZCPR³ utilities. + + 4®  Iæ thå HLÐ filå ió noô found¬ HELÐ wilì prinô +aî erroò message. + + +:M + + Moving Around within the HELP Command + + Oncå  thå  useò ió runninç HELP¬  hå ió giveî á seô  oæ +commandó  bù  whicè hå caî displaù thå particulaò  itemó  oæ +informatioî hå ió interesteä in. + + Afteò issuinç thå HELÐ command¬ thå useò wilì comå uð +iî  onå  oæ  twï modeó (dependinç oî thå typå oæ  HELР filå +referenced)®  Iî  Indexeä  Mode¬  á  Menõ  oæ  topicó  ió +displayeä tï thå useò anä hå caî selecô thå desireä topiã +bù  typinç thå characteò iî fronô oæ thå topiã  title»  iî +Non-Indexeä Mode¬  nï menõ ió displayeä anä thå entirå +filå ió vieweä aó onå Informatioî Section. + + + Aî  Informatioî  Sectioî  ió  á  collectioî  oæ  screeî +displayó  (onå  screeî  fulì  oæ  text©  calleä  Frames® +Typically¬ aî Informatioî Sectioî shoulä contaiî á logicaì +groupinç oæ relateä datá oî á particulaò topic® Iî Indexeä +Mode¬  eacè Menõ topiã referó tï aî Informatioî Section®  Bù +selectinç á topic¬  thå useò ió placeä intï aî  Informatioî +Section®  Iî Non-Indexeä Mode¬  thå entirå HELÐ filå ió onå +Informatioî Section. + + + Moving From the Menu + + Aô  thå Menõ oæ á HELÐ file¬  thå useò haó twï  basiã +options®  Theså  optionó  arå tï selecô á Menõ  topiã  tï +revie÷ oò tï exiô tï ZCPR3® Iæ á Menõ topiã ió selected¬ +thå useò ió placeä intï thaô Informatioî Section. + + Á  thirä  optioî  aô  thå  Menõ oæ  á  HELР filå  ió +sometimeó  available®  Thió  optioî ió tï movå uð  tï  thå +previouó  HELР Level®  Somå Informatioî  Sectionó  arå +entirå HELÐ fileó iî theiò owî right¬ whicè caî bå accesseä +independentlù  oæ thå HELÐ filå thå useò ió  currentlù  in® +Iæ  thå useò enteró onå oæ theså Informatioî  Sections¬  thå +namå  oæ  thå currenô HELÐ filå ió saveä anä thå  ne÷  HELÐ +filå ió loaded®  Wheî thió happens¬ thå useò ió placeä aô +thå  nexô  HELР Leveì  (aî  ascendinç  number¬  wherå  thå +originaì  HELÐ filå ió aô HELÐ Leveì 0¬  á HELÐ filå calleä +froí thió leveì ió aô HELÐ Leveì 1¬  etc.)®  Wheî thå useò +ió aô á loweò HELÐ Leveì (useò ió NOÔ aô HELÐ Leveì 0)¬  hå +haó thå optioî tï movå tï thå nexô higheò HELÐ Level. + + Thå  concepô oæ movinç betweeî HELÐ Leveló  ió  deriveä +froí  thå  concepô  oæ á Treå datá structurå  froí  Computeò +Science®  Iî thió concept¬ thå useò startó aô thå rooô oæ +thå  treå anä theî climbó uð anä dowî thå treå tï  variouó +levels¬ oò nodes® Froí eacè node¬ thå useò maù onlù movå +uð oò dowî thå treå -- hå can'ô crosó oveò tï á nodå aô thå +samå leveì withouô firsô movinç dowî thå treå anä theî bacë +up® Tï illustrate¬ consideò thå following: + + + Node A Node B HELP Level + _________ ____________ 5 + \ Node C / + -------------- 4 + \ Node D Node E + ------------ ---------------- 3 + \ Node F / Node G + --------------------------- ----------- 2 + \ Node H / Node I + -------------------------- ------- 1 + \ Node J / +Root of Tree --> -------------------------- 0 + + + Iî thå abovå example¬  thå useò musô alwayó starô  aô +thå  rooô oæ thå treå (Nodå J)®  Thió ió analogouó tï  HELÐ +Leveì 0¬ whicè ió wherå thå useò ió placå wheî hå issueó thå +HELÐ Command® Tï geô tï Nodå C¬ foò example¬ thå useò haó +tï climâ thå treå froí Nodå Ê tï Nodå È tï Nodå Æ tï Nodå Ä +tï  Nodå C®  Thió woulä bå likå thå useò enterinç ´  Node- +Typå  Informatioî Sections¬  iî whicè differenô HELР fileó +arå successivelù loaded. + + No÷ thaô thå useò ió aô Nodå C¬ let'ó saù thaô hå wantó +tï gï tï Nodå E®  Undeò thå HELÐ System¬ therå arå twï wayó +tï dï this: + 1®  Jumð  ofæ oæ thå treå anä theî climâ bacë +uð tï Nodå E®  Here¬  thå useò woulä jumð froí Nodå à tï +Nodå  Ê anä theî gï tï Nodå È tï Nodå Æ tï Nodå  E®  Undeò +HELP¬  thå  useò  caî  dï thió bù exitinç tï ZCPR3  anä  theî +reissuinç  thå HELÐ Commanä oò bù issuinç thå  Rooô  Commanä +(.)»  oncå aô thå rooô oæ thå tree¬ hå theî climbó iô +agaiî bù enterinç thå appropriatå Informatioî Sections. + + 2®  Climâ dowî thå treå anä theî bacë up®  Thå +useò  woulä  movå froí Nodå à tï Nodå Ä tï Nodå Æ  anä  theî +bacë  uð  tï Nodå E®  Thå HELÐ useò caî gï tï thå  previouó +leveì bù issuinç thå Uð Leveì (^© command® Iî thió example¬ +hå woulä Uð Leveì twicå anä theî gï bacë down. + + + Moving Within An Information Section + + Oncå thå useò ió withiî á textuaì Informatioî  Section¬ +hå  haó severaì capabilitieó foò movinç withiî thió  sectioî +anä ouô oæ thió section. + + First¬ tï movå ouô oæ aî Informatioî Section¬ thå useò +caî  returî  tï  thå  menõ (iæ thå  currenô  HELР filå  ió +Indexed© oò returî tï ZCPR3® Additionally¬ iæ thå useò ió +noô  oî  thå  rooô (HELÐ Leveì 0)¬  hå  caî  returî  tï  thå +previouó  HELÐ Leveì (Uð Level)®  Iæ thå useò ió noô iî  aî +Indexeä  HELР file¬  movinç  forwarä  beyonä  thå  Enä  oæ +Informatioî  (EOI©  wilì returî hií tï ZCPR³ iæ hå  ió  aô +HELР Leveì  ° oò returî hií tï thå previouó HELР Leveì  iæ +not. + + + Tï  movå  withiî aî Informatioî Section¬  thå  datá  ió +arrangeä  sequentially®  Consequently¬  thå useò caî  movå +Forwarä tï thå nexô Frame¬  Backwarä tï thå previouó Frame¬ +oò tï thå beginninç oæ thå Informatioî Section®  Thå useò +cannoô movå backwarä beyonä thå beginninç oæ thå Informatioî +Section¬  anä á belì ió sounded®  Also¬ iæ thå useò trieó +tï movå forwarä beyonä thå Enä oæ Informatioî (EOI)¬  hå ió +eitheò returneä tï thå Menu¬  returneä tï ZCPR3¬ oò returneä +tï thå previouó HELÐ Leveì aó describeä above. + +:P + HELP Command Prompts + + Thå   followinç  arå  thå  basiã  promptó  foò  useò +commanä whicè HELÐ displayó tï thå user. + +^C=ZCPR3 ^=Level .=Root M=Menu S=Start L=Last P=Print - + \ \ \ \ \ \ \__Print Info/Frame + \ \ \ \ \ \__Goto Last (Previous) Frame + \ \ \ \ \__Goto Start of Info Section + \ \ \ \__Goto Menu of HELP File + \ \ \__Goto Root if NOT at Level 0 + \ \ (this is displayed only if NOT at Level 0) + \ \__Goto Previous Level + \ (this is displayed only if NOT at Level 0) + \__Return to ZCPR3 + + EOÉ ^C=ZCPR3 ^=Leveì .=Rooô M=Menõ S=Starô L=Lasô P=Prinô - + \ \________\_______\________\_______\_______\_______\__Same as + \ Above + \__User is at the End of Information (end of Information Section) + +Type ^C=ZCPR3 ^=Level .=Root or Enter Selection - + \ \ \ \__Enter letter of desired + \ \ \ Information Section + \ \ \__Goto Root + \ \ (this is displayed only if NOT at Level 0) + \ \__Goto Previous Level + \ (this is displayed only if NOT at Level 0) + \__Return to ZCPR3 + + Preceedinç eacè oæ thå abovå promptó ió aî indicatoò +oæ  thå HELÐ Leveì anä Framå Numbeò thå useò ió  currentlù +at® Thió indicatoò maù takå thå followinç forms: + + + \__The user is at the Menu of Level 0 + +fff: + \__Current Frame Number within Information Section + (the user is at Level 0) + +Level lll/ + \__Current Level Number (The user is at a Menu Frame) + (this is displayed only if the user is NOT at Level 0) + +Level lll/fff: + \ \__Current Frame Number within Information Section + \__Current Level Number + (this is displayed only if the user is NOT at Level 0) + + + Summary of User Commands + + Cmd Meaning + ^ Go to Previous Level + . Go to Root Level + M Go to Menu of Current HELP File + S Go to Start of Information Section + L Go to Previous Frame + CR (Carriage Return or Space) Go to Next Frame + ^C (Control-C) Return to ZCPR3 + P Print Current Screen Display (Frame) or Information Section + +:O + Printing HELP Files + + Printinç HELÐ Fileó caî bå donå iî twï basiã wayó -- bù +usinç  thå  HELPPÒ Utilitù oæ ZCPR³ oò bù  usinç  thå  Prinô +functioî containeä withiî thå HELÐ Utilitù itself. + + Thå  HELPPÒ  Utilitù  ió useä tï prinô aî  entirå  Helð +File®  Iô actó á loô likå thå PRINÔ command¬  anä iô haó  á +varietù  oæ  options¬  includinç  thå abilitù  tï  plaî  foò +printeò  outpuô anä tï supporô paginç anä otheò "appearance- +enhancing¢ features. + + Thå  Prinô  Functioî  withiî HELР ió  useä  foò  quicë +printouts® Iô doeó noô pagå oò perforí anythinç morå exotiã +thaî  simplù  printinç ouô whaô ió containeä iî á parô oæ  á +Helð File®  Wheî thå Ð optioî ió given¬  thå currenô screeî +ió printeä immedately® Thå useò maù alsï issuå á ^Ð commanä +(noô  displayeä  oî  anù menu)¬  iî whicè  caså  thå  entirå +informatioî sectioî hå ió currentlù iî ió printed. + + + Thió Prinô Functioî ió provideä aó á conveniencå tï thå +user® Iô allowó thå useò tï revie÷ thå Helð File¬ and¬ wheî +hå  seeó á particulaò screeî displaù oò informatioî  sectioî +whicè  hå  valueó enougè tï wanô tï havå arounä  foò  futurå +referencå iî hardcopù form¬ hå caî simplù telì HELÐ tï prinô +it®  Thió capabilitù ió intendeä tï supporô thå concepô  oæ +establishinç  HLÐ fileó aó á convenienô anä flexiblå waù  tï +pasó  documentatioî  oæ programó tï thå useò oî  disë  whilå +simultaneouslù  allowinç hií tï easilù prinô iô ouô iæ iô ió +oæ significanô interesô tï him. + + + Foò instance¬  á HLÐ filå whicè referó tï á ne÷ prograí +maù  contaiî  aî  Informatioî Sectioî  oò  onå  Framå  whicè +containó á commanä summary®  Thå useò caî simplù prinô thió +withouô havinç thå prinô thå entirå HLÐ file. + + Aó anotheò example¬ thå HELÐ subsysteí maù bå useä bù á +homemakeò tï keeð heò recipeó on®  Organizeä usinç thå treå +structurå   intï  reasonablå  catagorieó  (sucè  aó  roasts¬ +desserts¬ etc)¬ whilå reviewinç thå recipeó shå maù finä onå +shå wisheó tï trù foò thå evening'ó meaì oò tï pasó oî tï  á +friend® Iæ thå recipå coveró onlù onå screen¬ á Framå Prinô +ió verù convenient. + +:E + HELP Error Messages + + Thå  followinç  arå thå erroò messageó  issueä  bù +HELÐ anä theiò meanings: + +File not Found + The specified HELP File cannot be found. + +AFN Not Allowed + Thå  specifieä  HELÐ Filå ió  ambiguouó  (containó  thå +characteò "*¢ oò "?")® Thió ió noô allowed. + + + The user issued an invalid command. + +EOF on HELP File + Iî searchinç foò aî Informatioî Section¬  HELÐ raî intï +thå  enä  oæ  thå HELÐ File®  Thå Indexeä HELР Filå  ió +improperlù structureä (morå indeø entrieó thaî  Informatioî +Sections). + +Node Level Limit + Thå  limiô  oæ  thå  nestinç  oæ  thå  HELР Leveló  ió +exceeded® HELÐ limitó thå numbeò oæ HELÐ Leveló thaô caî bå +traverseä  tï 1° (default¬  whicè caî bå changed)¬  anä aî +attempô waó madå tï enteò HELÐ Leveì 1± (oò defaulô « 1). + +Mem Full + Thå  selecteä HELÐ Filå ió toï largå tï loaä  intï  thå +availablå memorù iî thå user'ó computeò system®  Thå HELÐ +Filå  shoulä  bå reduceä iî size»  usinç HELР Leveló  (Nodå +references© iî thå Informatioî Sectionó ió á gooä waù tï dï +this. + +:H + How to Write HELP Files + + Fileó useä bù thå HELÐ prograí arå eitheò simplå CP/M- +standarä   fileó  oæ  ASCIÉ  texô  oò  ASCIÉ   fileó +generateä  bù  thå Worä Staò  texô  editor/formatter® +Theså  files¬  aó mentioneä above¬  arå oæ twï basiã  typesº +indexeä  anä non-indexed¬  anä eacè typå ió relateä tï thå +otheò anä ió oæ thå samå basiã format. + + Grouping of Information + + Informatioî  displayeä  tï thå useò ió groupeä  bù  thå +indeø  iî  indexeä HELÐ fileó anä maù alsï bå  groupeä  bù +lineó beginninç witè Forí Feeä (^L©  characters®  Groupinç +ió  aî effectivå waù tï logicallù organizå informatioî  sï +thaô  meaninç  wilì bå morå cleaò tï thå useò anä  unitó  oæ +informatioî wilì noô pasó betweeî screeî displays. + + + Thå informatioî displayeä tï thå useò ió organizeä intï +logicaì   unitó  calleä  Informatioî  Sectionó  anä   screeî +displayó  (onå screeî fulì oæ text© calleä  Frames®  Usinç +texô  editors¬  thå  useò caî creatå hió owî HELÐ fileó  anä +organizå  hió informatioî aó hå desireó foò displaù  tï  thå +HELÐ user. + + + Non-Indexed HELP Files + + Non-indexeä  HELР fileó arå simplå ASCIÉ  fileó  whicè +starô  witè  á coloî (:© aó thå firsô characteò oæ thå  filå +anä  consisô oæ ASCIÉ texô (witè eacè linå terminateä  bù  á +carriagå  returî anä linå feeä characteò combination)®  Thå +informatioî  iî  sucè á helð filå consistó  oæ  alì  texô +afteò thå leadinç coloî uð tï eitheò thå terminatinç end- +of-filå marë (control-Z© oò á ne÷ linå whicè startó witè á +colon. + + + Indexed HELP Files + + Indexeä  HELР fileó arå simplå ASCIÉ fileó whicè  dï +noô starô witè á coloî (:© aó thå firsô characteò oæ  thå +file®  Aî  indexeä  HELÐ filå maù bå HELP-indexeä oò  user- +indexed. + + Thå  HELP-indexeä  HELÐ filå consistó oæ onå oò  morå +normaì  ASCIÉ  texô lineó aó thå firsô lineó  oæ  thå  filå +followeä  bù  informatioî sectionó whicè begiî witè  á  linå +whoså  firsô  characteò ió á coloî anä enä witè  eitheò +thå  firsô linå oæ thå nexô informatioî sectioî  oò  thå +enä  oæ  thå file®  Theså openinç lineó (beforå  thå  firsô +informatioî section© forí thå indeø entries¬  anä HELР wilì +labeì theså lineó witè A¬  B¬ etc¬ durinç thå displaù oæ thå +index. + + + Thå  user-indexeä HELÐ filå containó á semicoloî (;© aó +thå  firsô characteò iî thå file®  Thå texô whicè  follows¬ +startinç  oî thå nexô line¬  ió displayeä literallù  tï  thå +useò aó thå menu®  Eacè informatioî sectioî ió denoteä bù á +linå  startinç witè á coloî (:)»  thå coloî ió followeä bù á +serieó  oæ  characteró (spaceó arå noô  significanô  betweeî +them© whicè arå thå indeø letters®  Wheî thå useò runó HELÐ +oî  thió filå anä typeó á selectioî  letter¬  HELР searcheó +througè  thå file¬  lookinç foò aî informatioî sectioî whoså +linå  containó  thå characteò typeä bù  thå  user®  Iæ  thå +characteò  waó á letter¬  iô ió automaticallù capitalizeä bù +HELР (iî  botè thå useò inpuô anä thå  informatioî  sectioî +lines). + + Á  coloî (:© ió noô á valiä optioî letter¬  sincå  thió +characteò haó á speciaì meaninç tï HELÐ (seå later)®  Iæ  á +coloî ió encountereä iî aî informatioî sectioî headinç line¬ +the scan for option characters stops for that line. + + + Tree Structures within Indexed HELP Files + + Thå  Indexeä  HELР Filå ió  divideä  intï  Informatioî +Sections¬  wherå  eacè  Informatioî Sectioî startó  witè  á +coloî  (:)®  Therå  arå  twï basiã  typeó  oæ  Informatioî +Section: + + 1®   Informatioî   Sectionó  containinç  textuaì +material»  thió typå oæ Informatioî Sectioî simplù  containó +readinç  materiaì  whicè ió organizeä intï Frames¬  wherå  á +Framå ió equaì tï onå screeî display. + + 2®  Informatioî  Sectionó whicè referencå  otheò +HELÐ files. + + + Iî  HELP-indexeä HELÐ files¬  thió typå oæ  Informatioî +Sectioî  beginó  witè twï colonó (::© insteaä oæ onå aó  iî +(1© above»  thå twï colonó arå immediatelù followeä bù  thå +namå  oæ thå HELÐ filå (thå HELÐ filå typå maù bå optionallù +specified). + + Iî  user-indexeä HELÐ files¬  thió typå oæ  Informatioî +Sectioî  containó thå indeø characteró followeä á coloî  (:© +anä thå namå oæ thå HELÐ filå (thå filå typå ió optional). + + Tï illustrate¬  thå followinç outlineó thå structurå oæ thå +twï typeó oæ Informatioî Sections: + + + HELP-Indexed HELP File Example + + :Title for Type 1 Information Section + + : [next Information Section] + + Figure: A Text (Type 1) Information Section + + + ::HLPFILE <-- for HLPFILE.HLP + : [next Information Section] + + ::HLPFILE.TYP <-- for HLPFILE.TYP + : [next Information Section] + + Figure: Examples of Node (Type 2) Information Sections + + + + User-Indexed HELP File Example + + ; + + [ Menu ] + + :x + [ Information Displayed for Selection X ] + :a + [ Information Displayed for Selection A ] + :1 b + [ Information Displayed for Selections 1 or B ] + :f :HELPFILE [ HELPFILE.HLP is invoked by Selection F ] + : z + [ Information Displayed for Selection Z ] + +:V + + Accessing Video Attributes + + Thå  displayó  generateä bù HELР arå  screen-oriented® +Undeò  ZCPR³  witè  á properly-installeä TCAÐ entrù  iî  thå +Environmenô   Descriptor¬   HELР  ió  ablå   tï   highlighô +informatioî  oî thå screeî anä creatå "flashy¢  displayó  bù +using the clear screen feature of the user's terminal. + + Uså  oæ  thå cleaò screeî featurå ió  automatic®  Eacè +frame is preceeded by a clear screen. + + Thå  writeò  oæ  á  HELР filå  caî  turî  oî  anä  ofæ +highlightinç  oæ texô anywherå iî thå HELÐ filå bù  embeddeä +the following commands into the text: + + ^A (binary 1) - turn on highlighting + ^B (binary 2) - turn off highlighting + + + Iô  ió  recommendeä thaô iæ highlightinç ió  turneä  oî +then it should be turned off in the same line. Example: + + ^Athis is highlighted^B while this is not + +generates: + + this is highlighted while this is not + + + Thió  HELÐ filå ió aî examplå oæ onå whicè  extensivelù +uses highlighting. This is also a user-indexed HELP file. + + +:T + The Tree Structure of HELP + + -- Basic HELP File -- + |Info Sect 1 |Info Sect 2 |Info Sect 3 |Info Sect 4 | + | Text | HELP File | Text | HELP File | + / \ / \ + -- SubHelp File 1 -- -- SubHelp File 2 -- + |Info Sect 1 |Info Sect 2 | |Info Sect 1 |Info Sect2| + | Text | HELP File | | Text | Text | + / \ + -- SubSubHelp File 1 -- + |Info Sect 1 |Info Sect 2 |Info Sect 3 | + | Text | HELP File | HELP File | + / \ / \ + -- Sub3Help File 1 -- -- Sub3Help File 2 -- + |Info Sect | |Info Sect 1 |Info Sect 2| + | Text | | Text | HELP File | + / \ + -- Sub4Help File -- + |Info Sect 1 |Info Sect 2| + | Text | Text | + + Thå  abovå  diagraí  ió meanô tï illustratå  ho÷  treå +structureó caî bå implementeä undeò HELP®  Á ne÷ nodå  oæ +thå  treå  ió createä wheneveò á HELÐ filå ió referenceä  bù +aî Informatioî Sectioî (aó opposeä tï simplù havinç texô iî +thå Informatioî Section)® Eacè nodå becomeó thå baså oæ +á ne÷ tree¬  whicè itselæ maù contaiî referenceó tï  otheò +HELÐ files. + + Froí thå previouó diagram¬  SubHelð Leveì ³ containó +twï  HELР files®  Theså caî bå entereä froí  Informatioî +Sectioî ² anä Informatioî Sectioî ³ oæ SubHelð Leveì 2® Bù +simplù enterinç onå oæ theså twï Informatioî Sections¬ thå +appropriatå  HELÐ filå ió loadeä anä thå useò ió placeä  aô +thå nexô level® Froí theså HELÐ files¬ thå useò maù movå +withiî  thå  HELÐ filå itselæ oò movå uð  tï  thå  previouó +leveì (naturally¬  thå useò alwayó haó thå optioî tï exiô tï +ZCPR3). + +:S + + Sample HELP Files Illustrating Use of Tree Structure + + Thå  followinç Frameó sho÷ thå sourcå tï threå HELÐ +Files¬  nameä DEMO.HLP¬ DEMO2.HLP¬ anä DEMO3.HLP® DEMO.HLÐ +ió provideó thå Rooô Nodå tï á treå whicè includeó DEMO2.HLÐ +anä DEMO3.HLÐ aó subnodes®  Additionally¬  DEMO3.HLÐ haó á +subnodå whicè referenceó DEMO.HLP¬  sï wå havå á  recursivå +treå structure. + + + DEMO.HLP + TEST 1 - OK <-- Menu + TEST 2 - SIMPLE NEST + TEST 3 - INVOLVED NEST + TEST 4 - OK + :TEST 1 <-- First Info Section (Text) + THIS + IS + TEST + 1 + ::DEMO2 <-- 2nd Info Section (Node) + ::DEMO3 <-- 3rd Info Section (Node) + :TEST 4 <-- 4th Info Section (Text) + TO BE, OR NOT TO BE, THAT IS THE QUESTION! + ... + TO TAKE ARMS AGAINST A SEA OF TROUBLES AND BY OPPOSING END THEM. + TO DIE, TO SLEEP ... TO SLEEP, PERCHANCE TO DREAM. + AYE, THERE'S THE RUB! FOR IN THAT SLEEP, WHAT DREAMS MAY COME! + + DEMO2.HLP + :TEST 2 <-- No Menu -- 1 Info Section + THIS + IS + TEST + 2 + + DEMO3.HLP + TEST 3A <-- Menu + TEST 3B + TEST 3C + :TEST 3A <-- First Info Section (Text) + THIS + IS + TEST + 3A + the rain in Spain falls mainly in the plain + + :TEST 3B <-- 2nd Info Section (Text) + THIS + IS + TEST + 3B + ::demo <-- 3rd Info Section (Node) + + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/IF.COM b/Images/Source/hd0/s0/u15/IF.COM new file mode 100644 index 0000000000000000000000000000000000000000..d6fb8eaa1124d5e795f168109ea897146236bdfa GIT binary patch literal 2304 zcmai0e{3699Y3#k_wG5hspIiSQiNW5LsQZu?c9kClQ{KK+l|QL$Z?W(bO~;IcC9(_ zW;=Dfm1`1I{sB#FQrBhziB;N=04X4W-2OqR?+EgpcoUA~suWeinjA60KbG($CUoQb z9Jk9KLrA{w`~LiVzwi5f@6LLM?WGfei5VOBuRd&}X-WTvElSdSkX+#dFV^`$0hzGbrr5YPL9rD`iSH%$rJvpiiBw3ECK>8G&IPETR_V`(hdPiB-% zHkn=|&kTCV02xg$UQFgdj-^Oc$>tpPsls9|w(ND-@mP>tcw{EAOk!z4Sds3c-JB};Ob6r#lA%7q+B$6FG>Jg&fDpG;@7 z$@3|Np+8n|a34@XHd zPJ$q}fJk8B)m(u&Mk3(|#J9|WOeUQn!Bi|krWEJ_4xAaAivBN{z%l@X)7Zr1G%KnF zF`ZR1-k^Vw_Bu)`i+Och8xnaSpe2S%9#tSp<^D@q}s&RpE{ z%P6lcB{RxJhdl~F`v;!Pw&$F@tdM*%cZtMOsm~7+SeGv-uja_(f;gi|{X*lmndbE? z{Kwt}4o-B7r^h7M3fHAtJrAz%dYWf)FUWE{trpEaRa`LFcv?kw_3!f(ge9InM0fX{ z{96bPKRZ>?%#t!fIQlfEKSx#+QdnmhaWL{I<5L1iu5%pyK&aC(0XV0N3fxc)(y6l5 zZ~mcG$QQVMsS19TA@h*nd=j{#c1Wnferm0#-B#4Q2*5$-TIDFk-Fewv)cOQq=_;mg zF{&1go&}CBNg=~~4lrf}XBSI9JnwYE>P>Ra4nH z230lyVqdKH9kgqcIJ_$!um-hWQLZx7U7G+Z?>g#irKSQZyRAO$TcU5Ilg^2HMC_EU zkw49eg7&<~tg=2M)_ZQCXKO~iN*BaR&7eJ!`H8qI(-TsNS1td8x5axWZ*Tuzgl)*G zMauNs=zd*%0$B5xA_xyQMOo0Ui=fap#TuQI!UyTo=ne~6M;k^Bngrlx3w&-5yt@cF z-0nK;2%7nKk-dQ*f`j>Qao2VT_MmTz5O%m55P;kS7omj;AEDO})4>i}!T-Wlo^py{}gj#`+E%7s2M^M_ftL)IP>`$@^DC14 zf%YF1I;x@_E3bD*LwWh@+|k*ehUC|e&8oM4l`mCTXBmYAeObvh2-lb)1K-y4w>2&E zk-b~~n@Za_u;2J)u4_)7k=5Nw(KrI}HDk-gaVlJfbqN}@E;Z}tU+L}b>fNn1zBm8+ zhuo~J7o;~z#z*v)^pR2BYC2n=+D{}4n}3rI(oZFL2~dbNwIRC$O&Jt!ll`#tmZENnHK7Rw)@x(1e-lplfPR1=Fh5Td#uVS3h$Scol>jp;`sh zbr^z*sfP2i{u-`, or , the + Flow State is Set to TRUE + + NULL afn If there is no 'afn' (field is blank), + then the Flow State is Set to TRUE + + TCAP If a Z3TCAP is installed, the Flow State + is Set to TRUE + + WHEEL If the Wheel Byte is Set, the Flow State + is Set to TRUE + + reg value If the indicated register (0-9) has the + indicateä valuå (0-255)¬ thå Flow + State is Set to TRUE + + afn1=afn2 If the two AFNs are identical in name + (11 char FILENAME.TYP are same), the + Flow State is Set to TRUE + +Comments: + + Iî alì cases¬  iæ thå indicateä conditioî ió TRUE¬  thå +Flo÷  Statå ió Seô tï TRUE»  iæ thå indicateä  conditioî  ió +FALSE, the Flow State is Set to FALSE. + + Thió  commanä  ió invokeä iæ thå currenô  Flo÷  Commanä +Packagå  haó  thå IF.COÍ facilitù enabled®  Iæ thió ió  thå +case¬  wheneveò aî IÆ commanä ió issued¬  thå FCÐ wilì  loaä +IF.COÍ  froí thå ROOÔ directorù intï memorù anä executå  it® +Thå  commanä taiì ió passeä tï IF.COM¬  anä IF.COÍ actó aó á +conventionaì COÍ filå froí thaô poinô forward®  Alì bufferó +arå  loadeä correctlù (FCBó aô 5CÈ anä 6CH¬  TBUFÆ  aô  80H¬ +etc). + + + Á  leadinç  tildá  (~©  characteò  beforå  á  conditioî +negateó  thå effecô oæ thå condition®  Iæ thå conditioî  ió +FALSE¬  thå  Flo÷  Statå  ió Seô tï  TRUE¬  anä  vice-versa® +Example: + + "IF ~T" is the same as "IF F" + "IF ~NULL arg" is TRUE if 'arg' is non-blank + "IF ~EXIST afn,..." is TRUE if 'afn,...' do NOT + exist (AFN and AFN ... must each not exist) + + Foò eacè conditioî given¬ onlù thå firsô twï characteró +are significant (eg, NU for NULL). + +Selected Error Messages: + + "Nï  IÆ  Conditioî  Given¢  meanó  thaô  thå  conditioî +expressed was not one of the valid conditions. + + +Examples of Use: + + IF NULL $1 + - if the indicated parameter (from within a SUBMIT + or ZEX command file) is not provided, set the + Flow State to TRUE + + IF ~EXIST ZEX.ASM,ZEX.ZEX + - if any one of these files does not exist, the + Flow State is set to TRUE + + IF EXIST ZEX.ASM,ZEX.ZEX + - if any one of these files does not exist, the + Flow State is set to FALSE (ie, all files + must exist for a TRUE Flow State) + + + IF NEC=$1 + - if the first passed parameter is the same as + the file name "NEC.", then the Flow State + is Set to TRUE + + IF 5 5 + - if Register 5 = 5, the Flow State is Set to TRUE + +:2 + +Command: IF (as implemented in SYSFCP 1.0) + +Syntax: + + IF cond arg +or + IF ~cond arg + +Function: + + IÆ  testó thå indicateä conditioî tï seå iæ iô ió TRUE¬ +and¬  iæ  so¬  setó  thå Flo÷ Statå tï  TRUÅ  (allowinç  thå +followinç commandó tï execute)®  Iæ thå conditioî ió FALSE¬ +thå  Flo÷ Statå ió seô tï FALSÅ (allowinç onlù Flo÷ Commandó +to execute). + + Thå IÆ commanä describeä herå ió residenô withiî SYSFCÐ +1.0 when the COMIF equate is set to FALSE. + + +Options: + + Option Meaning + T The Flow State is Set to TRUE + F The Flow State is Set to FALSE + + EMPTY afn If the indicated file is empty (size is + 0K), the Flow State is Set to TRUE + + ERROR If the ZCPR3 System Error Flag is SET, + the Flow State is Set to TRUE + + EXIST afn If the indicated file exists, the Flow + State is Set to TRUE + + INPUT The user is prompted for input, and if + he responds with T, Y, , or , + the Flow State is Set to TRUE + + + NULL afn If the 2nd FCB (afn) is blank, the Flow + State is Set to TRUE + + TCAP If the ZCPR3 TCAP entry is available, + the Flow State is Set to TRUE + + WHEEL If the Wheel Byte is TRUE, the Flow + State is Set to TRUE + + reg val If the indicated register (0-9) contains + the indicated value (0-255), the + Flow State is Set to TRUE + + afn1=afn2 If the two AFNs are the same, the Flow + State is Set to TRUE + + +Comments: + + Iî alì cases¬  iæ thå indicateä conditioî ió TRUE¬  thå +Flo÷  Statå ió Seô tï TRUE»  iæ thå indicateä  conditioî  ió +FALSE, the Flow State is Set to FALSE. + + Thió  commanä  ió invokeä iæ thå currenô  Flo÷  Commanä +Packagå  haó thå IF.COÍ facilitù disabled®  Iæ thió ió  thå +case¬ wheneveò aî IÆ commanä ió issued¬ thå FCÐ wilì resolvå +iô internally. + + Eacè  oæ thå optionó oæ thå Residenô IÆ maù oò maù  noô +bå enabled®  Theså optionó arå installation-dependent¬  anä +thå SHO× commanä wilì displaù thå availablå optionó foò  anù +installation. + + + Á  leadinç  tildá  (~©  characteò  beforå  á  conditioî +negateó  thå effecô oæ thå condition®  Iæ thå conditioî  ió +FALSE¬  thå  Flo÷  Statå  ió Seô tï  TRUE¬  anä  vice-versa® +Example: + + "IF ~T" is the same as "IF F" + "IF ~NULL arg" is TRUE if 'arg' is non-blank + "IF ~EXIST afn" is TRUE if 'afn' does NOT + exist + + Foò eacè conditioî given¬ onlù thå firsô twï characteró +are significant (eg, NU for NULL). + +Selected Error Messages: + + None + + +Examples of Use: + + IF NULL $1 + - if the indicated parameter (from within a SUBMIT + or ZEX command file) is not provided, set the + Flow State to TRUE + + IF ~EXIST ZEX.ASM + - if any ZEX.ASM does not exist, the + Flow State is set to TRUE + + IF NEC=$1 + - if the first passed parameter is the same as + the file name "NEC.", then the Flow State + is Set to TRUE + + IF 5 5 + - if Register 5 = 5, the Flow State is Set to TRUE + +:3 + +Command: IFSTAT 1.0 + +Syntax: + + IFSTAT + +Function: + + IFSTAÔ ió useä tï displaù thå currenô IÆ level® IFSTAÔ +wilì  reporô  witè á Leveì Numbeò froí ± tï ¸  (IFó  maù  bå +nesteä uð tï ¸ leveló deep© oò iô wilì replù witè "Nï Activå +IF". + +Options: + + None + + +Comments: + + Thå Flo÷ Statå MUSÔ bå TRUÅ foò IFSTAÔ tï run¬ sincå iô +is a COM file like any other. + +Selected Error Messages: + + None + +Examples of Use: + + IFSTAT + -- the current IF level is displayed + +:T + Summary of Transient IF Conditions + + Option Meaning + T TRUE (Flow State is Set to TRUE) + F FALSE (Flow State is Set to FALSE) + + EMPTY afn,... If all files in the indicated list + are EMPTY (size is 0K), then Flow + State is Set to TRUE + + ERROR If the ZCPR3 Error Flag is Set, then + Flow State is Set to TRUE + + EXIST afn,... If all files in the indicated list + exist, then Flow State is Set to TRUE + + INPUT User input is enabled, and if the user + strikes T, Y, , or , the + Flow State is Set to TRUE + + NULL afn If there is no 'afn' (field is blank), + then the Flow State is Set to TRUE + + TCAP If a Z3TCAP is installed, the Flow State + is Set to TRUE + + WHEEL If the Wheel Byte is Set, the Flow State + is Set to TRUE + + reg value If the indicated register (0-9) has the + indicateä valuå (0-255)¬ thå Flow + State is Set to TRUE + + afn1=afn2 If the two AFNs are identical in name + (11 char FILENAME.TYP are same), the + Flow State is Set to TRUE + +:R + Summary of Resident IF Conditions + + Option Meaning + T The Flow State is Set to TRUE + F The Flow State is Set to FALSE + + EMPTY afn If the indicated file is empty (size is + 0K), the Flow State is Set to TRUE + + ERROR If the ZCPR3 System Error Flag is SET, + the Flow State is Set to TRUE + + EXIST afn If the indicated file exists, the Flow + State is Set to TRUE + + INPUT The user is prompted for input, and if + he responds with T, Y, , or , + the Flow State is Set to TRUE + + + NULL afn If the 2nd FCB (afn) is blank, the Flow + State is Set to TRUE + + TCAP If the ZCPR3 TCAP entry is available, + the Flow State is Set to TRUE + + WHEEL If the Wheel Byte is TRUE, the Flow + State is Set to TRUE + + reg val If the indicated register (0-9) contains + the indicated value (0-255), the + Flow State is Set to TRUE + + afn1=afn2 If the two AFNs are the same, the Flow + State is Set to TRUE + +:4 + +Command: ELSE (from SYSFCP 1.0) + +Syntax: + + ELSE anytext + +Function: + + Iæ  thå currenô Flo÷ Statå ió TRUE¬  ELSÅ toggleó iô tï +FALSE. + + Iæ thå currenô Flo÷ Statå ió FALSÅ anä thå previouó  IÆ +Leveì  ió  iî á TRUÅ State¬  ELSÅ toggleó thå Flo÷ Statå  tï +TRUE®  Iæ thå previouó IÆ Leveì ió iî á FALSÅ  State¬  ELSÅ +does nothing. + +Options: + + None (any text may follow the verb ELSE) + +Comments: + + None + +Selected Error Messages: + + No error messages are generated + +Examples of Use: + + IF NEC=$1 + < statements > + ELSE + < statements > + FI + +:5 + +Command: FI (from SYSFCP 1.0) + +Syntax: + + FI anytext + +Function: + + FÉ  terminateó  thå currenô IÆ Level®  Iæ therå ió  nï +current IF level, FI does nothing. + +Options: + None (any text may follow the verb FI) + +Comments: + None + +Selected Error Messages: + None + +Examples of Use: + + IF EXIST MYFILE.ASM + < statements > + ELSE + < statements > + FI + +:6 + +Command: XIF (from SYSFCP 1.0) + +Syntax: + + XIF anytext + +Function: + + Iæ  thå  currenô  Flo÷ Statå ió  TRUE¬  XIÆ  exitó  alì +pendinç  IFs®  Iô  reduceó  thå IÆ Leveì tï  °  (nï  IÆ  iî +effect). + + If the current Flow State is FALSE, XIF does nothing. + +Options: + None + + +Comments: + None + +Selected Error Messages: + None + +Examples of Use: + + ;=LOOP + XIF + + IF 1 3 + GOTO LOOP + FI + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/IF.MAC b/Images/Source/hd0/s0/u15/IF.MAC new file mode 100644 index 00000000..65259389 --- /dev/null +++ b/Images/Source/hd0/s0/u15/IF.MAC @@ -0,0 +1,542 @@ +; +; Program: IF +; Author: Richard Conn +; Modified By: Charles McManis +; Version: 1.2 +; Date: 11 Feb 85 +; Previous Versions: 1.1 (22 Apr 84) +; +version equ 12 + +; +; IF is intended to be invoked from the IF routine in an FCP. +; This program implements the IF conditional tests and sets the next level +; of IF to be TRUE or FALSE. +; +; Modified on 02/11/85 to accept ambiguous file names and match them. This +; allows aliases to add file extensions if they are needed, for instance +; if there is an alias LDIR that gets a directory of an .LBR file, it +; previously had to be defined as an example : +; +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +noise equ 0 ;set to 1 for noisey (message) operation +negchar equ '~' ;negation prefix char +bdos equ 5 +fcb1 equ 5ch +fcb2 equ 6ch +tbuff equ 80h +cr equ 0dh +lf equ 0ah +bel equ 07h + +; +; External Z3LIB and SYSLIB Routines +; + ext z3init,strtzex,stopzex,geter1,getreg,ift,iff,getenv + ext eval10,print,capine,codend,sksp,sknsp,zfname,cout + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment + jmp ifstart +; +; Condition Table +; +condtab: + db 'T ' ;TRUE + dw ifctrue + db 'F ' ;FALSE + dw ifcfalse + db 'EM' ;file empty + dw ifcempty + db 'ER' ;error message + dw ifcerror + db 'EX' ;file exists + dw ifcex + db 'IN' ;user input + dw ifcinput + db 'NU' ;null argument + dw ifcnull + db 'TC' ;Z3TCAP Entry Loaded + dw ifctcap + db 'WH' ;Wheel Byte + dw ifcwheel + db 0 + +; +; FCP Extension Command: IF +; +ifstart: +; +; Advance to Next Line if Noisey +; + IF NOISE + mvi a,lf + call cout + ENDIF ;NOISE +; +; Test for Equal Sign in Line and Process FCB1=FCB2 form if so +; + lxi h,tbuff+1 ;pt to buffer +ifteq: + mov a,m ;look for = + inx h ;pt to next + ora a ;done if EOL + jz ifck0 + cpi '=' ;equal? + jnz ifteq + lxi h,fcb1+1 ;= found, so compare FCB1 and FCB2 + lxi d,fcb2+1 + mvi b,11 ;11 chars +ifteq1: + ldax d ;compare +; ** Such a small change really. + cpi '?' ; see if an AFN was specified + jz okchar ; always match a ? + mov c,a ; save it in C temporarily + mov a,m ; get the other character + cpi '?' ; see if it is a ? + jz okchar ; if so accept it as a match + cmp c +; ** This allows IF $1=* and IF $1=*.?q? etc +; cmp m ; this guy is no longer needed. + jnz ifcf ;FALSE if no match +okchar: + inx h ;advance + inx d + dcr b ;count down + jnz ifteq1 + jmp ifct ;TRUE if match +; +; Test Condition in FCB1 and file name in FCB2 +; Execute condition processing routine +; +ifck0: + lxi d,fcb1+1 ;pt to first char in FCB1 + ldax d ;get it + cpi '/' ;help? + jz ifhelp + cpi ' ' ;also help + jz ifhelp + sta negflag ;set negate flag + cpi negchar ;is it a negate? + jnz ifck1 + inx d ;pt to char after negchar +ifck1: + call regtest ;test for register value + jnz runreg + call condtest ;test of condition match + jnz runcond ;process condition + IF NOISE + call print + db ' No IF Condition Given',0 + ret + ELSE ;NOT NOISE + mvi a,bel + jmp cout + ENDIF ;NOISE +; +; Print Help Message +; +ifhelp: + IF NOT NOISE + mvi a,lf ;leading new line + call cout + ENDIF ;NOT NOISE + call print + db 'IF, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db ' - Conditional Test' + db cr,lf,'Syntax:' + db cr,lf,' IF condition arguments -or- IF ~condition arguments' + db cr,lf,'where a leading "~" negates the effect of the ' + db 'IF Condition' + db cr,lf,'Possible IF Conditions are:' + db cr,lf,' T Always TRUE' + db cr,lf,' F Always FALSE' + db cr,lf,' EMPTY T if Files are Empty' + db cr,lf,' ERROR T if Error Flag Set' + db cr,lf,' EXIST T if Files Exist' + db cr,lf,' INPUT T if User Hits T, Y, CR, or SP' + db cr,lf,' NULL arg T if No Arg Follows' + db cr,lf,' TCAP T if ZCPR3 TCAP Available' + db cr,lf,' WHEEL T if Wheel Byte Set' + db cr,lf,' reg value T if Register reg = value' + db cr,lf,' fcb1=fcb2 T if the Two FCB values are =' + db cr,lf,'Only first 2 letters of keywords are required' + db cr,lf,'The leading "~" is effective with all conditions except' + db ' fcb1=fcb2' + db 0 + ret +; +; Process register - register value is in A +; +runreg: + push psw ;save value + call getnum ;extract value in FCB2 as a number + pop psw ;get value + cmp b ;compare against extracted value + jz ifctrue ;TRUE if match + jmp ifcfalse ;FALSE if non-match +; +; Process conditional test - address of conditional routine is in HL +; +runcond: + pchl ;"call" routine pted to by HL + +; +; Condition: NULL (2nd file name) +; +ifcnull: + lda fcb2+1 ;get first char of 2nd file name + cpi ' ' ;space = null + jz ifctrue + jmp ifcfalse + +; +; Condition: TCAP +; +ifctcap: + call getenv ;get ptr to ZCPR3 environment descriptor + lxi d,80h ;pt to TCAP entry + dad d + mov a,m ;get first char + cpi ' '+1 ;space or less = none + jc ifcfalse + jmp ifctrue + +; +; Condition: WHEEL +; +ifcwheel: + call getenv ;get ptr to ZCPR3 environment descriptor + lxi d,29h ;pt to Wheel Byte address + dad d + mov a,m ;get low + inx h + mov h,m ;get high + mov l,a ;put low + mov a,m ;get Wheel Byte + ora a ;0=not wheel + jz ifcfalse + jmp ifctrue + +; +; Condition: TRUE +; IFCTRUE enables an active IF +; Condition: FALSE +; IFCFALSE enables an inactive IF +; +ifctrue: + call negtest ;test for negate + jz ifcf ;make IF FALSE +ifct: + IF NOISE + call print + db ' IF T',0 + ENDIF ;NOISE + call ift ;make IF TRUE + rnz + jmp ifovfl +ifcfalse: + call negtest ;test for negate + jz ifct ;make IF TRUE +ifcf: + IF NOISE + call print + db ' IF F',0 + ENDIF ;NOISE + call iff ;make IF FALSE + rnz +ifovfl: + IF NOISE + call print + db ' IF Overflow',0 + ret + ELSE ;NOT NOISE + mvi a,bel + jmp cout + ENDIF ;NOISE + +; +; Condition: INPUT (from user) +; +ifcinput: + IF NOT NOISE + mvi a,lf ;new line + call cout + ENDIF ;NOT NOISE + call stopzex ;suspend ZEX input + call print + db ' IF True? ',0 + call capine + call strtzex ;resume ZEX input + cpi 'T' ;true? + jz ifctrue + cpi 'Y' ;yes? + jz ifctrue + cpi cr ;new line? + jz ifctrue + cpi ' ' ;space? + jz ifctrue + jmp ifcfalse + +; +; Condition: EXIST filename.typ +; List of Files Permitted +; +ifcex: + call skip2 ;skip to 2nd token + jz ifctrue ;declare TRUE if none +; +; Extract Next File +; +ifcex1: + lxi d,fcb1 ;pt to FCB + call zfname ;convert text + push h ;save ptr to next char +; +; Log Into to DU and Search for File +; + call tlog ;log into DU + lxi d,fcb1 ;pt to fcb + mvi c,17 ;search for first + call bdos + inr a ;set zero if error +; +; Abort as FALSE if File Not Found +; + pop h ;get ptr to next char + jz ifcfalse +; +; Advance to Next File, if Any +; + mov a,m ;more to follow? + inx h + cpi ',' + jz ifcex1 +; +; All Files Exist if No More Files +; + jmp ifctrue ;all found, so TRUE + +; +; Condition: EMPTY filename.typ +; +ifcempty: + call skip2 ;skip to 2nd token + jz ifctrue ;TRUE if none +; +; Select Next File +; +ifcem1: + lxi d,fcb1 ;pt to FCB1 + call zfname ;convert + push h ;save ptr to next +; +; Log into DU and Try to Open File +; + call tlog ;log into FCB1's DU + lxi d,fcb1 ;pt to fcb1 + mvi c,15 ;open file + push d ;save fcb ptr + call bdos + pop d + inr a ;not found? +; +; File is Empty if Not Found +; + jz ifemt +; +; Try to Read one Record from File +; + mvi c,20 ;try to read a record + call bdos + ora a ;0=OK +; +; File is Empty if Can't Read Record +; + jnz ifemt ;NZ if no read + pop h ;file not empty +; +; File Exists and Contains Something +; + jmp ifcfalse ;so EMPTY condition is FALSE +; +; File is Empty - Advance +; +ifemt: + pop h ;pt to next char + mov a,m ;get next char + inx h + cpi ',' ;more to come? + jz ifcem1 +; +; Done and True if No More Files - All are Empty +; + jmp ifctrue ;all empty, so TRUE + +; +; Condition: ERROR +; +ifcerror: + call geter1 ;get error byte + jz ifctrue + jmp ifcfalse + +; +; **** Support Routines **** +; + +; +; Save TBUFF and skip to 2nd token +; +skip2: + lxi d,tbuff+1 ;pt to first char + call codend ;pt to free area +skip2a: + ldax d ;get next char + mov d + ora a ;done? + jnz skip2a + call codend ;skip over spaces + call sksp + call sknsp ;skip over 1st token + call sksp ;skip over spaces + mov a,m ;get 1st char of 2nd token + ora a ;return with Z if none + ret + +; +; Convert chars in FCB2 into a number in B +; +getnum: + lxi h,fcb2+1 ;pt to first char + call eval10 ;evaluate + mov b,a ;value in B + ret + +; +; Log into DU in FCB1 +; +tlog: + lda fcb1 ;get disk + ora a ;current? + jnz tlog1 + mvi c,25 ;get disk + call bdos + inr a ;increment for following decrement +tlog1: + dcr a ;A=0 + mov e,a ;disk in E + mvi c,14 + call bdos + lda fcb1+13 ;pt to user + mov e,a + mvi c,32 ;set user + jmp bdos + +; +; Test of Negate Flag = negchar +; +negtest: + lda negflag ;get flag + cpi negchar ;test for No + ret + +; +; Test FCB1 against a single digit (0-9) +; Return with register value in A and NZ if so +; +regtest: + ldax d ;get digit + sui '0' + jc zret ;Z flag for no digit + cpi 10 ;range? + jnc zret ;Z flag for no digit + mov b,a ;register number in B + call getreg ;get register value + mov b,a ;save value + xra a ;set NZ + dcr a + mov a,b ;get register value + ret +zret: + xra a ;set Z + ret + +; +; Test FCB1 against condition table (must have 2-char entries) +; Return with routine address in HL if match and NZ flag +; +condtest: + lxi h,condtab ;pt to table +condt1: + mov a,m ;end of table? + ora a + rz + ldax d ;get char + mov b,m ;get other char in B + inx h ;pt to next + inx d + cmp b ;compare entries + jnz condt2 + ldax d ;get 2nd char + cmp m ;compare + jnz condt2 + inx h ;pt to address + mov a,m ;get address in HL + inx h + mov h,m + mov l,a ;HL = address + xra a ;set NZ for OK + dcr a + ret +condt2: + lxi b,3 ;pt to next entry + dad b ; ... 1 byte for text + 2 bytes for address + dcx d ;pt to 1st char of condition + jmp condt1 + +; +; Buffers +; +negflag: + ds 1 ;negation flag + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/IFSTAT.COM b/Images/Source/hd0/s0/u15/IFSTAT.COM new file mode 100644 index 0000000000000000000000000000000000000000..a76adaed307a24d6c993c6cc418638530a9139f0 GIT binary patch literal 384 zcmX@i%@}3u>KDey@I{N0@$5E6t5}AA`loyu&rV=GWXO1S52J!#zJg|S8!!sNn(W+&?t~ThLcZ^o?XtUT(|wyVn#Lw7XC|f87mGx+g1eE`H@Z!m@ bN3TBh*J5PQ;}O(ky880r#e*MDQr~_6R+OGg literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/IFSTAT.MAC b/Images/Source/hd0/s0/u15/IFSTAT.MAC new file mode 100644 index 00000000..bab8a9d1 --- /dev/null +++ b/Images/Source/hd0/s0/u15/IFSTAT.MAC @@ -0,0 +1,86 @@ +; +; Program: IFSTAT +; Author: Richard Conn +; Version: 1.0 +; Date: 22 Apr 84 +; Previous Versions: None +; +version equ 10 + +; +; IFSTAT is used to display the current IF level. +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +fcb equ 5ch +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext z3init,iftest,eprint,cout + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment + lda fcb+1 ;check for help + cpi '/' + jz prhelp + call iftest ;get number of current IF + jnz prnum ;print number + call eprint + db ' No Active IF',0 + ret +prnum: + call eprint + db ' Current IF Level: ',0 + adi '0' ;convert to ASCII + jmp cout + +; +; Print Help Message +; +prhelp: + call eprint + db 'IFSTAT, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db ' - Display Current IF Level' + db cr,lf,'Syntax: IFSTAT' + db 0 + ret + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/IO.HLP b/Images/Source/hd0/s0/u15/IO.HLP new file mode 100644 index 00000000..a238f917 --- /dev/null +++ b/Images/Source/hd0/s0/u15/IO.HLP @@ -0,0 +1,390 @@ +; + + + Redirectable I/O Under ZCPR3 and SYSIO + + -- Concepts -- + 1 - ZCPR3 and SYSIO + 2 - ZCPR3 and I/O Redirection + + -- Commands -- + C - CPSEL + D - DEVICE + E - DEV + L - LDR + R - RECORD + +:1 + Redirectable I/O Under ZCPR3 + + Thå concepô oæ redirectablå I/Ï involveó thå assignmenô +oæ  physicaì  deviceó tï logicaì devices®  ZCPR³  anä  CP/Í +supporô fouò logicaì devices: + + CON: - Console - An I/O Device for User/System Commo + LST: - Printer - An Output-Only Device for Printouts + RDR: - Reader - An Input-Only Device + PUN: - Punch - An Output-Only Device + + Undeò CP/M¬  therå arå onlù fouò physicaì deviceó whicè +maù bå assigneä tï eacè oæ thå fouò logicaì devices®  Undeò +ZCPR3¬  therå  maù  bå aó manù physicaì deviceó  aó  desireä +whicè maù bå assigneä tï eacè oæ thå fouò logicaì devices. + + Á  "physicaì  device¢  iî thå traditionaì  senså  ió  á +conventionaì  I/Ï device¬  likå á CRÔ oò á Printer®  Iî thå +senså oæ ZCPR3¬  iô ió á devicå driver¬ oò bodù oæ software¬ +whicè  ió  communicateä witè viá thå  BIOS®  Thió  bodù  oæ +software¬ iî turn¬ maù communicatå witè anù devicå OÒ SEÔ OÆ +DEVICEÓ thaô iô wishes. + + SYSIÏ  ió  á  samplå seô oæ  Redirectablå  I/Ï  Driveró +designeä  tï bå useä witè ZCPR³ oî mù system®  Undeò SYSIO¬ +some of thå "physicaì devices¢ implemented are: + +CON: Devices - TTY + CRT + CRT Input and CRT/Remote Computer Output + CRT and Modem Input and CRT and Modem Output + in Parallel + CRT Input and CRT/Modem Output + +LST: Devices - TTY + CRT + Modem + Remote Computer + +RDR: and PUN: Devices - Clock + + + Aó yoõ caî see¬  thå "physicaì devices¢ undeò ZCPR³ caî +bå  combinationó  oæ  actuaì devices®  Thå  CRÔ  Inpuô  anä +CRT/Remotå Computeò Outpuô device¬  foò instance¬ ió useä tï +allo÷  á remotå computeò recorä screeî displayó whicè gï  tï +thå CRT. + + Undeò ZCPR3¬ aó manù sets¬ oò packages¬ oæ Redirectablå +I/Ï  Driveró  aó desireä caî bå created®  Eacè packagå  caî +givå  thå  useò  differenô  typeó  oæ   capabilities®   Foò +instance¬  onå  packagå caî bå likå thå abovå examplå  whilå +anotheò packagå caî providå Disë Recordinç capability¬  sucè +aó CRÔ Inpuô anä CRT/Disë Filå Output. + + + Thå  ZCPR³  Systeí oæ Programó containó fouò  utilitieó +designeä  tï  supporô thå Redirectablå  I/Ï  System®  Theså +utilitieó anä theiò functionó are: + + LDR -- Load a Redirectable I/O Package + DEVICE -- Display and Select Physical I/O Devices + DEV -- Shorthand form of DEVICE + RECORD -- Turn on and off the Recording Facility + + Thió  HELÐ Filå discusseó theså utilitieó anä ho÷  theù +arå intendeä tï bå used. + + Implementatioî  detailó foò I/Ï Packageó arå lefô tï  á +studù  oæ thå sourcå codå oæ thå samplå I/Ï Packagå anä  thå +ZCPR3 book. + +:L + Loading Redirectable I/O Drivers -- LDR + + Onå  oæ  thå manù functionó oæ LDÒ ió tï  loaä  aî  I/Ï +Packagå  intï thå propeò memorù buffer®  LDÒ performó  thió +function when given a file specification of type IOP: + + LDR myio.iop + +will load MYIO.IOP as an I/O Package. + + LDÒ  performó  á structurå checë beforå  approvinç  thå +load. + +:D + +Command: DEVICE3 1.0 (DEVICE) + +Syntax: + + DEVICE <-- Enter Interactive Command Mode + +Function: + + DEVICÅ  ió  useä  tï allo÷ thå  useò  tï  interactivelù +displaù   thå  nameó  oæ  thå  availablå  physicaì   deviceó +(actually¬  devicå  drivers©  whicè maù bå assigneä  tï  thå +logicaì  deviceó anä tï allo÷ thå useò tï assigî á  physicaì +devicå tï á logicaì devicå bù name. + + +Options: + None + +Comments: + + DEVICÅ  onlù runó iî aî interactivå mode®  Iô respondó +tï   single-characteò  commands¬   completinç  thå   commanä +sequences in response and prompting the user. + + The following commands are recognized by DEVICE: + + D - Display Device Names + + C - Select Console Device (CON:) + L - Select List Device (LST:) + P - Select Punch Device (PUN:) + R - Select Reader Device (RDR:) + + X - Exit + + + Thå Displaù Devicå Nameó commanä (D© askó thå useò  foò +the devices to display. His responses are: + + A - All + C - Consoles + L - Lists + P - Punches + R - Readers + + Thå  Exiô commanä exitó tï ZCPR³ withouô promptinç  foò +confirmation. + + Thå otheò fouò commandó (C¬ L¬ P¬ anä R© assigî deviceó +IMMEDIATELY®  Thå  useò typeó thå namå oæ thå devicå tï  bå +assigned®  Iæ hå strikeó á returî iî responså tï thå devicå +name prompt, the command is aborted. + + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + DEVICE + -- invoke utility + +:E + +Command: DEV 1.0 + +Syntax: + + DEV command,command,... + +Function: + + DEÖ  ió á utilitù whicè enableó thå useò tï  manipulatå +thå  ZCPR³ redirectablå I/Ï devicå drivers®  Iô allowó  thå +useò  tï displaù thå nameó oæ thå currenô deviceó anä selecô +them. + + Unlikå itó counterpart¬  DEVICE¬  DEÖ acceptó alì inpuô +from the command line and is not interactive. + +Options: + None + + Comments: + + Anù DEÖ commanä maù takå thå followinç forms® Onlù thå +first letters are significant in the these commands: + + DISPLAY ALL <-- Display names of all devices + DISPLAY CON <-- Display consoles + DISPLAY LST <-- Display printers + DISPLAY PUN <-- Display punches + DISPLAY RDR <-- Display readers + + D A is the same as DISPLAY ALL. + + Thå  fulì  devicå namå musô bå giveî iî  thå  followinç +commands®   Onlù  thå  firsô  characteò  anä  thå  '=§  arå +significant in the rest of the command. + + CON:=name LST:=name PUN:=name RDR:=name + + C=name is the same as CON:=name. + +Selected Error Messages: + + "DEÖ  NOÔ  Initializeä witè I/Ï Base¢ meanó  thaô  thió +ZCPR3 System does not support Redirectable I/O. + + "Redirectioî  Noô  Supported¢  meanó  thaô  thå  loadeä +drivers in the I/O Package do not support redirection. + +Examples of Use: + + DEV C=CRT,L=TTY + -- assign CRT to CON: and TTY to LST: + + +:R + +Command: RECORD 3.0 + +Syntax: + + RECORD ON or OFF <-- Console Recording +or + RECORD ON or OFF PRINTER <-- Printer Recording + +Function: + + RECORÄ  ió useä tï controì thå Disë Outpuô Facilitù  oæ +thå Redirectablå I/Ï Drivers® Copieó oæ Consolå anä Printeò +outputó  caî  bå createä iî disë fileó bù thå  uså  oæ  thió +facility¬  anä  iô  maù bå extendeä intï á numbeò  oæ  otheò +applicationó aó well. + + +Options: + + ON - Enable Recording + OFF - Disable Recording + + P - Reference Printer + +Comments: + + Foò  RECORÄ  tï  perforí  itó  function¬   iô  musô  bå +implementeä iî thå Redirectablå I/Ï Drivers®  Thió ió  lefô +aó aî exerciså foò thå reader® Thå Redirectablå I/Ï Driveró +supplieä  witè ZCPR³ havå simplå RETurî instructionó aó  thå +subroutineó executeä bù thå RECORÄ functions. + + + Fouò  routineó  arå  accesseä iî thå  Redirectablå  I/Ï +Driveò packagå tï controì thå RECORÄ function® Theù are: + + COPEN -- Enable Recording Console Output + LOPEN -- Enable Recording List Output + CCLOSE -- Disable Recording Console Output + LCLOSE -- Disable Recording List Output + + RECORÄ ió indirectlù tieä intï DEVICE® Invokinç RECORÄ +itselæ  doeó  noô  necessarilù starô thå  recordinç  procesó +immediately®   Twï  functionó  musô  takå  placå  tï  begiî +recordinç outpuô ontï disë files: + + 1) RECORD has to turn the appropriate Driver ON + 2) DEVICE has to select the appropriate Driver + + + Bù turninç RECORÄ OFÆ durinç á recordinç  session¬  thå +outpuô  filå  ió closeä anä availablå foò  otheò  uses®  Iæ +RECORÄ  ió lateò turneä ON¬  thå outpuô filå maù bå  deleteä +(iæ thå samå filå ió selecteä tï recorä into)®  However¬ iæ +á  ne÷  devicå ió selecteä whilå RECORÄ ió OΠ (say¬  DEVICÅ +CON:=CRÔ ió issued)¬ theî recordinç ió SUSPENDEÄ (NOÔ turneä +off©  untiì thå recordinç devicå ió  selecteä  again®  Witè +thió  capability¬  iæ iô lookó likå thå recordinç sessioî ió +noô  goinç well¬  recordinç caî bå  suspended¬  thå  probleí +fixed¬ anä theî recordinç caî bå resumed. + + Thió  combineä  systeí oæ DEVICÅ anä RECORÄ provideó  á +flexiblå outpuô recordinç system®  Iî addition¬  thå outpuô +recordinç neeä noô necessarilù gï tï á disë file®  Iô coulä +bå seô uð tï senä CONº  outpuô tï thå CRÔ and¬ say¬ á Remotå +Computeò foò processing. + + +Selected Error Messages: + + "I/Ï Driveò Addresó NOÔ Defined¢ meanó thaô therå ió nï +I/O Package in this ZCPR3 System. + + "Disë  Driveò  Modulå NOÔ Loaded¢ meanó  thaô  thå  I/Ï +Package does not support the RECORD facility. + + "Nï  I/Ï  Driveò Modulå Loaded¢ meanó thaô LDÒ haó  noô +been run to load an *.IOP file. + +Examples of Use: + + RECORD ON + - turn on recording for the console + + RECORD ON P + - turn on recording for the printer + +:2 + + + Redirectable I/O and the ZCPR3 System + + Thå   ZCPR³  Systeí  caî  functioî  witè   oò   withouô +Redirectablå  I/Ï  aó  implementeä bù thå  Redirectablå  I/Ï +Driveò  Packageó  anä  thå  LDR¬  DEV¬  DEVICE¬  anä  RECORÄ +programs®  Obviously¬  thå  ZCPR³ Systeí ió madå mucè  morå +flexiblå bù employinç theså facilities. + + DEVICÅ anä RECORÄ arå tieä directlù tï thå Redirectablå +I/Ï  Packageó themselves®  Theù don'ô uså anù oæ thå  otheò +featureó  oæ  thå ZCPR³ Systeí tï speaë  of¬  anä  theù  arå +installeä bù Z3INS. + + + Thå  programó controllinç thå Redirectablå I/Ï  Driveró +arå tieä togetheò iî thió manner: + + LDR loads the drivers + DEVICE controls the drivers + DEV controls the drivers + RECORD enables and disables the recording + facilities of the drivers + +:C + +Command: CPSEL 1.0 + +Syntax: + + CPSEL cmd1,cmd2,... + +Function: + + CPSEÌ  (CRT/Printeò  SELect© ió á ZCPR³  utilitù  whicè +permitó thå useò tï dynamicallù selecô thå CRÔ (oæ CRÔ ° anä +CRÔ  1© anä Printeò (oæ Printeró 0¬  1¬  2¬  anä 3© froí thå +currenô  ZCPR³  Environmenô  Descriptor®  Thió  dynamicallù +changeó thå characteristicó oæ thå printeò anä CRÔ whicè arå +used by other ZCPR3 utilities, such as PRINT. + +Options: + None + + +Comments: + + The commands may be any of the following: + + Cc, c=0 or 1 -- Select CRT 0 or CRT 1 + + Pp, p=0-3 -- Select Printer 0-3 + + Dd, d=A (All), C (CRT), P (Printer) + -- Display Selection Values + + Thå valueó affecteä bù theså selectionó includå  numbeò +oæ  lineó  anä  columnó oî thå CRÔ anä numbeò oæ  lineó  anä +columnó oî thå printer®  Thå abilitù oæ thå printeò tï forí +feed is also included. + + +Selected Error Messages: + None + +Examples of Use: + + CPSEL DA + - display all devices + + CPSEL C1,P3,DA + - Select CRT 1 and Printer 3; display all devices + when done + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/LDR-UPD.COM b/Images/Source/hd0/s0/u15/LDR-UPD.COM new file mode 100644 index 0000000000000000000000000000000000000000..84f7f6eda94b1c197a64f18491d4952f55e13a0c GIT binary patch literal 2560 zcmZWrZ){W76~Fd-_rCY+*u{34h*_)aJe4g84PZwgd5Kd*lYquzN+E3{3UY}_JrWz) zrojVDn5Jo}G;JTYcHcI!Z&Ni3Xyla%gx`yq-z!(b(To@$CRx;xT7My040L}UJJ(4V z)hxgB&i&nU&O7Ja-@UrJ(>4(r9viozl^(^$rX*Ig2j&pFsIW_pytU2zfvpIS=LljL z``9(f<)HghvB^YoiXyg2Zm_-fdS11*n%}V*?dkomAEa;QlG)gqu*;$F(ZF;flclK> z^i=Hl$=Fmpvu!e#jnNZ{>3AmMa?HLTPseFInN26+8JbAa?E7)rcA1Ig=zDP*OXj#Y zz?nGB=1#>k5E){R>^VSRr6bd+S-NK?IY|$!hF27*2PP&$bU67zBArTt?Y=0t-IqLd zI=d};It#C7=3|gz+j=ZE6Q887C(>YlupRqgJd>D&%)S|aB6O(jaA?o&1MrD#I)@CF zva^SF^9_OhP%uA|*|f+`i0mUdY{!=UW{-e93hHbaJtw8Ee~6wr)YeE43hkQGBpd7ORaMS>5m0o1D_j7olZ`!1H&_?vbpua zo)i!~k<37iBdPRE3~Z-kv+ddT78wCYBb4VdVGw?@IA6B3^MEMUP1PnzJAubUDc5j#n zfdn0P1>jsF1k`?J&o_B{t0QCw2Cw6`ZR}1txI);Ma*f?0)f)RYu9m`&NYN;GgO5q@ z5rJjP1)q=_k=e(%nh&;!71q*N4X==*xev1iY`%k8fPmzX27?70eoVYIAFGmT0YW_I z8*Y)NO-4$S2v(o=GpyEl)TRvs6n;Xy?N75wQt??m+8=Oa$jh!{{WA8d*3j+i7;7J6 zKC9~UxDj|n`s+rc#%|+k-C$o6^Dt?utXmot^VaVB%lPhVe_DK*KpAS@q7`8FzU?3Pv6J4Z*t!4?ZllgZqo{^7$H2k^hD^ zN;vTcz`%SP%Gv-m=sO6wZT3S15RV~D-U{6R39$w%*0GA!SFyqsYiq?Cs92Fov0{DC zC>UiM^5mf^^D0q!UPba&P6ElFi)-&6!#j$#4@s_6G)lXSyW8(sj>QEsWbA^K;+=-S z*C5UaWnU1Ez_NLLL;w|QUl1ej<+(PAp;fns|J|s;S>)+Mo%w1Vb}}D$QRh*0T+KJD zYrqT70ju^~*X&nEuRia+@j2smxQ^$5u9K26V3cbO_Y15pTTit)De|2#E`s3kMf25Up0^DEKbldW}n?1;s~uY^blpb4IRx z31zQh?oNhL@Ur~!Q#a+>6Fu_~YA|Rn zkJVa>6kQ&zSC^r;fI*L2jeOC3BC`jMSygY!b(q;p5EGS>(SV3=u~!sGslJN(0sS9n zq*dpc%i1dnYyyRQDNUtWGT4|>Ue(%>##VhA=dRsPD%vsS{GZ{?ImdmEDeWAc++N6g zdpC11tLO=(R`y&{+)qbTIO%_*VD8}3K2!?cT&Wtkq!f*v&YrU&odpq!&i1me9G{uL z2tk7vLwY{62INEfuYw{rF99HeDK=T~pYtL8a{#r^gVnRY9`u%)JtKp?u+wkvbXp3C zrU4%FA=VJ}`B1A7FbCPsU5m|-y3^I$g!a^zy*`6Qc34}?haoF$f)==AxhgH@?l3p> zvyIsN%cf;LvLoQ{*VC?{H?wg4ps5ey=@W1x*-GJBKxa~LvpGOBvx)3+xV^X>h%J0K z?1{hu6z%sQ)a?4t5VN+Gs&(7({&Fqi(vOHG+tL0qJM6T=w+}nn-t8^U?t+794)gbp zULei0v3Av=7aWapbm;<70{0y^%)1Ua&u%+#4)zD4ilf6NJ1+odWB07Hcb1MB|Ns5} E0+1vcUjP6A literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/LDR-UPD.MSG b/Images/Source/hd0/s0/u15/LDR-UPD.MSG new file mode 100644 index 00000000..c6339fe4 --- /dev/null +++ b/Images/Source/hd0/s0/u15/LDR-UPD.MSG @@ -0,0 +1,16 @@ + +Date: Thursday, 9 August 1984 11:33-MDT +From: Richard Conn +To: All +Re: LDR-UPD.COM for ZCPR3 + + I have uploaded a version of LDR.COM which matches the LDR.MAC +file. I really apologize for the mixup I made between the old object +of LDR and the release (final) object of LDR. The source file +(LDR.MAC) is current. + + Rick + +PS CRCs check from the upload, but the CRC is not the same as the one +on the distribution list, which matches the bad LDR.COM. I will send +out the correct LDR.COM in the Phase 2 release. diff --git a/Images/Source/hd0/s0/u15/LDR.COM b/Images/Source/hd0/s0/u15/LDR.COM new file mode 100644 index 0000000000000000000000000000000000000000..d2c4cb6447440da523ae9c52bc9103a3751afbbe GIT binary patch literal 2688 zcmbtWZ){sv6~B&s?|avdz1nVpI4ipDlg65+X&W0h+{WpjwdrUZM_t>|(6w?KH?x-5 z#delhq;3XOLX((~whw%$CcYHy17MKo3`|7vd-dk`=oNK^M^uE6HN8m4+8`1EinLeG zeNIaE8OuKJoZmg?+;h%7_xNcZ$9UxM=ott4M;~?YMTz%0!wZNnQ~tnRvUV9K92NNa z&mn#e2f1JNy4mq;aw46XWQb>FlYghHRZ^^e<4X>GefhbQ?1f^ckerKo-Sjv}`=-+Q z0?S@zSCW@rNlvEnyC#x_B)goRO6B9=aQ5X?F2z!rLN1-kvvh_PUQRLFW;$797gH>m zDGGCd^C?y+UPvpqK5VhD?d(61Ed0Hw=e%;JEe=O>@!z`m$8zi}wz`)3#<8EG9#ijArEOos z{sq*t?F{BWmHeAA-|FO9$j$iI;1avb@P){ST+E(+oa^kDF>$T42QU#C3f&W!kPb`G+~8SU(VI2m46R&SRBt+!AXb0q ztTuH1j%%ZONp>bVm7ZXypbwyWe~@{Y#?GONao0J5V`-G&Zdx9MhTY*ZhFqd^Z%gWw zixXMB>S~9ABT&=1ia}ktWNGT_E=5tae>n*bS#{K^>UBn4X-;&g4JnBzuy=%>D`d0mcrrJcLeMc}q0CQG#{#0n*$!i@-Jp;hV&a1kg0@HF z5kV1xE3;`l0u*?-YJdxh5ZsqX`eJt269l0yxE33@Aw)%zKIPbIj)i6_5%-FNuvx zfo70DEj7yE;xXIUajET)5p5HvHK6_lD^20G?Z5!V5>mk4n!iWtL90)7koa(bZzh^d z0*WGB;zNft?&hD#8t8m+&@Y_-2bb4GX&C5 zN*1egzqD+UE?|v|1cdtq0u6MG0H78~i@zZyy7`~UuZ2lMD(fw%H#lFgo!{s<4^?1~ zV98+`VkM@AXQ< z`ZI7+qSEjU=)@Cee6J)BIJQ8LIDy6LUP&(nM63rTeFy^IV>V$H`3F!>snLR)EQEkP zzLZkCu?{@(7|_x0U)S$QJ0G{+@|d#iuKO`yn=0wr)mqc^J;9%))Tb9bL zMpgd|?)%(^hSreGns1XW8cw-fg`=+dHiKLN_9Omz`6C!XYd%y`D#k0aMUB&PH-A&M zyv9M9{JNrpOJmvxKXTaqng0FeZd1#t`F1+umlKM%I6@9!5>UxOqQeGW9x z?f<>p{41p0!F)X&qd}Q|@u80ij#AA@g>p=$7koZ|ViXv$X4^z+V)3kx)c~n}-PY(h zgW?KbYwMm8t0S$(D%2J*sPURvsu&5%W1d+>J4jowa+Dzc4O-Pr@c1I1rw~%BgMJgx z|ABf=@yz`~ou@kd9SJMirtPZEZ_-+avpwDH*qHObxnHB|yY%XN@Dx2KY~Q7Jj2@xy zECqJ-3h;MSTcXXH{{i(qJfgs){~N`^z^k@sIZ&)N!VhRg_q25vHf}|@>C$dR*37Um z#J}&o*N!M(@$P6t9<9|tQ0MVI)>FpcBUa1+E_~PW*4MbN+t?K4Td?uL7gn|So^U9t z<-Ef$6yW89WnWF@F2nmsKZBP7Hl2m{nlYB2O&2b~y9@l=^V?6y{Bf8RiKri;_O?%l zxwWg>XgMxLYt6V8QVUxf0)fRt!cX>^8 zH}UWukMSS(4rrQ3vg-C|#ADVHE7u4O@9``eJ3TPZ6b~-K{XmSmyS=jK8uV;(+4|Pq Ll?(d+vHyPorbaU@ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/LDR.MAC b/Images/Source/hd0/s0/u15/LDR.MAC new file mode 100644 index 00000000..36f66240 --- /dev/null +++ b/Images/Source/hd0/s0/u15/LDR.MAC @@ -0,0 +1,606 @@ +; +; PROGRAM: LDR +; AUTHOR: RICHARD CONN +; VERSION: 1.0 +; DATE: 27 FEB 84 +; PREVIOUS VERSIONS: 0.1 (3 Feb 84), 0.2 (22 Feb 84), 1.1 (28 Sep 84) +; +;VERSION EQU 10 + +;VERSION EQU 11 ; Version 1.1 by Joe Wright 28 Sept 84 + + ; This version modified to allow loading the .ENV + ; file the first time, when there is no environment + ; descriptor in memory. The program now takes + ; the environment address from the .ENV file so + ; that subsequent files are also loaded correctly. + ; ie. LDR SYS.ENV,SYS.RCP,etc. Note that .ENV must + ; be the first declared file until LDR is installed + ; to your environment. jww + +VERSION EQU 12 ; Version 1.2 by Dave Lucky 31 Dec 84 + + ; This version modified to correct exit regs from + ; SDLOAD subroutine. The Source and Destination + ; registers on entry were HL and DE, respectively. + ; On exit, they were DE and HL. The calling routine + ; (SETDATA) went amuck when calculating number of NDR + ; records using bogus DE. Also, corrected the SETDATA + ; routine from using the incorrect address of the NDR + ; entry size field as well as its contents acquired + ; from the GETNDR routine. + +EXTENV EQU 1 ; 1 for External Environ, 0 for Internal Environ + +; +; LDR is a general-purpose package loader for ZCPR3. It is +; invoked by the following form: +; +; LDR +; +; For example: +; LDR DEFAULT.RCP,SYSIO.IOP +; +; No default file types are assumed on the list of packages, and +; each package specified must be unambigous and have a type of RCP or IOP +; (for Resident Command Package or Input/Output Package). LDR +; checks to make sure that the files are valid packages and then loads +; them into memory at the correct locations, checking for package boundary +; overflow. +; +; + +; +; ZCPR3 Header +; + MACLIB Z3BASE.LIB + +; +; System Equates +; +bdos equ 5 +fcb equ 5ch +tbuff equ 80h +rcpflg equ 1 ; package type is RCP +iopflg equ 2 ; package type is IOP +fcpflg equ 3 ; package type is FCP +ndrflg equ 4 ; package type is NDR +envflg equ 5 ; package type is ENV +tcapflg equ 6 ; package type is Z3T +cr equ 0dh +lf equ 0ah + + ext z3init,envptr + ext retud,getud,putud,logud + ext getrcp,getfcp,getiop,getndr + ext f$open,f$close,f$read + ext print,pfn2 + ext hmovb,moveb,fillb + ext cline,sksp,zfname + +; +; Environments +; +origin: +; + if extenv ; if external environment ... +; +; External Environment Definition +; + jmp z3ldr + db 'Z3ENV' ; this is an environment + db 1 ; class 1 environment (external) +envloc: + dw z3env ; ptr to environment +z3ldr: + lhld envloc ; HL pts to environment + + else ; if internal environment ... +; +; Internal Environment Definition +; + MACLIB SYSENV.LIB +envloc: + jmp z3ldr + SYSENV ; define environment +z3ldr: + lxi h,envloc ; HL pts to environment + + endif + +; +; Beginning of LDR +; + call z3init ; initialize environment pointer + call banner ; print banner + lxi h,tbuff ; pt to command line + call cline ; save command line as string + call sksp ; skip over spaces + mov a,m ; get offending char + cpi '/' ; help? + jz help + ora a ; help? + jz help +; +; Main Loop - HL pts to next file name in list +; +z3ldr1: + lxi d,fcb ; pt to fcb + call zfname ; extract file name and data + inx d ; pt to file name + call print + db cr,lf,' Loading ',0 + call pfn2 ; print file name + push h ; save ptr + call pkload ; load file + pop h ; get ptr + mov a,m ; get char + inx h ; pt to next char + cpi ',' ; another file in list? + jz z3ldr1 + ret +; +; Print Help Message +; +help: + call print + db cr,lf,' LDR Syntax:' + db cr,lf,' LDR ' + db cr,lf,' where entries in the list may be any of these types:' + db cr,lf + db cr,lf,' FCP - Flow Cmnd Package ENV - Z3 Environ' + db cr,lf,' IOP - Input/Output Package NDR - Z3 Named Dir' + db cr,lf,' RCP - Resident Cmnd Package Z3T - Z3TCAP Entry' + db cr,lf,lf,' The ENV file must be first if LDR is not installed.' + db cr,lf,0 + ret +; +; Load package named in FCB +; +pkload: + call setdata ; load data buffers from environment in case of change + call cktype ; check for valid file type + jz typerr ; abort if error + call open ; open file, read in first block, check for valid + jz getud ; abort if error + +; Check if ENV. If so, get Z3ENV and call z3init + + push h ; save package pointer from cktype + lxi d,fcb+9 ; fcb type + lxi h,envtyp ; ENV? + call comptyp ; compare types + pop h ; get package pointer + jnz pkld ; not ENV, proceed normally +; +; File type is ENV. Get Z3ENV address from file and re-initialize +; + lxi h,tbuff ; first sector in tbuff + lxi d,1bh ; offset to Z3ENV + dad d ; point hl to it + mov e,m ; get Z3ENV + inx h + mov d,m ; got it + xchg ; in hl + call z3init ; set new environment + +pkld: call load ; load package into memory at correct location + call close ; close up process + call getud ; return home +; +; Check for IOP and return if not +; + lda pktype ; init package if IOP + cpi iopflg + rnz +; +; Init IOP +; + lhld packadr ; get address + lxi d,9 ; 4th JMP into it + dad d + push h ; address on stack + ret ; "CALL" routine and return to OS +; +; Load Data Buffers from Environment +; +setdata: + lhld envptr ; get environment descriptor address + shld envadr + lxi d,80H ; pt to Z3TCAP + dad d + shld tcapadr + call getrcp ; get RCP data + lxi d,rcpdata ; load + call sdload + call getiop ; get IOP data + lxi d,iopdata ; load + call sdload + call getfcp ; get FCP data + lxi d,fcpdata ; load + call sdload + lxi h,ndridat ; init NDR data in case no entry + lxi d,ndrdata + mvi b,9 ; 9 bytes (1-jmp, 5-ID, 2-adr, 1-size) + call moveb + call getndr ; get NDR data + mov b,a ; save entry count ;1284DL + mov a,h ; no NDR data? + ora l + rz + mov a,b ; restore entry count ;1284DL + call sdload ; with DE -> ndrdata ;1284DL + push d ; save ptr to entry count ;1284DL + mvi h,0 ; HL = value + mov l,a ; A = entry count + dad h ; *2 + mov d,h ; DE = value * 2 + mov e,l + dad h ; *4 + dad h ; *8 + dad h ; *16 + dad d ; *18 + mov a,h ; /128 + rlc + ani 0feh + mov h,a + mov a,l + rlc + ani 1 + ora h ; A = value * 18 / 128 + inr a ; +1 + pop d ; get ptr + stax d ; save value + ret +; +; Load 3 bytes pted to by HL into memory pted to by DE+6 +; +; Input Regs: ;1284DL +; HL = Source ;1284DL +; DE = Destination ;1284DL +; ;1284DL +; Output Regs: ;1284DL +; HL = Source ;1284DL +; DE = Destination+8 ;1284DL +; ;1284DL +sdload: + push h ; save ptr to data + lxi h,6 ; add 6 to DE to pt to proper buffer + dad d ; HL pts to buffer + pop d ; DE contains address + mov m,e ; store address + inx h + mov m,d + inx h + mov m,a ; store size data + xchg ; swap Source / Destination regs ;1284DL + ret +; +; Print Banner +; +banner: + call print + db cr,lf,'ZCPR3 LDR, Version ' + db (VERSION/10)+'0','.',(VERSION MOD 10)+'0',0 + ret +; +; Check for Valid Package File Type +; Return with Zero Flag Set if error +; If validated, PKTYPE contains package type and HL pts to data +; +cktype: + lxi d,fcb+9 ; pt to file type + lxi h,rcptyp ; see if RCP + mvi b,rcpflg ; RCP code + call comptyp ; compare + jz cktok ; OK if match + lxi h,ioptyp ; see if IOP + mvi b,iopflg ; IOP code + call comptyp ; compare + jz cktok ; OK if match + lxi h,fcptyp ; see if FCP + mvi b,fcpflg ; FCP code + call comptyp ; compare + jz cktok ; OK if match + lxi h,ndrtyp ; see if NDR + mvi b,ndrflg ; NDR code + call comptyp ; compare + jz cktok ; OK if match + lxi h,envtyp ; see if ENV + mvi b,envflg ; ENV code + call comptyp ; compare + jz cktok ; OK if match + lxi h,tcaptyp ; see if Z3TCAP + mvi b,tcapflg ; Z3T code + call comptyp ; compare + jz cktok + mvi b,0 ; invalid type +cktok: + mov a,b ; set package type + sta pktype + ora a ; set NZ if no error + ret +comptyp: + push d ; save regs + push b + mvi b,3 ; 3 bytes +compt1: + ldax d ; get FCB char + ani 7fh ; mask + cmp m ; compare + jnz compt2 + inx h ; pt to next + inx d + dcr b ; count down + jnz compt1 +compt2: + pop b ; restore regs + pop d + ret +typerr: + call prf ; print file name and string + db ' is not a Valid Type',0 + ret +; +; Open File and Load First Block into TBUFF +; Validate Package Structure and Return with Zero Flag Set if Error +; On input, HL pts to data buffer +; If no error, HL points to load address and B is number of 128-byte +; pages allowed in buffer +; +open: + call putud ; save location + call retud ; get UD in BC + lda fcb ; get disk + ora a ; default? + jz open0 + mov b,a ; disk in B (A=1) + dcr b ; adjust to A=0 +open0: + lda fcb+13 ; get user + mov c,a ; user in C + call logud ; log into UD + xra a ; clear disk + sta fcb + +; +; Disallow Ambiguous File Name +; + call ambchk ; check for ambiguous file name + jz amberr ; abort if any ambiguity +; +; Open File +; + lxi d,fcb ; pt to FCB + call f$open ; open file + jnz fnferr ; abort if file not found +; +; Read First 128-byte Block +; + call f$read ; read in first block + jnz fempty ; abort if file empty +; +; Validate Package +; Package Data Area is structured as follows: +; DB numjmps ; number of jumps at beginning of package +; DB 'Z3xxx' ; package ID (always 5 chars) +; DW address ; address of memory buffer +; DB size ; number of 128-byte blocks in memory buffer +; + xchg ; DE pts to package data + ldax d ; get number of jumps + inx d ; pt to package ID + mov b,a ; jump count in B +; +; Validate Package - MUST have proper number of JMPs +; + lxi h,tbuff ; check jumps +open1: + mov a,b ; at limit of jumps? + ora a + jz open2 + dcr b ; count down + mov a,m ; check for JMP + cpi 0C3H ; JMP? + jnz strerr ; structure error + inx h ; pt to next + inx h + inx h + jmp open1 +; +; Check Package ID - must match +; +open2: + mvi b,5 ; check package ID +open3: + ldax d ; get byte + cpi ' ' ; no ID if space + jz open4 + cmp m ; check + jnz strerr ; structure error +open4: + inx d ; pt to next + inx h + dcr b ; count down + jnz open3 +; +; Extract Package Address +; + ldax d ; get low-order address + mov l,a ; put in HL + inx d + ldax d ; get high-order address + mov h,a + inx d +; +; Check for Valid Package Address +; + mov a,h ; must not be zero + ora l + jz adrerr +; +; Extract 128-byte Block Count +; + ldax d ; get block count + mov b,a ; put in B + xra a ; set flags + dcr a ; NZ + ret +; +; Ambiguous File Name Check +; Returns with Z Set if Ambiguous +; +ambchk: + lxi d,fcb+1 ; check for ambiguous file name + mvi b,11 ; 11 chars +ambchk1: + ldax d ; get char + ani 7fh ; mask + cpi '?' + rz + inx d ; pt to next + dcr b ; count down + jnz ambchk1 + dcr b ; set NZ flag + ret + +; +; Error Messages +; +amberr: + call prf ; print file name and message + db ' is Ambiguous',0 +erret: + xra a ; set error code + ret +adrerr: + call prf ; print file name and message + db ' Not Known to Environ',0 + jmp erret +fnferr: + call prf ; print file name and message + db ' Not Found',0 + jmp erret +fempty: + call prf ; print file name and message + db ' Empty',0 + jmp erret +strerr: + call prf ; print file name and message + db ' Contains a Format Flaw',0 + jmp erret +prf: + call print + db cr,lf,' File ',0 + lxi d,fcb+1 + call pfn2 + jmp print + +; +; Close File +; +close: + lxi d,fcb ; pt to FCB + jmp f$close ; close file + +; +; Load File Into Buffer +; +load: + shld packadr ; save package address in case of error + xchg ; DE pts to buffer, B = Max Blocks +load1: + push b ; save count + lxi h,tbuff ; pt to buffer + mvi b,128 + call hmovb ; copy TBUFF into Buffer + push d ; save ptr to next block in buffer + lxi d,fcb ; pt to fcb + call f$read ; read next block + pop d ; get ptr + pop b ; get count + rnz ; done if NZ + dcr b ; count down + jnz load1 +; +; Buffer Full +; + call prf + db ' is too Large',0 + lhld packadr ; clear package + mvi b,128 ; NOPs + xra a + call fillb + lxi b,128 ; pt to after last NOP + dad b + mvi b,3 ; copy 3 bytes + xchg ; DE pts to empty space + lxi h,ercode ; store error code + jmp moveb +; +; Error Code to be Stored if Package Load Fails +; +ercode: + xra a ; 3 bytes + dcr a ; A=0FFH and NZ Flag Set + ret + +; +; Buffers +; +ndridat: + db 0 ; no JMPs + db ' ' ; no ID stored + dw 0 ; address + db 0 ; (z3ndirs*18)/128+1 size +rcptyp: + db 'RCP' ; file type of RCP file +rcpdata: + db 0 ; 0 JMPs + db 'Z3RCP' ; ID + dw 0 ; address + db 0 ; size +ioptyp: + db 'IOP' ; file type of IOP file +iopdata: + db 16 ; 16 JMPs + db 'Z3IOP' ; ID + dw 0 ; address + db 0 ; size +fcptyp: + db 'FCP' ; file type of FCP file +fcpdata: + db 0 ; 0 JMPs + db 'Z3FCP' ; ID + dw 0 ; address + db 0 ; size +ndrtyp: + db 'NDR' ; file type of NDR file +ndrdata: + db 0 ; no JMPs + db ' ' ; no ID stored + dw 0 ; address + db 0 ; (z3ndirs*18)/128+1 size +envtyp: + db 'ENV' ; file type of ENV file +envdata: + db 1 ; 1 JMP + db 'Z3ENV' ; ID +envadr: + dw 0 ; address + db 2 ; 2 128-byte blocks max +tcaptyp: + db 'Z3T' ; file type of Z3TCAP file +tcapdata: + db 0 ; no JMPs + db ' ' ; no ID stored +tcapadr: + dw 0 ; address + db 1 ; 1 128-byte block max +pktype: + ds 1 ; package type (0=error) +packadr: + ds 2 ; package address + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/LDR15.LBR b/Images/Source/hd0/s0/u15/LDR15.LBR new file mode 100644 index 0000000000000000000000000000000000000000..43154924f8e2accc6e6f66069abb12995fd26766 GIT binary patch literal 13824 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 Dz~gjL literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/LGET11.LBR b/Images/Source/hd0/s0/u15/LGET11.LBR new file mode 100644 index 0000000000000000000000000000000000000000..093c3e3d0be9ec483f194c90fbaa5e25b2799099 GIT binary patch literal 9088 zcmcgxX;@R&*4|+_Kqd?bWvF@}Ri-cn1Pp=$2o5MRs0Az%AV4Y*NP>VOb*NLp)_z6n z0Jha?)eflG#?}cEL6Y`RqtdFaLu#>Aq(T+-s?GVAT6$G&~=l95)7yKx;q$xB0ZBdGRw+ zLqjuDLV}SSD#?0zUdLf&hE1C@pM}i+4lL>`PAn1^5L79TI>zgZd!3+y9li4j0V3SJ zbKq-)yLT=jSb^NVvk9-2s4pv*AXZQj{9eKLtXP`r;!A#DnXN)a+66Or>}N|jtu zN`?l7^4Mfrb*WlfB_Z(~nJ-sLisiXVsj`}BOAAUvMR*VzVo^{~5UJp?lgrewTqS|U zBsq@^B6Va)%H&ZbPq%;-%L3ztZfE={mY|9NgWk8Nj&K-PWD;KKgkUAX zvPOLe1%(8)+RoPxn`yBi0YH#QP)$%zxp#&-~!f`dbP zYt15(CG6>&1wL-%_;MvDh-Aq@LgQ-{lh_xxkf1)YGP!-Dxp%?`@H2JM+CTC^Frtn)nR*yj9lc3+TW34s%n(tbd zAJc<9-Vp=@J&Nca3b2v1i(LWTX8i+N?-fM=QNdHIY)!4>{UeB4A&8&SgXdb?6X97{ z)TWnA1Xel3fPW>E@Z3Y&R`Vv(1%GQuo7hdK^fAvS#aKdskYq9>Tr{xE4y#IzwU2=a zRXZm8=My1TLZLf+vW4@P-dy2(saialSZX%MdidHb3qGaS=wGg(sHeMqknhn;*`k3q zqe-7MHTB;F{(rkY?So!c$epl>K*AAE2HH$|0Lb@%3;=`x5PA|j^b=dW!p^(KE=TTN zYv%>^pm&Zi0isX6%O~AHgo>~OSzn%zQ+0^E?O$sbf!wSf&@iUKG2`1nSi*XQeOWbj z1jhr?d6KX7Ns<&gkNDdN(vlT+$D>Acw>$T;1d#WAX|;B3ZdT2DlYm6-JW>mxwRi>g z>K;aCde9VBtWnqv*zD7;sl0wM}q#?Zo^~gg*dN{+w#o43MS?E#O%)p9exjl@v za=RC6?RFQm_B>Z>^3Jwr)b%_!(h+P7vTrl`@);BFm@LM5=hzFl$ld7d%(4OG{yFwS zrgSyCUGEt-+!Gs~ZU2Jd_SkUKz%v6cgF41S0ODnX++pA9gTA9UWdY>@2?2B3t;>aF z0zP=%gdJ|n;D127J!}_;a;VF^ZpwyZY!)x%bW>snW1A$4qtUlh7w!Gu;6NM+)a_hL zonRX}?VW_qHoEWZo1IK$ZT=Y?K{!Ve2C_q1VrkF-L!eBs5aB1Z#SWlN9LDMK3gif4 zID|Fz8pkAgog)t6c)!8vVf2o25bB&9yfZi^Y8$%~uN6Bmtzy*dBnH_<9B~$YF;+{?0sAxRF$NwN^Mo^hx(dtE-`fbBoyAT-Blzs446 z^wchPr?c5#d(9zsk`wi}gYKq-lh8crhrbLyuP$Cmg2)#bQIUQc{lL z9d@sfQg9M&YRywFk7NHd`RKVcHkc@ccV#E_h<&k#u!5#xG8;OVQ`tgWtsff(w5e

FtUQ}hUN@xNLj!v_JNJO6JWgtB*g|JpZ8-=SHnMwJBfvOa z0UMTidVmIaECMyPLfCK{J3x<()w0boo#sWI=Acfqq|+?wG*9d_$98Hu&C&X1eLD*Y zYQa3i09%Lw4zd?i+rbn6t+afvg70KoZ6~|BO`~s%)c+K6(ab()#hIj!)HgffSP-08 zk{ZRq9SEzFGhq!)TkR;0z7{xUt9^~5hu@(8=StSo?SGgf2!fv*xNr>hL@)IMEj>oi z1>veItnD=p3;V&eut32q_dd*loPvxR?B=^eF`JlZ1lOM7B-(oMAjR5W=ksxi%ixp4 zwYa^zXRx=q5+^j_M&02Jn2c?D800%r=XhpXYtN0PH97}w^M8!${IEBC#MPB?`3N37_^Z|!pux0m+9k%?Z%SO53}MRT*=oPWg7CfpYX)6e zL_YNkmte!ABLt=gz)C*abh(Gi)m`DPSX8ai{>?pX_?x>-?~1A!k!2VVWUdo0HV9Tg z8F1oZb-0w1r!#pFawndCFqQ|Cv23hUZzj)W^32Ep4?Fy@#}77s@Zd2x7@Lj7Iwmv1 zgW%<4e-;Yj3go=*Tj1XTJsx8MC*H*yO*2sv@8;>6cz8mxi?@i0pJX>Qa0Hn(2;oTx zX*&+>P=tq+S#%9rG$jutnv4VB4v+)$2YYHYhFd)5$Cd6^o(X2A6Nnn*wds36;{wW+ z50FelqZ~dgcs8h4;x~fUm9K}R4PNEY>(JY#rzY{+hgyuLNkeOTYQDR?h_9W?Uw#a} zajxLCbNLKL4wkpBbqesrgEGD@lRx;`@>di!uN0nJ!5@g!4`}q@Z|Ozzva>fA;rDcR zFUt!#;Gbp@$jJA?Hsi#(G1#6U^!|Y_6rMEb;0Yz@FyH?NzV0+%h|{BO;09y{c6o0? zk5EVn95n{Q5v#E^JmyngOc&TR$cL=1(rACiV-~3gv}v$*ldzJ>4G6z8R33pNa8%&v ziRsV@RnY9v>8$f|9Q2QIT&^)hJH8f#2K190{|S!$MSN?-a$Sdz(gdHYd5v1?dF6X< zwy%Ax4#st>UV~n#FR>g{Ci+6Vz@P|TPE`lT-Wpm$5lGj}3-Dg#=>M%_EoI9U!i)ZL zGjEV;=M1zMKIcI-=%s?VAcSYzAi!~%v!~6NGBtjB+S~{CpFTFT?Ch;=;fIU&Y)Ab) zZ;hiV!24TA{0nHpK&ZwM#~Q0P(}O);$&R%VNMo?!$0Q1wGUN38^!;*+IibFMczs#m zrCw-gaOi~Ks0bdLIj53C2izAAzhs_5sg&iZRiu>6ttcerr7z5ekm@3-nk4h26)IUi z$z!X^6iR8nJdY%$rTJt zwMtf806Hq=>LOTAl0Nt#_v|F+L(1@xCa^@NQb`MCBC$W`Q5lVp(; z6iG1-S*c2nHzj3NWyR7`DL#w`kyDiwc`|agLRly)h0}Mbw79sM#OKn*fIw{lMdm9i zOF>6|g%Y1kisUL193U%IgRUYlR4rd3BP$ik#Uz7t_$Gik%m=|bizkO|RLWEp#o)dI zrJ@A9GGqmIBi@g>;~+~E`4xawQ9zPu8EHu~rh=B?5Rzd*5kVy5F;bkFbFir?+sT%HHcx-8YKDbvUvhV;Rm8XD<8n6~suZX#ZioJT@r8 z`wi(05Q7s-;TFZxjr0NHRg=XENDSc9vrz~H?1=+OP5~TBS)m* zake~*3*>k8a736D;6w5F@o;HYP#{y{jAFJ>z04^fpoQnK7H%gP0G7g3gz3&W7t<4x zn1tLcmPw)d0L6LiIWoBS0aM{l2v{Mjl9oV{sBO*9ayt7-N`H z0Y7SCC#LKGXDVTNkrXNu5F)R*A|Dh0SIVU7ydr3VSD4#OW+C&6z-3@KT$U0h8glY* z<$;^e=O|}@H1J)Hw}*6-4ej-8E9|o&gs_<AV=m*NlpyTOq-F2#p7S(@pA>K@NSSQ^U0agJVmZbQEE|= zR;^N$fvxi5VtH8w)R@e`IS^#aY*?r`Fd}?HU}$7m2weL@MwXEH1{i;sxrp$W=EN9) z$N&Fl2_1iK_=+6+5Y2~6cq?R$Y>+J+v#-&12+pI3jW~#lc<2GWo!&@qqWQ=XF53mj z2|1&Y$OXBgS5O^2NdHaO(>v(*=@01B^iFyky@hr|?#KgqqF2!Hnd03OY;wKz~nn(5>`Q`Ut&;PDN=b9nC{D{h02dKcn~3 zAJeO7+I;C!{gs}-?%2E+&fW0y#WzMb#w>}rQ5CY=;PGBoq^m>Ku29L2^10mR0oEB^ zK|e9(+yV%KZoxyz2Okt!x0VAnr5`%c}0Gh63R&zxH4x%K@+`y#svex3BN#5t?v zjSa+kL&yHusMn&%^r)$`^-Ko{5xb0;tQfhWc z6B0i2{?$DxKvy)nJ%>>{X#NC4doPCl_CK4r0G;caGNq1*(9T0o?wPExi`Ms<1lubk zZkWFvvp4!LZoT%Q|JWn^u>|+fEBr6RWHak$e0XaOzhjJ~S2U<=$V`;m&u*-Uh~6Qu ztS)=tc6Hyub$^_0GOalKcJ%JUR*AxmF$ex!wd%q+zr$1Oe7g!n$M<~^!u$I0t5$`? zp5CL8qsQ(NrTxN{R9)EOc1XlE8MKG;8rgIz4iUeyQFQ|1Ak8YG3)vY`I;*| zm(I7;{o_8C2wyEP@~ay8=}qu!(KHbUT$FiQTW7dE;;7q>#5b=VIXdNDf5O@>u9nrl z`^}k4Z~TnoJF4;Qj`J;7bmwm*Iw~3|b=g!!kon&2jV;^wwP$~+yK&|fI%e6@{(c3B zKK&TvCIx3pcHFvd7gPQ8^rfVA>(<3Lv>B)8IhuCXnO6KJ_%`ou-4~3W#CZ3>wLiJ& zM!#x(#CtsG?kaffX3U+m)!ojqYVB3~`rOLukQ+VxAJ2NOOlgdbnRsGrN^Yy(d19Qx zCZUOn=RmBJ;=UB&WuL6RWfykCjf%U-bu!AYf8Da}Py2`T(?=gdtYH$Di#`40JmTgzRX|39~Il85zZFkwqKM*A-gt zepGh<+@(8TKprJIYSxb3@;gA#efWvn1MrP=;*I9@r?^L!CpVaWafu6<>Rc9nI5T?I z!;ivBG*v4PtUCYMy3bzeI`_{XNk=<4=`M}!t(xb(J5i-S{3*KfR@d8$k58W0_Q9Ft z#->$E$C<@vBMY0xo*bWk>dha^w=`?VM)itDeKTEdzw+~zuDxF28PT);xt{3ZoU%6f z53Xrr<(9{7?~S~eaocXvxeF6!`OS@7^p=mIzqqXbPq(o)(z{K2M*8*_@BL(c;r;+W zqJJ@o;vG&vbs)#gp`ppx5`~IlB`_L~>N5oxg$?@N5{E!zH@YLX$eekn$ z5rJEdBzL6_i~anh;gEE7d-BPhVnCiZh7e(ApXxuZhsQH`IPws8?)qSW+01BjJ<(@u#u%*Fj zpT`%U3?&p4%JO_5(x8q^Qkz~Bd>GHgUqG?6i zrj(2cvjUfdj{~IJZ=MM4i-yg%-W2ZQnw&;#FDp!+UnE$jZJOC?JlQhi>qXJC-k7oB z_s`25;@wko&)PyzXH`xec(Xv@V%QfLy2~SdRPN-@a|AAh`^P+;p66|VSPX1fFyd+z zGqAF0Pi?<&c2moR%?+KEW1VD=zKTzGVUoXo&(_lT4XpELQ(M8(-$a9#&tDM8?3eA< zJ~|y>uQ=XvVR14n&tB&7L5tc)J-%f=)NpZ>;!Ld&>+>w`bQCyI2p1)|%cD-O0BlN!pO-m#yjZaY11 z4V3*Kqo*9-{=u8{`3%<-V79+Hy?1(p>C$yb+C42(gv}T_VB$(ah1T;f*q4@5xc}#! zK+FAey@2O)(=JsN&bS!0qls$$<*WFGjSF|~+;!mNZ%(h5N$(aDUH-1w>GRL3wrsy& z&@s>=Y;fz3toto|GwFSajiA3%S#7O&fd^8_{N4`z6R!Pu2v*HiFd!!dBrE)rJ?JHihy@o;fyulV`GcU zvcg+)e6y*O0RulpF**A|%Z1!Ti0+@fdhac3n9MxBAnUi~cwiTUm|;`j7T>&M?MK9S z@IL#2I}m_}R(G9c#TQAu%*pyhvoNJ2^{J1jR=MT7omZa@to6YjZD|%cjuT>+FN~J+?|>9&yqgT*B6aI_NCUl*Vim= z+~XR}z9U+5tZLfHfY3pv7>qL68a3;U^`d;+YhPW=nEA;Dh*95cct<=@<=~t$dQO=)1!y|w$!44w zX^A+cf$oiaqP?)s7K5{P%gb{LmoM z>TrT0XXF)9YmDkW=A@u5gV9z$p2~KX-6s+R|ANSmwedLr>ctH9uPKQQ z##e&s(#dT|K6Atz7I;_RX|HUoNnS*<;%V#yTg?=3Dxpw}-TmRfJzePJz0TTSL&9(lLiLYu5Tz9zn*RRo?ka+zsBEBkA literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/LLF11.LBR b/Images/Source/hd0/s0/u15/LLF11.LBR new file mode 100644 index 0000000000000000000000000000000000000000..939aed046ad073917ad970ce96d0c0e6aca06d7e GIT binary patch literal 9728 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/LX12.LBR b/Images/Source/hd0/s0/u15/LX12.LBR new file mode 100644 index 0000000000000000000000000000000000000000..efb0d9fe255414d96dd865c4ed2fd20b2a0f7487 GIT binary patch literal 14976 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/MCOPY.COM b/Images/Source/hd0/s0/u15/MCOPY.COM new file mode 100644 index 0000000000000000000000000000000000000000..0f88cd19293f527c1a87e6a3a8b88fed10779b4a GIT binary patch literal 4224 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 aYvrBBq#}k6r%fE1*TPH~)uI3I{Qm~jDv0|4 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/MCOPY.MAC b/Images/Source/hd0/s0/u15/MCOPY.MAC new file mode 100644 index 00000000..2dd8892c --- /dev/null +++ b/Images/Source/hd0/s0/u15/MCOPY.MAC @@ -0,0 +1,1072 @@ +; PROGRAM: MCOPY +; AUTHOR: RICHARD CONN +; VERSION: 4.0 +; DATE: 18 MAY 84 +; PREVIOUS VERSIONS: 3.0 (16 JAN 83) +; PREVIOUS VERSIONS: NUMEROUS + +VERS equ 42 ; Use 16k buffer 14 Dec 84 jww + ; Fix some bugs Joe Wright 28 Aug 84 + ; 1. Add check for directory full after f$make + +z3env SET 0F400H + +; +; MCOPY is a program which repeatedly copies a file from drive +; A: onto drive B:. It prompts the user to mount a disk in drive B:, +; copies the file from drive A: to drive B:, verifies the copy (if not +; overridden), and then performs the function again. +; +; MCOPY performs its function in the following steps: +; 1. MCOPY determines the attributes +; of the destination file (if it exists) and clears them (file becomes +; R/W and DIR) +; 2. MCOPY deletes the destination file (if it exists) +; 3. MCOPY copies the source file to the destination +; 4. MCOPY determines the attributes +; of the source file and makes the attributes of the destination file +; identical to those of the source +; 5. MCOPY reads both the source and destination files and +; compares them byte-for-byte +; + +; SPECIAL Constants +PLIM EQU 4*16 ; SIZE OF BUFFER IN PAGES (4 * nK) [may be changed] +ESIZE EQU 16 ; NUMBER OF BYTES/ENTRY + +; CP/M Constants +WB EQU 0 ; CP/M WARM BOOT +BDOSE EQU WB+5 ; BDOS ENTRY POINT +FCB EQU WB+5CH ; SPECIFIED FCB +BUFF EQU WB+80H ; DEFAULT BUFFER AND INPUT LINE +SDMA EQU 26 ; SET DMA ADDRESS + +; ASCII Constants, et al +ON EQU 0FFH ; ON CODE +OFF EQU 0 ; OFF CODE +CR EQU 0DH ; +LF EQU 0AH ; +CTRLC EQU 'C'-'@' ; ^C +CTRLZ EQU 'Z'-'@' ; ^Z +OPTC EQU '/' ; OPTION DELIMITER + +; +; LOAD @DE MACRO +; +LDED MACRO ?ADR + XCHG + LHLD ?ADR + XCHG + ENDM + +; +; SYSLIB ROUTINES +; + EXT Z3INIT,ZFNAME,GETQUIET + EXT COMPHD,RETUD,LOGUD,PUTUD,GETUD + EXT DIRQ,DIRPACK,DIRTDU + EXT INITFCB,F$EXIST + EXT CRCCLR,CRCUPD,CRCDONE + EXT BDOS,CIN,COUT,CONDIN + EXT F$DELETE,F$OPEN,F$MAKE,F$CLOSE,F$READ,F$WRITE + EXT PADC,EPSTR,EPRINT + EXT MOVEB,CAPS,CRLF + EXT CODEND + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + jmp startx + +; +; USER-DEFINABLE INITIAL FLAG CONDITIONS +; THE DEFAULT CONDITIONS FOR MCOPY MAY BE READILY PATCHED BY THE USER +; VIA DDT FOR HIS DESIRED DEFAULT VALUES +; +DVERFLG: + DB ON ; SET VERIFY +DINSP: + DB OFF ; SET NO INSPECT +DNCOPY: + DB OFF ; SET NO MULTIPLE COPIES BY DEFAULT +DDDISK: + DB 'B'-'A' ; DEFAULT DESTINATION DISK IS B +DDUSER: + DB 0 ; DEFAULT DESTINATION USER IS 0 +BACKDIR: + DB 'BACKUP ' ; NAME OF BACKUP DIRECTORY + +; +; BEGINNING OF MCOPY PROGRAM +; +STARTX: +; +; PRINT BANNER +; + CALL EPRINT + DB 'MCOPY Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0',0 +; +; SET UP DYNAMIC BUFFERS +; + LXI H,0 ; GET SP + DAD SP + SHLD STACK ; SAVE IT + CALL CODEND ; DETERMINE FREE SPACE + SHLD INLINE ; PTR TO INPUT LINE + INR H + SHLD FCBT ; PTR TO FCB TEMP + INR H + SHLD FCBS ; PTR TO SOURCE FCB + INR H + SHLD FCBD ; PTR TO DEST FCB + INR H + SHLD FREEBUF ; FREE SPACE BUFFER + +; +; SET DEFAULT FLAGS +; + CALL GETQUIET ; GET QUIET FLAG + STA QUIET + LDA DVERFLG ; VERIFY + STA VERFLG + LDA DINSP ; INSPECT + STA INSP + LDA DNCOPY ; MULTIPLE COPIES + STA NCOPY + +; +; CHECK FOR BACKUP DIRECTORY AND ESTABLISH IT AS DEFAULT +; IF NO BACKUP DIRECTORY, SELECT DEFAULT STORED +; + LXI H,BACKDIR ; PT TO DIRECTORY NAME + CALL DIRTDU + JZ DEFBACK ; NAME NOT FOUND, SO SELECT DEFAULT + MOV A,B ; SET DEST DISK + STA DDISK + MOV A,C ; SET DEST USER + STA DUSER + JMP BACKSET +DEFBACK: + LDA DDDISK ; GET DEFAULT DEST DISK + STA DDISK ; SET DEST DISK + LDA DDUSER ; GET DEFAULT DEST USER + STA DUSER ; SET DEST USER +; +; OBTAIN AND SAVE CURRENT USER AND DISK +; +BACKSET: + CALL PUTUD ; SAVE POSITION + CALL RETUD ; GET USER/DISK + MOV A,B ; SAVE DISK + STA CDISK + LHLD INLINE ; INPUT LINE SAVE BUFFER + XCHG ; ... IN DE + LXI H,BUFF+1 ; PT TO COMMAND LINE CHAR COUNT + MVI B,128 ; SAVE 128 BYTES (ARBITRARY) + CALL MOVEB + XCHG ; HL PTS TO INPUT LINE +; +; SET OTHER FLAGS +; + XRA A ; A=0 + STA EXIST ; TURN OFF EXIST TEST +; +; CHECK FOR EMPTY COMMAND LINE AND PROCESS COMMAND MODE IF SO +; ON ENTRY, HL PTS TO FIRST CHAR OF STRING FROM CLINE +; +START1: + MOV A,M ; GET CHAR + ORA A ; EOL? + JZ MHELP ; PRINT HELP MESSAGE IF NO INPUT + INX H ; PT TO NEXT + CPI ' ' ; JUST SPACES? + JZ START1 +; +; COMMAND LINE WAS NOT EMPTY -- CHECK FOR HELP REQUEST +; + DCX H ; PT TO FIRST CHAR + CPI '/' ; IF OPENING OPTION, MUST BE HELP + JZ MHELP +; +; SEE IF OPTIONS ARE AVAILABLE IN THE COMMAND LINE +; + SHLD MFPTR ; SET PTR TO FIRST CHAR OF FILE NAME SPECS +; +; SKIP TO END OF FILE NAME SPECS +; +START2: + MOV A,M ; SKIP TO OR EOL + INX H ; PT TO NEXT + CPI ' '+1 ; OR LESS? + JNC START2 + ORA A ; AT EOL? + JZ MCOPY0 ; PERFORM DEFAULT MCOPY FUNCTION IF AT EOL +; +; SCAN FOR OPTION +; +OPTION: + MOV A,M ; GET OPTION CHAR + ORA A ; EOL? + JZ MCOPY0 ; DO MCOPY + INX H ; PT TO NEXT + PUSH H ; SAVE PTR + LXI H,OPTTAB ; PT TO OPTION TABLE + CALL CMDER ; PROCESS COMMAND + POP H ; GET PTR + JMP OPTION + +; +; COMMAND PROCESSOR -- COMMAND LETTER IN A, HL PTS TO TABLE +; +CMDER: + PUSH B ; SAVE BC + MOV B,A ; COMMAND IN B +CMDER1: + MOV A,M ; GET COMMAND LETTER + ORA A ; DONE? + JZ CMDER2 + CMP B ; MATCH? + JNZ CMDER3 +CMDER2: + INX H ; PT TO ADDRESS + MOV E,M ; GET IT IN DE + INX H + MOV D,M + XCHG ; HL PTS TO COMMAND ADDRESS + POP B ; RESTORE BC + PCHL ; RUN COMMAND +CMDER3: + INX H ; SKIP TO NEXT ENTRY IN TABLE + INX H + INX H + JMP CMDER1 + +; OPTION COMMAND TABLE +OPTTAB: + DB ' ' ; DONE + DW OPTS + DB OPTC ; SKIP OPTC + DW OPTS + DB 'E' ; EXIST TEST + DW OPTE + DB 'I' ; INSPECT + DW OPTI + DB 'M' ; MULTIPLE COPY + DW OPTM + DB 'Q' ; QUIET + DW OPTQ + DB 'V' ; VERIFY + DW OPTV + DB 0 ; END OF TABLE + DW OHELP + +; INVALID OPTION CHAR -- CLEAR STACK (RET ADR AND HL) AND PRINT HELP +OHELP: + POP H ; CLEAR RET ADR + POP H ; CLEAR HL + +; PRINT HELP MESSAGE +MHELP: + CALL EPRINT + DB CR,LF,'Syntax:' + DB cr,lf,' MCOPY dir:=dir:filename.typ,... o...' + db cr,lf,'Options:' + DB cr,lf,' E -- Existence Test' + DB cr,lf,' I -- Inspect Files' + DB cr,lf,' M -- Multiple Copy' + DB cr,lf,' Q -- Toggle Quiet' + DB cr,lf,' V -- No Verify' + DB 0 + RET ; RETURN TO ZCPR3 + +; VERIFY FLAG TOGGLE OPTION +OPTV: + LDA VERFLG ; GET FLAG + CMA ; FLIP IT + STA VERFLG ; PUT FLAG +; SKIP OPTION +OPTS: + RET + +; EXIST TEST TOGGLE OPTION +OPTE: + LDA EXIST ; GET FLAG + CMA ; FLIP IT + STA EXIST ; PUT FLAG + RET + +; NCOPY FLAG TOGGLE OPTION +OPTM: + LDA NCOPY ; GET FLAG + CMA ; FLIP IT + STA NCOPY ; PUT FLAG + RET + +; INSPECT FLAG TOGGLE OPTION +OPTI: + LDA INSP ; GET FLAG + CMA ; FLIP IT + STA INSP ; PUT FLAG + RET + +; QUIET FLAG TOGGLE OPTION +OPTQ: + LDA QUIET ; GET FLAG + CMA ; FLIP IT + STA QUIET ; PUT FLAG + RET + +; +; **** MCOPY of COMMAND LINE **** +; +MCOPY0: + LHLD FREEBUF ; STACK RESET + SPHL + LDA NCOPY ; MULTIPLE COPIES? + ORA A ; 0=NO + JZ NOPAUSE + CALL SAKCHK ; STRIKE ANY KEY CHECK + JZ CPM ; WARM BOOT IF ABORT +NOPAUSE: + CALL COPY ; DO THE COPY +CPM: + LHLD STACK ; RESET STACK + SPHL + RET ; RETURN TO OPSYS +CPMA: + CALL EPRINT + DB CR,LF,'Abort',0 + JMP CPM + +; +; **** Begin Multiple Copy Procedure **** +; +COPY: + LHLD MFPTR ; PT TO FIRST FILE NAME + SHLD NXTPTR ; SET PTR TO NEXT FILE NAME + XRA A ; A=0 + STA VERCNT ; ZERO ERROR COUNT + LDA EXIST ; IF EXIST, THEN MUST NOT BE QUIET + ORA A ; 0=NO EXIST + JZ MCOPY + XRA A ; SET NO QUIET + STA QUIET +; +; **** MAIN COPY LOOP **** +; +MCOPY: + LHLD NXTPTR ; GET PTR TO NEXT FILE NAME + MOV A,M ; GET FIRST CHAR + CPI ' '+1 ; DONE IF OR LESS + JNC MCOPY1 ; CONTINUE WITH PROCEDURE +; +; MCOPY OF FILE SPECS IS NOW DONE +; DONE WITH COPY PROCEDURE -- CONTINUE? +; +COPYT: + LDA VERFLG ; VERIFY? + ORA A ; 0=NO + JZ COPYT1 + CALL CRLF ; NEW LINE + LDA VERCNT ; GET ERROR COUNT + CALL PADC ; PRINT AS DECIMAL + CALL EPRINT + DB ' Errors',0 +COPYT1: + LDA NCOPY ; MULTIPLE COPIES? + ORA A ; 0=NO + RZ + CALL SAKCHK ; CHECK FOR STRIKE OF ANY KEY + RZ ; RETURN IF ABORT + JMP COPY ; COPY AGAIN FROM THE BEGINNING +; +; BEGIN COPY OF FILE GROUP +; +MCOPY1: + CPI ',' ; SKIP COMMA SEPARATOR IF THERE + JNZ MCPY0 + INX H ; PT TO CHAR AFTER COMMA +MCPY0: + MOV A,M ; GET NEXT CHAR + CPI ' '+1 ; CHECK FOR ERROR + JC FORMERR + CALL GETUD ; RETURN HOME + LDED FCBS ; PT TO SOURCE FCB + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; EXTRACT FILE NAME DATA + CALL DUCVRT ; CONVERT DU INTO BC + MOV A,M ; GET DELIMITER + CPI '=' ; IF '=', WE HAVE A NEW DISK/USER + JNZ MCOPY2 ; FORM IS DIRS:FN.FT IF NO '=' +; +; FORM IS DIRD:=DIRS:FN.FT, SO SET DEST DISK/USER +; + MOV A,B ; GET DISK + STA DDISK ; SET NEW DEFAULT DISK + MOV A,C ; GET USER + STA DUSER ; SET NEW DEFAULT USER +; +; NOW DERIVE DIRS:FN.FT FORM AFTER THE '=' +; +MCPY2: + INX H ; PT TO CHAR BEYOND '=' + MOV A,M ; GET CHAR + CPI ' '+1 ; FORMAT ERROR? + JC FORMERR + LDED FCBS ; LOAD FCB + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; GET SOURCE NAME + CALL DUCVRT ; CONVERT TO DU IN BC +; +; SAVE PTR TO NEXT CHAR AFTER DIRS:FN.FT, AND SET SOURCE DISK/USER +; +MCOPY2: + SHLD NXTPTR ; SAVE PTR TO NEXT CHAR + MOV A,B ; GET DISK + STA SDISK ; SET NEW DEFAULT DISK + MOV A,C ; GET USER + STA SUSER ; SET NEW DEFAULT USER +MCPY22: + LDA DDISK ; DEST DIR MUST NOT EQUAL SOURCE DIR + MOV B,A + LDA SDISK + CMP B + JNZ MCPYOK + LDA DUSER + MOV B,A + LDA SUSER + CMP B + JNZ MCPYOK + CALL EPRINT + DB CR,LF,'Src=Dest Err',0 + RET +MCPYOK: + CALL EPRINT + DB CR,LF,'Copy ',0 + LDA SDISK ; GET NUMBER + ADI 'A' ; CONVERT TO LETTER + CALL COUT ; PRINT + LDA SUSER ; PRINT USER NUMBER + CALL PADC + MVI A,':' ; SEPARATOR + CALL COUT + MVI A,' ' + CALL COUT + LHLD FCBS ; PRINT FILE SPEC + INX H ; PT TO FILE NAME + CALL PRFN + CALL EPRINT + DB ' to ',0 + LDA DDISK ; GET NUMBER + ADI 'A' ; CONVERT TO LETTER + CALL COUT ; PRINT + LDA DUSER ; PRINT USER NUMBER + CALL PADC + MVI A,':' + CALL COUT + MVI C,13 ; RESET DISK SYSTEM + CALL BDOS + CALL LOGS ; LOG IN SOURCE USER/DISK + LDED FCBS ; PT TO SOURCE FCB + CALL INITFCB ; INIT FCB + LHLD FREEBUF ; PT TO BUFFER AREA + MVI A,0C0H ; SELECT NON-SYS AND SYS FILES + CALL DIRQ ; LOAD DIR, SELECT FILES, SORT, ETC + JZ TPAOVFL ; TPA OVERFLOW ERROR? + LDA INSP ; INSPECT FILES? + ORA A ; 0=NO + CNZ INSPF ; INSPECT FILES IF OPTION SELECTED + MOV A,B ; CHECK FOR ANY FILES TO COPY + ORA C ; 0=NONE + JNZ MCPY24 +MCPY23: + CALL EPRINT + DB CR,LF,' NO Files -- ^C to Abort ',0 + CALL CIN ; GET RESPONSE + CPI 'C'-'@' ; ABORT? + JZ COPYT ; END TEST + JMP MCOPY ; CONTINUE WITH NEXT +MCPY24: + PUSH H ; SAVE PTR AND COUNT + PUSH B + LXI D,ESIZE ; SKIP TO END OF LOADED FILES AND MARK BEGINNING OF + ; WORK AREA +MCPY25: + DAD D ; PT TO NEXT + DCX B ; COUNT DOWN + MOV A,B ; DONE? + ORA C + JNZ MCPY25 + MVI A,PLIM ; SET PAGE LIMIT + STA PAGLIM + SHLD WORKBF ; SAVE PTR TO BEGINNING OF WORK BUFFER + LDA BDOSE+2 ; GET BASE PAGE OF BDOS + SUI 10 ; GET BELOW BASE PAGE OF CCP + SUB H ; COMPUTE SIZE OF BUFFER AREA + CPI PLIM ; PLIM PAGES LEFT? + JNC PAGOK + STA PAGLIM ; SET PAGE LIMIT +PAGOK: + POP B ; RESTORE PTRS + POP H +; +; MAIN COPYING LOOP +; FILE NAMES ARE PTED TO BY HL AND BC=NUMBER OF FILES +; +MCPY26: + PUSH H ; SAVE REGS + PUSH B + CALL ABORTCK ; CHECK FOR ABORT +MCPY27: + CALL MCOPYX ; COPY SOURCE (HL) TO DESTINATION USING WORK BUFFER + CALL PRDONE ; PRINT DONE MESSAGE + CALL ABORTCK ; CHECK FOR ABORT + LDA LSTCPY ; LAST FILE COPIED? + ORA A ; 0=NO + JZ MCPY28 + LDA VERFLG ; VERIFY? + ORA A ; 0=NO + CNZ MCOPYV ; DO VERIFY +MCPY28: + POP B ; GET REGS + POP H + LXI D,ESIZE ; PT TO NEXT FILE + DAD D ; HL PTS TO NEXT FILE + DCX B ; COUNT DOWN + MOV A,B + ORA C + JNZ MCPY26 + JMP MCOPY ; COPY NEXT FILE SPEC +; +; CHECK FOR ABORT +; +ABORTCK: + CALL CONDIN ; CONDITIONAL INPUT + RZ + CPI CTRLC ; ABORT? + JZ CPMA + RET +; +; PRINT DONE MESSAGE +; +PRDONE: + LDA QUIET ; CHECK FOR QUIET + ORA A ; NZ=QUIET + RNZ + CALL EPRINT + DB ' Done',0 + RET +; +; COPY SOURCE FILE PTED TO BY HL TO DESTINATION +; +MCOPYX: + XRA A ; SET NO COPY OF LAST FILE + STA LSTCPY ; SET FLAG + LDED FCBS ; SET SOURCE FCB + MVI B,12 ; 12 BYTES + CALL MOVEB + CALL INITFCB ; INIT SOURCE FCB + LDED FCBD ; SET DESTINATION FCB + MVI B,12 ; 12 BYTES + CALL MOVEB + CALL DRW ; CLEAR ATTRIBUTES IN FCB + CALL INITFCB ; INIT DESTINATION FCB + CALL LOGD ; LOG IN DESTINATION + CALL EPRINT + DB CR,LF,' File ',0 + LHLD FCBD ; PRINT FILE NAME + INX H ; PT TO FILE NAME + CALL PRFN + LDED FCBD ; PT TO FCB + CALL F$EXIST ; DOES DEST EXIST? + JZ FNF ; FILE NOT FOUND IF ZERO + LDA QUIET ; QUIET? + ORA A ; 0=NO + JNZ FFND + CALL EPRINT + DB ' Replace',0 +FFND: + CALL EATEST ; EXIST APPROVED TEST? + RZ ; NOT APPROVED, SO ABORT + CALL DESTRW ; MAKE DESTINATION R/W IF NOT ALREADY + CALL F$DELETE ; DELETE FILE + CALL INITFCB ; REINIT FCB + JMP FNF1 ; CREATE NEW FILE AND CONTINUE +FNF: + LDA QUIET ; QUIET? + ORA A ; 0=NO + JNZ FNF1 + CALL EATEST ; EXIST APPROVED? + RZ ; NO? +FNF1: + CALL EPRINT + DB ' ...',0 + MVI A,0FFH ; SET COPY OF LAST FILE + STA LSTCPY ; SET FLAG + CALL F$MAKE ; CREATE NEW FILE + inr a ; check for full directory + jz dirful ; report it +; +; OPEN SOURCE FILE IN PREP FOR COPY +; + CALL CRCCLR ; CLEAR CRC VALUE + CALL LOGS ; LOG IN SOURCE DISK + LDED FCBS ; INIT FCB + CALL INITFCB + CALL F$OPEN ; OPEN FILE +; +; THIS LOOP, WHICH STARTS AT MCPYX, COPIES THE FILE FROM SOURCE TO DEST +; +MCPYX: + CALL LOGS ; LOG IN SOURCE + LDED FCBS ; PT TO SOURCE FCB + LHLD WORKBF ; PT TO BUFFER TO COPY INTO + CALL LOAD ; LOAD FILE INTO WORKBF + LDA BCNT ; IF COUNT=0, THEN DONE + ORA A + JZ MC2DONE +; +; COPY TO DISK +; +MCPYD: + CALL LOGD ; LOG IN DESTINATION + LHLD WORKBF ; PT TO BUFFER +MCPYD1: + CALL SETDMA ; SET DMA ADDRESS PTED TO BY HL + LXI D,128 ; INCR HL BY 128 + DAD D ; HL PTS TO NEXT BLOCK + LDED FCBD ; WRITE TO DESTINATION FILE + CALL F$WRITE + ORA A ; OK? + JNZ MCPYDERR + +; COUNT DOWN TO NEXT BLOCK + LDA BCNT ; GET BLOCK COUNT + DCR A ; COUNT DOWN + STA BCNT + JNZ MCPYD1 + LDA CONT ; CONTINUE? + ORA A ; CONT IF NOT ZERO + JNZ MCPYX +; +; END OF COPY LOOP +; +MC2DONE: + CALL LOGS ; LOG IN SOURCE + LDED FCBS ; CLOSE SOURCE + CALL F$CLOSE + CALL LOGD ; LOG IN DESTINATION + LDED FCBD ; CLOSE DESTINATION + CALL F$CLOSE + CALL CRCDONE ; GET CRCK VALUE + SHLD CRCVAL ; SAVE CRC VALUE +; +; SET ATTRIBUTES OF DESTINATION TO BE THE SAME AS THOSE OF SOURCE +; + CALL LOGS ; LOG IN SOURCE DRIVE + LDED FCBS ; FIND SOURCE + MVI C,17 ; SEARCH FOR FIRST + CALL BDOS + RLC ; MULTIPLY BY 32 TO GET OFFSET + RLC + RLC + RLC + RLC + ANI 0E0H ; MASK OUT LSB + MOV L,A ; VALUE IN L + MVI H,0 + LXI D,BUFF ; ADD IN BUFFER BASE + DAD D + XCHG ; PT TO FCBT IN DE + LHLD FCBT + XCHG + MVI B,16 ; MOVE 16 BYTES + CALL MOVEB + CALL LOGD ; LOG IN DESTINATION DRIVE + CALL INITFCB ; INIT FCB PTED TO BY DE (FCBT) + MVI C,30 ; SET FILE ATTRIBUTES + CALL BDOS + RET ; MCOPYX RETURN + +; +; CONVERT Z3 FCB DU INTO DU IN BC +; +DUCVRT: + PUSH H ; SAVE REGS + PUSH D + LDAX D ; GET DISK + ORA A ; CURRENT? + JNZ DUCV1 + LDA CDISK ; GET CURRENT + INR A ; ADD 1 FOR A=1 +DUCV1: + DCR A ; A=0 + MOV B,A + LXI H,13 ; OFFSET TO USER + DAD D + MOV C,M ; GET USER + POP D ; RESTORE REGS + POP H + RET + +; FORMAT ERROR +FORMERR: + CALL EPRINT + DB CR,LF,' Error: ',0 + CALL EPSTR ; PRINT ERROR + RET + +; TPA OVERFLOW +TPAOVFL: + CALL EPRINT + DB CR,LF,'TPA Ovfl',0 + JMP CPM + +; WRITE ERROR +MCPYDERR: + CALL EPRINT + DB CR,LF,'Disk Full',0 + JMP CPM + +; Directory Full Error +dirful: + call eprint + db cr,lf,'Directory Full',0 + jmp cpm + +; TEST FOR EXISTENCE REQUIREMENT AND GET USER RESPONSE +EATEST: + LDA EXIST ; EXISTENCE TEST ON? + ORA A ; 0=NO + JZ EAT1 + CALL EPRINT + DB ' -- (Y/N)? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS + CPI CR ; YES? + JZ EAT1 ; COPY IF SO + CALL COUT + CPI 'N' ; NO? + JNZ EAT1 ; COPY IF NOT NO + XRA A ; ZERO FOR NOT APPROVED + RET +EAT1: + MVI A,0FFH ; SET NZ FOR APPROVED + ORA A ; SET FLAGS + RET +; +; MAKE DESTINATION FCB ENTRY R/W AND DIR +; +DRW: + PUSH D + LHLD FCBD ; CLEAR ATTRIBUTES OF DEST + LXI D,9 + DAD D + POP D + MOV A,M ; GET IT + ANI 7FH ; CLEAR IT + MOV M,A + INX H ; SAME TO NEXT + MOV A,M ; GET IT AND CLEAR IT + ANI 7FH + MOV M,A + RET +DESTRW: + CALL DRW ; MAKE ATTRIBUTES R/W AND NON-SYS + LDED FCBD ; SET ATTRIBUTES + MVI C,30 + CALL BDOS + RET + +; +; LOAD BUFFER PTED TO BY HL FROM FILE WHOSE FCB IS PTED TO BY DE +; ON OUTPUT, BCNT=NUMBER OF BLOCKS LOADED (UP TO 128) AND +; CONT=0 IF DONE OR 128 IF NOT DONE +; +LOAD: + XRA A ; A=0 + STA BCNT ; SET BLOCK COUNT + STA CONT ; TURN OFF CONTINUATION FLAG + +; MAIN COPY LOOP +MCPY: + CALL SETDMA ; SET DMA TO BLOCK PTED TO BY HL + CALL F$READ ; READ BLOCK + ORA A ; END OF FILE? + RNZ ; RETURN + PUSH D ; SAVE PTR TO FCB + XCHG ; SAVE PTR TO DESTINATION BUFFER IN DE + LHLD BDOSE+1 ; GET TOP OF TPA + XCHG ; ... IN DE, DEST IN HL + MOV A,H ; IF SAME PAGE, WE ARE IN OVERFLOW + CMP D ; D MUST BE > H + JNC TPAOVFL ; OVERFLOW IF D<=H + MVI B,128 ; UPDATE CRC FOR 128 BYTES +MCPYCRC: + MOV A,M ; GET BYTE + CALL CRCUPD ; UPDATE CRC + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ MCPYCRC + POP D ; GET PTR TO FCB + LDA BCNT ; GET BLOCK COUNT + INR A ; INCREMENT IT + STA BCNT ; SET IT + MOV B,A ; BLOCK COUNT IN B + LDA PAGLIM ; GET PAGE LIMIT + ADD A ; DOUBLE IT FOR BLOCKS + CMP B ; BUFFER FULL? + JNZ MCPY + STA CONT ; SET CONTINUATION FLAG + RET + +; +; SET DMA ADDRESS TO THAT PTED TO BY HL +; +SETDMA: + PUSH H ; SAVE REGS + PUSH D + PUSH B + XCHG ; ADDRESS IN DE + MVI C,SDMA + CALL BDOSE + POP B ; RESTORE REGS + POP D + POP H + RET + +; +; VERIFY PHASE +; +MCOPYV: + LDA QUIET ; CHECK FOR QUIET + ORA A ; NZ=QUIET + JNZ MCPYV + CALL EPRINT + DB ' Verify ...',0 +MCPYV: + CALL CRCCLR ; CLEAR CRCK VALUE + CALL LOGD ; LOG IN DESTINATION + LDED FCBD ; CLEAR DESTINATION FCB + CALL INITFCB ; INIT FCB + CALL F$OPEN ; OPEN FILE + +; **** MAIN VERIFY LOOP **** +VERLOOP: + LHLD WORKBF ; LOAD INPUT BUFFER FROM DESTINATION + LDED FCBD + CALL LOAD ; LOAD AND COMPUTE CRC VALUE + LDA BCNT ; DONE IF NO BYTES LOADED + ORA A + JZ VERCRC + LDA CONT ; CONTINUE? + ORA A ; 0=NO + JNZ VERLOOP +; VERIFY DONE +VERCRC: + LHLD CRCVAL ; GET OLD CRC VALUE + XCHG ; ... IN DE + CALL CRCDONE ; UPDATE COMPLETE + CALL COMPHD ; COMPARE HL TO DE + JZ PRDONE ; PRINT DONE MESSAGE OR FALL THRU TO ERROR MSG + +; VERIFY ERROR +VERERR: + LXI H,VERCNT ; INCREMENT ERROR COUNT + INR M + CALL EPRINT + DB ' Error',0 + RET + +; +; **** MCOPY Utilities **** +; + +; +; CHECK TO SEE IF USER WANTS TO CONTINUE +; +SAKCHK: + CALL EPRINT + DB ' ^C to Quit - ',0 + CALL CIN ; GET RESPONSE + CALL CRLF ; NEW LINE + CALL CAPS ; CAPITALIZE + CPI 'C'-'@' ; ^C? + RET +; +; ALLOW USER TO INSPECT FILES FOR COPY +; FIRST FILE NAME PTED TO BY HL, BC = NUMBER OF FILES +; ON EXIT, BC = NUMBER OF SELECTED FILES +; +INSPF: + CALL EPRINT + DB CR,LF,' Inspect -- ' + db 'Yes, No (def), Skip Rest' + db 0 + PUSH H ; SAVE PTR TO FIRST FILE + PUSH B ; SAVE FILE COUNT + LXI D,ESIZE ; ENTRIES ARE ESIZE BYTES APART +INSPF0: + MOV A,M ; MARK FILE FOR NO COPY + ANI 7FH ; CLEAR MSB FOR NO COPY + MOV M,A + DAD D ; PT TO NEXT + DCX B ; COUNT DOWN + MOV A,B ; DONE? + ORA C + JNZ INSPF0 + POP B ; RESTORE AND SAVE AGAIN + POP H + PUSH H + PUSH B +INSPF1: + PUSH H ; SAVE PTR TO FILE + INX H ; PT TO FN + CALL CRLF ; NEW LINE + CALL PRFN ; PRINT IT + POP H ; GET PTR TO FILE + CALL EPRINT + DB ' - (Y/N/S)? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + CALL COUT ; ECHO + CPI 'S' ; SKIP? + JZ INSPFA + CPI 'Y' ; Yes? + JNZ INSPF2 + MOV A,M ; GET USER NUMBER + ORI 80H ; MARK FILE + MOV M,A ; SET USER NUMBER +INSPF2: + LXI D,ESIZE ; PT TO NEXT FILE + DAD D + DCX B ; COUNT DOWN + MOV A,B ; DONE? + ORA C + JNZ INSPF1 +INSPFA: + POP B ; GET COUNT + POP H ; GET PTR TO FIRST FILE + JMP DIRPACK ; REPACK DIRECTORY + +; +; LOG IN SOURCE USER/DISK +; +LOGS: + LDA SUSER ; USER + MOV C,A ; ... IN C + LDA SDISK ; DISK + MOV B,A ; ... IN B + JMP LOGUD ; LOG IN USER/DISK + +; +; LOG IN DESTINATION USER/DISK +; +LOGD: + LDA DUSER ; USER + MOV C,A ; ... IN C + LDA DDISK ; DISK + MOV B,A ; ... IN B + JMP LOGUD ; LOG IN USER/DISK + +; +; PRINT FILE NAME +; +PRFN: + PUSH H ; SAVE REGS + PUSH B + MVI B,8 ; PRINT 8 CHARS + CALL PRFN1 + MVI A,'.' ; DOT + CALL COUT + MVI B,3 ; PRINT 3 CHARS + CALL PRFN1 + POP B ; GET REGS + POP H + RET +PRFN1: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CALL COUT ; PRINT IT + DCR B ; COUNT DOWN + JNZ PRFN1 + RET + +; +; **** BUFFERS **** +; + +; POINTERS +MFPTR: DS 2 ; PTR TO FIRST CHAR OF NEXT FN SPEC +NXTPTR: DS 2 ; PTR TO NEXT FN SPEC IN LINE +WORKBF: DS 2 ; PTR TO BEGINNING OF WORK BUFFER + +; FLAGS COPIED FROM DEFAULTS +VERFLG: DS 1 ; VERIFY +INSP: DS 1 ; INSPECT +QUIET: DS 1 ; QUIET +NCOPY: DS 1 ; MULTIPLE COPY + +; DISKS AND USERS +CDISK: DS 1 ; CURRENT DISK +SDISK: DS 1 ; SOURCE DISK +SUSER: DS 1 ; SOURCE USER +DDISK: DS 1 ; DESTINATION DISK +DUSER: DS 1 ; DESTINATION USER + +; CRC VALUE +CRCVAL: DS 2 ; CRC CHECK VALUE + +; FCBS +FCBS: DS 2 ; SOURCE FCB +FCBD: DS 2 ; DESTINATION FCB +FCBT: DS 2 ; PTR TO TEMPORARY FCB FOR ATTRIBUTE SETTINGS + +; COUNTS AND FLAGS +PAGLIM: DS 1 ; MAX NUMBER OF PAGES IN WORK BUFFER +LSTCPY: DS 1 ; LAST FILE WAS COPIED FLAG +EXIST: DS 1 ; TEST FOR EXISTENCE FLAG +VERCNT: DS 1 ; ERROR COUNT +BCNT: DS 1 ; BLOCK COUNT +CONT: DS 1 ; CONTINUE FLAG (0=NO, 0FFH=YES) + +; DYNAMIC BUFFERS +INLINE: + DS 2 ; INPUT LINE BUFFER +FREEBUF: + DS 2 ; FREE SPACE BUFFER +STACK: + DS 2 ; OPSYS STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/MCOPY44.LBR b/Images/Source/hd0/s0/u15/MCOPY44.LBR new file mode 100644 index 0000000000000000000000000000000000000000..3d6cc490189f43a3025ed513fe73656c90ec5985 GIT binary patch literal 24064 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/MCOPY45B.LBR b/Images/Source/hd0/s0/u15/MCOPY45B.LBR new file mode 100644 index 0000000000000000000000000000000000000000..7bcd7619262f574594dc87dc5f31f9be14b5bc4a GIT binary patch literal 26112 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/MENU.COM b/Images/Source/hd0/s0/u15/MENU.COM new file mode 100644 index 0000000000000000000000000000000000000000..c1397ab3347de39816dfc7d0b38921f498958b52 GIT binary patch literal 3456 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 O&8<|)40`{+^8W*g4W?%R literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/MENU.HLP b/Images/Source/hd0/s0/u15/MENU.HLP new file mode 100644 index 00000000..57485deb --- /dev/null +++ b/Images/Source/hd0/s0/u15/MENU.HLP @@ -0,0 +1,893 @@ +; + + + The ZCPR3 MENU Shell + + -- ZCPR3 Utilities -- + 1 - MENU + 2 - MENUCK + + -- Using MENU -- -- Programming MENU -- + U - Using MENU P - Programming *.MNU Files + S - Summary of User Cmds C - *.MNU Internal Commands + E - MENU Error Messages M - Programming Cmd Summary + Z - MENU and ZCPR3 + +:1 + +Command: MENU 3.2 + +Syntax: + MENU <-- run MENU.MNU +or + MENU ufn <-- run menu contained in file + +Function: + + MENÕ  ió thå ZCPR³ menõ front-enä processor®  Iô ió  á +ZCPR³  Shelì whicè readó á *.MNÕ filå anä processeó commandó +froí it. + +Options: + None + +Comments: + MENÕ  ió á truå ZCPR³ Shell®  Iô ió describeä iî  thió +HELP file. + Selected Error Messages: + + "Nï  Commanä Line¢ meanó thaô thå ZCPR³ Systeí doeó noô +supporô  aî externaì Commanä Linå Buffer®  MENÕ  musô  havå +thió tï run. + + "Nï  Shelì Stack¢ meanó thaô thå ZCPR³ Systeí doeó  noô +support a Shell Stack. MENU must have this to run. + + "Shelì  Stacë Full¢ meanó thaô thå Shelì Stacë ió  fulì +and MENU cannot push itself onto the stack. + + "Shelì  Stacë  Entrù Size¢ meanó thaô thå  Shelì  Stacë +elements are too short for MENU to store its parameters. + + "TPÁ  Full¢ meanó thaô therå ió noô enougè rooí iî  thå +TPA to load the *.MNU file. + +Examples of Use: + See this HELP file + + MENÕ  ió thå ZCPR³ Menu-Orienteä Commanä  Preprocessor® +Iô  actó aó á front-enä tï ZCPR3¬  providinç á menu-orienteä +useò interfacå tï ZCPR3® Itó functioî caî bå representeä bù +thå followinç diagram: + ------ ------ ------ ------ + |M | |Z | |B | |P | + User | E | | C | | D | | g | + Menu ---->| N |--->| P |--->| O |--->| m | + Command | U| | R| | S| | s| + | | | 2| | | | | + ------ ------ ------ ------ + + Thå  "Useò Menõ Command¢ ió á singlå characteò thaô thå +useò  strikeó  whicè instructó MENÕ tï perforí  á  function® +Oncå  MENÕ  beginó processinç thió  function¬  iô  buildó  á +commanä  linå  foò  ZCPR3¬  optionallù askinç thå  useò  foò +furtheò  inpuô (sucè aó á filå name)¬  anä theî  passeó  thå +commanä  linå tï ZCPR³ viá thå Commanä Linå  Buffer®  ZCPR³ +theî runó thå commanä linå returnó tï MENU. + + MENÕ  buildó  commanä lineó baseä oî simplå inpuô  froí +thå user®  Thå useò neeä neveò kno÷ whaô thå actuaì commanä +linå is® Thå commanä linå itselæ ió alwayó oæ thå form: + + + + Aó aî example¬ á commanä builô bù MENÕ tï ruî XDIÒ witè +useò  inpuô foò á filå namå specification¬  coulä looë  likå +thå following: + + XDIR + + + Wheî  MENÕ ió executed¬  iô lookó foò thå filå MENU.MNÕ +iî thå currenô directory®  Iæ iô findó one¬ iô loadó iô anä +beginó  processing®  Iæ  iô doeó noô finä  one¬  iô  simplù +exits®  Á  filå namå maù bå specifieä iî thå  MENÕ  commanä +line to select a file other than MENU.MNU. + + Thå  MENU.MNÕ  filå caî contaiî uð tï 25µ menuó  tï  bå +processeä  bù MENU®  Thå MENÕ wilì begiî processinç aô  thå +firsô menõ iî MENU.MNU. + + + MENÕ itselæ ió á COÍ file¬ likå anù otheò prograí undeò +ZCPR3®  Unlikå mosô otheò programs¬  however¬  iô generateó +commanä lineó tï bå executeä bù ZCPR³ anä storeó itó  returî +commanä iî thå Shelì Stack® Iî thió waù á looð ió seô up: + + -->--+->- MENU ->- ZCPR3 ->-+ + ^ v + | | + +-<- Command Line -<---+ + + Onlù  MENÕ  itselæ caî terminatå thió  loop®  Iæ  thå  MENÕ +programmeò  wishes¬  hå caî seô uð thå MENU.MNU filå sï thaô thió +looð  wilì neveò bå exited¬  oò hå caî seô uð thå filå  tï  allo÷ +anyonå  tï exiô aô anù timå oò jusô á speciaì persoî whï knowó  á +passworä  tï  exiô  wheî  hå  wisheó  to®  Therå  ió  á  loô  oæ +flexibilitù  designeä intï thå system¬  anä iô wilì bå  discusseä +later in the section on programming MENU.MNU files. + + Á  MENU.MNÕ  filå  caî bå seô uð tï executå  anù  ZCPR³ +commanä oò sequencå oæ commands® Thå MENU.MNÕ filå caî alsï +bå seô uð tï noô allo÷ thå useò tï leavå MENU¬  tï allo÷ hií +tï leavå MENÕ aô will¬ oò tï allo÷ hií tï leavå MENÕ onlù iæ +hå knowó á password. + + Thió  HELÐ filå ió divideä intï twï basiã  parts®  Thå +infï sectionó oî "Usinç MENU¢ anä "Summarù oæ MENÕ Commands¢ +arå designeä tï bå reaä bù á persoî wantinç tï uså MENÕ  buô +noô  wantinç  tï learî ho÷ MENÕ workó oò ho÷ tï prograí  it® +Theså  sectionó  describå  ho÷  tï movå  froí  onå  menõ  tï +another¬  ho÷ tï issuå MENÕ commands¬  anä ho÷ tï leavå MENÕ +iæ thå optioî ió presenteä tï him. + + Thå  otheò  sectionó  oæ thió HELР filå  describå  thå +programminç  aspectó oæ MENÕ anä arå intendeä tï bå useä  aó +aî  onlinå  referencå foò thå  MENÕ  programmer®  Thå  MENÕ +commanä  programminç summarù ió especiallù usefuì iî thaô iô +provideó á summarù oæ thå commandó whicè thå MENÕ programmeò +maù issuå tï MENÕ withiî á *.MNU file. +:U + + Wheî  MENÕ ió firsô invoked¬  onå oæ threå thingó  wilì +happen: + + 1©  Á  MENÕ  wilì appeaò anä bå pageä uð  tï  filì  thå + screen» á commanä prompô wilì appeaò aô thå bottoí + oæ thå menu + + 2©  Á MENÕ wilì appeaò anä noô bå pageä uð tï filì  thå + screen» á commanä prompô wilì appeaò aô thå bottoí + oæ thå menu + + 3©  Á commanä prompô wilì appeaò witè nï menõ (thió  ió + called the Expert Mode) + + Iæ  aô  anù timå á Menõ Displaù ió garbleä oò thå  useò +desireó  tï seå thå currenô Menõ (aó sometimeó happenó  wheî +yoõ arå iî Experô Mode)¬  jusô strikå thå RETURΠ key®  Thå +RETURÎ keù refresheó thå menõ aô alì times. + + + Thå  prompô  whicè appearó aô thå bottoí oæ  youò  Menõ +displaù haó thå followinç generaì form: + +Command (=Menu,^C=ZCPR3,*=1st Menu,<=Prev Menu,>=Next Menu) - + + Therå caî bå uð tï 25µ menuó iî onå MENU.MNÕ file® Thå +MENÕ commanä prompô varieó tï reflecô this®  Foò  instance¬ +iæ  onlù onå Menõ waó presenô anä thå optioî tï aborô ouô oæ +MENÕ  tï  ZCPR³ waó noô available¬  theî  thå  Menõ  Commanä +prompô woulä takå itó simplesô form¬ lookinç like: + +Command (=Menu) - + + Strikå thå RETURÎ keù aô thió timå tï refresè thå  Menõ +Displaù oò strikå thå characteò oæ á Menõ Option® Theså arå +thå onlù choices¬  anä strikinç á characteò whicè ió noô thå +RETURÎ keù oò á menõ optioî resultó iî thå belì sounding. + + + Iæ  thå thå optioî tï exiô tï ZCPR³ waó  availablå  anä +therå  ió  onlù  onå Menõ iî thå  MENU.MNÕ  file¬  theî  thå +commanä linå wilì looë likå this: + +Command (=Menu,^C=ZCPR3) - + + Thå  optioî oæ abortinç tï ZCPR³ bù strikinç  Control-à +(holä  dowî  oî thå Control¬  oò CTRL¬  keù anä  strikå  thå +letteò  C© ió no÷ available®  Thió wilì returî tï ZCPR³ anä +exiô MENU. + + Onå brieæ notå oî optioî letteró beforå goinç  on®  Iæ +onå  oæ  youò optionó ió á letteò iî thå rangå froí Á tï  Z¬ +theî caså ió noô significant¬  anä yoõ caî invokå thå optioî +A¬ say¬ bù strikinç aî upper- oò lower-caså A. + + + Iæ therå ió morå thaî onå menõ iî thå *.MNÕ  file¬  thå +commanä linå optionó becomå slightlù morå complex¬  buô theù +arå stilì quitå easù tï follow. + + Iî  thå followinç examples¬  assumå thaô thå optioî  tï +exiô  tï  ZCPR³ ió off¬  sï thå "^C=ZCPR3¢ optioî  wilì  NOÔ +appear. + + Froí thå firsô menõ iî thå file¬  thå commanä linå wilì +looë likå thå following: + +Command (=Menu,>=Next Menu) - + + Tï advancå tï thå nexô menu¬  strikå thå ">¢ oò thå ".¢ +character®  Oî mosô keyboards¬ ">¢ ió thå shifô oæ thå "."¬ +sï  MENÕ permitó easù movemenô withouô havinç tï worrù abouô +shiftinç thå keyboarä alì thå time. + + + Iæ aô thå lasô menõ iî thå file¬  thå commanä linå wilì +looë likå thå following: + +Command (=Menu,*=1st Menu,<=Prev Menu) - + + Thió  allowó  thå useò tï strikå thå "*¢  characteò  tï +jumð  bacë tï thå firsô menõ iî hió *.MNÕ file®  Iæ "<¢  oò +",¢ ió stucë ("<¢ ió usuallù thå shifô oæ thå ",")¬ theî thå +useò wilì bacë uð onå menõ tï thå previouó menõ iî thå file. + + Iæ thå useò ió somewherå iî thå middlå oæ thå  MENU.MNÕ +file¬ hió commanä linå wilì looë likå this: + +Command (=Menu,*=1st Menu,<=Prev Menu,>=Next Menu) - + + Again¬  "*¢ wilì gï directlù tï thå firsô menu¬  "<¢ oò +",¢ wilì gï tï thå previouó menu¬  anä ">¢ oò ".¢ wilì gï tï +thå  nexô  menu®  Strikinç thå RETURÎ keù wilì refresè  thå +menõ display. + + Onå lasô optioî thå useò haó undeò MENÕ involveó accesó +tï  á Systeí Menu®  Thió menõ ió speciaì iî thaô  therå  ió +onlù onå waù tï geô tï iô -- viá thå "$¢ command. + + Thå  Systeí  Menõ ió intendeä tï givå privelegeä  useró +accesó tï speciaì commandó thaô thå resô oæ thå useró  can'ô +run®  Iæ  á Systeí Menõ ió available¬  MENÕ wilì responä tï +thå "$¢ commanä witè thå prompt: + + Pass? + + Thå  useò  ió giveî onå chancå tï typå iî  thå  correcô +passworä  tï enteò thå Systeí Menu®  Iæ hå  ió  wrong¬  thå +messagå "Passworä Error¢ wilì appeaò anä hå wilì bå returneä +tï thå menõ hå camå from®  Iæ hå ió correct¬  hå wilì enteò +thå Systeí Menu®  Physically¬ thå Systeí Menõ ió alwayó thå +lasô menõ iî thå file¬ anä itó commanä prompô is: + +Command (=Menu,*=1st Menu,<=Prev Menu) - + + Iæ thå useò ió aô thå menõ jusô beforå thå Systeí Menu¬ +thå ">¢ wilì noô functioî tï allo÷ hií tï enteò it¬ eveî thï +therå  technicallù ió á "Nexô Menu"®  Thå ">¢ optioî iî thå +commanä  linå  wilì noô appear®  Thå onlù waù  tï  enteò  á +Systeí Menõ ió thrõ thå "$¢ command. + + Iî  summary¬  movinç  abouô withiî MENÕ ió quitå  easy® +"*¢  moveó thå useò tï thå firsô menu¬  "<¢ tï thå  previouó +menu¬ ">¢ tï thå nexô menu¬ anä "$¢ tï thå Systeí Menu. + +:S + + The full Menu Command Line looks like the following: + +Command (=Menu,^C=ZCPR3,*=1st Menu,<=Prev Menu,>=Last Menu) - + + The Menu Commands are: + + Command Function + + Refresh Menu Display (RETURN Key) + ^C Exit to ZCPR3 (Control-C) + * Jump to the First Menu + < or , Jump to the Previous Menu + > or . Jump to the Next Menu + $ Jump to the System Menu (Password Required) + other Menu Option or Invalid Command; letters are + automatically capitalized, so a=A + +:P + + Programming *.MNU Files + + Thå  *.MNÕ  filå  ió simplù á texô filå  whicè  maù  bå +createä   witè  anù  conventionaì  CP/Í  editor¬   includinç +WordStar®  MENÕ  ignoreó  thå Mosô Significanô Biô  oæ  alì +bytes¬ sï editoró likå WordStar¬ whicè occasionallù seô thió +bit¬ caî bå used. + + Alì *.MNÕ fileó havå thå samå generaì  structure®  Thå +firsô  linå ió eitheò á globaì optioî linå oò thå  beginninç +oæ á menõ display®  Iæ á globaì optioî line¬ iô beginó witè +thå  characteò  "-"¬   anä  thió  characteò  ió  immediatelù +followeä  bù  globaì optioî characters®  Thå globaì  optioî +line¬ theî lookó likå this: + +-options + + Afteò thå globaì optioî line¬  iæ any¬  comeó thå firsô +menu® Eacè menõ ió structureä aó follows: + + #options + + # + menu commands + + The following are two sample Menu File structures: + + -options #options + #options + # + # commands + commands ## + #options + + # + commands + ## + Therå arå fouò optioî characters®  Iî usinç them¬ caså +ió noô significant® Theså optioî characteró are: + + Option Function + C Display Command Line to User + D Display Menu to User + P Page Out Menu Display + X Allow User to Exit to ZCPR3 + + Thå à optioî displayó thå commanä linå builô bù MENÕ tï +thå user®  Thió optioî ió primarilù intendeä foò  debugginç +purposes¬  tï  allo÷ thå programmeò tï seå whaô commandó arå +beinç built®  Iô ió instructivå tï thå user¬  however¬  anä +maù bå employeä foò thaô purposå aó well. + + Thå  Ä optioî displayó thå menõ tï thå  user®  Iæ  thå +displaù  functioî ió noô turneä on¬  wå arå iî Experô  Mode¬ +anä  thå  commandó  arå availablå withouô  á  menõ  display® +RETURN¬  oæ  course¬  caî  bå useä tï invokå thå displaù  iæ +necessary. + + Thå Ð optioî pageó ouô thå menõ display®  Iæ thå  pagå +functioî  ió engaged¬  theî thå MENÕ prograí outputó  ¢  oò  ".¢ tï gotï thå nexô menõ (Menõ 2) + ^à tï gotï ZCPR3 + + In the second menu, the user may strike: + + "3" to goto Menu 3 + "*" or "<" or "," to goto Menu 1 + ">" or "." to goto Menu 3 + ^C to goto ZCPR3 + + In the third menu, the user may strike: + + "2" or "<" or "," to goto Menu 2 + "*" to goto Menu 1 + + ! Opt + Thå "!¢ optioî causeó MENÕ tï pauså anä asë thå useò tï +"Strikå  Anù Key¢ beforå continuinç afteò thå  commanä  linå +haó  beeî processed®  Iî thió way¬  iæ á commanä  generateó +informatioî  tï  bå reaä bù thå useò beforå MENÕ clearó  hió +screen¬  thå "!¢ optioî maù bå useä tï givå thå useò alì thå +timå hå wantó tï reaä thió display. + + "prompt" + Embeddeä  withiî anù commanä linå maù bå á  prompô  foò +user input. This prompt takes the form of + + "prompt to user" + +Wheî  encountered¬  MENÕ  wilì advancå tï thå nexô linå  anä +prinô thå texô containeä withiî thå quotes®  MENÕ wilì theî +waiô foò thå useò tï inpuô anù texô hå desireó followeä bù á +RETURN®   Aô  thió  point¬  thå  texô  thå  useò  inpuô  ió +capitalizeä anä placeä intï thå commanä linå aô thå poinô oæ +the prompt. + + Iæ  thå  prompô  appearó aô thå enä oæ á  MENÕ  commanä +line¬  thå trailinç quotå ió noô required®  Aó manù promptó +aó desireä maù appeaò withiî á MENÕ commanä line® Examples: + + "prompt" + -dxp + # + A - Run XDIR without Pause or Input + B - Run XDIR and Pause before Returning to MENU + C - Run XDIR, Allow User Input, and Pause before + Returning to MENU + M - Run MCOPY, Allow User Input of Dest Dir, Allow + User Input of Source Dir and File, and Pause + before returning to MENU + Z - Run Any ZCPR3 Command and Pause before + Returning to MENU + # + m!mcopy "Destination Dir? "="Source DIR:AFN? " + z!"Enter Command Line -- + axdir + b!xdir + c!xdir "Enter Ambiguous File Name -- + ## + + "prompt" + Notå  thå Spacå righô beforå thå "Prompô forí iî thå  Ã +command®  Thió spacå ió significanô tï keeð thå commanä anä +useò  inpuô froí runninç together®  Thió "ruî together¢  ió +desireä  foò thå Ú command®  Alsï notå thå duaì prompô  foò +the M command. + + Witè thå Í command¬  thå followinç promptó wilì  appeaò +(and sample input): + + Destination Dir? BACKUP: + Source DIR:AFN? *.TXT + +and the following command line is built: + + MCOPY BACKUP:=*.TXT + + Variables + Thå commanä texô whicè ió specifieä iî thå MENÕ commanä +linå  caî contaiî embeddeä variableó whicè MENÕ wilì  expanä +wheî thå commanä linå ió processed®  Theså variables¬ whicè +arå  denoteä  bù á dollaò sigî ($© followeä bù  onå  oò  twï +characters, are defined as follows: + + Variable Expands as + -------- ---------- + $D Current Disk + $U Current User Area + $Fn FILENAME.TYP for ZCPR3 System File n + $Nn FILENAME for ZCPR3 System File n + $Tn TYP for ZCPR3 System File n + $$ Place a single $ in command line + + Theså  variableó  caî alsï bå useä iî thå menõ  displaù +itself¬  anä  theiò  valueó  wilì bå  substituteä  wheî  thå +display is generated. Example: + + Variables + -dpx + # + Menu to Run M80 Assembler + Current File: $F1 + Directory: $D$U + F - Define File + E - Edit $F1 P - Page $F1 + A - Assemble $F1 + # + fsetfile 1 "Filename? " + eedit $f1 + azex m80 $n1 + ppage $f1 + ## + + Variables +Notes: + + 1® Thå ZCPR³ utilitù SETFILÅ ió useä tï definå thå namå +oæ  á  ZCPR³  Systeí  File®  Therå arå  fouò  Systeí  Fileó +available¬  anä theù caî bå referenceä bù $F± tï $F4¬ $N± tï +$N4, and $T1 to $T4. + + 2® Thå Á commanä showó thå executioî oæ ZEX® MENÕ ió á +truå ZCPR³ Shell¬  and¬  aó such¬ ZEØ commandó caî bå issueä +froí iô anä wilì ruî oî toð oæ it®  Thå prompô foò thå  ZEØ +command lines will be "Menu>". + + 3®  Assuminç thaô "MYFILE.MAC¢ ió assigneä tï thå ZCPR³ +Systeí Filå ± anä thå useò ió loggeä intï disë  useò 1¬ thå +followinç  screeî  showó ho÷ thå displaù anä  thå  resultinç +commanä lineó wilì bå expandeä wheî executioî occurs: + + Variables + Display + + Menu to Run M80 Assembler + Current File: MYFILE.MAC + Directory: B1 + F - Define File + E - Edit MYFILE.MAC P - Page MYFILE.MAC + A - Assemble MYFILE.MAC + + + Command Lines + Menu Command Expansion + + fsetfile 1 "Filename? " SETFILE 1 "Filename? " + eedit $f1 EDIT MYFILE.MAC + azex m80 $n1 ZEX M80 MYFILE + ppage $f1 PAGE MYFILE.MAC + + Highlighting + Jusô  likå  thå HELÐ utilitù caî takå advantagå oæ  thå +highlightinç facilitù provideä iî thå Z3TCAP¬  sï caî  MENU® +Foò thoså ZCPR³ Systemó witè á properly-installeä TCAP¬ MENÕ +wilì  uså  thå  cleaò screeî commanä tï refresè  thå  user'ó +screeî  anä  highlightinç  caî bå enableä  anä  disableä  bù +embeddinç  ^Á (tï turî oî highlighting© anä ^ (tï turî  ofæ +highlighting© intï thå *.MNÕ file. + + Iô ió recommendeä thaô wheî highlightinç ió turneä  on¬ +iô  shoulä  bå turneä ofæ iî thå samå linå  foò  consistencù +sake and appearance. + + Example: + + Highlighting + # + ^AThis is highlighted^B and this is not + # + +wilì appeaò witè "Thió ió highlighted¢ iî á highlighteä modå +likå this: + + This is highlighted and this is not + + + Closing + Closing Notes + + Aó  manù commandó aó thå printablå ASCIÉ characteò  seô +(withouô lower-caså letteró anä thå MENÕ commanä characters© +wilì allo÷ arå permitteä bù MENU®  Thå text¬  however¬  foò +eacè  menõ musô bå ablå tï fiô oî á screeî witè thå  commanä +prompô  aô  thå  bottom®  Thió meanó thaô thå  texô  cannoô +exceeä 2² lines. + + MENÕ  fitó iî nicelù tï thå ZCPR³ Systeí  oæ  programs® +Thå informatioî sectioî oî "MENU'ó Relationshið tï thå ZCPR³ +System¢  explainó ho÷ MENÕ anä thå otheò ZCPR³ programó worë +together. + + Thå  followinç  ASCIÉ  characteró maù NOÔ  bå  useä  aó +commandó sincå theù arå useä elsewhere: + + # % , . < > * + +:M + + MENU Programming Command Summary + + Eacè  MENÕ commanä occupieó onlù onå  line¬  anä  blanë +lineó  iî thå commanä grouð arå noô permitted®  Thå commanä +linå ió structureä aó follows: + + l[o][command] + +where: + l is the single character used to invoke the command + note that it may be upper- or lower-case + o is an opening option, which is one of: + :nn -- go to Menu nn + ! -- have MENU wait when the command is finished + command is an optional ZCPR3 command; note that if + the option is ":nn", then a command here makes no + sense + + The MENU commands are: + + Command Function + + :nn Goto Menu nn, where the first menu is Menu 1 + ! Wait after command line is executed before + processing the menu + "Prompt" Prompt the user for input and accept it + +The MENU variables are: + + Variable Expands to + + $D Current Disk + $U Current User + $Fn FILENAME.TYP for System File n + $Nn FILENAME for System File n + $Tn TYP for System File n + $$ $ + +Noteº Systeí Fileó caî bå defineä bù thå SETFILÅ command. + +The Highlighting Embedded Characters are: + ^A Turn ON Highlighting + ^B Turn OFF Highlighting + +Noteº  Iô ió recommendeä thaô iæ highlightinç ió turneä  on¬ +it should be turned off in the same line. + + + +Thå  followinç ASCIÉ characteró maù NOÔ bå useä aó  commandó +sincå theù arå useä elsewhere: + + # % , . < > * + + + +:Z + + MENU's Relationship to the ZCPR3 System + + MENU¬  likå mosô oæ thå ZCPR³ utilities¬ interactó witè +thå systeí aó á wholå anä cannoô bå useä witè systemó  otheò +thaî ZCPR3® Iî particular¬ MENÕ requireó thå ZCPR³ Multiplå +Commanä  Linå  Buffeò  anä  Shelì  Stacë  facilitieó  tï  bå +availablå  tï iô anä cannoô ruî withouô them®  MENÕ invokeó +commanä  lineó  viá thå Commanä Linå Buffeò anä  returnó  tï +itselæ thrõ thå Shelì Stack®  Iô alsï useó thå ZCPR³ Systeí +Fileó foò somå oæ itó variableó anä thå Z3TCAÐ facilitù  foò +itó screeî manipulatioî (highlighting). + + MENU is installed by Z3INS. + + + Also¬ CÄ (Changå Directory© anä STARTUÐ (or¬ SÔ foò CD© +caî  comå  intï plaù witè MENU®  Wheî CÄ logó intï  tï  ne÷ +directory¬  iô  lookó foò thå filå ST.COÍ anä executeó iô iæ +therå  ió one®  SÔ ió simplù STARTUÐ renamed¬  anä  STARTUÐ +wilì  loaä thå Multiplå Commanä Linå Buffeò witè  á  commanä +linå anä theî terminate. + + Froí  thå poinô oæ vie÷ oæ MENU¬  thå commanä loadeä bù +SÔ  coulä bå MENU®  Thå effecô oæ thió ió tï  automaticallù +enteò  MENÕ  wheî  thå  useò employó CÄ  tï  enteò  á  giveî +directory. + + Hence¬  bù usinç CD¬  á useò caî enteò á directorù  anä +suddenlù  finä  himselæ  iî á menõ insteaä oæ aô  thå  ZCPR³ +commanä  level®  Thió  ió  gooä foò  applicationó  wherå  á +directorù  ió  seô  asidå foò á specifiã  purposå  anä  onlù +certaiî  operationó  arå  tï bå performeä  iî  it¬  sucè  aó +cataloginç diskó oò handlinç accounts. + + + No÷  thaô  MENÕ ió runninç foò thå  directory¬  á  MENÕ +commanä  coulä bå anotheò CÄ tï anotheò  directory®  Oò  iô +coulä simplù bå á DUº form® Example: + + #dp + A - Enter ZCPR Directory + B - Enter A0: + # + acd zcpr: + ba0: + # + + Here¬  iæ Á ió issued¬ theî CÄ wilì movå intï ZCPRº anä +executå ST.COÍ iæ therå ió onå there®  Iæ  ió issued¬  thå +useò  ió loggeä intï A0:®  MENÕ ió thå nexô commanä iî botè +caseó (commanä lineó arå "CÄ ZCPR;MENU¢ anä "A0:;MENU")¬  sï +MENÕ automaticallù reinvokeó anä lookó foò MENU.MNU®  Iæ iô +findó it¬ wå arå iî anotheò MENÕ system¬ and¬ iæ iô doesn't¬ +wå arå bacë tï ZCPR³ commanä level. + + Undeò thå Á option¬ iæ CÄ findó ST.COM¬ SÔ wilì executå +itó functioî and¬  unlesó thió functioî popó thå Shelì Stacë +(SHPOÐ command)¬ MENÕ wilì reinvokå afteò iô ió complete. + + Undeò  thå  option¬  wå wilì ruî MENÕ nexô anä  simplù +exiô iæ á MENU.MNÕ filå ió noô found. + +:E + + MENU Error Messages + + Iî ordeò tï makå MENÕ aó smalì aó possible¬  thå  erroò +messageó  havå beeî reduceä tï á minimum®  MENÕ provideó  á +minimuí indicatioî thaô somethinç ió wronç anä aborts. + + Thå  prograí  MENUCË  ió  designeä  tï  telì  yoõ  morå +specificallù  whaô  ió  wrong®  MENUCË ió  á  *.MNÕ  Syntaø +Checker¬ anä iô lookó foò alì sortó oæ erroò conditionó thaô +caî occuò iî á *.MNÕ file. + + MENÕ provideó thå followinç minimaì erroò messages: + + + Message Meaning + + No Shell Stack Shell Stack Not Available + No Command Line Command Line Buffer Not Avail + Shell Stack Full Shell Stack is Full + Shell Stack Entry + Size Shell Stack Entries are too + short for MENU cmd line + File x.typ Not + Found Menu File Not Found + TPA Full Memory is Full + User Command is in Error + Password Error Invalid Password Given + Structure Error *.MNU File Structure Error + +:2 + +Command: MENUCK 1.0 + +Syntax: + MENUCK dir:ufn <-- default file type is MNU + +Function: + + MENUCË  ió useä tï checë thå syntaø oæ á *.MNÕ filå foò +thå ZCPR³ Menõ Shell¬  MENU® MENÕ ió optimizeä foò sizå anä +speed¬  and¬  iî deepinç iô small¬ built-iî diagnosticó werå +reduceä  tï thå minimum®  MENUCË ió intendeä tï bå useä  tï +analyzå  *.MNÕ fileó anä providå informativå diagnosticó  oî +any syntactical errors with them. + +Options: + None + + +Comments: + + MENUCË  checkó tï seå iæ thå sizå oæ thå *.MNÕ filå  ió +toï largå foò thå TPÁ availablå tï thå MENÕ  command®  Thió +is an additional check beyond the normal syntax check. + + MENUCË  identifieó  thå  locatioî  oæ  erroró  bù  linå +number. The first line in the file is line number 1. + +Selected Error Messages: + + Self-Explanatory. + +Examples of Use: + + MENUCK MYMENU + -- perform check on MYMENU.MNU + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/MENU.MAC b/Images/Source/hd0/s0/u15/MENU.MAC new file mode 100644 index 00000000..a53fa4a8 --- /dev/null +++ b/Images/Source/hd0/s0/u15/MENU.MAC @@ -0,0 +1,1510 @@ +; +; PROGRAM: MENU +; AUTHOR: RICHARD CONN +; VERSION: 3.2 +; DATE: 10 June 84 +; PREVIOUS VERSIONS: 3.1 (28 Mar 84), 3.0 (18 Mar 84) +; DERIVATION. MENU 1.4 for ZCPR2 +; +VERS EQU 32 + +; +; MENU is the ZCPR3 Menu Processor. It loads, looks for the MENU.MNU +; file, and then displays it to the user (optionally) and prompts him for +; a single-character command. The ZCPR3 Multiple Command Line Buffer must +; be installed for MENU to work, and MENU uses this buffer to chain to the +; programs selected by the user and return to itself at the proper place. +; +; MENU supports multiple menus within one MENU.MNU file. When a command +; is invoked, MENU returns to the menu the command came from. +; +; MENU will ONLY RUN on ZCPR3 systems with the Multiple Command Line +; Buffer Option enabled. +; + +; +; Menu Constants +; +sysmenu equ 0 ;System Menu Enabled? 0=no, 1=yes + +; 1 Special Menu Command Chars +RNM EQU '>' ;NEXT MENU +RNMP EQU '.' ;NEXT MENU PRIME (ALTERNATE) +RLM EQU '<' ;LAST MENU +RLMP EQU ',' ;LAST MENU PRIME (ALTERNATE) +RFM EQU '*' ;FIRST MENU +; + if sysmenu +RSM EQU '$' ;SYSTEM MENU (PASSWORD REQUIRED) + ; THIS IS SAME AS CONTROL CHAR + endif ;sysmenu + +; 2 Internal Menu Control Chars +MCMD EQU ':' ;COMMAND TO JUMP TO ANOTHER MENU +PCHAR EQU '"' ;INDICATES AUTO PROMPT FOR SPECIFIC CMD +MINDIC EQU '#' ;MENU SECTION INDICATOR +MFIRST EQU '%' ;FIRST MENU INDICATOR +GOPTION EQU '-' ;GLOBAL OPTION INDICATOR +WOPTION EQU '!' ;ACTIVATES WAIT UPON RETURN + +; 3 Menu Option Chars +COPTION EQU 'C' ;DISPLAY COMMAND LINE TO USER +DOPTION EQU 'D' ;DISPLAY MENU TO USER +POPTION EQU 'P' ;PAGE OUT MENU DISPLAY TO USER +XOPTION EQU 'X' ;DISABLE ZCPR3 RETURN + +; 4 Miscellaneous +IBUFSZ EQU 254 ;SIZE OF INPUT LINE BUFFER +VARFLAG EQU '$' ;VARIABLE FLAG + ;(FOLLOWED BY D,U,Fn,Nn,Tn) +CMDSEP EQU ';' ;ZCPR3 COMMAND SEPARATOR + +; +; Enter/Exit Standout Mode (Recommended that these values not be changed) +; +DIM EQU 'A'-'@' ; ^A TO ENTER STANDOUT +NOTDIM EQU 'B'-'@' ; ^B TO EXIT STANDOUT + +; +; MACRO Library of Definitions +; + MACLIB Z3BASE.LIB + +; +; ZCPR3 CONSTANTS +; +wboot equ 0 +bentry equ 5 +fcb equ 5ch +tbuff equ 80h +BEL equ 7 +CR equ 0dh +LF equ 0ah +CTRLC equ 'C'-'@' +TAB equ 'I'-'@' +CTRLZ equ 'Z'-'@' + +; +; MACROS TO PROVIDE Z80 EXTENSIONS +; MACROS INCLUDE: +; +; BR - JUMP RELATIVE +; BRC - JUMP RELATIVE IF CARRY +; BRNC - JUMP RELATIVE IF NO CARRY +; BRZ - JUMP RELATIVE IF ZERO +; BRNZ - JUMP RELATIVE IF NO ZERO +; BJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; PUTRG - SAVE REGISTERS +; GETRG - RESTORE REGISTERS +; + +; +; +; Z80 MACRO EXTENSIONS +; +BR MACRO ?N ;;JUMP RELATIVE + IF I8080 ;;8080/8085 + JMP ?N + ELSE ;;Z80 + .Z80 + JR ?N + .8080 + ENDIF ;;I8080 + ENDM +; +BRC MACRO ?N ;;JUMP RELATIVE ON CARRY + IF I8080 ;;8080/8085 + JC ?N + ELSE ;;Z80 + .Z80 + JR C,?N + .8080 + ENDIF ;;I8080 + ENDM +; +BRNC MACRO ?N ;;JUMP RELATIVE ON NO CARRY + IF I8080 ;;8080/8085 + JNC ?N + ELSE ;;Z80 + .Z80 + JR NC,?N + .8080 + ENDIF ;;I8080 + ENDM +; +BRZ MACRO ?N ;;JUMP RELATIVE ON ZERO + IF I8080 ;;8080/8085 + JZ ?N + ELSE ;;Z80 + .Z80 + JR Z,?N + .8080 + ENDIF ;;I8080 + ENDM +; +BRNZ MACRO ?N ;;JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + JNZ ?N + ELSE ;;Z80 + .Z80 + JR NZ,?N + .8080 + ENDIF ;;I8080 + ENDM +; +BJNZ MACRO ?N ;;DECREMENT B AND JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + DCR B + JNZ ?N + ELSE ;;Z80 + .Z80 + DJNZ ?N + .8080 + ENDIF ;;I8080 + ENDM +; +PUTRG MACRO + PUSH H ;;SAVE REGISTERS IN ORDER + PUSH D + PUSH B + ENDM +; +GETRG MACRO + POP B ;;RESTORE REGISTERS IN ORDER + POP D + POP H + ENDM +; +; END OF Z80 MACRO EXTENSIONS +; + +; +; Externals from SYSLIB +; + ext z3vinit,cls,stndout,stndend + ext getcl1,putcl,getsh2,qshell,retud,getefcb,shpush,shpop + ext getshm,putshm,moveb,getfn2,pfn1,getcrt,getzrun,putzex,putcst + ext eprint,cin,cout,caps,crlf,pafdc,madc,bline,initfcb,sksp + ext f$open,f$close,f$read,codend,hmovb + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3vinit ;initialize the ZCPR3 Env and the VLIB Env + jmp strt +; +; This is the FCB which defines the default name of the MENU.MNU file +; + if sysmenu +ppass: + db 'SYSTEM ',0 ;system password + endif ;sysmenu +; +menufcb: + db 0 ;FCB for MENU.MNU + db 'MENU ' + db 'MNU' + ds 4 +scratch: ;this doubles as a scratch area + ds 16 ;buffer definition is at end of program + ds 4 ;36 bytes total + +; +; Start of Program +; +strt: +; +; Check for Shell Stack +; + call getsh2 ;get shell status + brnz strt0 ;skip over shell init + call eprint + db ' No Shell Stack',0 + ret +; +; See if Command Line Available +; +strt0: + call getcl1 ;get line + brnz strt01 + call eprint + db ' No Command Line',0 + ret +; +; See if this program was invoked as a shell +; +strt01: + call qshell ;find out from ZCPR3 environment + push psw ;save status + xra a ;A=0 + call putcst ;put command status (normal = 0) + pop psw ;restore status + jz menu ;do not push onto stack if invoked as a shell +; +; Set Name of Shell from External FCB if Possible or From Default if Not +; +setshn: + call retud ;get run address + lxi h,shdisk ;pt to shell disk + mov a,b ;get disk + adi 'A' ;convert to letter + mov m,a ;set disk letter + inx h ;pt to user 10's + mov a,c ;get user number + mvi b,10 ;subtract 10's + mvi d,'0' ;set char +setshn1: + sub b ;subtract + brc setshn2 + inr d ;increment digit + br setshn1 +setshn2: + add b ;get 1's + mov m,d ;set 10's digit for user + inx h ;pt to 1's digit + adi '0' ;compute 1's digit + mov m,a ;set 1's digit + call getefcb ;get ptr to external fcb + brz strt02 ;no external FCB, so use default name + inx h ;pt to program name + lxi d,shname ;pt to string + mvi b,8 ;8 chars + call moveb ;copy into buffer +; +; Check for File Name and Set It If Given +; +strt02: + lxi h,fcb+1 ;pt to file name + lxi d,menufcb+1 + mvi b,11 ;11 chars + mov a,m ;get first char + cpi ' ' + cnz moveb ;copy if one present +; +; Set File Name in MENUFCB into Line +; + lxi h,menufcb+1 ;set shell file name + lxi d,shfile ;pt to shell file + mvi b,8 ;8 chars +strt03: + mov a,m ;get next char + cpi ' ' ;done? + brz strt04 + stax d ;put char + inx d ;pt to next +strt04: + inx h ;pt to next + bjnz strt03 + mvi a,'.' ;put dot + stax d + inx d ;pt to next + mvi b,3 ;file type +strt05: + mov a,m ;copy + stax d + inx h ;pt to next + inx d + bjnz strt05 + xra a ;store zero + stax d + +; +; Set Menu Number +; + mvi b,1 ;shell message 1 + xra a ;menu 0 + call putshm ;set message + +; +; Push Name of Shell onto Stack +; + lxi h,shdisk ;pt to name of shell + call shpush ;push shell onto stack + brnz strt2 +; +; Shell Successfully Installed +; + call eprint + db ' Shell Installed',0 + ret +; +; Shell Stack Push Error +; +strt2: + cpi 2 ;shell stack full? + brnz strt3 +; +; Shell Stack is Full +; + call eprint + db ' Shell Stack Full',0 + ret +; +; Shell Stack Entry Size is too small for command line +; +strt3: + call eprint + db ' Shell Stack Entry Size',0 + ret +; +; Check for ZEX Execution and Pass ZEX if So +; +menu: + call getzrun ;is ZEX running? + brz runmenu ;process menu if not + br menuz1 ;skip new line +menuzex: + call crlf ;new line +menuz1: + call eprint + db 'Menu> ',0 + mvi a,1 ;tell ZEX that it is prompted + call putzex + call codend ;set up buffer + mvi m,ibufsz ;set size + mvi a,0FFH ;capitalize + call bline ;get line from ZEX + xra a ;A=0 + call putzex ;resume ZEX normally + call sksp ;skip over leading spaces + mov a,m ;check for comment + cpi ';' + brz menuzex + xchg ;DE pts to command line + xra a ;don't display command + sta cpflag + jmp runcmnd ;run command pted to by DE +; +; Begin Menu Processing +; +runmenu: + call eprint + db 'MENU Version ' + db (vers/10)+'0','.',(vers mod 10)+'0',0 +; +; Check for Wait Flag and Wait if So +; + mvi b,0 ;get shell message 0 + call getshm + ani 80h ;check for wait flag + cnz sak ;Strike Any Key +; +; Open Menu File +; + lxi h,fcb ;copy FCB into MENU FCB + lxi d,menufcb + mvi b,36 ;36 bytes + push d ;save ptr + call moveb + pop d ;pt to MENU.MNU FCB + call initfcb ;init fcb + call f$open ;open file + brz menu1 ;abort if no menu + call eprint + db CR,LF,' File ',0 + lxi d,menufcb+1 + call pfn1 + call eprint + db ' Not Found',0 + jmp shpop +; +; Load MENU.MNU from disk +; +menu1: + call codend ;get address of buffer for menu load +mload: + lxi d,menufcb ;pt to FCB + call f$read ;read in next block + ora a ;error? + brnz mloaddn ;load done if error + lxi d,tbuff ;copy from TBUFF into memory pted to by HL + xchg ;HL is source, DE is dest + mvi b,128 ;128 bytes + call hmovb + lhld bentry+1 ;get address of top of TPA + mov a,h ;set to bottom of ZCPR3 + sui 10 + cmp d ;about to overflow ZCPR3? + brnc mload1 ;continue if not + call eprint + db CR,LF,' TPA Full',0 + ret +mload1: + xchg ;HL pts to next byte to load to + br mload ;continue load + + +; +; Init Flags and Clear MSB of all bytes in Menu File +; +mloaddn: + call f$close ;close input file + mvi m,CTRLZ ;ensure EOF mark + lxi d,80H ;pt to next block + dad d + shld ibuff ;set ptr to input line buffer + mvi m,ibufsz ;set size + dad d ;allow 256 bytes + dad d + shld expline ;set ptr to expand line + xra a ;A=0 + sta cflag ;turn off command display + sta dflag ;turn off menu display + sta pflag ;disallow paging + sta cpmok ;turn off ZCPR3 return flag + call codend ;pt to beginning of file + push h ;save ptr +menul1: + mov a,m ;get byte + ani 7FH ;mask out MSB + mov m,a ;put byte + inx h ;pt to next + cpi CTRLZ ;EOF? + brnz menul1 ;continue if not +; +; Mark all Menu Sections +; + pop h ;HL pts to first byte of menu + mvi b,0FFH ;set menu counter +; +; Skip to Next Menu +; +menul2: + mov a,m ;get byte + cpi CTRLZ ;error? + jz mstrerr ;structure error if so + cpi MINDIC ;menu indicator (start of menu?) + brnz menul4 + ori 80H ;beginning of menu found -- set MSB + mov m,a ;put byte + inr b ;increment menu count + inx h ;pt to next + mov a,m ;get byte + cpi MINDIC ;menu indicator (end of menu?) + brz menul5 ;done if so + cpi CTRLZ ;error? + jz mstrerr +; + if sysmenu + cpi RSM ;system menu indicator? + brnz menul3 + mov a,b ;set system menu number + sta smeno + mvi a,0FFH ;set flag + sta smenfl ;system menu present + dcx h ;back up to beginning of menu + shld smenadr ;start address + inx h ;pt to RSM + endif ;sysmenu +; +; Skip out Menu Display +; +menul3: + call lskipt ;skip to beginning of next line + brz menul4 ;found menu indicator + cpi CTRLZ ;error? + jz mstrerr + br menul3 ;continue if not +; +; Skip to Next Menu +; +menul4: + call lskip ;skip to beginning of next menu + br menul2 +; +; Check Menu Options +; +menul5: + call codend ;pt to beginning of file + mov a,m ;check for option + cpi GOPTION ;global option char? + jnz mfile ;if no global option, scan for menu files + inx h ;pt to option char +option: + mov a,m ;get option char + call caps ;capitalize + inx h ;pt to next + cpi CR ;done? + brz optdn + cpi COPTION ;display command? + brz optc + cpi DOPTION ;display menu? + brz optd + cpi POPTION ;paging? + brz optp + cpi XOPTION ;exit OK? + jnz mstrerr ;option error if not +; +; Disable Exit to ZCPR3 +; + mvi a,0FFH ;turn flag off + sta cpmok + br option +; +; Process Paging Option +; +optp: + mvi a,0FFH ;set flag + sta pflag + br option +; +; Process Display Menu Option +; +optd: + mvi a,0FFH ;set flag + sta dflag + br option +; +; Process Display Command Option +; +optc: + mvi a,0FFH ;set flag + sta cflag + br option + +; +; Option Processing Done +; +optdn: + inx h ;skip LF + +; +; Check for Menu Display +; +mfile: + mov a,m ;get first byte + ani 7FH ;mask + cpi MINDIC ;start of menu? + jnz mstrerr + +; +; Check and Set First Menu +; + shld mstart ;save start address of first menu item + mvi m,MFIRST+80H ;set first char of first menu + +; +; Entry Point for Menu Display +; On entry, HL pts to first byte of current menu +; +dmenu: + mvi b,1 ;shell message 1 contains menu number + call getshm ;get menu number flag + cnz mchc0 ;skip to proper menu + shld cstart ;save start address of current menu + lda cflag ;copy display command flag for temp use + sta cpflag + lda dflag ;copy display menu flag for temp use + sta dpflag + lda pflag ;copy paging flag for temp use + sta ppflag + inx h ;pt to first char after menu indicator char +dispm1: + mov a,m ;get char + call caps ;capitalize + inx h ;pt to next + cpi CR ;end of options? + brz dispm2 +; + if sysmenu + cpi RSM ;system menu? + brz dispm1 ;ok if so + endif ;sysmenu +; + cpi COPTION ;command display? + brz dispmc + cpi DOPTION ;display? + brz dispmd + cpi POPTION ;paging? + brz dispmp + cpi XOPTION ;ZCPR3 return? + jnz mstrerr ;error if not +; +; Toggle ZCPR3 Return Option +; + lda cpmok ;get flag + cma ;toggle + sta cpmok + br dispm1 +; +; Toggle Paging Option +; +dispmp: + lda ppflag ;get flag + cma ;toggle + sta ppflag + br dispm1 +; +; Toggle Display Menu Option +; +dispmd: + lda dpflag ;get flag + cma ;toggle + sta dpflag + br dispm1 +; +; Toggle Display Command Option +; +dispmc: + lda cpflag ;get flag + cma ;toggle + sta cpflag + br dispm1 +; +; Done with Menu-Specific Option Processing +; +dispm2: + call lskip ;skip to LF + lda dpflag ;display menu? + ora a ;0=no + brz dispm8 ;skip over menu if not + call getnlines ;get line count in A + sta pagcnt ;set count + lda ppflag ;paging? + ora a ;0=no + push psw ;save flag + cnz cls ;clear screen if so + pop psw ;get flag + cz crlf ;else new line +; +; Print Next Line of Menu if not Starting with ESCAPE Char (MINDIC) +; +dispm3: + mov a,m ;get first char of line + ani 7FH ;mask + cpi MINDIC ;done? + brz dispm4 + call expand ;expand line pted to by HL + push h ;save ptr to next line + xchg ;HL pts to expanded line + call lprintx ;print line pted to by HL ending in + pop h ;pt to next line + br dispm3 +; +; Done with Menu Display -- Page it out +; +dispm4: + call lskip ;skip to first char of next line (option char) + shld optstrt ;set start address of options + lda pagcnt ;number of remaining lines + mov b,a ;count in B + ora a ;ok? + brz dispm6 ;don't do anything if already there + lda ppflag ;page? + ora a ;0=No + brz dispm6 +; +; Page Loop for Menu Display +; +dispm5: + call crlf ;new line + bjnz dispm5 +; +; Determine if Another Menu Follows +; +dispm6: + xra a ;A=0 + sta nmenfl ;set for no next menu + mov a,m ;ok? + ani 7FH ;mask + cpi CTRLZ ;error if EOF + jz mstrerr + cpi MINDIC ;next menu? + brnz dispm7 + inx h ;double indicator if end + mov a,m + cpi MINDIC ;end? + brz dispm9 +; + if sysmenu + cpi RSM ;system menu = no next menu + brz dispm9 + endif ;sysmenu +; + mvi a,0FFH ;set next menu + sta nmenfl + br dispm9 +dispm7: + call lskip ;skip to next line + br dispm6 + +; +; Skip over current menu so it is not displayed +; +dispm8: + call lskipt ;skip to beginning of command + brnz dispm8 + call lskip ;skip over end of display indicator + shld optstrt ;set pointer to options + br dispm6 ;determine if next menu available +dispm9: + +; +; Ready for Option Input +; The following Flags/Values are now set: +; CPFLAG -- Display Command Flag (0=No, 0FFH=Yes) +; DPFLAG -- Display Menu Flag (0=No, 0FFH=Yes) +; OPTSTRT -- Address of First Menu Option +; NMENFL -- 0 if no next menu, 0FFH if next menu +; MSTART -- Start Address of MINDIC Before Menu Display +; (MSTART)=MFIRST with MSB Set +prompt: + call stndout ;begin standout + mvi a,0ffh + sta pagcnt ;turn off paging + sta dpflag ;turn on future menu displays + call retud ;get DU + mov a,b ;print D + adi 'A' + call cout + mov a,c ;print U + call pafdc + call eprint + db '> Command (CR=Menu',0 + lda cpmok ;OK to return to ZCPR3? + ora a ;0=No + cnz prmptc + lhld cstart ;pt to first char + mov a,m ;get it + ani 7FH ;mask + cpi MFIRST + cnz prmptf ;print previous menu prompt if not first menu + lda nmenfl ;next menu available? + ora a ;0=No + cnz prmptn ;print next menu prompt + call eprint + db ') - ',0 + call stndend ;end standout +prompt1: + call cin ;get response + call caps ;capitalize + mov b,a ;result in B + +; +; Check for CR +; + cpi CR ;? + jz dispm2 ;reprint menu if so + +; +; Check for Reboot +; + lda cpmok ;ok to abort? + ora a ;0=No + brz prmpt0 + mov a,b ;get command + cpi CTRLC ;reboot? + jz shpop ;pop shell stack and return to OS if so + +; +; Check for Command to Return to First Menu +; +prmpt0: + mov a,m ;get it + ani 7FH ;mask + cpi MFIRST + brz prmpt1 + mov a,b ;get command + cpi RFM ;return to first menu? + brnz prmpt1 + lhld mstart ;pt to first menu + mvi b,1 ;shell message 1 is menu number + xra a ;A=0=menu 0 + jmp putshm ;reenter shell at first menu + +; +; Check for Command to go to Next Menu +; +prmpt1: + lda nmenfl ;next menu available? + ora a ;0=No + brz prmpt2 + mov a,b ;get command + cpi RNMP ;goto next menu? + brz rnmx + cpi RNM ;goto next menu? + brnz prmpt2 +rnmx: + mvi b,1 ;shell message 1 is menu number + call getshm ;increment menu number + inr a + jmp putshm ;reenter menu system at new menu + +; +; Check for Command to go to Last Menu +; +prmpt2: + mov a,m ;get menu char + ani 7FH ;at first menu? + cpi MFIRST + brz prmpt3 ;skip if at first menu + mov a,b ;get command + cpi RLMP ;goto last menu? + brz lstmnu + cpi RLM ;goto last menu? + brnz prmpt3 +lstmnu: + mvi b,1 ;shell message 1 is menu number + call getshm ;decrement menu number + dcr a + jmp putshm ;reenter shell at last menu + +; +; Check for Command to goto System Menu +; +prmpt3: + if sysmenu +; + lda smenfl ;system menu available? + ora a ;0=No + brz prmpt4 + mov a,b ;get command + cpi RSM ;system menu? + brnz prmpt4 + call password ;prompt for and get password + jnz prompt ;reprompt if error + lhld smenadr ;get address of system menu + lda smeno ;set system menu number + mvi b,1 ;shell message 1 is menu number + jmp putshm ;reenter shell at system menu +; + endif ;sysmenu +; +; This is where additional functions may be added +; +prmpt4: + +; +; Check for Option Letter +; + lhld optstrt ;pt to first option char +prmptx: + mov a,m ;get it + call caps ;capitalize + cpi MINDIC ;at next menu? + brz prmpter + cmp b ;match user selection? + brz prmptd + call lskip ;skip to next line + br prmptx + +; +; Invalid Option +; +prmpter: + call eprint + db BEL,0 + jmp prompt1 + +; +; Process Option +; +prmptd: + mov a,b ;output user selection + call cout + mvi b,0 ;shell message 0, bit 7 = wait flag + call getshm + ani 7FH ;set no wait + call putshm + inx h ;pt to first letter of command + mov a,m ;get it + cpi MCMD ;invoke other menu? + jz mchcmd ;menu change command + cpi WOPTION ;turn on wait? + brnz prmptg + mvi b,0 ;shell message 0, bit 7 = wait flag + call getshm + ori 80h ;set wait flag + call putshm ;set shell message + inx h ;skip option char +prmptg: + call expand ;expand line, DE pts to result +; +; Run Command Pted to by DE +; +runcmnd: + call getcl1 ;get address of command buffer + mov b,h ;... in BC also + mov c,l + mvi a,4 ;HL=HL+4 for address of first char + add l + mov l,a + mov a,h + aci 0 + mov h,a + mov a,l ;store address + stax b + inx b + mov a,h + stax b +; +; Copy Command Line in DE into Buffer in HL +; +cmdcpy: + ldax d ;get command letter + call caps ;capitalize it + ora a ;done? + brz ccpyd + cpi CR ;done? + brz ccpyd + cpi PCHAR ;prompt? + brz ccpyp + mov m,a ;store it + inx h ;pt to next + inx d + br cmdcpy +ccpyd: + mvi m,0 ;store ending 0 + jmp cmddisp ;optionally display command +; +; Prompt User for Input and Accept It +; +ccpyp: + inx d ;pt to first char of prompt + call crlf ;new line +ccpyp1: + ldax d ;get char + cpi PCHAR ;end of prompt? + brz ccpyp2 + cpi CR ;new line? + brz ccpyp3 + call cout ;echo char + inx d ;pt to next char + br ccpyp1 ;continue looping +ccpyp2: + inx d ;pt to char after closing PCHAR +ccpyp3: + push d ;save ptr to next char + xchg ;DE pts to buffer + mvi a,0FFH ;capitalize input from user + lhld ibuff ;input line buffer + call bline ;get input from user + xchg ;HL pts to buffer, DE pts to user input +cmdlp: + ldax d ;get char from user + ora a ;end of input? + brz cmdlp1 ;store rest of line + mov m,a ;store char + inx h ;pt to next + inx d + br cmdlp +cmdlp1: + pop d ;DE pts to next char, HL pts to buffer + br cmdcpy ;resume copying +; +; Check for Display of Loaded Command and Do So if Set +; +cmddisp: + lda cpflag ;display command? + ora a ;0=No + rz ;return to OS if so to run command + call crlf ;new line + call getcl1 ;pt to first char + mov e,m ;get low-order address + inx h + mov d,m ;get high-order address + xchg ;HL pts to first char +cmdd1: + mov a,m ;get char + cpi CMDSEP ;done if command separator + rz + inx h ;pt to next + call cout ;print char + br cmdd1 + +; +; Menu Change Command -- Jump to Specified Menu +; +mchcmd: + inx h ;pt to menu number + call eval ;convert to decimal number in A + sta menuno ;save menu number + call mchc0 ;skip to desired menu to check for it + lda menuno ;get menu number + mvi b,1 ;menu number is shell message 1 + jmp putshm ;set message and reenter shell + +; +; Entry Point if MENU is Reinvoked +; +mchc0: + mov b,a ;menu number in B + inr b ;add 1 for initial offset + lhld mstart ;pt to first menu +mchc1: + dcr b ;count down + rz ;done if found +mchc2: + call lskipt ;skip to next line + brnz mchc2 ;continue if not end of menu display +mchc3: + call lskipt ;skip to next line + brnz mchc3 ;continue if not at end of menu commands + inx h ;end of MENU.MNU? + mov a,m ;yes if double MINDIC + ani 7FH ;mask + cpi MINDIC + brz mchcerr ;error if so + dcx h ;pt to first char + br mchc1 ;continue +; +; Premature End of Menu File +; +mchcerr: + pop psw ;clear stack + jmp mstrerr ;menu structure error + +; +; Print Line pted to by HL Ending in +; Decrement PAGCNT +; +lprintx: + call lprint ;print without + jmp crlf ;do +; +; Print Line Pted to by HL; Decrement PAGCNT +; +lprint: + mvi b,0 ;set tab counter +lprnt0: + mov a,m ;get char + inx h ;pt to next + ani 7FH ;mask MSB + cpi DIM ;goto standout mode? + brz lprnt3 + cpi NOTDIM ;end standout mode? + brz lprnt4 + cpi TAB ;tabulate? + brz lprnt2 + cpi CR ;done? + brz lprnt1 + call cout ;print + inr b ;incr tab counter + br lprnt0 +lprnt1: + inx h ;pt to first char of next line + lda pagcnt ;count down pages + dcr a + sta pagcnt + rnz + call getnlines ;get line count in A + sta pagcnt + call eprint + db CR,LF,'Pause -',0 + br sak1 +lprnt2: + mvi a,' ' ;print + call cout + inr b ;incr tab counter + mov a,b ;done? + ani 7 ;every 8 + brnz lprnt2 + br lprnt0 +lprnt3: + call stndout ;enter standout mode + br lprnt0 +lprnt4: + call stndend ;end standout mode + br lprnt0 +; +; Strike Any Key Message +; +sak: + mvi b,0 ;clear any pending wait + call getshm + ani 7FH ;mask MSB + call putshm +sak1: + call stndout ;goto standout + call eprint + db ' Strike Any Key - ',0 + call stndend ;exit standout + call cin ;get response + call crlf ;new line + ret + +; +; Prompt for, input, and check password (only one chance) +; If accepted, return with Zero Flag Set; if not, return with NZ +; + if sysmenu +password: + call eprint + db CR,LF,'Pass? ',0 + lhld ibuff ;pt to input line buffer + xra a ;don't capitalize user input + call bline ;get line from user + lxi d,ppass ;pt to system password +pass1: + ldax d ;get sys pass char + cmp m ;ok? + brnz passerr ;error if no match + inx h ;pt to next + inx d + ora a ;end of strings? + brnz pass1 + ret ;return with zero set to show match +passerr: + call eprint + db CR,LF,' Password Error',0 + call sak1 ;strike any key + call crlf + mvi a,0FFH ;set no zero + ora a + ret + endif ;sysmenu +; +; Skip to Beginning of Next Line and Test First Char for Menu Indicator +; +lskipt: + call lskip ;skip + mov a,m ;get char + ani 7FH ;mask + cpi MINDIC ;test + ret + +; +; Skip to Beginning of Next Line +; +lskip: + mov a,m ;get char + ani 7FH ;mask out MSB + inx h ;pt to next + cpi LF + brnz lskip + ret + +; +; Print ZCPR3 Return Prompt +; +prmptc: + call eprint + db ', ^C=Z3',0 + ret +; +; Print First/Last Menu Chars +; +prmptf: + call eprint + db ', ',RFM,'=1st Menu, ',RLM,'=Prev Menu',0 + ret +; +; Print next menu message +; +prmptn: + call eprint + db ', ',RNM,'=Next Menu',0 + ret + +; +; Menu Structure Error -- FATAL +; This message is printed to indicate an error in the structure of +; the MENU.MNU file. +; +mstrerr: + call eprint + db CR,LF,' Structure Error',0 + jmp shpop + +; +; Expand Line Pted to by HL into Scratch Area +; Return with HL pting to next line, DE pting to current line +; +expand: + xchg + lhld expline ;pt to buffer + xchg +exp1: + mov a,m ;get next char + ani 7fh ;mask MSB + stax d ;store char + cpi CR ;end of line? + jz expx + inx h ;pt to next + inx d + cpi VARFLAG ;variable follows? + brnz exp1 +; +; Variable Identified - Process it +; + mov a,m ;get next char + inx h ;pt to next + cpi VARFLAG ;one variable char? + brz exp1 ;resume if double VARFLAG + dcx d ;pt to variable position + call caps ;capitalize variable + cpi 'D' ;current disk? + brz expdisk + cpi 'U' ;current user? + brz expuser + cpi 'F' ;filename.typ? + brz expfile + cpi 'N' ;filename? + brz expname + cpi 'T' ;filetype? + brz exptype + br exp1 ;resume expansion +; +; Expand Exit +; +expx: + inx h ;pt to line feed + mov a,m ;get it + cpi LF ;line feed? + brnz expx1 + inx h ;pt to char after line feed +expx1: + xchg ;DE pts to next line + lhld expline ;pt to expanded line + xchg ;HL pts to next line, DE pts to expanded line + ret + +; +; Expand Disk +; +expdisk: + call retud ;get disk in B + mov a,b ;get disk number (A=0) + adi 'A' ;convert to ASCII + stax d ;store letter + inx d ;pt to next + br exp1 ;resume expansion +; +; Expand User +; +expuser: + call retud ;get user in C + mov a,c ;get user number + mvi b,10 ;subtract 10's + mvi c,'0' ;set char +expu1: + sub b ;-10 + brc expu2 + inr c ;increment digit + br expu1 +expu2: + add b ;+10 + adi '0' ;convert 1's to ASCII + mov b,a ;B=1's + mov a,c ;get 10's + stax d ;store 10's + inx d + mov a,b ;get 1's + stax d ;store 1's + inx d ;pt to next + br exp1 ;resume +; +; Expand File +; +expfile: + call getfnum ;get file number + jz exp1 ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + call putn ;put file name + mvi a,'.' + stax d ;store dot + inx d ;pt to next + call putt ;put file type + pop h ;restore ptr + jmp exp1 ;resume +; +; Expand Name +; +expname: + call getfnum ;get file number + jz exp1 ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + call putn ;put file name + pop h ;restore ptr + jmp exp1 ;resume +; +; Expand Type +; +exptype: + call getfnum ;get file number + jz exp1 ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + mvi a,8 ;add 8 + add l + mov l,a + mov a,h + aci 0 + mov h,a + call putt ;put file type + pop h + jmp exp1 ;resume +; +; Pt to File Name whose Number (1-4) is in A +; +ptfn: + mov b,a ;get number in B + call getfn2 ;pt to file name 2 + push d ;save DE + mov a,b ;file 0? + ora a + brz ptfnx + lxi d,11 ;size of file name and type +ptfn1: + dad d ;pt to next + bjnz ptfn1 +ptfnx: + pop d ;restore DE + ret +; +; Put File Name pted to by HL +; +putn: + mvi b,8 ;8 chars + br putc +; +; Put File Type pted to by HL +; +putt: + mvi b,3 ;3 chars +; +; Copy Chars from HL to DE for up to B bytes -- flush if space +; +putc: + mov a,m ;get next char + cpi ' ' ;skip spaces + brz putc1 + stax d ;put next char + inx d ;pt to next +putc1: + inx h ;pt to next + bjnz putc + ret + +; +; Get File Number (1 to 4) +; If valid number, return with value in A and HL pting to next char +; If not valid, return with Z and HL pting to last char (F, N, T) +; +getfnum: + mov a,m ;get char + sui '1' ;convert + brc getfne ;error + cpi 4 ;range? + brnc getfne + inx h ;pt to next char + ret ;NZ from CPI 4 +getfne: + dcx h ;error return + xra a + ret + +; +; Return Number of Lines on CRT in A +; +getnlines: + push h ;save HL + call getcrt ;get CRT info + inx h ;pt to number of lines + mov a,m ;get count + pop h ;restore HL + dcr a ;subtract 1 for footer + ret + +; +; Convert char string pted to by HL into decimal number in A +; On Entry, HL pts to first digit char +; On Exit, HL pts to after last digit char and A=number +; +eval: + push b ;save BC + mvi b,0 ;set value +eval1: + mov a,m ;get digit + sui '0' ;convert to binary + brc eval2 + cpi 10 ;range? + brnc eval2 + inx h ;pt to next digit + mov c,a ;new digit in C + mov a,b ;multiply B by 10 + add a ;*2 + add a ;*4 + add b ;*5 + add a ;*10 + add c ;add in new digit + mov b,a ;result in B + br eval1 +eval2: + mov a,b ;result in A + pop b ;restore ptr + ret + +; +; These buffers overlay the scratch area to save space +; +optstrt equ scratch ;Address of First Option in Current Menu +mstart equ optstrt+2 ;Address of First Menu +cstart equ mstart+2 ;Address of Current Menu +smenfl equ cstart+2 ;System Menu Available Flag (0=No) +smeno equ smenfl+1 ;System Menu Number +smenadr equ smeno+1 ;Address of First Byte of System Menu +nmenfl equ smenadr+2 ;Next Menu Available Flag (0=No) +menuno equ nmenfl+1 ;Number of Menu +pagcnt equ menuno+1 ;Paging Counter +cflag equ pagcnt+1 ;Display Command Line Flag +dflag equ cflag+1 ;Display Menu Flag +pflag equ dflag+1 ;Paging Flag + +; +; Buffers +; +ibuff: + ds 2 ;input line buffer +expline: + ds 2 ;scratch area to expand lines in +cpflag: + ds 1 ;Temp Display Command Line Flag +dpflag: + ds 1 ;Temp Display Menu Flag +ppflag: + ds 1 ;Temp Paging Flag +cpmok: + ds 1 ;OK to Return to ZCPR3 (0=No) +tnum: + ds 41 ;space for chars and ending 0 +shdisk: + db 'A' ;disk to return to + db '00' ;user to return to + db ':;' ;log in and next command +shname: + db 'MENU ' ;program name (filled in at installation) +shfile: + ds 13 ;file name (12) and ending 0 + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/MENUCK.COM b/Images/Source/hd0/s0/u15/MENUCK.COM new file mode 100644 index 0000000000000000000000000000000000000000..73eda193bffe93c866400a85685b858d256a1456 GIT binary patch literal 2560 zcmai0Yit|G5nhVCr%cAAY6DWxcI7iro0MovP8yW8$tZd?XiN%;tUTaHDCw*+mPmu5 zY|)lZPJ^Ir{=|Uurv=g=K!KzU97^fq;wTBqJJaADx^8KJib13WSb;_xHb01#KYQ-% zQL60#MGxfM&g?wDnO#zEcf4?DI6C1#|MCkC@+C*E@JENE#|FQT@r0b7Po$E#FL)4z zP9O`Lk2LWiXvchfXJEI@zM z@&C}o^tq?`Uk68{$B^MYj>tc`ZW$>S)~-1U-rq2F)=7RO=3yu2BO|<7X{BR_z|m9& zkE9lo)5stzF%V6$y37l0mSi4p zBYiIYsWwRg=0aQOW9BgEg3R95UV;tSwLv^8Cl_!F$t|P+Z$u*E;*9|k5VNGgheNRN zomGnM0+*A6KVi% zm&@F}Bq{7cC~?BvaG|N9FSn5^^72JZtOr z;3pO`Si;fRc&h;v#DU3FI+IAwApNGZ70I@VF3e5JX^cYa0L(f=UKbz=+2_)Jz3qN1 zEziX>3uze-$42mQatd0Sk<;=t^<+ufPn;y;GGBL+IR>~7ostrOw|^_haB>=_PPg)F zji2A|76s&2nWf)q|8@e5(G=2=iyWemVjIDGWy9z+gqk0EdPt~-F`%zs;VDo1T!k(d zB}>%$0FW+&_I%7GS$oYBE)Ygs_v;zTofV>sbT{I%hA25k$%y%>%ZgGm4kXZ|fKJ5I ziTLC!6l}M1A06bqJ$R@GAM3#*JviEfq08g@aW6&|(4z zN`@#IqvSatTLZBjvNb~?j20x6O^_N(m zWJUgPj%BnlmhMV=lC5>;xJLkwGI^CPRSoh1XL`80M1IeW!dMMde#LG){^709SSSM^ z!$mUB-LA21ur#l;z*II^iP5gI^j6$ptK=pZ+d(4SHEOcP<&0|X2zCBf+xh1$=Upnq z=;)|HMO~k2h@&@Q6BJA@l(iFT(7#~8?BOo(0Av;1C{}mn2xlEBTBnLuuxN#fR!`A7 zT(rVPwP=0U$QcC(@+wf3Im<~jue02bNK`xtDjr?QA#=+Z`cx#!9 z7>_}xDAMrp8EiY8wKq8`fwuWNSSKtQ?M=>5d^FczaK;xR08lIY8=NE|j|Zgr=RFu+ zjXZRw;6+H;I9M6vA>~27S(`kwe}CuxdbRP&sS7vJvyv|H7xPA;T=P6cCPeG5_B{MJ zsQL?hu3Gwv+_QUILw|;^6+Am_)_j%E(L+-3d<}RNmYd|K{H6g(dXOTi=9j!Bn4j@G zh$UEV^ExDA8ob3(!kdKGf6jXl5I20YstF5wb%z@b^Or|oj@cI&qis?}C<#(+?sl-# zL=adJ$c=+=P8*P_2VJgo2s`w4;nJzBs$t;+6AKrO-6(6TTr`?cB#ZR#2=>C^-T5tY zT=4$QN$E7ARHSs-R)^vn;Bxs&YUyV)l{4V?q_F%-YU#BZ@Vz3enkzyW>j9Ca?%_?d zLi!uRc6RU3?B01WyEX9g%T{(eWT%4%$o>8l0W&!2n?g7U8}K(_Q=k>Y&%TAP2Sk{m zO~Gh}-LM%JY1xK_Zv{jPnLs#7cuGV{+(4Sm@JXt6<8fP=)*bUZP;iGgB$oefm)L~H z(@AQ6+q(--@dp8tR1kO>N^!*;9)BKov6PjLV5Aq*2O>FIb}5cpNq?? QSrPXJQN#F)`2XYo2lxCMmH+?% literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/MENUCK.MAC b/Images/Source/hd0/s0/u15/MENUCK.MAC new file mode 100644 index 00000000..747fb53b --- /dev/null +++ b/Images/Source/hd0/s0/u15/MENUCK.MAC @@ -0,0 +1,546 @@ +; +; PROGRAM: MENUCK +; AUTHOR: RICHARD CONN +; VERSION: 1.0 +; DATE: 18 May 84 +; PREVIOUS VERSIONS: None +; DERIVATION: MCHECK 1.1 (6 Jan 83) +; +VERS EQU 10 ;VERSION NUMBER +z3env SET 0f400h + +; +; MENUCK is used to check the syntax of a MENU.MNU file for the ZCPR3 +; menu processor, MENU. MENU was optimized for size and runtime speed, and +; I tried to keep the size under 2K (and succeeded, for that matter). In +; keeping MENU small, the error diagnostics it gives are quite limited, with +; a variety of errors producing the message "Str Err" for MENU.MNU +; structure error. +; +; MENUCK is intended to be used to check the syntax and other features +; of a user's MENU.MNU before allowing MENU to run with it. In this way, +; many errors may be caught before the MENU.MNU file comes into common use, +; and there is plenty of space for informative diagnostics. +; + +; +; MENU Constants +; +MCMD EQU ':' ;Menu Jump Command +RSM EQU '$' ;System Menu Indic +MINDIC EQU '#' ;Menu Indic +GOPTION EQU '-' ;Global Option Indic +COPTION EQU 'C' ;Option chars +DOPTION EQU 'D' +POPTION EQU 'P' +XOPTION EQU 'X' +VARFLAG EQU '$' ;Variable Flag + +; +; CP/M Constants +; +bentry equ 5 ;BDOS Entry +fcb equ 5ch ;FCB +tbuff equ 80h ;Temp I/O Buffer +cr equ 0dh +lf equ 0ah +EOF equ 'Z'-'@' ;^Z=EOF + +; +; Externals +; + ext z3init,zfname,z3log + + ext caps,crlf,eval10,retud + ext f$open,f$close,f$read + ext print,cout + ext moveb + ext phldc,padc,pfn2,pafdc + ext codend + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + + call print + db 'MENUCK Version ' + db (vers/10)+'0','.',(vers mod 10)+'0',0 + + lda fcb+1 ;get first char + cpi ' ' ;no file name? + jz help + cpi '/' ;option? + jnz start1 +; +; Print Help Message +; +help: + call print + db cr,lf,'Syntax:' + db cr,lf,' MENUCK dir:filename.typ <-- Check File' + db cr,lf,' MENUCK dir:filename <-- Check filename.MNU' + db 0 + ret + +; +; Begin serious processing -- locate the file pted to by HL +; +start1: + lxi d,fcb ;pt to FCB + call z3log ;log into indicated FCB + +; +; Set File Type to MNU if not specified +; +start2: + lxi h,fcb+9 ;pt to file type + mov a,m ;get first char + cpi ' ' ;set type if + jnz start3 + push b ;save BC + lxi d,mnutyp ;set type to MNU + xchg + mvi b,3 ;3 bytes + call moveb + pop b ;get BC +; +; Try to Open the File +; +start3: + lxi d,fcb ;prepare to open file + xra a ;A=0 to select current disk + stax d + call f$open ;open file + jz readfile ;read in file if OK + call print + db cr,lf,' File Not Found',0 + ret +; +; Read in File +; +readfile: + call codend ;get address of first block +readloop: + lxi d,fcb ;read block + call f$read ;do it + ora a ;check for error + jnz readdone + lxi d,tbuff ;pt to block just read in + mvi b,128 ;128 bytes +readmove: + ldax d ;get byte + ani 7fh ;mask MSB + mov m,a ;put byte + inx h ;pt to next + inx d + dcr b ;count down + jnz readmove + xchg ;DE pts to next block + lhld bentry+1 ;get address of BDOS + mov a,h ;check for possible overflow + sui 10 ;10 pages below BDOS is limit + cmp d ;within range? + xchg ;HL pts to next block + jnc readloop ;continue read if within range + call print + db cr,lf,' TPA Overflow -- MENU File is Too Big',0 + ret +; +; Read is Done -- Store Ending ^Z and Set Initial Values +; +readdone: + mvi m,EOF ;Store ^Z to ensure EOF + lxi d,fcb ;Close File + call f$close + mvi a,0ffh ;A = -1 + sta menunum ;set menu number + sta maxnum ;set max number of all menus + lxi h,0 ;HL=0 + shld errors ;Set Error Count to 0 + inx h ;HL=1 + shld linenum ;Set Line Number to 1 +; +; Count Number of Menus +; + call codend ;Pt to First Byte + mov a,m ;get first byte +; +; Skip to Beginning of Menu Display +; +mdskip: + cpi EOF ;EOF? + jz mdone + cpi MINDIC ;beginning of display? + jz mcgo ;now go skip commands + call lskip ;skip to next line + jmp mdskip +mcgo: + inx h ;pt to char after MINDIC + mov a,m ;another MINDIC? + cpi MINDIC + jz mdone ;done if 2 in a row + lda maxnum ;get menu number count + inr a ;found another one + sta maxnum +mcskip: + call lskip ;skip to next line + jz mdone ;done if premature EOF + cpi MINDIC ;end of display? + jnz mcskip + inx h ;pt to char after MINDIC + mov a,m ;get it + jmp mdskip +; +; Check for Valid First Character +; +mdone: + call print + db cr,lf,'Menu Syntax Check on ',0 + call retud ;get dir + mov a,b ;get disk + adi 'A' + call cout + mov a,c ;get user + call pafdc + mvi a,':' + call cout + lxi d,fcb+1 ;pt to FCB + call pfn2 + call print ;Print Header + db cr,lf + db cr,lf,' Line Comment/Error Message' + db cr,lf,' ---- ---------------------',0 + + xra a ;set no global option + sta gopt + call codend ;get address of first byte + mov a,m ;get first char + cpi GOPTION ;global options? + jnz newmenu ;process globals + mvi a,0ffh ;set global option + sta gopt + call lprint + db '** Global Options Detected **',0 + call optchk ;check options + xra a ;set no global option + sta gopt + call nxtline ;advance to next line +; +; This is the main entry point for processing a menu +; +newmenu: + mov a,m ;get Menu Indicator + cpi MINDIC ;must be MINDIC + jz nm1 + call newerr ;add to error count + call lprint + db ' New Menu Expected, But ',MINDIC,' NOT Found -- ' + db 'Aborting',0 + jmp errxit +; +; Print that we have a new menu +; +nm1: + call lprint + db '** Menu Number ',0 + lda menunum ;increment menu number + inr a + sta menunum + call padc + call optchk ;check options +; +; Skip Thru Display +; +nm2: + call nxtline ;skip to next line + jnz nm2a ;continue if no EOF +earlyeof: + call newerr ;add to error count + call lprint + db ' Premature EOF Encountered',0 + jmp errxit +nm2a: + cpi MINDIC ;Menu Indicator? + jnz nm2 ;Continue +; +; Move Thru Menu Commands +; +nm3: + call mcmd1 ;check Menu Command Line + jz earlyeof + call lcheck ;check line + cpi MINDIC ;check for menu indicator + jnz nm3 ;continue until menu indicator encountered + inx h ;check for 2 indicators in a row for end + mov a,m ;get 2nd char + dcx h ;back up in case it is not + cpi MINDIC ;2 in a row? + jnz newmenu ;process as new menu if not +errxit: + call lprint + db '** End of Menu Check **',cr,lf,' ',0 + lhld errors ;check error count + mov a,h ;check for Zero + ora l + jnz err1 + call print + db 'No',0 + jmp err2 +err1: + call phldc ;print as decimal +err2: + call print + db ' Errors Detected',0 + ret + +; +; Utilities +; + +; +; LPRINT -- Print "Line # "+text +; +lprint: + call crlf ;new line + push h ;save HL + lhld linenum ;get line number + call phldc ;print as decimal + pop h ;restore HL + mvi a,' ' ;print + call cout + jmp print ;print text +; +; NXTLINE -- Advance to next line, check for EOF, and increment Line Number +; LSKIP -- Advance to next line and check for EOF +; Return with HL pting to first char of next line and Z Set if EOF +; +nxtline: + push h ;increment line count + lhld linenum ;add 1 + inx h + shld linenum + pop h ;fall thru to skipping +lskip: + mov a,m ;get char + cpi EOF ;EOF? + rz + inx h ;pt to next + cpi lf ;line feed? + jnz lskip ;continue if not + mov a,m ;get first char of next line + cpi EOF ;check for EOF + ret +; +; MCMD1 -- Check Menu Line, check for EOF, and increment Line Number +; Return with HL pting to first char of next line and Z Set if EOF +; +mcmd1: + mov a,m ;get char + cpi EOF ;EOF? + jz mcmdx + inx h ;pt to next + cpi VARFLAG ;variable? + jz mcmd2 + cpi lf ;line feed? + jnz mcmd1 ;continue if not +mcmdx: + push h ;increment line count + lhld linenum ;add 1 + inx h + shld linenum + pop h ;fall thru to skipping + mov a,m ;get first char of next line + cpi EOF ;check for EOF + ret +; +; Check Variable +; +mcmd2: + mov a,m ;get char + ani 7fh ;mask + call caps ;capitalize + inx h ;pt to next + cpi VARFLAG ;OK if double VARFLAG + jz mcmd1 + cpi 'D' ;OK if D + jz mcmd1 + cpi 'U' ;OK if U + jz mcmd1 + cpi 'F' ;filename.typ? + jz mcmd3 + cpi 'N' ;filename? + jz mcmd3 + cpi 'T' ;filetype? + jz mcmd3 +; +; Invalid Variable +; + dcx h ;pt to previous (bad char) + push psw ;save char + call lprint + db ' Variable Error (Not $, D, U, F, N, or T) - ',0 + pop psw ;get char + call cout ;print it + call newerr ;increment error count + jmp mcmd1 +; +; Digit from 1 to 4 should follow +; +mcmd3: + mov a,m ;get next char + inx h ;pt to next + ani 7fh ;mask and cap + call caps + cpi '1' ;must be from 1 to 4 + jc mcmd4 + cpi '5' + jc mcmd1 +; +; Invalid Digit +; +mcmd4: + dcx h ;pt to offending char + push psw + call lprint + db ' Invalid Digit for F, N, or T Variable (not 1-4) - ',0 + pop psw + call cout + call newerr ;increment error count + jmp mcmd1 + +; +; OPTCHK -- Check Line Pted to by HL for Valid GOPTION and MINDIC options +; Do Not Affect HL +; Print Error Message and Character if Invalid Option Found +; +optchk: + push h ;save HL + push b + inx h ;skip indicator +optclp: + mov a,m ;get char + call caps ;capitalize + inx h ;pt to next + cpi cr ;EOL? + jz optcdn + mov b,a ;char in B + lda gopt ;global option? + ora a ;0=no + mov a,b ;get char + jnz optcl1 ;skip RSM test if it is global + cpi RSM ;System Menu? + jz optclp +optcl1: + cpi COPTION ;check options + jz optclp + cpi DOPTION + jz optclp + cpi POPTION + jz optclp + cpi XOPTION + jz optclp + call newerr ;increment error count + call lprint + db ' Invalid Option: ',0 + mov a,b ;get char + call cout ;print char + jmp optclp +optcdn: + pop b + pop h ;restore ptr + ret +; +; Increment Error Count +; +newerr: + push h ;save HL + lhld errors ;increment error count + inx h + shld errors + pop h ;restore HL + ret +; +; Check Line, especially looking for Menu Jump +; +lcheck: + push h ;save ptr to first char + inx h ;pt to 2nd char + mov a,m ;get it + cpi MCMD ;menu jump? + jnz lchk1 + inx h ;pt to menu number + call eval10 ;convert to binary in DE + mov a,d ;D must be 0 + ora a ;check + jz lchk0 +lchker: + call newerr ;increment error count + call lprint + db ' Menu Number Out of Range',0 + jmp lchk1 +lchk0: + lda maxnum ;get max menu number + cmp e ;check for range + jc lchker +lchk1: + pop h ;restore ptr + mov a,m ;get first char in line + ret +; +; Skip HL over Blanks +; +sblank: + mov a,m ;get char + inx h ;pt to next + cpi ' ' ;blank? + jz sblank ;continue skipping + dcx h ;pt to non-blank + ret + +; +; Buffers +; +mnutyp: + db 'MNU' +errors: + ds 2 ;error count +linenum: + ds 2 ;current line number +menunum: + ds 1 ;current menu number +maxnum: + ds 1 ;max menu number +gopt: + ds 1 ;global option flag + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/MKDIR.COM b/Images/Source/hd0/s0/u15/MKDIR.COM new file mode 100644 index 0000000000000000000000000000000000000000..de53d4a642c042c7a84651d4d57019879727cd46 GIT binary patch literal 5376 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/MKDIR.MAC b/Images/Source/hd0/s0/u15/MKDIR.MAC new file mode 100644 index 00000000..8bd33108 --- /dev/null +++ b/Images/Source/hd0/s0/u15/MKDIR.MAC @@ -0,0 +1,1020 @@ +; +; Program: MKDIR +; Author: Richard Conn +; Version: 3.2 +; Date: 20 Nov 84 +; Previous Versions: 3.1 (28 Aug 84), 3.0 (5 Mar 84) +; +version equ 32 + +; +; MKDIR is used to edit existing named directory files and to +; create new ones. +; + +; +; Basic Equates +; +z3env SET 0f400h ;address of ZCPR3 Environment +; +fcb equ 5ch +tbuff equ 80h +cr equ 0dh +lf equ 0ah + +; +; SYSLIB Routines +; + ext print,putud,getud,logud,retud,zfname,getenv + ext cout,crlf,compb,capine,pfn1 + ext f$open,f$read,f$close + ext f$make,f$write,initfcb,f$delete,f$exist,gfa + ext bbline,padc,codend,sksp + ext hmovb,hfilb + ext sort + ext z3init,getndr,getwhl + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env +; +; Print Banner +; + call print ;check quiet flag + db 'MKDIR, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db cr,lf,0 +; +; Check for Wheel Powers +; + call getwhl ;get wheel byte + jnz ndir0 + call print + db ' Permission to Run MKDIR Denied - Not Wheel',0 + ret +; +; Check for Availability of Named Directory +; +ndir0: + call getndr ;get location of directory + jnz ndir1 + call print + db ' Named Directory Buffer Not Available',0 + ret +ndir1: + xra a ; A=0 + sta chflag ; set no changes + sta flflag ; set no file loaded + sta ecount ; set no entries + lda fcb+1 ; check for help + cpi '/' + jnz start1 + call print ; print help message + db cr,lf,' MKDIR is used to read and edit named directory files.' + db cr,lf,'It is invoked by the following forms --' + db cr,lf + db cr,lf,' MKDIR <-- Enter System' + db cr,lf,' MKDIR dir:filename.typ <-- Define File First' + db cr,lf,' MKDIR // <-- Print this Help' + db cr,lf,0 + ret + +start1: + call putud ; save current dir for quick return + lxi h,dnfile ; set default file name + lxi d,dfcb+1 ; copy into fcb + mvi b,11 ; 11 chars + call hmovb + lxi h,fcb+1 ; pt to fcb + mov a,m ; get name + cpi ' ' ; no entry? + jz mkdir ; enter system + dcx h ; pt to name + lxi d,dfcb ; store name in DFCB + mvi b,16 ; copy 16 chars + call hmovb + jmp loadf0 ; enter load file + +; +; Main Entry Point for Loading a File +; +loadfile: + lxi d,dfcb ; set up default file name + call zfname ; extract info +loadf0: + call retud ; get UD in CB + lda dfcb ; get disk + ora a ; current? + jz loadf1 + dcr a ; A=0 + mov b,a ; disk in B +loadf1: + lda dfcb+13 ; get user + mov c,a ; in C + call logud ; log into UD to begin search +; +; Entry Point for Loading File in DFCB +; +ffile: + lxi d,dfcb ; pt to FCB + call initfcb ; init it + call f$open ; try to open file + jz ffile1 + call print + db cr,lf,'File ',0 + lxi d,dfcb+1 ; print name + call pfn1 + call print + db ' Not Found',0 + jmp mkdir +ffile1: + call getnd ; get max size of file + mov b,a ; ... in B + inr b ; add 1 for overflow + call codend ; pt to scratch buffer +readf: + lxi d,dfcb ; pt to FCB + call f$read ; read next block + jnz readd ; done if EOF + push b ; save count + mvi b,128 ; copy 128 bytes + lxi d,tbuff ; ... from TBUFF + xchg + call hmovb + xchg ; HL pts to next block to copy into + pop b ; get count + dcr b ; count down + jnz readf + call print + db cr,lf,'Named Directory File too Large for System',0 + call getud ; return home + jmp mkdir ; reset parameters +readd: + call f$close ; close file + call getud ; return home +; +; Fill in empty space at end of buffer +; +readd1: + mov a,b ; get count + cpi 1 ; done? + jz readd2 + push b ; save count + mvi b,128 ; fill 128 bytes with 0 + xra a + call hfilb + pop b ; get count + dcr b ; count down + jmp readd1 +readd2: + mvi a,0ffh + mov m,a ; set EOF mark + sta flflag ; set file loaded flag +; +; Determine Entry Count +; + call codend ; pt to first entry + mvi b,0 ; set entry count + lxi d,18 ; size of entry +readd3: + mov a,m ; get first char of next entry + ora a ; done? + jz readd4 + inr b ; increment count + dad d ; pt to next + jmp readd3 +readd4: + mov a,b ; set entry count + sta ecount + jmp mkdir1 ; enter MKDIR +; +; Enter MKDIR System and Init Environ +; Enter at MKDIR if no file loaded, enter at MKDIR1 if file loaded +; +mkdir: + call dinit0 ; init directory + xra a ; A=0 + sta ecount ; set no entries present + sta flflag ; set no file loaded + sta chflag ; set no changes +mkdir1: + call print + db cr,lf,'MKDIR Command (? for Help)? ',0 + call capine ; get command + lxi d,mkdir1 ; set ret address + push d + lxi h,ctable ; scan command table for it + mov c,a ; command in C +mkdir2: + mov a,m ; get command letter + ora a ; end of table? + jz mkdirh + cmp c ; match? + jz mkdir3 + inx h ; skip over address + inx h + inx h + jmp mkdir2 +mkdir3: + inx h ; get address in HL + mov a,m ; low + inx h + mov h,m + mov l,a ; HL is address of routine + pchl ; "call" routine +; +; Print MKDIR Command Help +; +mkdirh: + call print + db cr,lf,'MKDIR Commands are --' + db cr,lf,' C -- Change Directory (Add/Rename/Delete Entries)' + db cr,lf,' I -- Initialize Directory' + db cr,lf,' P -- Print Directory' + db cr,lf,' R -- Read Directory File' + db cr,lf,' S -- Status of MKDIR Environment' + db cr,lf,' W -- Write Directory File' + db cr,lf,' X -- Exit Program' + db cr,lf,0 + ret +; +; Command Table +; +ctable: + db 'C' ; change directory + dw change + db 'I' ; init directory + dw dinit + db 'P' ; print directory + dw pwd + db 'R' ; read file + dw read + db 'S' ; status + dw status + db 'W' ; write file + dw write + db 'X' ; exit + dw exit + db 0 ; end of table +; +; Status +; +status: + call print + db cr,lf,'** MKDIR Status **',cr,lf,cr,lf,0 + call prec ; print entry count + call print + db cr,lf,'Working File Name: ',0 + lxi d,dfcb+1 + call pfn1 + call crlf ; new line + call crlf + lda chflag ; changes made? + ora a + jnz stat1 + call print + db 'No ',0 +stat1: + call print + db 'Changes made to Directory since Startup' + db cr,lf,0 + lda flflag ; file loaded? + ora a ; 0=no + jnz stat2 + call print + db 'No ',0 +stat2: + call print + db 'File has been loaded',cr,lf,0 + ret + +; +; Init Directory +; +dinit: + call print + db cr,lf,' Are you sure you want to Initialize the Directory ' + db '(Y/N/=N)? ',0 + call capine ; get response + call crlf + cpi 'Y' ; Yes is only valid reply + rnz +dinit0: + xra a ; A=0 + sta ecount + cma + sta chflag ; set change flag + call getnd ; get directory size + mov b,a ; ... in B + call codend ; pt to directory +dinit1: + push b ; save counter + xra a ; zero fill + mvi b,128 ; 128 bytes + call hfilb + pop b ; get counter + dcr b ; count down + jnz dinit1 + mvi m,0ffh ; store ending mark + ret +; +; Read File +; +read: + pop psw ; clear stack + call getfname ; get file name + ora a ; none? + jz ffile ; just find default file and load it + jmp loadfile ; parse entry and load file +; +; Get File Name from User +; +getfname: + call print + db cr,lf,'Name of File ( = ',0 + call retud ; get current DU + mov a,b ; print disk + adi 'A' + call cout + mov a,c ; print user + call padc + call print + db ': ',0 + lxi d,dfcb+1 ; print default name + call pfn1 + call print + db ')? ',0 + mvi a,0ffh ; capitalize + call bbline ; get user input + call sksp ; skip to non-blank + mov a,m + ora a ; default? + ret +; +; Write File +; +write: + call getfname ; get file name + jz write1 + lxi d,dfcb ; parse into DFCB + call zfname ; parse file name + call retud ; get current DU + lda dfcb ; get disk + ora a ; current? + jz write0 + dcr a ; adjust for A=0 + mov b,a ; ... in B +write0: + lda dfcb+13 ; get user + mov c,a ; ... in C + call logud ; log into new dir +write1: + lxi d,dfcb ; open file for output + call initfcb + call f$exist ; does file exist? + jz wf0 + call gfa ; get file attributes + ani 1 ; R/O? + jz wf0 + call print + db cr,lf,'File is R/O',0 + jmp getud ; go home +wf0: + call f$make ; open file + inr a ; a was 0ffh if error + jz werr ; write error and abort + call print + db cr,lf,'Writing Directory to Disk ... ',0 + call getnd ; get size of file + mov b,a ; count in B + call codend ; pt to start of buffer +wf1: + push b ; save counter + lxi d,tbuff ; copy into buffer + mvi b,128 ; 128 bytes + call hmovb + lxi d,dfcb ; pt to FCB + call f$write ; write block + pop b ; get ptr + jnz werr + dcr b ; count down + jnz wf1 + lxi d,dfcb ; pt to FCB + call f$close ; close file + call getud ; go home + xra a ; A=0 + sta chflag ; set no changes flag + call print + db 'Done',0 + ret +werr: + call print + db cr,lf,'Error in Disk Write',0 + jmp getud ; go home +; +; Exit from MKDIR +; +exit: + pop psw ; clear stack + lda chflag ; check for any changes + ora a ; 0=No + rz + call print + db cr,lf + db cr,lf,'Directory has changed since last Write' + db cr,lf,'Do you want to write Directory to Disk ' + db '(Y/N)? ',0 + call capine ; get response + call crlf ; new line + cpi 'N' ; no? + cnz write ; write if not No + ret +; +; Change Directory Contents +; +change: + call setduok ; save old DUOK flag and set new one + call print + db cr,lf,'** MKDIR Change Mode **',0 +ch0: + call print + db cr,lf,'Directory Entry (? for Help)? ',0 + mvi a,0ffh ; caps + call bbline ; get user input + call sksp ; skip to non-blank + mov a,m ; get char + ora a ; no input? + jz chprint ; done, so print directory + mov a,m ; get first char + cpi 'X' ; Exit? + jz chexit ; if so, sort and then exit + cpi '/' ; help? + jz chhelp + cpi '?' ; help? + jnz ch1 +chhelp: + call print + db cr,lf + db cr,lf,'MKDIR Change Mode --' + db cr,lf,' You may issue the following commands at this point:' + db cr,lf + db cr,lf,' DU:dirname <-- Create/Rename Dir Entry' + db cr,lf,' DU: <-- Delete Dir Entry' + db cr,lf,' <-- Print Directory' + db cr,lf,' X <-- Exit' + db cr,lf,' ? <-- Print this Help' + db cr,lf,0 + jmp ch0 +chprint: + call dsort ; use dsort routine + call pwd ; use pwd routine + jmp ch0 ; continue +ch1: + lxi d,tfcb ; extract user and disk info as well as name + call zfname ; get info + call retud ; get DU + lda tfcb ; get disk + ora a ; default? + jz ch2 + dcr a + mov b,a ; A=0 +ch2: + inr b ; A=1 + lda tfcb+13 ; get user + mov c,a ; ... in C + mov a,b ; save as temp disk and user + sta tdisk + mov a,c + sta tuser +; +; Scan Directory for Temp Disk and User +; + call codend ; pt to first entry +scanud: + mov a,m ; done? + ora a + jz scanud2 + inx h ; pt to name + inx h + mov a,m ; get first char of name + dcx h + dcx h ; pt to disk + cpi ' ' ; deleted entry? + jz scanud1 + mov a,m ; get disk + cmp b + jnz scanud1 + inx h ; pt to user + mov a,m ; get user + dcx h ; pt back + cmp c ; compare it + jz udfound +scanud1: + lxi d,18 ; pt to next + dad d + jmp scanud +; +; DU not found +; +scanud2: + lda tfcb+1 ; delete? + cpi ' ' ; space if so + jnz addname + call print + db cr,lf,' DU not Found',0 + jmp ch0 +; +; Found Possible Directory Entry +; +udfound: + inx h ; found existing entry + inx h ; pt to name + lda tfcb+1 ; delete? + cpi ' ' ; space if so + jz delname +; +; Rename Function +; + call print + db cr,lf,' Renaming ',0 + mvi b,8 ; 8 chars + call prhlb ; print name + push h ; save ptr to name + call etest ; check for duplicate name + pop d ; restore ptr to name + jz ch0 ; abort since duplicate + lxi h,tfcb+1 ; pt to new name + mvi b,8 ; 8 chars + call hmovb ; copy + mvi a,0ffh ; set change + sta chflag + jmp ch0 +; +; Add Function +; +addname: + call print + db cr,lf,' Adding ',0 + lxi h,tfcb+1 ; print name of entry to add + mvi b,8 + call prhlb +; +; Test for Duplicate Name +; +putname: + call etest ; test for duplicate name + jz ch0 ; abort if duplicate +; +; Test to see if there is room for another entry +; +putn1: + mvi b,18 ; 18 bytes required for entry + push h ; save ptr +putn2: + mov a,m ; check for 0FFH + cpi 0ffh + jz putn3 + inx h ; pt to next + dcr b + jnz putn2 + pop h ; get ptr to entry + jmp putn4 ; make entry +putn3: + pop psw ; clear stack + call print + db cr,lf,'** Directory Full **',0 + jmp ch0 +; +; Make Directory Entry +; +putn4: + mvi a,0ffh ; set change flag + sta chflag + lda tdisk ; set disk and user + mov m,a + inx h + lda tuser + mov m,a + inx h + lxi d,tfcb+1 ; pt to new name + xchg + mvi b,8 ; 8 chars + call hmovb ; set new name + call password ; enter password into buffer at DE + lda ecount ; print count + inr a ; increment entry count + sta ecount + jmp precount ; print count +; +; Test for Duplicate Directory Name +; +etest: + call codend ; pt to first entry +etest0: + mov a,m ; done? + ora a + jz etest2 + inx h ; pt to name + inx h + lxi d,tfcb+1 ; pt to new name + mvi b,8 ; 8 chars + call compb ; compare + jnz etest1 + call crlf + lxi h,tfcb+1 + mvi b,8 ; 8 chars + call prhlb ; print dir name + call print + db ' is a Duplicate Name',0 + xra a ; return Z + ret +; +; Last Entry was OK - Pt to Next +; +etest1: + lxi d,16 ; pt to next entry + dad d + jmp etest0 +; +; No Duplicate Entries - Return NZ and HL pts to after last entry +; +etest2: + dcr a ; set NZ + ret +; +; Enter 8-char password into memory pted to by HL +; +password: + push d ; save ptr + call print + db ' -- Password? ',0 + mvi a,0ffh ; caps + call bbline ; get line from user + call crlf ; new line + mvi b,8 ; 8 chars max + pop d ; pt to destination +pword1: + mov a,m ; get char + ora a ; done? + jz pword2 + stax d ; put char + inx h ; pt to next + inx d + dcr b ; count down + jnz pword1 + ret +pword2: + mvi a,' ' ; rest are spaces + stax d ; store space + inx d ; pt to next + dcr b ; count down + jnz pword2 + ret + +; +; Delete Function +; +delname: + mvi a,0ffh ; change made + sta chflag + call print + db cr,lf,' Deleting ',0 + mvi b,8 ; 8 chars + call prhlb + mvi m,' ' ; space fill + call dirpack ; pack directory + call print + db ' -- ',0 + lda ecount ; decrement entry count + dcr a + sta ecount +; +; Print Number of Remaining Entries in Directory +; +precount: + call prec ; print count + jmp ch0 +prec: + lda ecount ; print remaining count + call padc + call print + db ' Entries in Directory',0 + ret +; +; Pack Memory-Based Directory -- One Entry has been Deleted +; +dirpack: + call codend ; get address of first entry + mov d,h ; DE pts to it also + mov e,l +dirp0: + mov a,m ; get first byte + ora a ; done if zero + jz dirp2 + push b ; save counts + inx h ; pt to name + inx h + mov a,m ; get char + dcx h ; pt back to disk + dcx h + cpi ' ' ; no entry if space + jz dirp1 + mvi b,18 ; copy 18 bytes + call hmovb + pop b ; get counts + jmp dirp0 +dirp1: + lxi b,18 ; pt to next entry + dad b + pop b ; get counts + jmp dirp0 +dirp2: + mvi b,18 ; fill last entry with zeroes + xra a + xchg ; HL pts to last entry + jmp hfilb +; +; Exit Change Routine +; +chexit: + call resduok ; restore DUOK flag and fall thru to DSORT +; +; Sort Directory +; +dsort: + lda ecount ; number of elements + ora a ; any? + rz ; done if none + sta ssbcnt ; set count + call codend ; pt to first element + shld ssbstrt ; set starting address + lxi d,ssb ; pt to sort specifiction block + jmp sort ; sort +; +; Sort Compare Routine +; +compare: + push h ; don't change regs + push d + ldax d ; compare disk + cmp m + jnz comp1 + inx h ; pt to user + inx d + ldax d ; compare user + cmp m +comp1: + pop d ; restore regs + pop h + ret + +; +; SETDUOK - Save Old DUOK Flag and Set Flag to TRUE +; RESDUOK - Restore Old DUOK Flag +; +setduok: + push h ;save regs + push d + call getenv ;get ptr to environment descriptor + lxi d,2EH ;offset to DUOK Flag + dad d + mov a,m ;get flag + sta duoksav ;save flag + mvi m,1 ;turn flag on + pop d ;restore regs + pop h + ret +resduok: + push h ;save regs + push d + call getenv ;get ptr to environment descriptor + lxi d,2EH ;offset to DUOK Flag + dad d + lda duoksav ;get save flag + mov m,a ;set flag + pop d ;restore regs + pop h + ret + +; +; Print Names of Directory Elements +; +pwd: + call crlf ; new line + lda ecount ;check count first + ora a ;no entries? + jnz pwd01 + call print + db ' No Entries in Directory',0 + ret +; +; Print Header for Password Entries +; +pwd01: + mvi b,2 ;2 times +pwd0a: + call print + db ' DU : DIR Name - Password ',0 + dcr b ;count down + jnz pwd0a + call crlf + mvi b,2 +pwd0b: + call print + db '---- -------- -------- ',0 + dcr b ;count down + jnz pwd0b + call crlf +; +; Begin Output Processing +; + mvi c,0 ;set entry count + mvi b,1 ;set disk 1 + call codend ;pt to buffer containing new directory +; +; Print Each Resident Command Name +; +pwd1: + mov a,m ;get table entry + ora a ;end of table? + rz ;exit + cmp b ;same disk? + jz pwd2 +; +; Advance to Next Set of Entries for New Disk +; + mov b,a ;set new disk + mov a,c ;get count + ani 3 ;see if newline already given + cnz crlf ;complete current line + call crlf ;1 additional line + mvi c,0 ;reset count +pwd2: + push b ;save counters +; +; Print DU: +; + mov a,m ;get disk + adi '@' ;convert to letter (A to P) + call cout + inx h ;pt to user + mov a,m ;get user + call padc ;print user number + call print ;print separator + db ': ',0 + inx h ;pt to name +; +; Print DIR +; + call prname ;print name of directory + call print + db ' - ',0 + call prname ;print name of password + pop b ;get counters + inr c ;another entry + push b ;save counters +; +; Print Separator +; + call print ;print separator + db ' ',0 + pop b ;get counters +; +; New Line Counter +; + inr c ;increment entry counter + mov a,c ;check for done + ani 3 ;every 4 + cz crlf ;new line + jmp pwd1 +; +; Print 8-char name (directory or password) and advance ptr +; +prname: + mvi b,8 ;print name +prn1: + mov a,m ;get char + call cout + inx h ;pt to next + dcr b ;count down + jnz prn1 + ret + +; +; Utilities +; + +; +; Print chars pted to by HL for B bytes +; +prhlb: + push h ; save HL +prhlb1: + mov a,m ; print chars + inx h ; pt to next + call cout + dcr b ; count down + jnz prhlb1 + pop h ; get HL + ret + +; +; Compute Number of 128-byte blocks in Named Dir +; Return with Number in A and HL pting to it +; +getnd: + call getndr ; get ptr to NDR and number of entries in A + push h ; save ptr + mvi h,0 ; HL = value + mov l,a + dad h ; *2 + mov d,h ; DE = value * 2 + mov e,l + dad h ; *4 + dad h ; *8 + dad h ; *16 + dad d ; *18 + mov a,h ; /128 + rlc + ani 0feh + mov h,a + mov a,l + rlc + ani 1 + ora h ; A = value * 18 / 128 + inr a ; +1 + pop h ; get ptr + ret + +; +; Default File Name +; +dnfile: + db 'NAMES ' + db 'NDR' + +; +; Sort Specification Block +; +ssb: +ssbstrt: + ds 2 ; start address of dir +ssbcnt: + dw 0 ; number of records to sort + dw 18 ; 18 bytes/record + dw compare ; compare routine + dw 0 ; no ptr table + db 0,0 ; don't use ptrs +; +; Buffers +; +duoksav: + ds 1 ; save value for DUOK flag +tdisk: + ds 1 ; temp disk +tuser: + ds 1 ; temp user +flflag: + ds 1 ; file loaded flag +chflag: + ds 1 ; dir changed flag +ecount: + ds 1 ; entry count +crcnt: + ds 1 ; new line count +tfcb: + ds 36 ; temp FCB +dfcb: + ds 36 ; Default FCB + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/MU3.COM b/Images/Source/hd0/s0/u15/MU3.COM new file mode 100644 index 0000000000000000000000000000000000000000..e686ed56c600b2f190eeefacef653e9a1d1763b0 GIT binary patch literal 2944 zcma)8Z){W76~8aG-}AfgIl(aloH6N!S7`na$Q~#)sFP z`<@M9>xW(WoqO*&zjN-n=bU@5HHkaD`|$B@4n1lRIrw?Z|7=XMM;ySRSv}30%z_rUgGG8P=GP@x;?mSG@1yHggls#V<&f$b*-(b ziTofs9J>^;B;f=(933X@k)iWta9dwwgoJzJDk1+1KG@qEj|>eVot|;uyrmL)gPT>| z)GfQxH#nW{117(PK9F2#%FXKAz7XgfN7sak8gPqwax5|!i;t4Sz5R(;d?)FS#E1H0 zQPLa;B7iv#0gUSo4_uB^pdD2Kj{eOJ90EQciw#ExBhdsK!?(VX&etOGaDv%c&xSGE z5^Ft&?Vizt9PBs|iIdV+EJ=keZ{*1F$Vh^`I1oF3siLe+dTc49M>%p7!gDA*aQ^Z@ z81}%JCG94Tyc`}{uieuHA#7|?Nl!b&k>lmHnT_L@2hYLwOWHlJaO9Q9YXh+a={g^e zM50fZAGUNYa-wYD1aq_0?B#n7fo!Bd!P5Ffx93zDL0?Lj4Mx?kna*DwP)gx}{@$_z z(%y1F9yejl>t?;*?l)IKUskcwOAg25u{eV#Q<;wq!Ko;U_Sm8HDBXqP$_`h+X{Vkm z`5z>tnUEGjpqRf)$R0xW64FY@K0>|+IVI#p*dQSgW=Qps3iKSP7aG10csHGPk5faM zfDcM3R6$VXh9sMu6ckT7>MU4LSNgPb2OnsAs&-lc-14M3Y5dx0lDofgssSi-Q2B+E zo)*elKXphZBg0qU=Ulh>Ejix#koT?eWZKdAKHu~)fACHI(7&BWqpsr|e`2c( zq1!yl@#rCs)_BB%{(yPLtxwAV0+Ih*pzmP~gaG->!P&{P5?|NW*Qb&TP<>EH^(@;> zP-K?I5Fh$dU^_3oadzxB`ccwEMxTqG6RMT1=^wiw%`8RFSiBOmYPwvHO{KMmc)C?i zrVN0O2r$e-mxGie`l;nFVKr2N3NS6OLkf-Sx;#ks12gZZ|8nIlF4x|F;ey4S_*rcH zmlr|6Jg{t#Iz;1=TCcg~XIxr;JnEEa)Y@u$oIdvApimt#H7OrWJrO7JvfWW!jhn0_&YZes-}z zB&Y59*H7oL4VJNH0kW{LVR;e`7ZeBpZPwfdZGpFkZBIt~VU({_>285tfiHn3ta2?j zej8mZ6>2hP72-|-3ehdA0f<*6p+|(}s*bm&=J5U)lmocIDebn{F4Gqa`Dq>?iBxJ}NecbgT)F80W1K6acLonf@N zr025@*KyLUT|DLXZbbfWxJIC4Pq}F`p3lwf*MU66Ou47NjJe%t70oloE|Epy+hPrLKGyrpUgOWA*<#F!=5FJC(F_>xiDskm zwrHxx714|vG12TdE|&CE4h(`G^a0k>dtzse?~}W4iZ!p(HPJTN0o*BAAQZrBQ%`Vg z;h!@FzPFO2RhY+CHy3;&(Ed;oBU_BLKZ;-@_4uFSGH0xapLMaA3`avzvnNF4o|US~Z?p9W#UJ=kaLDXvAZ%SaDvzV|pNT?N~9-q*a_$ zmU0>p(ow8eZd_XOq(`t0 zwUz-}lUUIvaef=)4+vjaB%7t2` zlrbPNXD_iQ{EDLWNV(bh#-yUNNb#I^!}Ii4lJ|25qrHex%; zb!p;_*!bHQM^ovP^!uAU8l4NmC9_(7VvG9fD!YN`eW}PkeYwiSi+O3T6;L)*^+38* z%rdF7lfj{Y=yl536SDTex7cUwR$;!t8;mh7i&+* yH;f<3kdq^_YjifJBO+qi ^D N Enter Hex Numbers ^R Replot Screen + v T Enter Text ^C Exit MU3 + ^X C Enter Command Line + + Aó thå useò moveó abouô oî thå screen¬ usinç eitheò thå +Worä Staò cursoò movemenô conventioî oò hió arro÷ keys¬ thå +valuå iî thå uppeò righô corneò changes¬ indicatinç botè thå +heø  valuå  anä ASCIÉ characteò representatioî oæ  thå  bytå +beinç pointeä to®  Also¬  á cursoò moveó iî thå Hexadecimaì +Memorù  Dumð  region¬  indicatinç wherå thå useò ió  iî  thå +current 128-byte block. + + Oncå thå useò ió pointinç tï á desireä byte¬ hå maù uså +thå Î oò Ô commandó tï changå memorù startinç aô thå bytå hå +is pointing to. + +:1 + Movement Commands + + Thå  cursoò  maù bå moveä abouô oî thå screeî  viá  thå +Worä Staò cursoò movemenô convention® Iæ thå arro÷ keyó foò +thå user'ó terminaì arå installeä viá thå ZCPR³  TCAP¬  theî +they keys may also be used to move the cursor. + + Aô  anù  time¬  thå useò maù strikå thå letteò Á  (caså +makeó nï difference© tï selecô á differenô regioî oæ  memorù +tï  view®  MU³ wilì displaù 12¸ byteó oæ memorù startinç aô +the address given by the user. + + Thå  commandó  «  anä - movå thå  displaù  forwarä  anä +backward¬  resp¬ foò onå blocë (12¸ bytes)® Thå movemenô ió +instantaneous¬  anä  thå cursoò ió repositioneä tï thå firsô +byte in the new block. + +:2 + Value Entry Commands + + Thå  Î commanä ió useä tï enteò á grouð oæ  hexadecimaì +numberó  intï memorù startinç aô thå addresó  beinç  pointeä +to® Thå useò ió prompteä foò input¬ anä hå maù theî enteò á +serieó  oæ hexadecimaì values¬  separateä bù spaces®  Entrù +terminateó  wheî thå useò strikeó thå RETURÎ key®  Caså  ió +not significant. Any number prefixed with '#' is decimal. + + Foò  example¬  thå  followinç ió á samplå  sequencå  oæ +values which may be entered: + + 0 1f f3 ff 2c c3 0 2 3 4 #192 #255 + + Thå  Ô  commanä  ió  useä tï  enteò  texô  intï  memorù +startinç aô thå cursoò position®  Thå useò ió prompteä  foò +input¬  anä  hå maù theî enteò á strinç oæ characters®  Alì +characteró inpuô arå significant® Entrù terminateó wheî thå +user strikes the RETURN key. Case is significant. + + + If¬  whilå iî thå middlå oæ texô entry¬ thå useò wisheó +tï  inserô  á  numeriã value¬  thå  escapå  formaô  §  followeä  bù carriagå returî  anä  linå  feeä +characters into memory starting at the cursor: + + <<0d><#10> + +'0d§  ió  0Ä heø anä '#10§ ió 1° decimaì  oò  0Á  hex®  Thå +leading '<<' translates into one '<'. + +:3 + Other Commands + + Thå  Ã commanä allowó thå useò tï enteò á commanä  linå +foò immediatå executioî bù thå ZCPR³ Commanä Processor®  Iæ +MU³  ió  invokeä  aó á shelì viá  thå  SHSEÔ  command¬  thió +commanä  provideó  aî escapå mechanisí aó welì aó á  waù  tï +executå  á  commanä linå froí withiî MU3®  Thå  SHCTRÌ  POÐ +command will terminate the current shell on the shell stack. + + Thå  È commanä invokeó á hexadecimaì  calculator®  Thå +useò  ió askeä tï enteò twï hexadecimaì numbers¬  anä  theså +numberó  arå  addeä anä subtracted¬  witè thå resultó  beinç +printeä immediately®  Again¬ decimaì numberó maù bå entereä +by prefixing them with '#'. + + Thå ^Ò commanä refresheó thå screeî foò thå user® Thió +ió handù iæ thå screeî waó garbleä iî somå way¬  sucè aó  bù +turning off the CRT. + + The ^C command causes MU3 to exit to ZCPR3. + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/MU3.MAC b/Images/Source/hd0/s0/u15/MU3.MAC new file mode 100644 index 00000000..e036db4c --- /dev/null +++ b/Images/Source/hd0/s0/u15/MU3.MAC @@ -0,0 +1,854 @@ +; +; Program: MU3 +; Author: Richard Conn +; Version: 1.0 +; Date: 30 June 84 +; Previous Versions: None +; +vers equ 10 +z3env equ 0f400h + +; +; MU3 is the ZCPR3 Memory Utility. It allows the user to display +; blocks of memory, edit them, and perform general memory-oriented +; manipulation. See the file MU3.HLP for usage details. +; + +; +; General Equates +; +bs equ 08h +cr equ 0dh +lf equ 0ah +fcb equ 5ch +dim equ 1 ;goto standout mode +bright equ 2 ;exit standout mode +EOLCH EQU 0 ;END OF LINE CHAR +SEPCH EQU ',' ;SEPARATOR CHAR +EROW EQU 6 ;FIRST ROW OF EDITOR DISPLAY +ECOL EQU 4 ;FIRST COL OF EDITOR DISPLAY +ECOLC EQU ECOL+16*3+8 ;FIRST COL OF EDITOR CHAR DISPLAY +ECURS EQU '>' ;EDITOR CURSOR +PRROW EQU 22 ;PROMPT ROW +PRCOL EQU 10 ;PROMPT COLUMN +PRCOLI EQU PRCOL+15 ;PROMPT INPUT COL +ERROW EQU 23 ;ERROR MESSAGE ROW +ERCOL EQU 15 ;ERROR MESSAGE COLUMN + +; +; SYSLIB/Z3LIB/VLIB Externals +; + ext z3vinit,envptr,codend,putcl + ext cls,gotoxy,ereol,at,vprint,stndout + ext cout,crlf,cin,caps + ext bline,sksp + ext phl4hc,pa2hc,phlfdc + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3vinit ;initialize the ZCPR3 Env and the VLIB Env +; +; DEFINE FREE SPACE +; + CALL CODEND ;DETERMINE ADDRESS + MVI M,126 ;126 CHARS INPUT ALLOWED + SHLD BUFFER ;SET PTR +; +; SET UP ARROW KEYS +; + LHLD ENVPTR ;PT TO ENVIRONMENT DESCRIPTOR + LXI D,80H+10H ;PT TO ARROW KEY INFO + DAD D + LXI D,EDCURT ;PT TO CURSOR TABLE + MVI B,4 ;4 ARROW KEYS +ARROW: + MOV A,M ;GET CHAR + STAX D ;STORE CHAR + INX H ;PT TO NEXT + INX D ;PT TO NEXT ENTRY + INX D + INX D + DCR B ;COUNT DOWN + JNZ ARROW +; +; Check for Command Line Parameter +; + lxi h,fcb+1 ;pt to first char + mov a,m ;get char + cpi ' ' ;no param? + jnz pcheck + lhld envptr ;pt to environment descriptor + jmp mu3 +; +; We have a parameter +; +pcheck: + cpi '/' ;help? + jz help + call hexin ;convert to binary + xchg ;HL=value + jmp mu3 +; +; Print help message +; +help: + call vprint + db cr,lf,'Syntax:' + db cr,lf,' MU3 <-- Invoke MU3 at Env Desc' + db cr,lf,' MU3 <-- Invoke MU3 at Address' + db 0 + ret +; +; Erase to EOL +; If fct not supported, send out B spaces and B backspaces +; +vereol: + call ereol ;try erase + rnz + push b ;save B + mvi a,' ' ;send spaces + call vereol1 + pop b ;get B + mvi a,bs ;send backspaces +vereol1: + call cout ;send char in A + dcr b + jnz vereol1 + ret +; +; Clear Screen +; If fct not supported, write 24 CRLFs +; +vcls: + call cls ;try clear + rnz + push b ;save B + mvi b,24 ;count +vcls1: + call crlf + dcr b + jnz vcls1 + pop b + ret +; +; Run MU3 +; HL contains starting address +; +mu3: + SHLD BLOCK ;SAVE PTR TO BLOCK +; +; REFRESH EDIT SCREEN +; +EDIT0: + CALL VCLS ;NEW SCREEN + CALL AT + DB 2,26 ;ROW 2, COL 26 + CALL VPRINT ;BANNER + DB 'MU3 Memory Editor, Version ' + DB (VERS/10)+'0','.',(VERS MOD 10)+'0' + DB 0 + CALL AT ;POSITION FOR VALUE TEXT + DB 3,67 + CALL VPRINT + DB DIM,'Value',BRIGHT,0 + MVI H,EROW+9 ;POSITION FOR COMMAND DISPLAY + MVI L,1 + CALL GOTOXY ;POSITION CURSOR + CALL VPRINT ;PRINT COMMAND SUMMARY + DB ' -- Movement --' + DB ' -------------- Operation ---------------',CR,LF + DB ' ^E ' + DB 'A',DIM,' Enter Address ',BRIGHT + DB ' +',DIM,' Next Block',BRIGHT,CR,LF + DB ' ^ ' + DB 'H',DIM,' Hex Calculator ',BRIGHT + DB ' -',DIM,' Last Block',BRIGHT,CR,LF + DB ' ^S <-+-> ^D ' + DB 'N',DIM,' Enter Hex Numbers ',BRIGHT + DB ' ^R',DIM,' Replot Screen',BRIGHT,CR,LF + DB ' v ' + DB 'T',DIM,' Enter Text ',BRIGHT + DB ' ^C',DIM,' Exit MU3',BRIGHT,CR,LF + DB ' ^X ' + DB 'C',DIM,' Enter Command Line',BRIGHT + DB 0 +; +; REENTER MU3 WITH PTRS RESET +; +MU3R: + XRA A ;A=0 + STA EINDEX ;SET INDEX TO 0 (FIRST ELEMENT) + STA EDERR ;SET NO PREVIOUS ERROR + CALL EDPLOT ;PLOT BUFFER DATA +; +; INPUT EDITOR COMMAND +; +EDITCMD: + CALL EDERCL ;CLEAR EDITOR INVALID COMMAND MESSAGE +EDITCMD1: + CALL PRMSG ;POSITION AT PROMPT MESSAGE + DB DIM,'MU3 Command?',BRIGHT,0 + CALL PRINP ;POSITION AT PROMPT INPUT + DB 0 + CALL CIN ;GET CHAR + CALL CAPS ;CAPITALIZE + MOV B,A ;COMMAND IN B + LXI H,EDCURT ;PROCESS CURSOR COMMANDS FIRST + CALL CMD ;PROCESS COMMAND + LXI H,ECMDTBL ;EDITOR COMMAND TABLE + CALL CMD ;PROCESS COMMAND + MVI A,0FFH ;SET ERROR FLAG + STA EDERR + CALL ERMSG ;ERROR MESSAGE + DB 'Invalid Command',0 + JMP EDITCMD1 +; +; Position at Prompt Message and Print it +; +PRMSG: + CALL AT ;POSITION + DB PRROW,PRCOL + JMP VPRINT ;PRINT IT +; +; Position at Prompt Input and Print Prompt +; +PRINP: + CALL AT ;POSITION + DB PRROW,PRCOLI + JMP VPRINT ;PRINT IT +; +; Position at Error Message and Print It +; +ERMSG: + CALL AT ;POSITION + DB ERROW,ERCOL + JMP VPRINT ;PRINT IT +; +;INPUT ERROR +; +WHAT: + MVI A,0FFH ;SET ERROR FLAG + STA EDERR + CALL ERMSG + DB 'Value Error',0 + JMP EDITCMD1 +; +;Command Table Search and Execute +; +CMD: + MOV A,M ;CHECK FOR END OF TABLE + ORA A + RZ ;COMMAND NOT FOUND + CMP B ;MATCH? + JZ CMDRUN + INX H ;SKIP TO NEXT ENTRY IN TABLE + INX H + INX H + JMP CMD +; +;RUN COMMAND +; +CMDRUN: + INX H ;PT TO LOW ADDRESS + MOV E,M + INX H ;PT TO HIGH ADDRESS + MOV D,M + XCHG + POP PSW ;CLEAR STACK + PCHL ;RUN ROUTINE +; +;PLOT BUFFER DATA +; +EDPLOT: + MVI H,EROW-1 ;SET ROW + MVI L,ECOL ;SET COLUMN + CALL GOTOXY ;POSITION CURSOR + CALL VPRINT + DB DIM + DB ' 0 1 2 3 4 5 6 7 8 9 A B C D E F' + DB BRIGHT,0 + INR H ;NEXT ROW + CALL GOTOXY ;POSITION CURSOR + XCHG ;POSITION IN DE + LHLD BLOCK ;PT TO DATA + MVI B,8 ;8 LINES +; +;Print Next Line on Screen +; +EDIT00: + CALL STNDOUT ;GO DIM + MOV A,H ;OUTPUT ADDRESS + CALL PA2HC + MOV A,L + CALL PA2HC + CALL VPRINT + DB ':',BRIGHT,' ',0 + MVI C,16 ;16 ELEMENTS +EDIT01: + MOV A,M ;GET BYTE + CALL PA2HC ;PRINT AS HEX + CALL SPACE ;PRINT 1 SPACE + INX H ;PT TO NEXT + DCR C ;COUNT DOWN + JNZ EDIT01 + XCHG ;POSITION AGAIN + INR H ;NEXT ROW + CALL GOTOXY + XCHG + DCR B ;COUNT DOWN + JNZ EDIT00 + MVI H,EROW ;RESET ROW + MVI L,ECOLC ;RESET COL + CALL GOTOXY ;POSITION CURSOR + XCHG ;POSITION IN DE + LHLD BLOCK ;PT TO DATA + MVI B,8 ;8 LINES +EDIT02: + CALL BAR ;PRINT BAR + MVI C,16 ;16 ELEMENTS +EDIT03: + MOV A,M ;GET BYTE + ANI 7FH ;MASK MSB + CPI 7FH ;DON'T PRINT 7FH + JZ EDIT7F + CPI ' ' ;SPACE OR MORE? + JNC EDIT04 +EDIT7F: + MVI A,'.' ;PRINT DOT +EDIT04: + CALL COUT ;PRINT BYTE + INX H ;PT TO NEXT + DCR C ;COUNT DOWN + JNZ EDIT03 + CALL BAR ;PRINT ENDING BAR + XCHG ;POSITION AGAIN + INR H ;NEXT ROW + CALL GOTOXY + XCHG + DCR B ;COUNT DOWN + JNZ EDIT02 + CALL EDCUR ;POSITION CURSOR + RET +; +;EDITOR COMMAND TABLE +; +ECMDTBL: + DB CR ;NOP + DW EDITCMD + DB 'C'-'@' ;^C = EXIT MU3 + DW EDCC + DB 'R'-'@' ;^R = REFRESH + DW EDIT0 + DB 'E'-'@' ;^E=UP + DW EDUP + DB 'X'-'@' ;^X=DOWN + DW EDDOWN + DB 'D'-'@' ;^D=RIGHT + DW EDRIGHT + DB 'S'-'@' ;^S=LEFT + DW EDLEFT + DB ' ' ;NOP + DW EDITCMD + DB '+' ;ADVANCE + DW EDITPLUS + DB '-' ;BACKUP + DW EDITMINUS + DB 'A' ;ADDRESS + DW EDITADR + DB 'C' ;COMMAND LINE + DW EDITCL + DB 'H' ;HEX CALC + DW EDITCALC + DB 'N' ;CHANGE NUMBERS + DW EDITHEX + DB 'T' ;CHANGE TEXT + DW EDITALP + DB 0 ;END OF TABLE +; +; ARROW KEY DEFINITONS FROM TCAP +; +EDCURT: + DB 0 ;0 INDICATES NO ARROW KEYS + DW EDUP + DB 0 + DW EDDOWN + DB 0 + DW EDRIGHT + DB 0 + DW EDLEFT + DB 0 ;END OF TABLE +; +;Enter Command Line +; +EDITCL: + CALL EDERCL ;CLEAR ERROR LINE + CALL CRLF ;NEW LINE + CALL VPRINT ;PROMPT INPUT + DB DIM,'Command Line? ',BRIGHT,0 + CALL RDBUF ;INPUT TEXT + CALL PUTCL ;STORE COMMAND LINE + JMP CRLF ;NEW LINE +; +;Enter ASCII Chars +; +EDITALP: + CALL EDERCL ;CLEAR ERROR LINE + CALL PRINP ;PROMPT INPUT + DB DIM,'Enter Text ( for Hex)',BRIGHT + DB CR,LF,' --> ',0 + CALL RDBUF ;INPUT TEXT WITHOUT PROMPT + CALL EDPRCL ;CLEAR PROMPT LINE + LDA EINDEX ;PT TO POSITION + XCHG + LHLD BLOCK ;COMPUTE OFFSET + XCHG + ADD E + MOV E,A + MOV A,D + ACI 0 + MOV D,A ;DE PTS TO BYTE, HL PTS TO TEXT +EDITA1: + MOV A,M ;GET CHAR + CPI EOLCH ;EOL? + JZ EDITA2 ;REFRESH SCREEN + CALL GETVAL ;GET ASCII OR VALUE + STAX D ;UPDATE BYTE + INX H ;PT TO NEXT INPUT CHAR + INR E ;PT TO NEXT BUFFER BYTE + JNZ EDITA1 +EDITA2: + CALL EDPLOT ;REPLOT + JMP EDITCMD1 ;DONE-REFRESH SCREEN +; +;Calculate Sum and Differences +; +EDITCALC: + CALL EDERCL ;CLEAR ERROR LINE + CALL PRINP ;PROMPT INPUT + DB DIM,'Enter Two Hex Numbers - ',BRIGHT,0 + CALL RDBUF ;INPUT TEXT + CALL EDPRCL ;CLEAR PROMPT LINE + CALL SKSP ;SKIP TO NON-SPACE + MOV A,M ;ANY INPUT? + ORA A ;0=NO + JZ EDITCMD1 + CALL HEXIN ;EVALUATE FIRST NUMBER + CALL SKSP ;SKIP TO 2ND NUMBER + PUSH D ;SAVE FIRST NUMBER + CALL HEXIN ;EVALUATE 2ND NUMBER + POP H ;GET FIRST NUMBER + CALL ERMSG ;PRINT ERROR MESSAGE + DB 0 + CALL PHL4HC ;PRINT FIRST NUMBER + CALL VPRINT + DB DIM,' and ',BRIGHT,0 + XCHG + CALL PHL4HC ;PRINT 2ND NUMBER + XCHG + CALL VPRINT + DB ' ',DIM,'Sum = ',BRIGHT,0 + PUSH H + DAD D + CALL NUMOUT + POP H + CALL VPRINT + DB ' ',DIM,'Diff = ',BRIGHT,0 + MOV A,L ;HL=HL-DE + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + CALL NUMOUT + JMP EDITCMD1 +; +;Output number in HL in Hex and Decimal +; +NUMOUT: + CALL PHL4HC ;HEX + CALL VPRINT + DB ' (',0 + CALL PHLFDC ;DECIMAL FLOATING + MVI A,')' ;CLOSE PAREN + JMP COUT +; +;Enter Numbers +; +EDITHEX: + CALL EDERCL ;CLEAR ERROR LINE + CALL PRINP ;PROMPT INPUT + DB DIM,'Enter Hex Numbers (#nn for Dec)' + DB BRIGHT + DB CR,LF,' --> ',0 + CALL RDBUF ;INPUT TEXT WITHOUT PROMPT + CALL EDPRCL ;CLEAR PROMPT LINE + LDA EINDEX ;PT TO POSITION + XCHG + LHLD BLOCK ;COMPUTE OFFSET + XCHG + ADD E + MOV E,A + MOV A,D + ACI 0 + MOV D,A ;DE PTS TO BYTE, HL PTS TO TEXT +EDITH1: + MOV A,M ;GET HEX DIGIT + CPI EOLCH ;EOL? + JZ EDITA2 ;REFRESH SCREEN + CPI ' ' ;SKIP SPACES + JNZ EDITH2 + INX H ;SKIP SPACE + JMP EDITH1 +EDITH2: + PUSH D ;SAVE PTR + CALL HEXIN ;GET VALUE AND POSITION HL + MOV A,E ;... IN A + POP D ;GET PTR + STAX D ;PUT BYTE + INR E ;ADVANCE TO NEXT BYTE + JNZ EDITH1 + JMP EDITA2 ;DONE-REFRESH +; +;Clear Editor Invalid Command Message +; +EDERCL: + LDA EDERR ;PREVIOUS ERROR? + ORA A ;0=NO + RZ + XRA A ;CLEAR FLAG + STA EDERR + CALL ERMSG ;CLEAR ERROR MESSAGE + DB 0 + MVI B,40 ;40 CHARS MAX + JMP VEREOL +; +;CLEAR PROMPT LINE +; +EDPRCL: + CALL PRINP ;PROMPT LINE + DB 0 + MVI B,40 ;40 POSITIONS + CALL VEREOL ;CLEAR TO EOL OR 40 CHARS + CALL AT ;USER INPUT + DB ERROW,1 + MVI B,79 ;79 POSITIONS + JMP VEREOL +; +;Input Address +; +EDITADR: + CALL VPRINT + DB 'Address? ',0 + CALL RDBUF ;GET USER INPUT + CALL SKSP ;SKIP LEADING SPACES + MOV A,M ;EMPTY LINE? + ORA A + JZ MU3R + CALL HEXIN ;CONVERT FROM HEX + XCHG ;HL = ADDRESS + SHLD BLOCK + JMP MU3R ;REENTER +; +;Advance to Next Block +; +EDITPLUS: + LHLD BLOCK ;ADVANCE TO NEXT BLOCK + LXI D,128 ;128 BYTES + DAD D + SHLD BLOCK + CALL EDPLOT ;REPLOT DATA + JMP EDITCMD +; +;Backup to Last Block +; +EDITMINUS: + LHLD BLOCK ;BACKUP TO LAST BLOCK + LXI D,-128 ;128 BYTES + DAD D + SHLD BLOCK + CALL EDPLOT ;REPLOT DATA + JMP EDITCMD +; +;Exit MU3 +; +EDCC: + CALL EDERCL ;CLEAR ERROR LINE + JMP CRLF ;NEW LINE +; +;EDIT MOVE: UP +; +EDUP: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;BACKUP INDEX BY 16 + SUI 16 +; +;Common EDIT MOVE Routine - on input, A=new index +; +EDMOVE: + ANI 7FH ;MOD 128 + STA EINDEX + CALL EDCUR ;SET CURSOR + JMP EDITCMD +; +;EDIT MOVE: DOWN +; +EDDOWN: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;INCREMENT INDEX BY 16 + ADI 16 + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT MOVE: RIGHT +; +EDRIGHT: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;INCREMENT INDEX BY 1 + INR A + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT MOVE: LEFT +; +EDLEFT: + CALL EDCCUR ;CLEAR CURSOR + LDA EINDEX ;DECREMENT INDEX BY 1 + DCR A + JMP EDMOVE ;COMMON ROUTINE +; +;EDIT SUBROUTINE: EDCUR +; Position Editor Cursor at EINDEX +;EDIT SUBROUTINE: EDCCUR +; Clear Editor Cursor at EINDEX +; +EDCUR: + PUSH H ;SAVE HL + MVI C,ECURS ;CURSOR CHAR + CALL EDSETCUR + CALL AT ;UPDATE DATA + DB 3,74 + LDA EINDEX ;PT TO BYTE AT CURSOR + LHLD BLOCK + ADD L + MOV L,A + MOV A,H + ACI 0 + MOV H,A ;HL PTS TO BYTE AT CURSOR + MOV A,M ;GET BYTE + CALL PA2HC ;PRINT AS HEX + CALL SPACE + MOV A,M ;GET BYTE + POP H ;RESTORE HL + ANI 7FH ;MASK + CPI 7FH ;7FH AS DOT + JZ EDC7F + CPI ' ' ;OUTPUT CHAR OR DOT + JNC COUT +EDC7F: + MVI A,'.' ;DOT + JMP COUT +EDCCUR: + MVI C,' ' ;CLEAR CURSOR +EDSETCUR: + CALL EDROW ;COMPUTE ROW + ANI 0FH ;COMPUTE COL MOD 16 + MOV B,A ;RESULT IN B + ADD A ;*2 + ADD B ;*3 + ADI ECOL+6 ;ADD IN COL + DCR A ;SUBTRACT 1 + MOV L,A ;COL POSITION SET + CALL GOTOXY ;POSITION CURSOR + MOV A,C ;OUTPUT CHAR + JMP COUT +; +;Compute Row from EINDEX +; +EDROW: + LDA EINDEX ;GET INDEX + MOV B,A ;SAVE IN B + RRC ;DIVIDE BY 16 + RRC + RRC + RRC + ANI 0FH ;MASK FOR LSB ONLY + ADI EROW ;COMPUTE ROW + MOV H,A ;ROW SET + MOV A,B ;GET INDEX + RET + +; +;PRINT A SPACE +; +SPACE: + MVI A,' ' + JMP COUT +; +;PRINT AN BARISK IN REV VIDEO +; +BAR: + CALL VPRINT + DB DIM,'|',BRIGHT,0 + RET +; +;Get value from input buffer +; +GETVAL: + MOV A,M ;GET NEXT CHAR + CPI '<' ;HEX ESCAPE? + RNZ ;NO, RETURN +;"<<" means one "<" + INX H + MOV A,M + CPI '<' + RZ +;Got hex + PUSH D + CALL HEXIN ;GET VALUE + CPI '>' ;PROPER DELIM? + MOV A,E ;GET VALUE + POP D + RZ +; +;ERROR CONDITION IN SUBROUTINE - CLEAR STACK AND FLAG ERROR +; +SERR: + POP PSW ;CLEAR STACK + JMP WHAT ;ERROR +; +;Input Number from Command Line -- Assume it to be Hex +; Number returned in DE +; +HEXIN: + LXI D,0 ;INIT VALUE + MOV A,M + CPI '#' ;DECIMAL? + JZ HDIN ;MAKE DECIMAL +; +HINLP: + MOV A,M ;GET CHAR + CALL CAPS ;CAPITALIZE + CPI CR ;EOL? + RZ + CPI EOLCH ;EOL? + RZ + CPI SEPCH + RZ + CPI ' ' ;SPACE? + RZ + CPI '-' ;'THRU'? + RZ + CPI '>' + RZ + INX H ;PT TO NEXT CHAR + CPI '0' ;RANGE? + JC SERR + CPI '9'+1 ;RANGE? + JC HINNUM + CPI 'A' ;RANGE? + JC SERR + CPI 'F'+1 ;RANGE? + JNC SERR + SUI 7 ;ADJUST FROM A-F TO 10-15 +; +HINNUM: + SUI '0' ;CONVERT FROM ASCII TO BINARY + XCHG + DAD H ;MULT PREVIOUS VALUE BY 16 + DAD H + DAD H + DAD H + ADD L ;ADD IN NEW DIGIT + MOV L,A + XCHG + JMP HINLP +; +HDIN: + INX H ;SKIP '#' +; +;Input Number in Command Line as Decimal +; Number is returned in DE +; +DECIN: + LXI D,0 + MOV A,M ; GET 1ST CHAR + CPI '#' ; HEX? + JNZ DINLP + INX H ; PT TO DIGIT + JMP HINLP ; DO HEX PROCESSING +; +DINLP: + MOV A,M ;GET DIGIT + CALL CAPS ;CAPITALIZE + CPI '0' ;RANGE? + RC + CPI '9'+1 ;RANGE? + RNC + SUI '0' ;CONVERT TO BINARY + INX H ;PT TO NEXT + PUSH H + MOV H,D + MOV L,E + DAD H ;X2 + DAD H ;X4 + DAD D ;X5 + DAD H ;X10 + ADD L ;ADD IN DIGIT + MOV L,A + MOV A,H + ACI 0 + MOV H,A + XCHG ;RESULT IN DE + POP H + JMP DINLP +; +; READ LINE FROM USER INTO INPUT LINE BUFFER +; +RDBUF: + LHLD BUFFER ;PT TO BUFFER + XRA A ;DON'T CAPITALIZE + JMP BLINE ;INPUT LINE ROUTINE + +; +;EDITOR BUFFERS +; +BLOCK: + DS 2 ;ADDRESS OF CURRENT BLOCK +BUFFER: + DS 2 ;PTR TO FREE SPACE +EINDEX: + DS 1 ;INDEX ENTRY +EDERR: + DS 1 ;ERROR FLAG +EDRUN: + DS 1 ;FLAG SAYING THAT EDITOR IS RUNNING + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/NDIRS.HLP b/Images/Source/hd0/s0/u15/NDIRS.HLP new file mode 100644 index 00000000..5cbbd204 --- /dev/null +++ b/Images/Source/hd0/s0/u15/NDIRS.HLP @@ -0,0 +1,440 @@ +; + + Named Directories Under ZCPR3 + + -- Basics -- + 1 - The Named Directory Concept + 2 - Memory-Based Named Directories + + + -- Commands -- + M - MKDIR + U - Using MKDIR + P - PWD + C - CD + +:1 + Overview of the Named Directory Concept + + Thå   Nameä   Directorù  Concepô  undeò  ZCPR³  ió   aî +associatioî  oæ  á mnemoniã namå witè á  logicaì  directory¬ +whicè ió á disë anä useò area® Witè thió facility¬ thå useò +ió  permitteä tï refeò tï anù directorù bù á mnemoniã  name¬ +anä thió greatlù improveó thå useò interfacå oveò havinç  tï +remembeò disë letteró anä numbers. + + Foò instance¬ aî environmenô caî bå seô uð iî whicè thå +followinç namå assignmentó arå made: + + A15: = ROOT A0: = BASE + B0: = BBASE B1: = JEFF + B2: = ROBERT B3: = LINDA + + Witè  thå nameä directorù facilitù enabled¬  thå  ZCPR³ +utilitieó  caî refeò tï theså directorieó bù eitheò thå  DUº +forí (disë anä useò number© oò bù thå name: + + XDIR ROOT: is the same as XDIR A15: + + Mosô oæ thå ZCPR³ utilitieó recognizå nameä directorieó +iæ  thå  facilitù ió enabled¬  and¬  sincå  theså  utilitieó +functioî tï providå interfaceó betweeî thå directories¬ theù +creatå   á   gooä  workinç  environmenô  foò  uså   oæ   thå +conventionaì  CP/Í utilitieó aó well®  Iî otheò words¬  thå +ZCPR³  utilitieó whicè caî deaì witè nameä  directorieó  arå +thå  onlù  utilitieó witè whicè onå shoulä  crosó  directorù +boundarieó  iî  á ZCPR³ systeí anä  conventionaì  utilities¬ +likå  aî editoò oò aî assembler¬  shoulä bå useä iî onlù onå +directorù  anä deaì witè fileó iî thå currenô directorù  anä +oî drivå Á iî thå samå useò numbeò (A¤ iî thå vernacular). + + Manù  ZCPR³  tooló  arå  provideä tï acô  aó  á  bridgå +betweeî directories¬ anä theù werå createä witè thió purposå +iî mind®  Commonly-useä functionó haä tï bå madå  availablå +tï  thå  ZCPR³ useò tï providå thió bridge»  sucè  functionó +include: + + + o File + Copying + Renaming + Erasing + Unerasing + Protecting + Typing to Console + Printing to Printer + Search + + o Directory Display + + + + Foò instance¬ tï ediô á filå iî thå ZCPÒ directorù witè +Worä  Master¬  copù thå filå intï á workinç directorù  whicè +haó  thå WM.HLÐ filå iî Aº  iî thå samå useò areá  anä  ediô +there® Theî copù iô bacë wheî done: + + B1>mcopy b1:=zcpr:file.txt + ... + B1>wm file.txt + ... + B1>mcopy zcpr:=file.txt + + + Manù  commerciaì programs¬  likå Worä Masteò  anä  Worä +Star¬  arå  alreadù programmeä tï looë oî Aº  iæ theù dï noô +finä thå overlaù theù neeä iî thå currenô  directory®  Worä +Master¬  foò  instance¬  haó  á WM.HLÐ filå  whicè  provideó +onlinå documentation¬ anä bù workinç oî drivå Bº iî thå samå +useò  thaô  á WM.HLÐ filå existó oî A:¬  iæ á useò askó  foò +Help¬ Worä Masteò wilì finä it. + + Nameä  Directorieó  caî providå á  morå  human-orienteä +workinç environment®  Thå useò neeä nï longeò remembeò thaô +hió commandó arå iî directorù A15º  -- hå neeä onlù remembeò +thaô  ROOÔ  containó hió commands¬  HELÐ containó  hió  helð +files¬  ROBERÔ  ió hió namå anä thaô ió wherå hå placeó  thå +fileó  hå ió workinç on¬  BDSà ió wherå hió à compileò  is¬ +etc. + + + Nameä  Directorieó arå supporteä bù thå ZCPR³ utilitieó +anä  bù  ZCPR³ itself®  Threå  utilitieó  arå  specificallù +designeä tï deaì witè Nameä Directories¬ anä thå resô oæ thå +utilitieó  caî  accesó Nameä Directorieó manipulateä bù  thå +theså threå anä uså them. + + Thå  threå  ZCPR³ utilitieó whicè  deaì  directlù  witè +Nameä Directorieó are: + + MKDIR -- create a Named Directory + + PWD -- print Working Directory and all + Named Directories + + CD -- log into a Named Directory + +:M + +Command: MKDIR 3.0 + +Syntax: + + MKDIR <-- enter utility +or + MKDIR dir:ufn <-- enter utility and load NDR file + +Function: + + MKDIÒ  ió useä tï creatå Nameä Directorù  Files¬  whicè +arå  fileó oî disë whicè contaiî thå mnemoniã nameó anä  thå +disk/useò  areaó  theù  arå associateä with®  MKDIÒ  ió  aî +editor®  Iô  provideó á scratcè areá iî whicè thå useò  caî +seô uð á nameä directory¬  revie÷ it¬  ediô it¬ anä makå anù +changeó hå wishes®  Wheî satisfied¬  thå useò caî writå  iô +ouô tï disë aó á filå oò aborô anä thro÷ iô away. + + +Options: + None + +Comments: + See Text under "Using MKDIR" + +Selected Error Messages: + Self-Explanatory + +Examples of Use: + See Text under "Using MKDIR" + +:U + Using MKDIR + Cmd Summary + Oncå thå useò ió iî MKDIR¬ hå ió prompteä with: + + MKDIR Command (? for Help)? + +anä  hå  maù issuå thå followinç  single-characteò  commandó +(strikinç RETURÎ ió noô necessary): + + C -- Change Directory (Add, Rename, or Delete Entries) + I -- Initialize Directory + P -- Print Directory + R -- Read in a Directory File + S -- Status of MKDIR Environment + W -- Write out a Directory File + X -- Exit + ? -- Print Help Message + + Nï  fileó  arå affecteä untiì thå useò telló  MKDIÒ  tï +writå thå Directorù Filå oî disk. + + Cmd: C + Thå  Ã  commanä (Changå Directory© ió useä tï ediô  thå +contentó  oæ  thå scratcè environmenô  withiî  MKDIR®  Oncå +invoked¬ thå useò ió prompteä with + + Directory Entry (? for Help)? + + Thå  useò  ió  iî aî inpuô  linå  editoò  now¬  sï  alì +commandó  musô  bå  terminateä bù strikinç  thå  RETURΠ keù +beforå  theù  takå  effect®  Thió ió thå  BDOÓ  inpuô  linå +editor¬ anä strikinç ^à wilì aborô tï ZCPR3. + + Thå useò maù typå ¿ followeä bù strikinç RETURÎ tï finä +ouô whaô hió optionó arå (built-iî help). + + Cmd: C + Undeò  thå à commanä (Changå Directory)¬  thå useò  caî +perforí thå followinç functions: + + . Add a Named Directory Entry to the Directory + . Rename a Named Directory Entry in the Directory + . Delete a Named Directory Entry from the Directory + . Print the Directory + . Print a Help Message + . Exit to MKDIR Command Level + + Iî ordeò tï adä oò renamå á Nameä Directorù Entry¬  thå +useò typeó thå "DU:dirname¢ form® Iæ eitheò thå Disë (D© oò +Useò  (U©  arå omitted¬  currenô disë anä useò arå  assumed® +Thå  "dirname¢  ió  thå mnemoniã namå  associateä  witè  thå +directory¬  uð  tï ¸ characteró long®  Iæ á namå  haó  beeî +associateä  witè thå indicateä disë anä useò already¬  MKDIÒ +wilì renamå iô tï thå ne÷ namå anä telì yoõ thaô iô ió doinç +sï  anä whaô thå olä namå was®  Iæ á namå haó  noô  alreadù +beeî associateä witè thå indicateä disë anä user¬ MKDIÒ wilì +adä thió entrù tï thå directory. + Cmd: C + Iî  ordeò tï deletå á Nameä Directorù Entry¬  thå  useò +typeó  onlù  thå  "DU:¢ form®  Iæ á namå haó  alreadù  beeî +associateä witè thió disë anä user¬ theî iô wilì bå deleted® +Iæ  nï  namå  haó  beeî associated¬  thå  useò  wilì  bå  sï +informed. + + Tï  prinô thå currenô directorù foò  review¬  thå  useò +neeä onlù strikå thå RETURÎ key®  Tï exit¬  thå useò enteró +aî  Ø (uppeò oò loweò case© followeä bù strikinç thå  RETURÎ +key. + + Passwords + Wheî á directorù ió created¬ MKDIÒ promptó thå useò foò +á  password®  Á  passworä  maù  bå  uð  tï  ¸  alphanumeriã +characteró  lonç (MKDIÒ capitalizaeó alì  alphabetics)¬  anä +differenô  passwordó maù bå associateä witè eacè  directory® +Iæ  á  passworä  ió lefô  blank¬  thå  directorù  ió  freelù +accessible. + + Anù  referencå tï á nameä directorù (DIRº  form© bù thå +useò iî á ZCPR³ commanä linå wilì causå ZCPR³ tï prompô  thå +useò  foò  á passworä iæ onå ió assigneä tï  thå  referenceä +directory®  Thå  useò  haó onå chancå tï enteò thå  correcô +password¬  and¬  iæ  incorrect¬  ZCPR³  setó  thå  directorù +referencå  tï thå user'ó currentlù logged-iî  directorù  anä +proceeds with the rest of the command line. + + Cmd: C + Example: + + Assume the following directory: + + A15:ROOT A10:SYS A0:BASE + B0:DEVBASE B1:WORK1 B2:WORK2 + + If the user wishes to delete WORK1, he types + + B1: + + If the user wishes to rename WORK2 to WORK12, he types + + B2:WORK12 + + If the user wishes to add WORK3 as B3:, he types + + B3:WORK3 + + Iî  alì cases¬  lower-caså characteró arå converteä  tï +upper-case. + Cmd: I + Thå É commanä ió useä tï initializå thå directory® Thå +useò  ió askeä iæ hå ió surå hå wantó tï dï  this¬  and¬  iæ +Yes¬  MKDIÒ clearó thå scratcè directory®  É emphasizå thaô +onlù   thå  memory-baseä  scratcè  directorù  oæ  MKDIÒ   ió +effected¬  anä  MKDIÒ  affectó  disë fileó onlù witè  thå  × +(Writå Directory© command. + Cmd: P + Ð ió useä tï Prinô thå Directory® Asidå froí thå nameó +assigneä sï far¬ thå useò ió tolä ho÷ manù entrieó havå beeî +defineä sï faò anä ho÷ manù arå yeô tï bå defined. + + Cmds: R,W + Thå Ò Commanä ió useä tï reaä iî á Directorù Filå anä × +ió useä tï writå iô out®  Wheî MKDIÒ ió firsô  invoked¬  iæ +thå  commanä ió simplù "MKDIR"¬  theî thå defaulô  directorù +filå  ió defineä tï bå NAMES.DIR®  Iæ thå commanä ió "MKDIÒ +dir:filename.typ"¬   theî  thå  defaulô  directorù  filå  ió +defineä  tï  bå  thå  indicateä  filå  anä  iô  ió  reaä  iî +immediatelù (subsequenô Ò commanä ió noô  necessary)®  Wheî +thå useò issueó thå Ò command¬ hå wilì bå prompteä with: + + Name of File ( = filename.typ)? + +Iæ hå strikeó RETURN¬  thå defaulô filå ió read® Otherwise¬ +hå  caî typå iî á filå namå oæ hió choice®  Nï defaulô filå +typå  ió assumed¬  sï thå filå maù bå anù  name®  Thå  samå +prompô appearó tï thå × (Write© command®  Iî botè cases¬ iæ +thå useò wisheó tï enteò hió owî filå name¬ iô maù bå oæ thå +forí  "dir:filename.typ¢ sï hå caî reaä iô froí oò placå  iô +anywhere. + Cmd: W + ×  wilì writå bacë tï thå currenô directorù aó  opposeä +tï  thå  directorù  thå  filå originallù camå  froí  iæ  thå +defaulô forí ió accepted. + Cmd: S + Finally¬  thå  Ó commanä (Status© telló thå  useò  somå +statuó informatioî oî MKDIR. + +:2 + Memory-Based Named Directories + + Nameä  Directorieó  arå implementeä bù loadinç á  *.NDÒ +filå createä bù MKDIÒ intï thå ZCPR³ memorù buffeò  reserveä +tï contaiî thå nameä directorù definition® Oncå loaded¬ alì +directory-to-DÕ associationó iî thå filå arå madå effective¬ +and any ZCPR3 command can make use of them. + + Onå oæ thå manù purposeó oæ LDÒ ió tï loaä á *.NDÒ filå +intï  memory®  LDÒ recognizeó thå NDÒ filå typå tï refeò tï +nameä directorù files¬  anä iô loadó thå file¬ doinç á quicë +formaô  checë tï ensurå thaô iô ió á valiä  nameä  directorù +file. + +:P + +Command: PWD 1.0 + +Syntax: + + PWD o + +Function: + + PWÄ  functionó  tï  displaù  thå  nameó  oæ  thå  nameä +directorieó  tï  thå user®  Iæ thå Ð (Password©  optioî  ió +included¬  theî  thå  passwordó tï thå directorieó  wilì  bå +included in the display IF the Wheel Byte is set. + +Options: + + P - Display Passwords + + +Comments: + + Iæ thå Wheeì Bytå ió noô implementeä foò á system¬ theî +itó addresó ió 0¬ wherå thå JMÐ instructioî tï thå Warí Booô +routinå  iî thå BIOÓ ió located®  Sincå JMÐ ió non-zerï  iî +value¬  thå  Wheeì  Bytå  ió TRUE¬  anä  passwordó  wilì  bå +displayed by PWD. + +Selected Error Messages: + + "Passworä  Requesô Denieä - Noô Wheel¢ meanó thaô thå Ð +optioî  waó  giveî  buô  thå Wheeì  Bytå  waó  noô  set¬  sï +passwords will not be displayed. + + "Nameä Directorù Buffeò Noô Available¢ meanó thaô nameä +directories are not implemented. + + +Examples of Use: + + PWD + -- display named directories + + PWD P or PWD PASSWORD (only leading P is significant) + -- display named directories and passwords + +:C + +Command: CD 3.0 + +Syntax: + + CD dir: +or + CD du: + +Function: + + CÄ   (Changå  Directory©  ió  useä  tï  movå  froí  onå +directorù tï anotheò bù usinç thå nameó oò literaì DÕ  formó +associateä  witè  thå directories®  CÄ firsô logó intï  thå +referenceä directory¬  and¬  iæ therå ió á filå nameä ST.COÍ +iî  it¬  CÄ wilì loç thå useò intï thå referenceä  directorù +anä invokå ST.COM®  Iæ therå ió nï filå nameä ST.COÍ iî thå +directory¬ CÄ wilì simplù loç thå useò in. + + +Options: + None + +Comments: + + Undeò  ZCPR3¬  therå arå twï basiã wayó tï loç  intï  á +directory®  Onå  waù ió bù usinç thå DUº  oò  DIRº  prefix¬ +like: + + B1:ASM>TEXT: +or + B1:ASM>C7: + +The other way is by using CD, like: + + B1:ASM>CD TEXT: +or + B1:ASM>CD C7: + + + Thå tradeofæ ió iî useò efficiency®  Iæ á directorù ió +alwayó  useä foò á particulaò function¬  sucè aó  cataloginç +disks¬  CÄ maù bå preferreä becauså iô wilì noô onlù loç thå +useò  iî  buô  wilì alsï ruî ST.COM¬  whicè caî seô  uð  hió +environment¬  sucè aó bù runninç MENÕ oò somå otheò  prograí +oò grouð oæ programs. + + ST.COÍ ió aî Alias®  Thå onlù purposå oæ SÔ ió tï loaä +thå Multiplå Commanä Linå Buffeò witè á commanä linå wheî iô +ió  executeä  withouô anù options®  Thió commanä  linå  maù +contaiî  á  reasonablå numbeò oæ commandó whicè perforí  anù +desireä seô oæ functions. + + + Iî thå ZCPR³ environment¬ gooä candidatå commandó tï bå +executeä bù runninç SÔ viá CÄ includå thå following: + + LDR file.NDR <-- Set up a new directory environ + PATÈ path-exð <-- Seô uð á ne÷ Commanä Searcè Path + MENU <-- Invoke the MENU Preprocessor + ECHO message <-- Print a Message to the User + + Thå user'ó environmenô caî changå drasticallù bù  usinç +CÄ  tï  loç  intï  á  ne÷  directory®   Thå  nameó  oæ  thå +directorieó  hå  caî  accesó  caî changå  (LDÒ  changeó  thå +Memory-Baseä  names)¬  thå commanä searcè patè hå  useó  caî +change¬  anä  hå caî eveî finä himselæ iî á MENÕ environmenô +oò otheò front-enä insteaä oæ á ZCPR³ commanä environment. + + +Selected Error Messages: + + "Commanä Linå Overflow¢ meanó thaô therå waó noô enougè +rooí  iî  thå commanä linå tï inserô thå commanä  tï  invokå +ST.COM. + +Examples of Use: + + CD TEXT: + -- log into directory TEXT + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/NEWTCAP.Z80 b/Images/Source/hd0/s0/u15/NEWTCAP.Z80 new file mode 100644 index 00000000..5bda1668 --- /dev/null +++ b/Images/Source/hd0/s0/u15/NEWTCAP.Z80 @@ -0,0 +1,170 @@ +; +; **** DRAFT--Not Final **** +; ZCPR 3.3 System TCAP +; Copyright 1985, 1986 by Richard Conn, Dennis Wright, and Echelon, Inc. +; All Rights Reserved +; +; Note on Padding: +; All entries which have an asterisk (like, *) following +; their one-line explanation have delays which may be +; variable. +; Note on Definition: +; If a function is not available for a particular terminal, +; its string should be 0 and its delay should be 0 (if it has +; a delay). +; +; +; Section 1: Basic Terminal Characteristics +; +; YU Single Character Generated by Uparrow Key on Keyboard +; YD Single Character Generated by Downarrow Key on Keyboard +; YL Single Character Generated by Leftarrow Key on Keyboard +; YR Single Character Generated by Rightarrow Key on Keyboard +; Note: If no arrow keys or arrow keys generate more than +; one character (like VT100), then use WordStar convention +; for these codes: YU=^E, YD=^X, YL=^S, YR=^D +; +; CL Clear Screen String (has a delay which may be variable); +; cursor is placed in home position (upper left corner) when +; this sequence is complete +; +; CM Cursor Motion String (see explanation of codes in the Manual) +; +; CE Clear to End of Line String; cursor is left at original +; position when this sequence is complete +; +; SO Begin Highlighting (Reverse Video or Dim); no character +; positions on the screen are used by this sequence (ie, cursor +; does not move after this sequence is complete) +; SE End Highlighting (return to Normal display intensity); no +; character positions on the screen are used by this sequence +; +; TI Initialize Terminal String; it is preferred that nothing be +; output to the screen by this sequence, but no output is not +; required +; TE Deinitialize Terminal String; it is preferred that nothing +; be output to the screen by this sequence +; +envorg2: + db 'WYSE 50 ' ; Name of Terminal (16 chars) + db 'K'-'@' ; YU (YU = Cursor UP) + db 'J'-'@' ; YD (YD = Cursor DOWN) + db 'L'-'@' ; YL (YL = Cursor LEFT) + db 'H'-'@' ; YR (YR = Cursor RIGHT) + db 0 ; CL Delay (CL = Clear Screen)* + db 0 ; CM Delay (CM = Cursor Motion) + db 0 ; CE Delay (CE = Clear to EOL) + db 1bh,'+',0 ; CL String + db 1bh,'%ia%dR%dC',0 ; CM String + db 1bh,'T',0 ; CE String + db 1bh,')',0 ; SO String (SO = Stand Out Mode) + db 1bh,'(',0 ; SE String (SE = End Stand Out Mode) + db 0 ; TI String (TI = Terminal Init) + db 0 ; TE String (TE = Terminal Deinit) +; +; Section 2: Business Graphics +; +; The following strings are used to create graphics symbols. +; If your terminal does not support business graphics, make (GO) and (GE) +; a non-zero non-printable character that has no effect on your +; terminal and use ASCII characters like '*' to replace the graphics +; characters. Recommended character values are indicated in [], like [*]. +; An alternate recommendation using '.' and ':' will be made with release +; of ZCPRB3. +; + db 0 ; GO Delay (GO = Graphics On) + db 0 ; GE Delay (GE = Graphics End) + db 27,'H',2,0 ; GO - Graphics on string + db 27,'H',3,0 ; GE - Graphics end string + db '2',0 ; GULC - Upper left corner [*] + db '3',0 ; GURC - Upper right corner [*] + db '1',0 ; GLLC - Lower left corner [*] + db '5',0 ; GLRC - Lower right corner [*] + db ':',0 ; GHL - Horizontal line [-] + db '6',0 ; GVL - Vertical line [|] + db '7',0 ; GFB - Full block [*] + db '?',0 ; GHB - Hashed block [#] +; db ';',0 ; GHB - Use this if RSP is used +; on WYSE 50 because the +; ? (01fh) will be confused +; with the ELM end line mark + db '0',0 ; GUI - Upper intersect [+] + db '=',0 ; GLI - Lower intersect [+] + db '8',0 ; GIS - Intersection [+] + db '9',0 ; GRTI - Right intersect [+] + db '4',0 ; GLTI - Left intersect [+] +; +; Section 3: Windowing +; +; The following environmental data must be present if window +; routines are to be used. GCM (Graphic Character Mask) contains +; any bits that are not used by on screen graphics characters. +; GCD (Graphics Chararacter Difference) are the bits that are +; stripped (by the terminal) from a sent graphics character to +; form the on screen graphics character. +; + db 0e0h ; GCM - Graphic character mask byte + db 20h ; GCD - Graphic char difference bit(s) +; +; The next string can be either a terminal control code or an +; address of a user supplied subroutine. If a user supplied routine +; is to be used set the U1 address accordingly. Remember if an +; address is placed here and both bytes of the address are 00h, +; then the RAT string will be used. If the RAT string is null the RSP +; string will be used. At least one of these two functions must be +; available for window routines, RAT is prefered. +; +; If a RAT user supplied routine is to be used it must return the +; characters as follows: +; +; RAT - Read character at cursor position must return the character +; at the current cursor position in the (A) register. +; +; + db 1bh,'M',0 ; RAT - Read char at current cursor + ; position +; db 0 ; Zero if using RSP +; +; Set the following address non-zero if user supplied RAT subroutine +; is to be used. +; + dw 0 ; U1 - Use user supplied RAT routine +; + db 1bh,'7',0 ; RSP - Read screen page +; +; If RSP is to be used the following two bytes must be defined; if not, +; make them zero. +; + db 1fh ; ELM - End of line mark + db 0dh ; EPM - End of screen mark +; +; These bytes are the screen codes sent by the terminal at the end of +; each line (ELM) and end of page (EPM). Some terminals like the WYSE 50 +; may have graphics character codes that are the same as the ELM or EPM +; codes. In this case an alternative graphic character must be used. +; +; Section 4: Extended Terminal Characteristics +; (More to be added in banked ZCPRB3 256-byte version) +; +; CD Clear to End of Display; the cursor is not moved by this +; action +; KL Keyboard Lock; the keys on the keyboard are made inoperative +; KU Keyboard Unlock; the keys on the keyboard are made operative +; +; CDO Cursor Display Off; Cursor is no longer displayed, no +; character positions on the screen are used by this sequence +; CDE Cursor Display Enable; Cursor is displayed, no character +; positions on the screen are used by this sequence +; + db 0 ; CD Delay (CD = Clear to End Display)* + db 1bh,'Y',0 ; CD String + db 1bh,'#',0 ; KL String (KL = Keyboard Lock) + db 1bh,'"',0 ; KU String (KU = Keyboard Unlock) + db 1bh,'`','0',0 ; CDO String (Cursor Display Off) + db 1bh,'`','1',0 ; CDE String (Cursor Display Enable) +; + ds 80H-[$-envorg2] ; Make exactly 80H bytes long +; +; End of ZCPR 3.3 TCAP +; + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/NOTE.COM b/Images/Source/hd0/s0/u15/NOTE.COM new file mode 100644 index 0000000000000000000000000000000000000000..7a491bc1469f7b9e56247e02e34ca2c0f81ed849 GIT binary patch literal 128 zcmX@i%@}3u>KDey@I{N0@vtDHk|^Uz28OP{i5s|`jC2h23SeL~Wn&NwaA5PJ(9t#S0iDGtR17ssH0f?zEIbOi>qbbb_!?cK}5bwn1c2)X>O4xY{24XhEkKsk=clw5d_RHj7^+~f4dFC za9ewOyM;{(2|(Sn;)fz;wR$AlER+&iIJ4B8y1oylSx?HNAH`QK82S? zCP#%jS08Ac7WyWprZLL_dN?sYej+aP&zw9OpPHB)7ZPK_-jQR+g##0lao`xd!!bBA z4$D9pnuHHM^y0)RA(;?{z`(@VM0`{LhPZGvK9-n@3xl94X|cPRy|W`HPk~V@wpwrp z5B2Rku(y5q+2J;+{otVaF0PN$kww-C$4{IhvSCT5i#YpT&gfdSsLF*`&1% zn03fnnSpddDnb6#Op+D`F)>+7;Hf+5fgJ(rvEw6?kPhIFj}lUnzOAC4+n|aUC`35X51lH%pQc<;Vz^!fGPHq=+(-6= zr?JOw=587z0@1vm#(^|?u?Q3aDsb8qWwBX_CX9NV*mhrHW^$A$s*%U(0cnzQ%kz|!ptrAEs{Y7fJZRyJC%XhQqj`~_7Sok;KGAQNGn4@eRA~b#f`8I!nj_L? z@Y-2t+FaK-hZ)pb9imBV0f*_G?DXiR}&=rRZ z{i#E_LFLgDl>_GhjS6*gs^X9Xcrl{_g(CoiJk`c44#-_}J*%d&pe*VH1~*>6g83u& zlFJP-=(MbM!ZEw-h|OMJN}KM2=`83JG(LFts>3d)9LnpCvRbwbM!P|_2HY590B}U4 ziOeoxMYxi!!i40jF*N9v^A6PN#Ot%aI^;B&rN}gmw`vKt3V_f&<1=2n+~`!HE|pFvK+~^1=!6nAZCa+m zydN}~gW3~Lv*V^2xluo1>LzGjOk-yQYZ13EI zqMdu;=W;JaJCw1`*^Tf)vCi3iIL@Mf@|MsJwpc>nr;EABIGa^7zVLB2JkEj}sqh3_ z0@F^Wm=2GzW<%`-4r zxxhf;;tUYv3rrck!w$I67tCcWGQnola;66>f7??2w>9N(BVK3xejOqTUX?#$aQpuZ z7&MhJNH4^oyvu-CQxG%&I1XykX7kD#WA+rxBL%a)U`7gNTfyuun9)MEV0Nh)HBSWYHo+R3{}p2wvFAX?tq=bnTD@VrC8|P zr&vsZZS(ml8=!XiDOOEeN7Z*&H4p3NT1onp<+l)lK2e-~b@50e5hzw6T1;&x0_kEo zTc5RkZML~Svl#Cq0*A$?#k5h(s-aI=5YS8cwGtOVcA`60gk1fGjoF*sM4&(aEXM&g zcZd^UsODh5O5sJ?8tEi(9SGibNL;vcks-f37)a{a9;SA|D(Ana` zzt9_;wJrD-Kl{ticDO)Ov0Tll+(uB0-@fNL055T(2)-F&=w;5RW3OTp5QsEl!DgGdwqpGJZ7NJ(S=elF(_m@L=^cmk;_sk>7C#f2sYd4PS*G#1392W=0V!XnqQLJ7P{T4xmOL`z!Id^#p zZ}>1*?}JfJePlZk^7mHFHtm5&%Ap5))oM9&_iq+KJ&Q*`gUkEA=JHw|&Z&)9 z2iTlb*S>rJR8>>>3|^#!2Ec)V69WbVH-NRZ=wXnlUhl;aZ;nI~?G*oAZ)tT)g{q%0RLz%w1sl@g@73q{QGG^K{@Dw!j{M^kfo^+qst$UeK|vn!Tdq+( zyyaP)s7{IaI0*78yo9k7F8Q2_cJuifW@*}8lhNltUOC3g!~DV(7;%eY*DI$@?`v8YoXTffTU&Kysf%nN=sq#D zvnO5YT@urk#cRLmPU9mzug5A*d0TfLEp=CqR2JoP-E)-&`4xb@*DeD5vGy838(eP9 zV@-iH`rZL_w!54YMKPZiVP==Rx^q$QMfpH?cMQ#R+vS7Z&AI3{`DAxQj-El!1)Dp2 lwnoC0bLPlRbM8jvh`J_S@-1YwpZnmyWL16N_y24EzX9O(0zv=) literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/PAGE.MAC b/Images/Source/hd0/s0/u15/PAGE.MAC new file mode 100644 index 00000000..3c592d1b --- /dev/null +++ b/Images/Source/hd0/s0/u15/PAGE.MAC @@ -0,0 +1,1183 @@ +; +; PROGRAM: PAGE +; VERSION: 2.0 +; DATE: 18 May 84 +; AUTHOR: RICHARD CONN +; PREVIOUS VERSIONS: 1.2 (26 Apr 83), 1.1 (25 Apr 83), 1.0 (22 Apr 83) +; +VERS equ 20 +z3env SET 0f400h + +; +; PAGE is THE file screen print utility for ZCPR3. Installable by +; Z3INS, PAGE provides a wide range of options for the user. First, PAGE +; allows the user to employ wild cards and file name lists (lists of files +; separated by commas, like: file1,file2,file3,...). Second, PAGE provides +; the following options: +; 0-9 Set Character Print Speed Delay +; I Inspect Files +; The user approves each file to be printed +; before the printing process begins +; L Toggle Line Numbering +; Each line may or may not begin with a line +; number +; P Toggle Screen Paging +; Snnnn Skip to Specified Page +; Printing begins on the indicated page +; +; During paged output, various parameters can be changed dynamically. +; In particular, the letter P toggles screen paging and the digits 0-9 +; vary the speed WHILE the output is being presented. The effect is immediate. +; Control characters may be used to perform additional control functions: +; ^S pauses the output, ^X aborts paging of current file and advances to +; the next file, and ^C aborts to the operating system. +; + +FALSE EQU 0 +TRUE EQU NOT FALSE + +; +; BASIC SYSLIB ROUTINES NEEDED BY TEMPLATE +; +ESIZE EQU 16 ; SIZE OF DIR ENTRY (FROM SYSLIB DIRF ROUTINE) + + EXT DIRQ ; DIRECTORY PROCESSOR + + EXT Z3INIT ; INIT BUFFERS + EXT ZFNAME ; FILE NAME PROCESSOR + EXT GETCRT ; GET CRT PARAMETERS + EXT Z3LOG ; LOG INTO DIR + + EXT INITFCB ; INIT FCB + EXT RETUD ; RETURN CURRENT USER/DISK + EXT PUTUD ; SAVE CURRENT USER/DISK + EXT GETUD ; RESTORE CURRENT USER/DISK + EXT PRINT ; PRINT STRING PTED TO BY RET ADR + EXT PADC ; PRINT A IN DEC + EXT COUT ; CONSOLE OUTPUT ROUTINE + EXT CST ; CONSOLE STATUS ROUTINE + EXT CIN ; CONSOLE INPUT ROUTINE + EXT CAPS ; CAPITALIZE ROUTINE + EXT CRLF ; NEW LINE ROUTINE + EXT CLINE ; COMMAND LINE STRING SAVE ROUTINE + EXT CODEND ; CODE END COMPUTATION ROUTINE + + EXT F$OPEN ; FILE OPEN + EXT F$READ ; BLOCK READ + EXT F$CLOSE ; FILE CLOSE + + EXT EVAL10 ; STRING TO BINARY CONVERSION + EXT PHLDC ; PRINT HL IN DECIMAL ROUTINE + EXT MOVEB ; MOVEB ROUTINE + +; +; CP/M EQUATES +; +CPM EQU 0 ; WARM BOOT +BDOSE EQU CPM+5 ; BDOS ENTRY +FCB EQU CPM+5CH ; FCB +TBUFF EQU CPM+80H ; INPUT LINE BUFFER +DEL EQU 7FH ; +CR EQU 13 ; +FF EQU 12 ; +LF EQU 10 ; +CTRLC EQU 'C'-'@' ; ^C +CTRLG EQU 'G'-'@' +CTRLH EQU 'H'-'@' +CTRLI EQU 'I'-'@' +CTRLS EQU 'S'-'@' +CTRLX EQU 'X'-'@' +CTRLZ EQU 'Z'-'@' + +; +; OTHER EQUATES +; +EOLD EQU 0FFH ; END OF LOAD DELIMITER + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + jmp startx + +; +; **** Special Initial Value Area +; +CWIDTH: + DB 80 ; WIDTH OF SCREEN +CTPP: + DB 22 ; LINES OF TEXT PER SCREEN +CSPP: + DB 1 ; LINES TO SKIP PER SCREEN +; +; NOTE: CTPP + CSPP + 1 (FOOTER SIZE) = TOTAL LINES PER SCREEN ON CONSOLE +; +DLNUMFL: + DB 0 ; LINE NUMBER FLAG (DEFAULT TO NO) +DPAGEFL: + DB 0FFH ; PAGE NUMBER FLAG (DEFAULT TO YES) +DINSPECT: + DB 0 ; INSPECT FILES (DEFAULT TO NO) +DDELAY: + DB 0 ; DELAY COUNT (DEFAULT TO 0) +; +; OTHER BUFFERS +; +SKIPFL: + DB 0 ; SKIP FLAG (DEFAULT TO NO) +SKIPNUM: + DS 2 ; PAGE NUMBER TO SKIP TO +LNUM: + DS 2 ; CURRENT LINE NUMBER +PNUM: + DS 2 ; CURRENT PAGE NUMBER +LNUMFL: + DB 0 ; LINE NUMBER FLAG (DEFAULT TO NO) +PAGEFL: + DB 0FFH ; PAGE NUMBER FLAG (DEFAULT TO YES) +INSPECT: + DB 0 ; INSPECT FILES (DEFAULT TO NO) +DELAY: + DB 0 ; DELAY COUNT (DEFAULT TO 0) + +; +; Start of Program +; +STARTX: + LXI H,0 ; GET STACK PTR + DAD SP + SHLD STACK ; SAVE IT + CALL CODEND ; DETERMINE FREE SPACE + SHLD CMDLNE ; COMMAND LINE BUFFER + LXI D,100H ; BUFFER SIZE + DAD D + SHLD DIRBUF ; ADDRESS OF DIRECTORY BUFFER (TOP OF LOCAL STACK) + SPHL ; SET NEW STACK + CALL PUTUD ; SAVE CURRENT USER/DISK AWAY + + CALL GETCRT ; GET CRT PARAMETERS + MOV A,M + STA CWIDTH + INX H + INX H + MOV A,M ; GET NUMBER OF TEXT LINES + STA CTPP + MOV B,A ; ... IN B + DCX H + MOV A,M ; GET TOTAL NUMBER OF LINES + SUB B ; COMPUTE NUMBER OF LINES TO SKIP/SCREEN + SUI 1 ; 1 LINE FOR PROMPT + STA CSPP + + LXI D,TBUFF+1 ; SAVE COMMAND LINE + LHLD CMDLNE ; GET PTR TO COMMAND LINE SAVE BUFFER + XCHG + MVI B,80H ; SIZE OF LINE + CALL MOVEB ; COPY COMMAND LINE + +; +; **** Banner of Program +; + CALL PRINT + DB 'PAGE, Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0',0 + +; +; Check for Help Request +; + LDA FCB+1 ; GET FIRST CHAR OF FILE NAME + CPI ' ' ; NO FILE SPEC? + JZ HELP + CPI '/' ; OPTION CAUGHT? + JNZ ECONT + +; +; **** Print Help Information +; +HELP: + CALL PRINT + DB CR,LF,'Syntax:' + db cr,lf,' PAGE file1,file2,...,filen o...' + db cr,lf,'Options:' + db cr,lf,' 0-9 Select Delay Constant' + db cr,lf,' I Inspect and Select Files First' + db cr,lf,' L Toggle Numbering of Each Line' + db cr,lf,' P Toggle Paging' + db cr,lf,' Snnnn Skip to Specified Page before Printing' + db cr,lf + db cr,lf,'Examples:' + db cr,lf,' PAGE MYFILE.TXT,*.MAC LI' + db cr,lf,' -- Number Lines, Inspect Files' + db cr,lf,' PRINT MYFILE.* S25' + db cr,lf,' -- Skip to Page 25' + db cr,lf + db cr,lf,'Commands during printout:' + db cr,lf,' ^C - abort PAGE ^X - skip to next file' + db cr,lf,' ^S - suspend output P - toggle paging' + db cr,lf,' 0-9 - change speed' + DB 0 + +; +; RETURN TO OS +; +RETURN: + LHLD STACK ; GET OLD STACK + SPHL ; SET IT + RET + +; +; PROGRAM'S INIT ROUTINE +; +ECONT: + CALL INIT ; PROG INIT ROUTINE +; +; EXTRACT FLAGS IF PRESENT +; + LXI H,0 ; SET FILE COUNT + SHLD FILECNT + LHLD CMDLNE ; PT TO BUFFER +; +; SKIP TO FILE NAME STRING +; + CALL SBLANK ; SKIP OVER BLANKS +; +; SKIP TO END OF FILE NAME STRING +; + CALL SNBLANK ; SKIP OVER NON-BLANKS +; +; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO +; +OPT: + CPI '/' ; OPTION CHAR? + JNZ OPTION + INX H ; SKIP SLASH +; +; PROCESS LIST OF OPTIONS +; +OPTION: + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ DSPEC + INX H ; PT TO NEXT CHAR + CPI ' ' ; SKIP OVER SPACES + JZ OPTION + MOV C,A ; COMMAND IN C + LXI D,OPTAB ; PT TO OPTION TABLE +OPTL: + LDAX D ; GET OPTION LETTER + ORA A ; END OF TABLE? + JZ HELP ; HELP IF SO + CMP C ; MATCH? + JZ OPTM ; PROCESS IF SO + INX D ; PT TO NEXT ENTRY + INX D + INX D + JMP OPTL +; +; PROCESS OPTION +; +OPTM: + PUSH H ; SAVE HL ON STACK + LXI H,OPTION ; GET RETURN ADDRESS + XTHL ; ... ON STACK AND RESTORE HL + INX D ; PT TO ADDRESS + LDAX D ; GET ADDRESS LOW + MOV B,A ; ... IN B + INX D + LDAX D ; GET ADDRESS HIGH + MOV D,A ; ... IN D + MOV E,B ; LOW IN E + PUSH D ; PUT ADDRESS ON STACK + MOV A,C ; COMMAND IN A + RET ; "CALL" OPTION ROUTINE + +; +; **** PROGRAM INIT ROUTINE +; THIS ROUTINE IS USED BY THE PROGRAM TO PERFORM ANY INITS +; +INIT: + lxi h,dlnumfl ;copy defaults into buffers + lxi d,lnumfl + mvi b,4 ;4 bytes + call moveb ;do copy + xra a ;A=0 + sta skipfl ;set no skip + RET + +; +; **** OPTION TABLE +; EACH OPTION IS A CAPITAL LETTER OR SPECIAL CHAR FOLLOWED BY +; AN ADDRESS; THE TABLE IS TERMINATED BY A BINARY ZERO +; +OPTAB: + db '0' + dw optnum + db '1' + dw optnum + db '2' + dw optnum + db '3' + dw optnum + db '4' + dw optnum + db '5' + dw optnum + db '6' + dw optnum + db '7' + dw optnum + db '8' + dw optnum + db '9' + dw optnum + db 'I' + dw optinsp + db 'L' + dw optln + db 'P' + dw optpage + db 'S' + dw optskip + DB 0 ; END OF TABLE +; +; Set Delay Constant +; +optnum: + sui '0' ;set constant + sta delay + ret +; +; Toggle Inspect Option +; +optinsp: + lda inspect ;flip flag + cma + sta inspect + ret +; +; Set Line Number Flag +; +optln: + lda lnumfl ;flip flag + cma + sta lnumfl + ret +; +; Toggle Paging +; +optpage: + lda pagefl ;flip flag + cma + sta pagefl + ret +; +; Set Skip Flag and get number +; +optskip: + mvi a,0ffh ;set flag + sta skipfl + call eval10 ;get number + xchg + shld skipnum ;set page number to skip to + xchg ;HL pts to next char + mov a,d ;see if page number was zero + ora e + jnz option + xra a ;if zero, just turn off skip flag + sta skipfl + ret +; +; BEGIN MOVING THROUGH FILE NAMES, SEPARATED BY COMMAS +; +DSPEC: + LHLD CMDLNE ; PT TO FIRST BYTE + CALL SBLANK ; SKIP TO NON-BLANK +; +; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS +; HL PTS TO FIRST BYTE OF NEXT FILE SPEC +; +DSPEC1: + SHLD HLTMP ; SAVE HL + LHLD DIRBUF ; RESET STACK + SPHL + LHLD HLTMP ; RESTORE HL + CALL GETUD ; RESET USER IF NECESSARY + LXI D,FCB ; PT TO FCB IN DE, PT TO FIRST CHAR OF FILE NAME IN HL + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + LXI D,FCB ; PT TO FCB + CALL Z3LOG ; LOG INTO DU FOR FILE + +; +; LOAD DIRECTORY AND PERFORM FUNCTION +; +FCT: + LXI D,FCB ; PT TO FCB + CALL INITFCB ; INIT THE FCB + MVI A,11000000B ; SELECT SYS AND NON-SYS FILES + LHLD DIRBUF ; PT TO DIR BUFFER + CALL DIRQ ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE +; +; DETERMINE BEGINNING OF SCRATCH AREA (SCRATCH) AND SIZE IN PAGES (BCNT) +; + PUSH H ; SAVE PTR AND COUNT + PUSH B + LXI D,ESIZE ; SET PTR TO NEXT FREE BLOCK +FCTFRE: + MOV A,B ; DONE? + ORA C + JZ FCTFR1 + DAD D ; PT TO NEXT + DCX B ; COUNT DOWN + JMP FCTFRE +FCTFR1: + INR H ; NEXT PAGE + MVI L,0 + SHLD SCRATCH ; SET PTR TO SCRATCH AREA + XCHG ; PTR IN DE + LHLD BDOSE+1 ; COMPUTE BLOCK BUFFER SIZE + MOV A,H ; ADJUST FOR ZCPR3 + SUI 10 + SUB D ; A=SIZE IN BLOCKS + STA BCNT ; SET BLOCK COUNT + POP B ; RESTORE AND SAVE REGS + POP H +; +; ALLOW USER TO INSPECT FILES +; + PUSH H + PUSH B + CALL ICHECK ; CHECK FOR INSPECT OPTION AND INSPECT IF SET + POP B ; RESTORE COUNT AND PTR + POP H + +; +; PERFORM FUNCTION; HL PTS TO FILE AND BC CONTAINS NUMBER OF FILES +; +FCTL: + MOV A,B ; CHECK FOR COMPLETION (COUNT = 0) + ORA C + JZ FCTL1 + DCX B ; COUNT DOWN + SHLD HLTMP ; SAVE HL + LHLD DIRBUF + SPHL ; SET STACK + LHLD HLTMP ; RESTORE HL + PUSH B ; SAVE COUNT AND PTR + PUSH H + CALL FUNCTION ; PERFORM FUNCTION +FCTLNXT: + LHLD DIRBUF ; RESTORE STACK + LXI D,-4 + DAD D ; RESTORE PTR TO BC, HL + SPHL ; SET STACK + POP H ; RESTORE PTR + POP B ; RESTORE COUNT + LXI D,ESIZE ; PT TO NEXT ENTRY + DAD D + JMP FCTL + +; +; CHECK FOR NEXT FILE SPEC +; +FCTL1: + CALL GETUD ; RETURN TO BASE USER/DISK + LHLD NEXTCH ; GET PTR + MOV A,M ; GET DELIM + CPI ',' ; ANOTHER FILE? + JNZ DRETURN + INX H ; PT TO CHAR AFTER COMMA + JMP DSPEC1 ; CONTINUE PROCESSING + +; +; **** EMERGENCY ABORT +; +ABORT: + CALL PRINT + DB CR,LF,'** PAGE Abort **',CR,LF,0 + CALL GETUD ; RETURN HOME AND FALL THRU TO DRETURN +; +; **** FUNCTION COMPLETE -- CLEANUP AND EXIT +; FILL THIS IN WITH CLEANUP CODE FOR EXIT +; +DRETURN: + JMP RETURN + +; +; **** INSPECT FILES -- THIS ROUTINE IS TO PERFORM A FILE INSPECTION +; ON INPUT, HL PTS TO FIRST 16-BYTE ENTRY AND BC=NUMBER OF ENTRIES +; +ICHECK: + mov a,b ;any files? + ora c + rz + push h ;save ptrs + push b + lxi d,esize ;size of entry +ichk1: + mvi m,0 ;clear MSBytes + dad d ;pt to next + dcx b ;count down + mov a,b ;done? + ora c + jnz ichk1 + pop b ;restore ptrs + pop h + lda inspect ;inspect? + ora a ;0=no + rz + call print + db cr,lf,'PAGE File Inspect Mode' + db cr,lf,' Y (def) = Select File N = Don''t Select File' + db cr,lf,' Q = Select Rest of Files S = Skip Rest of Files' + db cr,lf,0 +ichk2: + call print + db cr,lf,'Select ',0 + call prfn ;print file name + call print + db ' -- (Y/N/Q/S)? ',0 + call cin ;get response + call caps ;capitalize + call cout ;echo + cpi 'Q' ;select rest? + jz ichkyr + cpi 'S' ;skip rest + jz ichknr + cpi 'N' ;no to this one? + jnz ichk3 + mvi m,0ffh ;set NO flag in file FCB +ichk3: + dad d ;pt to next one + dcx b ;count down + mov a,b ;done? + ora c + jnz ichk2 + RET +; Check Rest of Files as Selected +ichkyr: + call print + db cr,lf,' Rest of Files Selected',0 + ret +; Check Rest of Files as NOT Selected +ichknr: + mvi m,0ffh ;set NO flag + dad d ;pt to next + dcx b ;count down + mov a,b ;done? + ora c + jnz ichknr + call print + db cr,lf,' Rest of Files NOT Selected',0 + ret +; +; **** FUNCTION -- MAIN FUNCTION OF TEMPLATE +; ON ENTRY, HL PTS TO NAME OF FILE (16 BYTES) AND USER IS LOGGED INTO +; DIRECTORY CONTAINING INDICATED FILE +; +FUNCTION: +; +; FILE PAGE Routine -- Page the File Whose Name is Pointed to by +; HL; we are already logged into the correct directory +; + mov a,m ;file selected? + ora a ;0=yes + rnz + call prinit ;init print buffers + call fload ;load buffer initially + lhld scratch ;pt to first char in file + shld nxtln ;set pointer to next line +fprloop: + call prline ;print line of file + jnz fprloop ;done if EOF + call page ;advance to top of next page + call prfoot ;print footer + ret +; +; Init Print Buffers and Print File Name +; +prinit: + lxi d,tfcb ;set up FCB + mvi b,12 ;12 bytes + call moveb + lxi h,0 ;HL=0 + shld pnum ;set page number + shld lnum ;set line number + lda ctpp ;set line count + dcr a ;1 less for first line + sta lcount + call print + db cr,lf,'PAGE File: ',0 + lxi h,tfcb ;print file name + call prfn + call crlf + ret +; +; FILE LOAD (FLOAD) Routine -- Initial Load of memory buffer +; +fload: + lxi d,tfcb ;pt to file fcb + call initfcb ;init file's fcb + call f$open ;open file for input + jz fload1 ;open was OK + call print + db cr,lf,'File ',0 + xchg ;HL pts to FCB + call prfn ;print file name + call print + db ' NOT Found',0 + pop d ;clear return address + ret ;abort printout of this file +; +; This is an entry point for further memory loads of the file +; +fload1: + lda bcnt ;get number of blocks to load + mov c,a ;... in C + lhld scratch ;get address of first block to load into + shld nxtblk ;set pointer to next block to load +fload2: + call rdblk ;read a block (128 bytes) + jnz eof ;eof encountered? + call rdblk ;read another block (128 bytes) + jnz eof ;eof encountered? + dcr c ;count down + jnz fload2 + lhld nxtblk ;pt to next byte to load + mvi m,eold ;mark end of load + ret +eof: + lxi d,tfcb ;close file + call f$close + lhld nxtblk ;ensure ^Z + mvi m,ctrlz + ret +rdblk: + lxi d,tfcb ;pt to FCB + call f$read ;read next block + ora a ;error? + rnz + lhld nxtblk ;get ptr to next block + xchg ; as dest + lxi h,tbuff ;ptr to DMA address + mvi b,128 ;copy 128 bytes +rdblk1: + mov a,m ;get byte + ani 7fh ;mask out msb + stax d ;put byte + inx h ;pt to next + inx d + dcr b ;count down + jnz rdblk1 + xchg ;new nxtblock + shld nxtblk + ret + +; +; Line Print Routine +; Print Next Line with Optional Disk Load +; Input Parameter is NXTLN, which is the address of the first char +; on the next line +; Output Parameter is Zero Flag, with Z meaning done with print, NZ +; meaning more yet to print +; +prline: + lhld lnum ;increment line number + inx h + shld lnum + lhld nxtln ;pt to first char of next line + mvi c,0 ;init char count + mov a,m ;get first char of line + cpi ctrlz ;EOF? + cnz prlnum ;print line number (optional) +prl1: + mov a,m ;get char + cpi eold ;end of load? + jz prload + cpi ctrlz ;eof? + jz prexit + inx h ;pt to next char + cpi ctrli ;tab? + jz prtab + cpi cr ;? + jz prcr + cpi ff ;form feed? + jz prff + cpi lf ;end of line? + jz prldn + cpi ctrlh ;back space? + jz prbs + cpi ctrlg ;ring bell? + jz prbell + cpi del ;delete char? + jz prl1 ;skip it + cpi ' ' ;other control char? + jc prl1 ;skip if other control char + call prout ;print char + inr c ;increment char count + call eoltest ;check to see if at end of line and newline if so + jmp prl1 +; +; End of Load Reached -- Load More of File from Disk +; +prload: + push b ;save char count + call fload1 ;use load routine + pop b ;get char count + lhld scratch ;next byte is here + jmp prl1 ;continue processing +; +; Tabulate +; +prtab: + mvi a,' ' ;space + call prout + inr c ;new char + call eoltest ;process EOL + mov a,c ;done? + ani 7 + jnz prtab ;continue tabulation + jmp prl1 ;continue processing +; +; Exit with Zero Flag Set if Done +; +prexit: + xra a ;set zero flag + ret +; +; Carriage Return -- Reset Character Count and Continue +; +prcr: + call prout ;send CR to printer + mvi c,0 ;reset char count + jmp prl1 ;continue processing +; +; Form Feed -- Advance to Top of Next Page +; +prff: + call page ;page eject with heading + mvi c,0 ;reset char count + jmp prl1 ;continue processing +; +; Line Feed -- End of Routine +; +prldn: + call prout ;echo LF to printer + shld nxtln ;set ptr to first char of next line + mvi a,0ffh ;set not done + ora a ;set flags + ret +; +; Backspace on Printer +; +prbs: + mov a,c ;check for beginning of line + ora a + jz prl1 ;continue if at BOL + mvi a,ctrlh ;backspace + call prout + dcr c ;back up char position + jmp prl1 ;continue +; +; Ring Bell on Printer +; +prbell: + call prout ;ring the bell + jmp prl1 ;continue without advancing char position +; +; Test for End of Line and Process if so +; +eoltest: + lda cwidth ;get line width + sui 4 ;4 chars less for continuation mark + mov b,a ;result in B + lda lnumfl ;line numbering (lines are 7 chars shorter if so) + ora a ;0=no + jz eolt1 + mov a,b ;reduce by 7 for line numbers + sui 7 + mov b,a +eolt1: + mov a,b ;get line width + cmp c ;there? + rnz ;continue if not + mov a,m ;get next char + cpi cr ;new line next? + rz ;continue if so + cpi ctrlh ;backspace next? + rz ;continue if so + push h + mvi b,3 ;see if a new line in next 3 chars +eolt2: + inx h + mov a,m ;look for CR + cpi cr + jz eolt3 + dcr b + jnz eolt2 + jmp eolt4 +eolt3: + pop h ;restore ptr + ret +eolt4: + pop h ;restore ptr + mvi a,' ' ;print continuation chars + call prout + mvi a,'<' + call prout + mvi a,'<' + call prout + mvi a,cr ;new line + call prout + mvi a,lf + call prout + mvi c,0 ;reset char position + lda skipfl ;skipping? + ora a ;0=no + rnz + lda lnumfl ;printing line numbers? + ora a ;0=no + rz + call print + db ' : ',0 + ret +; +; Output a character to the console +; A = Character +; +prout: + mov b,a ;char in B + call cst ;check for abort + jnz prout1 + call ctrlin ;get control input +prout1: + lda skipfl ;skipping? + ora a ;set flags (Z=no skip=print char) + mov a,b ;restore char + cz ctrlout ;send character to printer + cpi lf ;special tests if it is a line feed + rnz ;done if non-LF char + lda lcount ;decrement line counter + dcr a + sta lcount + rnz +; +; Paging Required +; Skip to top of next page; reset LCOUNT (Lines Left on Page Count); +; increment PNUM (Screen Number); test for skip stop; print header +; +prout0: + lda ctpp ;get number of text lines per page + sta lcount ;set as new line count + push h ;save ptr + lhld pnum ;increment page number + inx h + shld pnum + lda cspp ;number of lines to skip + call lineskp ;skip lines + pop h ;restore ptr + call prfoot ;print 1-line footer + mov a,m ;check next char + cpi ctrlz ;EOF? + jz fctlnxt ;skip to next file + lda skipfl ;skipping? + ora a ;0=no + push h + cnz skiptst ;affects HL + pop h + ret +; +; Skip out rest of page +; Form Feed Function +; +page: + lda lcount ;get count of remaining lines + call lineskp ;skip lines + jmp prout0 ;process top of new page +; +; Skip out lines on page +; +lineskp: + mov b,a ;line count in B + ora a ;any? + rz + lda skipfl ;skipping? + ora a + rnz + lda pagefl ;paging? + ora a + rz +lines1: + mvi a,cr ;output new line to printer + call cout + mvi a,lf + call cout + dcr b ;count down + jnz lines1 + ret +; +; Control Input +; CTRLIN -- Main Routine Entry Point; Implements Dynamic Commands, +; including P, 0-9, ^S, ^X, and ^C +; CTRLCS -- ^S Reentry Point; Implements all Dyanamic Commands except ^S +; +ctrlcs: + call cin ;get input + jmp ctrlns +ctrlin: + call cin ;get input + cpi ctrls ;pause? + jz ctrlcs +ctrlns: + call caps ;capitalize + cpi ctrlc ;abort? + jz abort + cpi ctrlx ;skip to next + jz fctlnxt + cpi 'P' ;page now? + jz ctrlip + cpi '0' ;delay? + rc + cpi '9'+1 + rnc + sui '0' ;convert to binary + sta delay ;set delay count + ret +ctrlip: + lda pagefl ;toggle paging + cma + sta pagefl + ret +; +; Control Output +; +ctrlout: + push psw ;save char + call cout ;output char + lda delay ;pause? + ora a ;any delay? + jz ctrloz + push h ;delay + push b + mov b,a ;delay count +del1: + lxi h,500 ;delay constant +del2: + xthl ;long NOP + xthl + dcx h ;count down + mov a,h ;done? + ora l + jnz del2 + dcr b ;count down + jnz del1 + pop b ;restore regs + pop h +ctrloz: + pop psw ;restore A + ret +; +; Print Line Number (optional) +; +prlnum: + lda skipfl ;skipping? + ora a ;0=no + rnz + lda lnumfl ;get flag + ora a ;0=don't number lines + rz + push h ;save ptr + lhld lnum ;get line number + call phldc ;print line number + call print ;print separator + db ': ',0 + pop h ;restore ptr + ret +; +; Print 1-line footer +; +prfoot: + lda skipfl ;skipping? + ora a ;0=no + rnz + lda pagefl ;paging? + ora a + rz + push h ;save ptr + call prpnum ;print page heading and number + call prdash ;print dash + lxi h,tfcb ;pt to file FCB + call prfn ;print file name + pop h ;restore ptr + call print + db ' -- Strike Any Key ',0 + call ctrlin ;get control response + jmp crlf ;new line +; +; Test for completion of skipping +; +skiptst: + lhld pnum ;get page number + inx h ;increment for test + xchg ;... in DE + lhld skipnum ;get page to skip to + mov a,h ;compare them + cmp d + rnz + mov a,l + cmp e + rnz + xra a ;A=0 to stop skipping + sta skipfl ;set flag + ret +; +; Print Page Number +; +prpnum: + call print ;print header + db 'Screen ',0 + lhld pnum ;print current page number + call phldc ;print as decimal + ret +; +; Print Separator +; +prdash: + call print + db ' -- ',0 + ret +; +; UTILITIES +; SBLANK -- SKIP BLANKS PTED TO BY HL UNTIL NON-BLANK ENCOUNTERED; HL +; SNBLANK -- SKIP NON-BLANKS PTED TO BY HL UNTIL BLANK OR EOL; HL +; PRFN -- PRINT FILE NAME PTED TO BY HL; AFFECT NOTHING +; + +; +; SKIP UNTIL NON-BLANK +; +SBLANK: + MOV A,M ; LOOK FOR BLANK + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ SBLANK + DCX H ; BACK UP + RET + +; +; SKIP UNTIL BLANK OR EOL +; +SNBLANK: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ SNB1 + ORA A ; EOL? + JNZ SNBLANK +SNB1: + DCX H ; BACK UP + RET + +; +; PRINT FILE NAME PTED TO BY HL +; OUTPUT TO CON: +; +PRFN: + PUSH H ; SAVE REGS + PUSH B + CALL RETUD ; GET CURRENT USER/DISK + MOV A,B ; PRINT DISK + ADI 'A' ; LETTER + CALL COUT + MOV A,C ; PRINT USER + CALL PADC + CALL PRINT + DB ': ',0 + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL PRNT + MVI A,'.' ; DECIMAL + CALL COUT + MVI B,3 ; PRINT TYPE + CALL PRNT + POP B ; GET REGS + POP H + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; OUTPUT TO CON: +; +PRNT: + MOV A,M ; GET CHAR + CALL COUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PRNT + RET + +; +; BUFFERS +; +CMDLNE: + DS 2 ; PTR TO COMMAND LINE STRING +DIRBUF: + DS 2 ; PTR TO DIRECTORY BUFFER +NEXTCH: + DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE +FILECNT: + DS 2 ; COUNT OF NUMBER OF FILES RENAMED +SCRATCH: + DS 2 ; ADDRESS OF FIRST BYTE OF SCRATCH AREA +BCNT: + DS 1 ; NUMBER OF PAGES IN SCRATCH AREA +HLTMP: + DS 2 ; TEMP BUFFER TO STORE HL +; +; PAGE Buffers +; +tfcb: + ds 36 ; FCB for current file +nxtblk: + ds 2 ; pointer to next block to load +nxtln: + ds 2 ; pointer to next line to read +lcount: + ds 1 ; count of text lines left on page +; +; Stack +; +STACK: + DS 2 ; OLD STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/PATH.COM b/Images/Source/hd0/s0/u15/PATH.COM new file mode 100644 index 0000000000000000000000000000000000000000..7f93512fe39e66d7b0de979463f5a725748b0d0a GIT binary patch literal 1280 zcmb7CQD`GY7@q9R^wQV{o5O>)P^Q_wbYp7aKyhhvSM6Qy5SwbX2Nf-8FLK4Uscpc7 z>e{~CNuTcFUVKnrqzEDh2gkNAa@jRUXK{|(VoHb)8m|dTPzV~KBCG#ys-F1d!p{6N z-}is>{r`;lh;Qcfxru2X`bBB?i62QnLQjWlxPKFczs2H1Dt;!DV=rA`Y&x~Nwvb+C zr-z1-`YLjsFs}Ll>8 zco5>kB5&U|K6dq3l#R`$S2HS`NdJX?O^p11uuE4`sYS#UaH(VPs#|$U+@aw^+}hG~ zYg-C`hc#!w>Xi=0$}>`2d_WS}-TfI!ZtXfMKn{aJcY|TzII0Jmj!!wnb)}WBNC#&_ z@<~kwt+*5^iuZ7NUJ{>@k$7%re_pafCpAYkCM6k+)WL%Jl@C(I_t>~9c};pId6}Jq z%2R7z6O$Q+T*47iYWRr5QDjAaQ+Cb6iL!2e1h$MDQUvr|twa1If+p3WKrQ4}3TD8N zd8?()rgBSj>BWV4c0Rqjq%xNa^-~OfYtr4bVvD*J8^1~rnMaa%fr?MCtm$8ThRyP^ z#`w#}+1~wu23)=;a}i{WD9(=jBc$Tozcl)>S0x+2_~OGNt`CsW^gS?=#&OSu^%hRZ zRdEMbz(dQz91bGwV7R=EoxuJ!j_0nGu9Y_7-zX(ya|`P{rkY#sTV&B_j3Ev;!7Lp| zxX2Kzh}-;{!}i=Nsj-JS@FvpB$)yzHy-l(6oci0DV%H)8mbgGHKY`9s<0t4dERElB z#C(**SP1s~qzXK-ON>5Jv2SwdVGpSmWx37Y^SN<`xOs!buAHax1mL6GuJ}Tz-RvXc zHihRiOB}VFBF>l_y#i4oelwfrFpk31YxWE&rO~=~fJUgNzfN|H8${M3yY3`Y5G}Zx zc~gUvl?Lg09Cd4UMdz(m^mye#kD>0@3IOJ z?g1|rn$UB2Y0p!q-Fk|4K=+(ZYk)cdYmho8+`(@}sp*g)f}s=soNhtjMYR+0nE!fw zGZABuNR4M*Vk2+!La}+u*LGPf(6#^!cZUIP*m)jA*UM|P!+e8o%;t1sgWj?>=sG`z zavo)!Hw(pTLh+%Yj;{A<@rR0?Z}4WZ8tfJnHT(VuGME#Mc*Sn;+PhA& ',0 + ret + +; +; Skip to non-blank +; +sblank: + mov a,m ; get char + inx h ; pt to next + cpi ' ' ; space? + jz sblank + dcx h ; pt to non-blank + ret +; +; Scan directories for user and disk in C and B +; Print name if found or "Noname" if not +; +udscan: + call dutdir ; convert to name + jz udscan1 ; error return if no name + mvi b,8 ; 8 chars max +udsprn: + mov a,m ; get name char + cpi ' ' ; done? + rz + call cout ; print char + inx h ; pt to next + dcr b ; count down + jnz udsprn + ret +udscan1: + call eprint + db 'Noname',0 + ret + +; +; Buffers +; +cmdline: + ds 2 ; ptr to next char in command line +token: + ds 2 ; ptr to current token +pathptr: + ds 2 ; ptr to next path entry +strtstack: + ds 2 ; ptr to original stack + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/PATH31.LBR b/Images/Source/hd0/s0/u15/PATH31.LBR new file mode 100644 index 0000000000000000000000000000000000000000..81008dd4610f1a732d67a53d290edc8964b6f2fe GIT binary patch literal 7936 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 KDfs`Q|Nk$!yuC00 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/PPAL.DOC b/Images/Source/hd0/s0/u15/PPAL.DOC new file mode 100644 index 00000000..052fe6ad --- /dev/null +++ b/Images/Source/hd0/s0/u15/PPAL.DOC @@ -0,0 +1,361 @@ +;%BEGIN 0 +;%Program: PPAL +;%Author: Richard Conn +;%Version: +VERS equ 3 +;%Date: 3 Sep 1986 +;%Revision History: +;1. 1 Sep 86, Richard Conn +; Initial beta-test release +;2. 3 Sep 86, Richard Conn +; Fixed Z3INS compatability problem +; Created LSy option to control colons after labels of MACRO, SET, +; and EQU +; Placed IF/ELSE/ENDIF at same indentation level +; Change Iy option to IIy option +; Added IMy option for MACRO/ENDM indentation +; Added directives I+ and I- for manual increment and decrement of +; indentation level +; Fixed input line counting problem +;3. 5 Sep 86, Richard Conn +; Added Field3 indentation options for EQU and SET (OE and OS) +; Changed O directive to OC, OE, and OS +; Added comment in directive processor +;%Invocation: PPAL file_list [directive_list] +;%Index: Pretty Assembler +;%Index: PPAL +;%Index: Pretty Printer +;%Description: +; PPAL is a Pretty Printer for Assembly Language for the Z System. +;Its purpose is to reformat assembly language source programs in order to +;have all Z System programs conform to a standard structure. PPAL is highly +;configurable, accepting directives from both the command line and the source +;code itself, so that PPAL may be used to format programs in different ways +;for a variety of standards. +; Directives for specific configuration of the pretty printing process +;may be presented on the command line or within the body of the code in +;special comment lines, beginning with ";#". The following directives are +;recognized. In each general case (like, Au), the first letter indicates the +;directive name, and the following letters indicate types of characters which +;may be specified; specifically: +; o - option chars specific to the directive +; u - case indication, U for Upper-case, L for Lower-case, +; X for unchanged +; y - yes/no indication, Y for Yes, N for No, X for unchanged +; +; ;text - marks a comment in the directive line +; Au - controls the case of operands (arguments) +; AU makes non-quoted alphabetic argument characters upper-case +; AL makes non-quoted alphabetic argument characters lower-case +; AX leaves the case of argument characters unchanged +; By - remove blank lines +; BY (yes) turns on removal of blank lines +; BN (no) turns off removal of blank lines +; BX (unchanged) is the same as BN +; Cou, Coy - comment line formatting (a comment line is a line beginning +; with a semicolon, as opposed to an embedded comment) +; CWy controls removal of the space character after the +; semicolon +; CWY (yes) removes the space after the semicolon if a +; space is present, else no change +; CWN (no) inserts the space after the semicolon if no +; space is present, else no change +; CWX (unchanged) makes no change +; CFu controls case of the first character in the comment line +; CFU makes the first character upper-case +; CFL make the first character lower-case +; CFX leaves the case of the first character unchanged +; CAu controls case of all characters in the comment line +; except the first character if CFU or CFL is in effect +; CAU makes all characters upper-case +; CAL makes all characters lower-case +; CAX leaves the case of all characters unchanged +; Eou, Eoy - embedded comment formatting +; ECy controls placement of the embedded comment if it begins +; after field4 (column 33) +; ECY (yes) places embedded comments on the next line +; ECN, ECX (no, unchanged) leaves embedded comments +; on the same line +; EWy controls removal of the space character after the +; semicolon +; EWY (yes) removes the space after the semicolon if a +; space is present, else no change +; EWN (no) inserts the space after the semicolon if no +; space is present, else no change +; EWX (unchanged) makes no change +; EFu controls case of the first character in the comment +; EFU makes the first character upper-case +; EFL make the first character lower-case +; EFX leaves the case of the first character unchanged +; EAu controls case of all characters in the comment +; except the first character if EFU or EFL is in effect +; EAU makes all characters upper-case +; EAL makes all characters lower-case +; EAX leaves the case of all characters unchanged +; Ioy - indent lines subordinate to IFs or MACROs +; I+ increases the indentation level by 1 character +; I- decreases the indentation level by 1 character (0 min) +; IIy controls indentation for the IF/ELSE/ENDIF pseudo-ops +; IIY causes all opcodes subordinate to an IF to be +; indented one character; each successive IF +; causes another indentation; ENDIF brings the +; indentation level out; ELSE temporarily brings +; the indentation level out for the ELSE pseudo-op +; only +; IIN, IIX (no, unchanged) causes indentation under IFs +; to not take place +; IMy controls indentation for the MACRO/ENDM pseudo-ops +; IMY causes all opcodes subordinate to a MACRO to be +; indented one character; ENDM brings the +; indentation level out +; IMN, IMX (no, unchanged) causes indentation under +; MACROs to not take place +; Lou, Loy - control format of labels +; LFu controls the case of the first character of a label +; LFU makes the first character upper-case +; LFL makes the first character lower-case +; LFX leaves the case of the first character unchanged +; LAu controls the case of all characters in a label except +; the first character if LFU or LFL is in effect +; LAU makes all characters upper-case +; LAL makes all characters lower-case +; LAX leaves the case of all characters unchanged +; LCy controls the presence of a colon after a normal label +; LCY ensures that there is a colon after each label +; LCN ensures that there is no colon after each label +; LCX has no effect on a trailing colon; if one was +; present in the input, it is present in the output +; LSy controls the presence of a colon after a special label, +; where a "special" label is a label in front of a MACRO, +; SET, or EQU pseudo-op +; LSY ensures that there is a colon after a special label +; LSN ensures that there is no colon after a spec label +; LSX has no effect on a trailing colon; if one was +; present in the input, it is present in the output +; LLy controls the presence of a new line following a label +; LLY places a new line after a label +; LLN, LLX does not place a new line after a label +; L8y controls the presence of a new line following a label +; which is longer than 8 characters +; L8Y places a new line after an 8+ character label +; L8N, L8X does not place a new line after an 8+ +; character label +; Oou or Ooy - controls the appearance of opcodes +; OCu - controls the case of opcodes +; OCU makes opcodes upper-case +; OCL makes opcodes lower-case +; OCX leaves the case of opcodes unchanged +; OEy - indent EQU opcode to Field 3 (col 17)? +; OEY indents the EQU opcode to field3 (col 17) +; OEN, OEX indents the EQU opcode to field2 (col 9) +; OSy - indent SET opcode to Field 3 (col 17)? +; OSY indents the SET opcode to field3 (col 17) +; OSN, OSX indents the SET opcode to field2 (col 9) +; +; In addition to the above directives, four predefined formats +;are available via the Fn directive, where 0 <= n <= 3. The predefined +;formats are: +; F0 - reset all directives to null +; Remove blank lines (B): No +; Comment lines +; First char (CF): Unchanged +; All chars (CA): Unchanged +; Remove Space after ; (CW): Unchanged +; Embedded comments +; First char (EF): Unchanged +; All chars (EA): Unchanged +; Remove Space after ; (EW): Unchanged +; Next line if after col 33 (EC): No +; Indentation +; of IFs (II): No +; of MACROs (IM): No +; Labels +; First char (LF): Unchanged +; All chars (LA): Unchanged +; Colon after label (LC): Unchanged +; Colon after special label (LS): Unchanged +; Line after label (LL): Unchanged +; Line after 8+ char label (L8): Unchanged +; Opcodes +; Opcode case (OC): Unchanged +; EQU indentation (OE): Field2 +; SET indentation (OS): Field2 +; Operand (argument) case (A): Unchanged +; +; F1 - Z System standard format +; Remove blank lines (B): No +; Comment lines +; First char (CF): Unchanged +; All chars (CA): Unchanged +; Remove Space after ; (CW): Unchanged +; Embedded comments +; First char (EF): Unchanged +; All chars (EA): Unchanged +; Remove Space after ; (EW): Yes +; Next line if after col 33 (EC): Yes +; Indentation +; of IFs (II): Yes +; of MACROs (IM): Yes +; Labels +; First char (LF): Unchanged +; All chars (LA): Upper +; Colon after label (LC): Yes +; Colon after special label (LS): No +; Line after label (LL): Yes +; Line after 8+ char label (L8): Yes +; Opcodes +; Opcode case (OC): Unchanged +; EQU indentation (OE): Field2 +; SET indentation (OS): Field2 +; Operand (argument) case (A): Lower +; +; F2 - special format +; Remove blank lines (B): Yes +; Comment lines +; First char (CF): Unchanged +; All chars (CA): Unchanged +; Remove Space after ; (CW): Yes +; Embedded comments +; First char (EF): Upper +; All chars (EA): Lower +; Remove Space after ; (EW): Yes +; Next line if after col 33 (EC): Yes +; Indentation +; of IFs (II): Yes +; of MACROs (IM): Yes +; Labels +; First char (LF): Upper +; All chars (LA): Lower +; Colon after label (LC): Yes +; Colon after special label (LS): No +; Line after label (LL): Yes +; Line after 8+ char label (L8): Yes +; Opcodes +; Opcode case (OC): Unchanged +; EQU indentation (OE): Field2 +; SET idnentation (OS): Field2 +; Operand (argument) case (A): Lower +; +; F3 - special format +; Remove blank lines (B): Yes +; Comment lines +; First char (CF): Unchanged +; All chars (CA): Unchanged +; Remove Space after ; (CW): No +; Embedded comments +; First char (EF): Upper +; All chars (EA): Lower +; Remove Space after ; (EW): Yes +; Next line if after col 33 (EC): Yes +; Indentation +; of IFs (II): Yes +; of MACROs (IM): Yes +; Labels +; First char (LF): Unchanged +; All chars (LA): Upper +; Colon after label (LC): Yes +; Colon after special label (LS): No +; Line after label (LL): Yes +; Line after 8+ char label (L8): Yes +; Opcodes +; Opcode case (OC): Unchanged +; EQU indentation (OE): Field2 +; SET indentation (OS): Field2 +; Operand (argument) case (A): Upper +; +; If no directives are given, the format F1 is selected. F1 is always +;selected as the default format, and directives can be used to vary specific +;settings or all settings within this default. +; +; Examples of various forms a label may take on: +; Forms AbCd hello EXEC +; -------- ---- ----- ---- +; LFX, LAX AbCd hello EXEC +; LFU, LAX AbCd Hello EXEC +; LFL, LAX abCd hello eXEC +; LFX, LAU ABCD HELLO EXEC +; LFU, LAU ABCD HELLO EXEC +; LFL, LAU aBCD hELLO eXEC +; LFX, LAL abcd hello exec +; LFU, LAL Abcd Hello Exec +; LFL, LAL abcd hello exec +; +; Directives may be placed in any order with any or no delimiters: +; "LFXLAU" "LFX LAU" "LFX,LAU" +;have the same meanings. This applies to both command lines and comments: +; PPAL file1,file2 LFX LAU +; ;#LFX, LAU +; For directive in comments, the directive processing is terminated +;by either an end of line or a comment character: +; ;#LFX, LAU +; ;#LFX, LAU ; All labels are upper-case +; Note that allowing directives embedded in the files they are acting +;on allows one part of the file to take on one format and another part of the +;file to take on another format. +; +;Sample file before processing by PPAL: +; +; ; Sample file to illustrate PPAL +; ext cout,print +; +; ;#OEY ; Indent EQUs to Col 17 (Field 3) +; +; test equ 1 +; numch equ 26 +; fch equ 'A' +; +; ;#OEN ; Indent EQUs to Col 9 (Field 2) +; +; mymac macro +; call print +; if test +; db 'This is a test' +; else +; db 'This is normal' +; endif +; db ' ',0 +; endm +; +; mymac +; ld b,numch +; ld a,fch +; loop: call cout +; inc a +; djnz loop +; ret +; end +; +;Sample file after processing by PPAL: +; +; ; Sample file to illustrate PPAL +; ext cout,print +; +; ;#OEY ; Indent EQUs to Col 17 (Field 3) +; +; TEST equ 1 +; NUMCH equ 26 +; FCH equ 'A' +; +; ;#OEN ; Indent EQUs to Col 9 (Field 2) +; +; MYMAC macro +; call print +; if test +; db 'This is a test' +; else +; db 'This is normal' +; endif +; db ' ',0 +; endm +; +; mymac +; ld b,numch +; ld a,fch +; LOOP: +; call cout +; inc a +; djnz loop +; ret +; end +; +;%END diff --git a/Images/Source/hd0/s0/u15/PRINT.COM b/Images/Source/hd0/s0/u15/PRINT.COM new file mode 100644 index 0000000000000000000000000000000000000000..1f31a4cf72d85d7cce43a78e2da33f80730f2eb1 GIT binary patch literal 5376 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/PRINT.MAC b/Images/Source/hd0/s0/u15/PRINT.MAC new file mode 100644 index 00000000..f95112a9 --- /dev/null +++ b/Images/Source/hd0/s0/u15/PRINT.MAC @@ -0,0 +1,1404 @@ +; +; PROGRAM: PRINT III (PRINT) +; VERSION: 2.0 +; DATE: 18 May 84 +; AUTHOR: RICHARD CONN +; PREVIOUS VERSIONS: 1.3 (17 May 83) +; PREVIOUS VERSIONS: 1.2 (26 Apr 83), 1.1 (26 Apr 83), 1.0 (22 Apr 83) +; +VERS equ 20 +z3env SET 0f400h + +FALSE equ 0 +TRUE equ NOT FALSE + +timeok equ FALSE ;TRUE to enable TIME feature, FALSE to disable + +; +; PRINT is THE file print utility for ZCPR3. Installable by Z3INS, +; PRINT provides a wide range of options for the user. First, PRINT allows +; the user to employ wild cards and file name lists (lists of files separated +; by commas, like: file1,file2,file3,...). Second, PRINT provides the +; following options: +; E Exact Mode +; No heading appears, no line numbering, +; no page numbering, tab expansion, form +; feeds +; F File Name Toggle +; The Heading Line can optionally contain +; the name of the file +; H@head@ Heading Text +; The user may specify the text of the heading +; to appear at the top of every page +; I Inspect Files +; The user approves each file to be printed +; before the printing process begins +; L Toggle Line Numbering +; Each line may or may not begin with a line +; number +; M Multiple Runs Toggle +; The user may or may not be prompted to set +; the Top of Form on his printer; Multiple Runs +; ON means that he will not be prompted +; N Toggle Page Numbering +; The numbering of each page is turned on or +; off +; Onn Offset Each Line +; Move each line in the indicated number of +; characters from the left +; Snnnn Skip to Specified Page +; Printing begins on the indicated page +; T Toggle Time Display +; Time/Date information is optionally included +; in the page header +; + +; +; BASIC SYSLIB ROUTINES NEEDED BY PRINT +; +ESIZE EQU 16 ; SIZE OF DIR ENTRY (FROM SYSLIB DIRF ROUTINE) + + EXT DIRQS ; DIRECTORY PROCESSOR + EXT DIRPACK ; PACK DIRECTORY + + EXT Z3INIT ; INIT BUFFERS + EXT ZFNAME ; FILE NAME PROCESSOR + EXT Z3LOG ; LOG INTO DIR + EXT GETPRT ; GET PRINTER DATA + + EXT INITFCB ; INIT FCB + EXT RETUD ; RETURN CURRENT USER/DISK + EXT PUTUD ; SAVE CURRENT USER/DISK + EXT GETUD ; RESTORE CURRENT USER/DISK + EXT EPRINT ; PRINT STRING PTED TO BY RET ADR + EXT PADC ; PRINT A IN DEC + EXT COUT ; CONSOLE OUTPUT ROUTINE + EXT CONDIN ; CONDITIONAL INPUT ROUTINE + EXT CIN ; CONSOLE INPUT ROUTINE + EXT CAPS ; CAPITALIZE ROUTINE + EXT CRLF ; NEW LINE ROUTINE + EXT CLINE ; COMMAND LINE STRING SAVE ROUTINE + EXT CODEND ; CODE END COMPUTATION ROUTINE + + EXT F$OPEN ; FILE OPEN + EXT F$READ ; BLOCK READ + EXT F$CLOSE ; FILE CLOSE + + EXT EVAL10 ; STRING TO BINARY CONVERSION + EXT LHLDC ; LST: HL AS DEC OUTPUT + EXT LPSTR ; LST: (HL) STRING OUTPUT + EXT LPRINT ; LST: STRING OUTPUT + EXT LCRLF ; LST: NEW LINE + EXT LOUT ; LST: OUTPUT + EXT MOVEB ; MOVEB ROUTINE + + if timeok + EXT TIME ; TIME Library Module Routine + endif + +; +; CP/M EQUATES +; +CPM EQU 0 ; WARM BOOT +BDOSE EQU CPM+5 ; BDOS ENTRY +FCB EQU CPM+5CH ; FCB +TBUFF EQU CPM+80H ; INPUT LINE BUFFER +DEL EQU 7FH ; +CR EQU 13 ; +FF EQU 12 ; +LF EQU 10 ; +CTRLC EQU 'C'-'@' ; ^C +CTRLG EQU 'G'-'@' +CTRLH EQU 'H'-'@' +CTRLI EQU 'I'-'@' +CTRLX EQU 'X'-'@' +CTRLZ EQU 'Z'-'@' + +; +; OTHER EQUATES +; +EOLD EQU 0FFH ; END OF LOAD DELIMITER + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + jmp startp +; +; Special Buffer Area +; +LWIDTH: + DB 0 ; WIDTH OF LINE +LTPP: + DB 0 ; LINES OF TEXT PER PAGE +LSPP: + DB 0 ; LINES TO SKIP PER PAGE +LFF: + DB 0 ; FORM FEED FLAG (0=NO) +; +; NOTE: LTPP + LSPP + 2 (HEADER SIZE) = TOTAL LINES PER PAGE ON PRINTER +; +DLNUMFL: + DB 0 ; LINE NUMBER FLAG (DEFAULT TO NO) +DPNUMFL: + DB 0FFH ; PAGE NUMBER FLAG (DEFAULT TO YES) +DEXACT: + DB 0 ; EXACT PRINT FLAG (DEFAULT TO NO) +DFNPFL: + DB 0FFH ; FILE NAME PRINT FLAG (DEFAULT TO YES) +DTIMEPFL: + DB 0FFH ; TIME PRINT FLAG (DEFAULT TO YES) +DMULTFL: + DB 0FFH ; MULTIPLE RUN FLAG (DEFAULT TO YES) +DINSPECT: + DB 0 ; INSPECT FILES (DEFAULT TO NO) +DOFFSET: + DB 0 ; INITIAL COLUMN OFFSET (DEFAULT TO NO COLUMNS) +; +; OTHER BUFFERS +; +SKIPFL: + DB 0 ; SKIP FLAG (DEFAULT TO NO) +SKIPNUM: + DS 2 ; PAGE NUMBER TO SKIP TO +LNUM: + DS 2 ; CURRENT LINE NUMBER +PNUM: + DS 2 ; CURRENT PAGE NUMBER +HBUF: + DS 2 ; PTR TO BUFFER FOR HEADING +; + if timeok +TIMEBF: + DS 2 ; PTR TO BUFFER FOR TIME STAMP + endif +; +LNUMFL: + DB 0 ; LINE NUMBER FLAG (DEFAULT TO NO) +PNUMFL: + DB 0FFH ; PAGE NUMBER FLAG (DEFAULT TO YES) +EXACT: + DB 0 ; EXACT PRINT FLAG (DEFAULT TO NO) +FNPFL: + DB 0FFH ; FILE NAME PRINT FLAG (DEFAULT TO YES) +TIMEPFL: + DB 0FFH ; TIME PRINT FLAG (DEFAULT TO YES) +MULTFL: + DB 0FFH ; MULTIPLE RUN FLAG (DEFAULT TO YES) +INSPECT: + DB 0 ; INSPECT FILES (DEFAULT TO NO) +OFFSET: + DB 0 ; OFFSET ON PAGE + +; +; Start of Program +; +STARTP: + LXI H,0 ; GET STACK PTR + DAD SP + SHLD STACK ; SAVE IT + CALL CODEND ; DETERMINE FREE SPACE + SHLD CMDLNE ; SAVE PTR TO COMMAND LINE + LXI D,100H ; BUFFER SIZE + DAD D + SHLD HBUF ; BUFFER FOR HEADING +; + IF TIMEOK + DAD D + SHLD TIMEBF ; BUFFER FOR TIME DATA + ENDIF +; + DAD D + SHLD DIRBUF ; PTR TO DIR BUFFER + SPHL ; SET TOP OF STACK + + CALL PUTUD ; SAVE CURRENT USER/DISK AWAY + + CALL GETPRT ; GET PRINTER DATA + MOV A,M ; GET PRINTER WIDTH + STA LWIDTH + INX H + INX H + MOV A,M ; GET NUMBER OF LINES OF TEXT + STA LTPP + MOV B,A ; ... IN B + DCX H + MOV A,M ; GET NUMBER OF LINES ON PAGE + SUI 2 + SUB B ; ADJUST FOR PAGING DATA + STA LSPP ; NUMBER OF LINES TO SKIP PER PAGE + INX H + INX H + MOV A,M ; GET FORM FEED FLAG + STA LFF + + LHLD CMDLNE ; PT TO COMMAND LINE SAVE AREA + LXI D,TBUFF+1 ; SAVE COMMAND LINE + XCHG + MVI B,80H ; SIZE OF BUFFER + CALL MOVEB + +; +; **** Banner of Program +; + CALL EPRINT + DB 'PRINT III, Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0',0 + +; +; Check for Help Request +; + LDA FCB+1 ; GET FIRST CHAR OF FILE NAME + CPI ' ' ; NO FILE SPEC? + JZ HELP + CPI '/' ; OPTION CAUGHT? + JNZ ECONT + +; +; **** Print Help Information +; +HELP: + CALL EPRINT + db cr,lf,' PRINT file1,file2,...,filen o...' + DB cr,lf,'Options:' + db cr,lf,' E Exact Print (expand tabs, form feed, no line' + db cr,lf,' or page numbers, no heading)' + db cr,lf,' F Toggle File Name Display' + db cr,lf,' H@head@ Specify Page Heading (@ is any printing char)' + db cr,lf,' I Inspect and Select Files First' + db cr,lf,' L Toggle Numbering of Each Line' + db cr,lf,' M Toggle Multiple Runs (MR=No TOF Msg)' + db cr,lf,' N Toggle Numbering of Each Page' + db cr,lf,' Onn Offset Printout by nn Characters from Left' + db cr,lf,' Snnnn Skip to Specified Page before Printing' +; + if timeok + db cr,lf,' T Toggle Time Display in header' + endif +; + db cr,lf,'Examples:' + db cr,lf,' PRINT MYFILE.TXT,*.MAC LH''SAMPLE''' + db cr,lf,' -- Number Lines, SAMPLE is Heading' + db cr,lf,' PRINT MYFILE.* S25E' + db cr,lf,' -- Skip to Page 25, Exact Print' + db cr,lf,'At any time, ^C aborts PRINT and ^X skips to next ' + db 'file' + DB 0 + +; +; RETURN TO OS +; +RETURN: + LHLD STACK ; GET OLD STACK + SPHL ; SET IT + RET + +; +; PROGRAM'S INIT ROUTINE +; +ECONT: + CALL INIT ; PROG INIT ROUTINE +; +; EXTRACT FLAGS IF PRESENT +; + LHLD CMDLNE ; PT TO BUFFER +; +; SKIP TO FILE NAME STRING +; + CALL SBLANK ; SKIP OVER BLANKS +; +; SKIP TO END OF FILE NAME STRING +; + CALL SNBLANK ; SKIP OVER NON-BLANKS +; +; SKIP TO OPTION CHAR +; + CALL SBLANK +; +; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO +; +OPT: + CPI '/' ; OPTION CHAR? + JNZ OPTION + INX H ; SKIP SLASH +; +; PROCESS LIST OF OPTIONS +; +OPTION: + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ DSPEC + INX H ; PT TO NEXT CHAR + CPI ' ' ; SKIP OVER SPACES + JZ OPTION + MOV C,A ; COMMAND IN C + LXI D,OPTAB ; PT TO OPTION TABLE +OPTL: + LDAX D ; GET OPTION LETTER + ORA A ; END OF TABLE? + JZ HELP ; HELP IF SO + CMP C ; MATCH? + JZ OPTM ; PROCESS IF SO + INX D ; PT TO NEXT ENTRY + INX D + INX D + JMP OPTL +; +; PROCESS OPTION +; +OPTM: + PUSH H ; SAVE HL ON STACK + LXI H,OPTION ; GET RETURN ADDRESS + XTHL ; ... ON STACK AND RESTORE HL + INX D ; PT TO ADDRESS + LDAX D ; GET ADDRESS LOW + MOV B,A ; ... IN B + INX D + LDAX D ; GET ADDRESS HIGH + MOV D,A ; ... IN D + MOV E,B ; LOW IN E + PUSH D ; PUT ADDRESS ON STACK + MOV A,C ; COMMAND IN A + RET ; "CALL" OPTION ROUTINE + +; +; **** PROGRAM INIT ROUTINE +; THIS ROUTINE IS USED BY THE PROGRAM TO PERFORM ANY INITS +; +INIT: + lxi h,dlnumfl ;copy defaults into buffers + lxi d,lnumfl + mvi b,8 ;8 bytes + call moveb ;do copy + xra a ;A=0 + sta skipfl ;set no skip + push h + lhld hbuf ;pt to heading + mov m,a ;set no heading + pop h +; + if timeok + call time ;get time string + xchg + lhld timebf ;store in buffer + xchg +initt: + mov a,m ;get byte + stax d ;put byte + inx h ;pt to next + inx d + ora a ;done? + jnz initt + endif +; + RET + +; +; **** OPTION TABLE +; EACH OPTION IS A CAPITAL LETTER OR SPECIAL CHAR FOLLOWED BY +; AN ADDRESS; THE TABLE IS TERMINATED BY A BINARY ZERO +; +OPTAB: + db 'E' + dw optexact + db 'F' + dw optfn + db 'H' + dw opthd + db 'I' + dw optinsp + db 'L' + dw optln + db 'M' + dw optmult + db 'N' + dw optpn + db 'O' + dw optoffs + db 'S' + dw optskip +; + if timeok + db 'T' + dw opttime + endif +; + DB 0 ; END OF TABLE +; +; Option: E (Toggle exact mode) +; +optexact: + lda exact ;get flag + cma ;flip it + sta exact ;put flag + ret +; +; Option: F (Toggle file name display) +; +optfn: + lda fnpfl ;get flag + cma ;flip it + sta fnpfl ;put flag + ret +; +; Option: H (Set Heading) +; +opthd: + xchg + lhld hbuf ;pt to heading buffer + xchg + mov a,m ;get delim + ora a ;none? + rz + mov b,a ;delim in B + inx h ;pt to next char +opthd1: + mov a,m ;get next char + ora a ;done? + jz opthd3 + cmp b ;done by trailing delim? + jz opthd2 + stax d ;save char + inx h ;pt to next + inx d + jmp opthd1 +opthd2: + inx h ;skip over delim +opthd3: + xra a ;store ending 0 + stax d + ret +; +; Toggle Inspect Option +; +optinsp: + lda inspect ;flip flag + cma + sta inspect + ret +; +; Set Line Number Flag +; +optln: + lda lnumfl ;flip flag + cma + sta lnumfl + ret +; +; Set Multiple Run Flag +; +optmult: + lda multfl ;flip flag + cma + sta multfl + ret +; +; Set Page Numbering Flag +; +optpn: + lda pnumfl ;flip flag + cma + sta pnumfl + ret +; +; Set Page Offset +; +optoffs: + call eval10 ;get number + mov a,e ;get low-order byte + sta offset ;set offset + ret +; +; Set Skip Flag and get number +; +optskip: + mvi a,0ffh ;set flag + sta skipfl + call eval10 ;get number + xchg + shld skipnum ;set page number to skip to + xchg ;HL pts to next char + mov a,d ;see if page number was zero + ora e + rnz + xra a ;if zero, just turn off skip flag + sta skipfl + ret +; + if timeok +; +; Set Time Flag +; +opttime: + lda timepfl ;flip flag + cma + sta timepfl + ret +; + endif +; +; BEGIN MOVING THROUGH FILE NAMES, SEPARATED BY COMMAS +; +DSPEC: + LHLD CMDLNE ; PT TO FIRST BYTE + CALL SBLANK ; SKIP TO NON-BLANK +; +; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS +; HL PTS TO FIRST BYTE OF NEXT FILE SPEC +; +DSPEC1: + SHLD NEXTCH ; SAVE PTR TO NEXT CHAR + LHLD DIRBUF ; RESET STACK + SPHL + CALL GETUD ; RESET USER IF NECESSARY + LXI D,FCB ; PT TO FCB IN DE, PT TO FIRST CHAR OF FILE NAME IN HL + MVI A,0 ; SELECT DIR BEFORE DU + LHLD NEXTCH ; GET PTR TO NEXT CHAR + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + +; +; LOAD DIRECTORY AND PERFORM FUNCTION +; +FCT: + LXI D,FCB ; PT TO FCB + CALL Z3LOG ; LOG INTO IT + LXI D,FCB ; PT TO FCB + CALL INITFCB ; INIT THE FCB + LHLD DIRBUF ; PT TO DIR BUFFER AREA + MVI A,11000000B ; SELECT SYS AND NON-SYS FILES + CALL DIRQS ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE +; +; DETERMINE BEGINNING OF SCRATCH AREA (SCRATCH) AND SIZE IN PAGES (BCNT) +; + PUSH H ; SAVE PTR AND COUNT + PUSH B + LXI D,ESIZE ; SET PTR TO NEXT FREE BLOCK +FCTFRE: + MOV A,B ; DONE? + ORA C + JZ FCTFR1 + DAD D ; PT TO NEXT + DCX B ; COUNT DOWN + JMP FCTFRE +FCTFR1: + INR H ; NEXT PAGE + MVI L,0 + SHLD SCRATCH ; SET PTR TO SCRATCH AREA + XCHG ; PTR IN DE + LHLD BDOSE+1 ; COMPUTE BLOCK BUFFER SIZE + MOV A,H ; ADJUST FOR ZCPR3 + SUI 10 + SUB D ; A=SIZE IN BLOCKS + STA BCNT ; SET BLOCK COUNT + POP B ; RESTORE AND SAVE REGS + POP H +; +; ALLOW USER TO INSPECT FILES +; + PUSH H + PUSH B + CALL ICHECK ; CHECK FOR INSPECT OPTION AND INSPECT IF SET + POP B ; RESTORE COUNT AND PTR + POP H + +; +; PERFORM FUNCTION; HL PTS TO FILE AND BC CONTAINS NUMBER OF FILES +; +FCTL: + MOV A,B ; CHECK FOR COMPLETION (COUNT = 0) + ORA C + JZ FCTL1 + DCX B ; COUNT DOWN + SHLD NFPTR + MOV H,B + MOV L,C + SHLD NFCNT + LHLD NFPTR ; PT TO FILE + CALL FUNCTION ; PERFORM FUNCTION +FCTLNXT: + LHLD DIRBUF ; RESET STACK + SPHL + LHLD NFCNT ; RESET FILE COUNT + MOV B,H + MOV C,L + LHLD NFPTR ; RESET FILE PTR + LXI D,ESIZE ; PT TO NEXT ENTRY + DAD D + JMP FCTL + +; +; CHECK FOR NEXT FILE SPEC +; +FCTL1: + CALL GETUD ; RETURN TO HOME USER/DISK + LHLD NEXTCH ; GET PTR + MOV A,M ; GET DELIM + CPI ',' ; ANOTHER FILE? + JNZ DRETURN + INX H ; PT TO CHAR AFTER COMMA + JMP DSPEC1 ; CONTINUE PROCESSING + +; +; **** EMERGENCY ABORT +; +ABORT: + CALL EPRINT + DB CR,LF,'** PRINT Abort **',CR,LF,0 + CALL GETUD ; RETURN HOME AND FALL THRU TO DRETURN +; +; **** FUNCTION COMPLETE -- CLEANUP AND EXIT +; FILL THIS IN WITH CLEANUP CODE FOR EXIT +; +DRETURN: + JMP RETURN + +; +; **** INSPECT FILES -- THIS ROUTINE IS TO PERFORM A FILE INSPECTION +; ON INPUT, HL PTS TO FIRST 16-BYTE ENTRY AND BC=NUMBER OF ENTRIES +; +ICHECK: + mov a,b ;any files? + ora c + rz + push h ;save ptrs + push b + lxi d,esize ;size of entry +ichk1: + mvi m,0 ;clear MSBytes + dad d ;pt to next + dcx b ;count down + mov a,b ;done? + ora c + jnz ichk1 + pop b ;restore ptrs + pop h + lda inspect ;inspect? + ora a ;0=no + rz + call eprint + db cr,lf,'--- PRINT File Inspect Mode ---' + db cr,lf,' Option Function' + db cr,lf,' Y (def) Select File' + db cr,lf,' N Don''t Select File' + db cr,lf,' Q Select Rest of Files' + db cr,lf,' S Skip Rest of Files' + db cr,lf,0 +ichk2: + call eprint + db cr,lf,'Select ',0 + call prfn ;print file name + call eprint + db ' -- (Y/N/Q/S)? ',0 + call cin ;get response + call caps ;capitalize + call cout ;echo + cpi 'Q' ;select rest? + jz ichkyr + cpi 'S' ;skip rest + jz ichknr + cpi 'N' ;no to this one? + jnz ichk3 + mvi m,0ffh ;set NO flag in file FCB +ichk3: + dad d ;pt to next one + dcx b ;count down + mov a,b ;done? + ora c + jnz ichk2 + RET +; Check Rest of Files as Selected +ichkyr: + call eprint + db cr,lf,' Rest of Files Selected',0 + ret +; Check Rest of Files as NOT Selected +ichknr: + mvi m,0ffh ;set NO flag + dad d ;pt to next + dcx b ;count down + mov a,b ;done? + ora c + jnz ichknr + call eprint + db cr,lf,' Rest of Files NOT Selected',0 + ret +; +; **** FUNCTION -- MAIN FUNCTION OF TEMPLATE +; ON ENTRY, HL PTS TO NAME OF FILE (16 BYTES) AND USER IS LOGGED INTO +; DIRECTORY CONTAINING INDICATED FILE +; +FUNCTION: +; +; FILE PRINT Routine -- Print the File Whose Name is Pointed to by +; HL; we are already logged into the correct directory +; + mov a,m ;file selected? + ora a ;0=yes + rnz + lda multfl ;multiple runs? + ora a ;0=no + jnz fprint ;go right into function + call eprint + db cr,lf,'File: ',0 + call prfn ;print file name + call eprint + db ' -- Set Top of Form ',0 + call cin ;get response + cpi ctrlc ;abort? + jz abort + cpi ctrlx + rz +fprint: + call prinit ;init print buffers + call fload ;load buffer initially + call prhead ;print heading line + lhld scratch ;pt to first char in file + shld nxtln ;set pointer to next line +fprloop: + call prline ;print line of file + jnz fprloop ;done if EOF + lda ltpp ;check for new page + mov b,a + lda lcount ;LTPP and Line Count are Equal if New Page + cmp b ;equal? + jnz fprlp1 + call lcrlf ;advance 2 lines + call lcrlf +fprlp1: + call page ;advance to top of next page + ret +; +; Init Print Buffers and Print File Name +; +prinit: + lxi d,tfcb ;set up FCB + mvi b,12 ;12 bytes + call moveb + lxi h,0 ;HL=0 + shld lnum ;set line number + inx h ;HL=1 + shld pnum ;set page number + lda ltpp ;set line count + sta lcount + call eprint + db cr,lf,'Printing File ',0 + lxi h,tfcb ;pt to FCB + call prfn ;print file name + ret +; +; FILE LOAD (FLOAD) Routine -- Initial Load of memory buffer +; +fload: + lxi d,tfcb ;pt to file fcb + call initfcb ;init file's fcb + call f$open ;open file for input + jz fload1 ;open was OK + call eprint + db cr,lf,'File ',0 + xchg ;HL pts to FCB + call prfn ;print file name + call eprint + db ' NOT Found',0 + pop d ;clear return address + ret ;abort printout of this file +; +; This is an entry point for further memory loads of the file +; +fload1: + lda bcnt ;get number of blocks to load + mov c,a ;... in C + lhld scratch ;get address of first block to load into + shld nxtblk ;set pointer to next block to load +fload2: + call rdblk ;read a block (128 bytes) + jnz eof ;eof encountered? + call rdblk ;read another block (128 bytes) + jnz eof ;eof encountered? + dcr c ;count down + jnz fload2 + lhld nxtblk ;pt to next byte to load + mvi m,eold ;mark end of load + ret +eof: + lxi d,tfcb ;close file + call f$close + lhld nxtblk ;ensure ^Z + mvi m,ctrlz + ret +rdblk: + lxi d,tfcb ;pt to FCB + call f$read ;read next block + ora a ;error? + rnz + lhld nxtblk ;get ptr to next block + xchg ; as dest + lxi h,tbuff ;ptr to DMA address + mvi b,128 ;copy 128 bytes +rdblk1: + mov a,m ;get byte + ani 7fh ;mask out msb + stax d ;put byte + inx h ;pt to next + inx d + dcr b ;count down + jnz rdblk1 + xchg ;new nxtblock + shld nxtblk + ret + +; +; Line Print Routine +; Print Next Line with Optional Disk Load +; Input Parameter is NXTLN, which is the address of the first char +; on the next line +; Output Parameter is Zero Flag, with Z meaning done with print, NZ +; meaning more yet to print +; +prline: + call proffs ;print offset + lhld lnum ;increment line number + inx h + shld lnum + lhld nxtln ;pt to first char of next line + mvi c,0 ;init char count + mov a,m ;get first char of line + cpi ctrlz ;EOF? + cnz prlnum ;print line number (optional) +prl1: + mov a,m ;get char + cpi eold ;end of load? + jz prload + cpi ctrlz ;eof? + jz prexit + inx h ;pt to next char + cpi ctrli ;tab? + jz prtab + cpi cr ;? + jz prcr + cpi ff ;form feed? + jz prff + cpi lf ;end of line? + jz prldn + cpi ctrlh ;back space? + jz prbs + cpi ctrlg ;ring bell? + jz prbell + cpi del ;delete char? + jz prl1 ;skip it + cpi ' ' ;other control char? + jc prl1 ;skip if other control char + call prout ;print char + inr c ;increment char count + call eoltest ;check to see if at end of line and newline if so + jmp prl1 +; +; End of Load Reached -- Load More of File from Disk +; +prload: + push b ;save char count + call fload1 ;use load routine + pop b ;get char count + lhld scratch ;next byte is here + jmp prl1 ;continue processing +; +; Tabulate +; +prtab: + mvi a,' ' ;space + call prout + inr c ;new char + call eoltest ;process EOL + mov a,c ;done? + ani 7 + jnz prtab ;continue tabulation + jmp prl1 ;continue processing +; +; Exit with Zero Flag Set if Done +; +prexit: + xra a ;set zero flag + ret +; +; Carriage Return -- Reset Character Count and Continue +; +prcr: + call prout ;send CR to printer + mvi c,0 ;reset char count + jmp prl1 ;continue processing +; +; Form Feed -- Advance to Top of Next Page +; +prff: + call page ;page eject with heading + mvi c,0 ;reset char count + jmp prl1 ;continue processing +; +; Line Feed -- End of Routine +; +prldn: + call prout ;echo LF to printer + shld nxtln ;set ptr to first char of next line + mvi a,0ffh ;set not done + ora a ;set flags + ret +; +; Backspace on Printer +; +prbs: + mov a,c ;check for beginning of line + ora a + jz prl1 ;continue if at BOL + mvi a,ctrlh ;backspace + call prout + dcr c ;back up char position + jmp prl1 ;continue +; +; Ring Bell on Printer +; +prbell: + call prout ;ring the bell + jmp prl1 ;continue without advancing char position +; +; Test for End of Line and Process if so +; +eoltest: + lda offset ;get offset + mov b,a ;... in B + lda lwidth ;get line width + sub b ;compute remaining width + sui 4 ;4 chars less for continuation mark + mov b,a ;result in B + lda lnumfl ;line numbering (lines are 7 chars shorter if so) + ora a ;0=no + jz eolt1 + mov a,b ;reduce by 7 for line numbers + sui 7 + mov b,a +eolt1: + mov a,b ;get line width + cmp c ;there? + rnz ;continue if not + mov a,m ;get next char + cpi cr ;new line next? + rz ;continue if so + mvi b,3 ;see if CR is one of next 3 chars + push h +eolt2: + inx h ;pt to next + mov a,m ;get char + cpi cr + jz eolt2a ;yes, it is + dcr b ;count down + jnz eolt2 + pop h ;restore HL + jmp eolt3 +eolt2a: + pop h ;restore HL + ret ;allow to continue +eolt3: + cpi ctrlh ;backspace next? + rz ;continue if so + mvi a,' ' ;print continuation chars + call prout + mvi a,'<' + call prout + mvi a,'<' + call prout + mvi a,cr ;new line + call prout + mvi a,lf + call prout + mvi c,0 ;reset char position + lda skipfl ;skipping? + ora a ;0=no + rnz + call proffs ;print offset if any + lda lnumfl ;printing line numbers? + ora a ;0=no + rz + call lprint ;print blank for line number + db ' : ',0 + ret +; +; Output a character to the printer +; A = Character +; +prout: + mov b,a ;char in B + call condin ;check for abort + jz prout1 + cpi ctrlc ;abort? + jz abort + cpi ctrlx ;abort this one file? + jz cxabort +prout1: + lda skipfl ;skipping? + ora a ;set flags (Z=no skip=print char) + mov a,b ;restore char + cz lout ;send character to printer + cpi lf ;special tests if it is a line feed + rnz ;done if non-LF char + lda lcount ;decrement line counter + dcr a + sta lcount + rnz +; +; Paging Required +; Skip to top of next page; reset LCOUNT (Lines Left on Page Count); +; print header +; +prout0: + lda ltpp ;get number of text lines per page + sta lcount ;set as new line count + push h ;save ptr + lhld pnum ;increment page number + inx h + shld pnum + lda lspp ;get number of lines to skip per page + call lineskp ;skip lines + pop h ;restore ptr + mov a,m ;check next character + cpi ctrlz ;EOF? + jnz prhead ;print 2-line heading if NOT EOF + ret +; +; Abort current file with final page eject +; +cxabort: + lda lcount ;get count of remaining lines + call lineskp ;skip lines + lda lff ;form feed done? + ora a ;0=no + lda lspp ;number of lines to skip per page + cz lineskp ;skip lines if no previous FF + jmp fctlnxt ;continue with next file +; +; Skip out rest of page +; Form Feed Function +; +page: + lda lff ;form feed in use + ora a ;0=no + jnz prout0 ;process top of new page if form feed in use + lda lcount ;get count of remaining lines + call lineskp ;skip lines + jmp prout0 ;process top of new page +; +; Skip out lines on page +; A = number of lines to skip +; +lineskp: + mov b,a ;line count in B + ora a ;any? + rz + lda skipfl ;skipping? + ora a + rnz + lda lff ;form feed available? + ora a ;0=no + jnz lines2 +lines1: + call lcrlf ;new line + dcr b ;count down + jnz lines1 + ret +lines2: + call lcrlf ;new line + mvi a,ff ;output form feed to printer + jmp lout +; +; Print Line Number (optional) +; +prlnum: + lda skipfl ;skipping? + ora a ;0=no + rnz + lda lnumfl ;get flag + ora a ;0=don't number lines + rz + push h ;save ptr + lhld lnum ;get line number + call lhldc ;print line number + call lprint ;print separator + db ': ',0 + pop h ;restore ptr + ret +; +; Print 2-line heading and control skipping +; +prhead: + push h ;save ptr + lda skipfl ;currently skipping? + ora a ;0=no + cnz skiptst ;test for shut off + lda exact ;exact says no heading + ora a ;0FFH=yes + jnz prhead1 + call proffs ;print offset + lda pnumfl ;number pages? + ora a ;0=no + cnz prpnum ;print page heading and number + lda fnpfl ;print file name? + ora a ;0=no + cnz prfname ;print file name +; + if timeok ;time available? + lda timepfl ;print time? + ora a ;0=no + cnz prtime ;print time + endif +; + push h + lhld hbuf ;pt to heading buffer + mov a,m ;print heading? + pop h + ora a ;0=no + cnz prhdg ;print heading +prhead1: + pop h ;restore ptr +prhead2: + lda skipfl ;skipping? + ora a + rnz + call lcrlf ;new line + jmp lcrlf +; +; Test for completion of skipping +; +skiptst: + lhld pnum ;get page number + xchg ;... in DE + lhld skipnum ;get page to skip to + mov a,h ;compare them + cmp d + rnz + mov a,l + cmp e + rnz + xra a ;A=0 to stop skipping + sta skipfl ;set flag + ret +; +; Print Line Offset +; +proffs: + lda skipfl ;skipping? + ora a + rnz + push b ;save BC + lda offset ;get offset + ora a ;any? + jz proff2 + mov c,a ;offset in B +proff1: + mvi a,' ' ;space over + call prout + dcr c ;count down + jnz proff1 +proff2: + pop b + ret +; +; Print Page Number +; +prpnum: + lda skipfl ;skipping? + ora a + rnz + call lprint ;print header + db 'Page ',0 + lhld pnum ;print current page number + call lhldc ;print as decimal + ret +; +; Print File Name +; +prfname: + lda skipfl ;skipping? + ora a + rnz + call prdash ;print separator + lxi h,tfcb+1 ;pt to first char + mvi b,8 ;8 chars + call lfn1 + mvi a,'.' + call lout + mvi b,3 ;3 chars + call lfn1 + ret +lfn1: + mov a,m ;get char + ani 7fh ;mask + call lout ;send to printer + inx h ;pt to next + dcr b ;count down + jnz lfn1 + ret +; +; Print Separator +; +prdash: + call lprint + db ' -- ',0 + ret +; + if timeok +; +; Print Time +; +prtime: + lda skipfl ;skipping? + ora a + rnz + call prdash ;print separator + lhld timebf ;pt to time stamp + call lpstr ;print + ret +; + endif +; +; Print Header +; +prhdg: + lda skipfl ;skipping? + ora a + rnz + call prdash ;print separator + lhld hbuf ;pt to heading + call lpstr ;print + ret +; +; UTILITIES +; SBLANK -- SKIP BLANKS PTED TO BY HL UNTIL NON-BLANK ENCOUNTERED; HL +; SNBLANK -- SKIP NON-BLANKS PTED TO BY HL UNTIL BLANK OR EOL; HL +; PRFN -- PRINT FILE NAME PTED TO BY HL; AFFECT NOTHING +; + +; +; SKIP UNTIL NON-BLANK +; +SBLANK: + MOV A,M ; LOOK FOR BLANK + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ SBLANK + DCX H ; BACK UP + RET + +; +; SKIP UNTIL BLANK OR EOL +; +SNBLANK: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CPI ' ' ; BLANK? + JZ SNB1 + ORA A ; EOL? + JNZ SNBLANK +SNB1: + DCX H ; BACK UP + RET + +; +; PRINT FILE NAME PTED TO BY HL +; OUTPUT TO CON: +; +PRFN: + PUSH H ; SAVE REGS + PUSH B + CALL RETUD ; GET CURRENT USER/DISK + MOV A,B ; PRINT DISK + ADI 'A' ; LETTER + CALL COUT + MOV A,C ; PRINT USER + CALL PADC + CALL EPRINT + DB ': ',0 + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL PRNT + MVI A,'.' ; DECIMAL + CALL COUT + MVI B,3 ; PRINT TYPE + CALL PRNT + POP B ; GET REGS + POP H + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; OUTPUT TO CON: +; +PRNT: + MOV A,M ; GET CHAR + CALL COUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PRNT + RET + +; +; BUFFERS +; +CMDLNE: + DS 2 ; PTR TO COMMAND LINE STRING +DIRBUF: + DS 2 ; PTR TO DIRECTORY BUFFER +NFPTR: + DS 2 ; PTR TO NEXT FILE +NFCNT: + DS 2 ; NEXT FILE COUNT +NEXTCH: + DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE +SCRATCH: + DS 2 ; ADDRESS OF FIRST FREE BYTE +BCNT: + DS 1 ; NUMBER OF PAGES IN SCRATCH AREA +; +; PRINT3 Buffers +; +tfcb: + ds 36 ; FCB for current file +nxtblk: + ds 2 ; pointer to next block to load +nxtln: + ds 2 ; pointer to next line to read +lcount: + ds 1 ; count of text lines left on page +; +; Stack +; +STACK: + DS 2 ; OLD STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/PRINTHLP.LBR b/Images/Source/hd0/s0/u15/PRINTHLP.LBR new file mode 100644 index 0000000000000000000000000000000000000000..ab8c2685fe59bb01db3c57c5da3732ffef1debde GIT binary patch literal 17280 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

BEdXFSOs(98GCiO`E?zPG-u3wYf- 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 PgG$OD`IVslumAr6>mifK literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/PROTECT.MAC b/Images/Source/hd0/s0/u15/PROTECT.MAC new file mode 100644 index 00000000..7eba5d21 --- /dev/null +++ b/Images/Source/hd0/s0/u15/PROTECT.MAC @@ -0,0 +1,591 @@ +; PROGRAM: PROTECT +; VERSION: 3.0 +; DATE: 18 May 84 +; AUTHOR: RICHARD CONN +; PREVIOUS VERSIONS: 2.0 (16 Jan 83) +; PREVIOUS VERSIONS: 1.3 (6 Jan 83), 1.2 (7 Dec 82), 1.1 (10 NOV 82) +; PREVIOUS VERSION: PROTECT.ASM Version 1.0 (26 OCT 81) +VERS equ 30 +z3env SET 0f400h + +; +; PROTECT Command -- +; PROTECT is used to set the file protection and tag attribute bits +; for CP/M 2.x files in the ZCPR3 environment. It is invoked via command +; lines of the following forms: +; PROTECT dir:afn1,dir:afn2,... keys <-- Set unconditionally +; PROTECT dir:afn1,... keys I <-- Inspect Mode +; PROTECT dir:afn1,... C <-- Set each ufn +; +; In the above examples, the reference 'keys' is a string of zero or +; more characters which may be any of the following: +; +; A <-- Set AR Attribute +; R <-- Set R/O Attribute (no R sets R/W) +; S <-- Set SYS Attribute (no S sets Non-System) +; n <-- Set Tag Attribute (1 <= n <= 8) +; +; Examples: +; PROTECT *.COM RS <-- Sets all COM files to R/O SYStem +; PROTECT *.COM RSI <-- Same, with user approval +; PROTECT *.COM C <-- Allows user to specify for each +; PROTECT MYPROG.COM 1R <-- Sets Tag Bit 1 and R/O Attribute +; + +FALSE EQU 0 +TRUE EQU NOT FALSE + +ESIZE EQU 16 ; SIZE OF DIR ENTRY (FROM SYSLIB DIRF ROUTINE) + + EXT DIRQ ; DIRECTORY PROCESSOR + + EXT Z3INIT ; INIT BUFFERS + EXT ZFNAME ; FILE NAME PROCESSOR + EXT Z3LOG ; LOG INTO Z3 DU + + EXT BBLINE ; INPUT LINE EDITOR + EXT INITFCB ; INIT FCB + EXT BDOS ; BDOS ENTRY + EXT PUTUD ; SAVE CURRENT USER/DISK + EXT GETUD ; RESTORE CURRENT USER/DISK + EXT MOVEB ; COPY ROUTINE + EXT PHLDC ; PRINT HL AS DECIMAL CHARS + EXT PRINT ; PRINT ROUTINE + EXT COUT ; CONSOLE OUTPUT ROUTINE + EXT CIN ; CONSOLE INPUT ROUTINE + EXT CAPS ; CAPITALIZE ROUTINE + EXT CRLF ; NEW LINE ROUTINE + EXT FILLB ; FILL ROUTINE + EXT CODEND ; CODE END COMPUTATION ROUTINE + +; +; CP/M EQUATES +; +CPM EQU 0 ; WARM BOOT +FCB EQU 5CH ; FCB +BUFF EQU 80H ; INPUT LINE BUFFER +CR EQU 13 ; +LF EQU 10 ; + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + LXI H,0 ; GET STACK PTR + DAD SP + SHLD STACK ; SAVE IT + CALL CODEND ; DETERMINE FREE SPACE + SHLD CMDLNE ; COMMAND LINE BUFFER + LXI D,100H ; BUFFER SIZE + DAD D + SHLD DIRBUF ; DIR BUFFER + SPHL ; SET SP + CALL PUTUD ; SAVE CURRENT USER/DISK AWAY + + CALL PRINT + DB 'PROTECT Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0',0 + LDA FCB+1 ; GET FIRST CHAR OF FILE NAME + CPI ' ' ; NO FILE SPEC? + JZ HELP + CPI '/' ; OPTION CAUGHT? + JNZ ECONT + +; PRINT HELP INFORMATION +HELP: + CALL PRINT + DB CR,LF,'Syntax:' + DB CR,LF,' PROTECT dir:filename.typ,dir:fn.ft,... o...' + DB CR,LF,'Options:' + DB CR,LF,' C -- Control Mode (Allow user to set each file)' + DB CR,LF,' I -- Inspect Mode (Give user option to set att)' + DB CR,LF,' n -- 1 <= n <= 8; Set Tag Attribute' + DB CR,LF,' A -- Set AR (Archive) Attribute' + DB CR,LF,' R -- Set R/O Attribute (no R sets R/W)' + DB CR,LF,' S -- Set SYS Attribute (no S sets Non-System)' + DB CR,LF + DB 0 + +; RETURN TO OS +RETURN: + LHLD STACK ; GET OLD STACK + SPHL ; SET IT + RET + +; COPY BUFFER INTO TEMP BUFFER +ECONT: + LHLD CMDLNE ; PT TO CMDLNE BUFFER + XCHG + LXI H,BUFF+1 ; PT TO BUFFER + MVI B,80H ; ARBITRARY + CALL MOVEB ; COPY INTO COMMAND LINE BUFFER + +; EXTRACT FLAGS IF PRESENT + XRA A ; SET NO INSPECT, NO R/O, NO ARCH, AND NO SYSTEM FILES + STA INSPECT + STA READONLY + STA SYSTEM + STA ARCHIVE + STA CONTROL ; SET NO CONTROL MODE + MVI B,8 ; CLEAR TAG BITS + LXI H,TAGS + CALL FILLB + LXI H,0 ; SET FILE COUNT + SHLD FILECNT + LHLD CMDLNE ; PT TO BUFFER +; SKIP TO FILE NAME STRING +SBLANK: + MOV A,M ; SKIP TO NON-BLANK + CPI ' ' ; ? + JNZ SBL1 + INX H ; PT TO NEXT CHAR + JMP SBLANK +; SKIP TO END OF FILE NAME STRING +SBL1: + MOV A,M ; SKIP TO OR EOL + ORA A ; DONE? + JZ OPT + CPI ' ' ; + JZ OPT + INX H ; PT TO NEXT + JMP SBL1 +; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO +OPT: + CPI '/' ; OPTION CHAR? + JNZ OPTION + INX H ; SKIP SLASH +; PROCESS LIST OF OPTIONS +OPTION: + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ DSPEC + INX H ; PT TO NEXT CHAR + CPI ' ' ; SKIP OVER SPACES + JZ OPTION + CPI '/' ; IF OPTION LETTER, OBVIOUS ERROR, SO HELP + JZ HELP + CPI '1' ; DIGIT? + JC HELP + CPI '8'+1 ; IN RANGE? + JC OPTNUM + CPI 'C' ; CONTROL? + JZ OPTCTRL + CPI 'I' ; INSPECT? + JZ OPTINS + CPI 'A' ; ARCHIVE + JZ OPTAR + CPI 'R' ; READ/ONLY? + JZ OPTRO + CPI 'S' ; SYSTEM FILES? + JNZ HELP + MVI A,80H ; SET FOR SYS FILES + STA SYSTEM + JMP OPTION +OPTNUM: + SUI '1' ; ADJUST '1' TO '8' TO 0-7 + PUSH H ; SAVE PTR + MOV E,A ; VALUE IN DE + MVI D,0 + LXI H,TAGS ; PT TO TAG BUFFER + DAD D ; PT TO ELEMENT + MVI M,80H ; SELECT ELEMENT + POP H ; GET PTR TO NEXT CHAR + JMP OPTION +OPTCTRL: + MVI A,0FFH ; CONTROL MODE + STA CONTROL + JMP OPTION +OPTINS: + MVI A,0FFH ; INSPECT + STA INSPECT + JMP OPTION +OPTAR: + MVI A,80H ; SET ARCHIVE + STA ARCHIVE + JMP OPTION +OPTRO: + MVI A,80H ; SET R/O + STA READONLY + JMP OPTION + +; EXTRACT DISK, USER, AND FILE NAME INFORMATION +DSPEC: + LHLD CMDLNE ; PT TO BEFORE FIRST BYTE + DCX H +DSPEC0: + INX H ; PT TO BYTE + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ HELP + CPI ' ' ; ? + JZ DSPEC0 +; +; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS +; HL PTS TO FIRST BYTE OF NEXT FILE SPEC +; +DSPEC1: + CALL GETUD ; RESET USER IF NECESSARY + LXI D,FCB ; PT TO FCB IN DE, PT TO FIRST CHAR OF FILE NAME IN HL + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + LXI D,FCB ; PT TO FCB + CALL Z3LOG ; LOG INTO DU + +; LOAD DIRECTORY AND PROTECT FILES +PROT: + LHLD DIRBUF ; PT TO END OF CODE + MVI A,0C0H ; SELECT NON-SYS AND SYS FILES + LXI D,FCB ; PT TO FCB + CALL DIRQ ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE + +; PROT DIR FILES; HL PTS TO FIRST FILE, BC=FILE COUNT + CALL PROTFILES + +; CHECK FOR NEXT FILE SPEC + LHLD NEXTCH ; GET PTR + MOV A,M ; GET DELIM + CPI ',' ; ANOTHER FILE? + JNZ PROTDONE + INX H ; PT TO CHAR AFTER COMMA + JMP DSPEC1 ; CONTINUE PROCESSING + +; PROT COMPLETE -- PRINT COUNT AND EXIT +PROTDONE: + CALL PRCOUNT ; PRINT FILE COUNT + JMP RETURN + +; PROT SELECTED FILES +PROTFILES: + MOV A,B ; CHECK FOR ANY FILES LOADED + ORA C + RZ + +; PRINT FILE NAME +PROTLP: + PUSH B ; SAVE ENTRY COUNT + CALL CRLF ; NEW LINE + PUSH H ; SAVE PTR TO FCB + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL PRNT + MVI A,'.' ; DECIMAL + CALL COUT + MVI B,3 ; PRINT TYPE + CALL PRNT + POP H ; GET PTR + +; CHECK FOR CONTROL MODE AND PERFORM CONTROL FUNCTION IF SET + LDA CONTROL ; GET FLAG + ORA A ; NZ=YES + JNZ PROTCTRL + +; CHECK FOR INSPECTION AND INSPECT IF SET + LDA INSPECT ; GET FLAG + ORA A ; 0=NO + JZ DOIT + +; PROMPT USER FOR PROTECT + CALL PROTQ ; PROT QUESTION + CPI 'Q' ; QUIT? + JZ QUIT + CPI 'Y' ; YES? + JZ DOIT + +; DON'T PROTECT FILE +NODO: + CALL PRINT + DB ' ++ NO Attribute Change ++',0 + JMP PROTTEST + +; PROMPT USER FOR PROT +PROTQ: + CALL PRINT ; PRINT PROMPT + DB ' -- Protect (Y/N/Q=Quit/other=N)? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + CALL COUT ; ECHO + RET + +; CONTROL FUNCTION -- ALLOW USER TO SET BITS AS HE DESIRES +PROTCTRL: + PUSH H ; SAVE PTR TO FILE + XRA A ; A=0 + STA READONLY ; CLEAR R/O, SYS, ARCHIVE, AND TAGS + STA SYSTEM + STA ARCHIVE + LXI H,TAGS + MVI B,8 + CALL FILLB + CALL PRINT + DB ' -- Attributes (? for Help)? ',0 + MVI A,0FFH ; CAPITALIZE + CALL BBLINE ; INPUT LINE FROM USER + CALL CRLF ; NEW LINE + MVI B,80H ; MSB SET +PCTRL: + MOV A,M ; GET ATTRIBUTE FLAG + ORA A ; DONE? + JZ PDOIT ; DO PROTECTION THEN + INX H ; PT TO NEXT + CPI ' ' ; SKIP + JZ PCTRL + CPI 'Q' ; QUIT? + JZ QUIT + CPI 'A' ; ARCHIVE? + JZ PCTRLA + CPI 'S' ; SYSTEM? + JZ PCTRLS + CPI 'R' ; R/O? + JZ PCTRLR + CPI '1' ; DIGIT? + JC PCTRLH ; HELP IF NOT + CPI '8'+1 ; RANGE? + JC PCTRLN ; DO NUMBER +PCTRLH: + CALL PRINT + DB CR,LF,' Attributes may be specified as follows --' + DB CR,LF,' A = Archive, R = R/O, S = SYS, 1-8 = Tags' + DB CR,LF,' The command Q exits' + DB CR,LF,0 + POP H ; GET FCB PTR + POP B ; GET ENTRY COUNT + JMP PROTLP ; PROCESS AGAIN +PCTRLA: + MOV A,B ; GET FLAG + STA ARCHIVE ; SET FLAG + JMP PCTRL +PCTRLS: + MOV A,B ; GET FLAG + STA SYSTEM ; SET FLAG + JMP PCTRL +PCTRLR: + MOV A,B ; GET AND SET FLAG + STA READONLY + JMP PCTRL +PCTRLN: + PUSH H + SUI '1' ; CONVERT TO OFFSET + MOV E,A ; OFFSET IN DE + MVI D,0 + LXI H,TAGS ; SET TAG + DAD D + MOV M,B ; SET BIT + POP H + JMP PCTRL ; CONTINUE + +; QUIT PROTECT PROGRAM +QUIT: + CALL PRCOUNT ; PRINT COUNT OF FILES PROTECTED + CALL PRINT + DB CR,LF,' QUIT',0 + JMP RETURN + +; PROT FILE, BUT GET PTR FIRST +PDOIT: + POP H ; GET PTR + +; PROT FILE +DOIT: + PUSH H + LXI D,PROTFCB ; COPY TARGET FILE INTO PROTECT'S FCB + MVI B,16 ; 16 BYTES + CALL MOVEB ; COPY + LXI H,TAGS ; SET TAG BITS NOW + INX D ; PT TO FIRST TAG BIT + MVI B,8 ; 8 TAG BITS +DOITL: + LDAX D ; GET BYTE FROM PROT FCB + ANI 7FH ; MASK OUT OLD MSB + ORA M ; OR IN TAG BIT + STAX D ; PUT BYTE BACK + INX H ; PT TO NEXT + INX D + DCR B ; COUNT DOWN + JNZ DOITL + LDA READONLY ; GET R/O BIT + MOV B,A ; SAVE IN B + LDAX D ; GET BYTE + ANI 7FH ; MASK OUT OLD MSB + ORA B ; OR IN NEW MSB + STAX D ; PUT IT BACK + INX D ; PT TO SYS BIT + LDA SYSTEM ; GET SYS BIT + MOV B,A ; SAVE IT + LDAX D ; GET BYTE + ANI 7FH ; MASK OUT OLD MSB + ORA B ; MASK IN NEW MSB + STAX D ; PUT IT BACK + INX D ; PT TO ARCHIVE BIT + LDA ARCHIVE ; GET ARCHIVE BIT + MOV B,A ; SAVE IT + LDAX D ; GET BYTE + ANI 7FH ; MASK OUT OLD MSB + ORA B ; MASK IN NEW MSB + STAX D ; PUT IT BACK + LXI D,PROTFCB ; PT TO FCB + CALL INITFCB ; INIT IT + MVI C,30 ; SET FILE ATTRIBUTES + CALL BDOS + CALL PRINT + DB ' Set to ',0 + LXI H,PROTFCB+1 + MVI B,8 ; 8 TAGS + MVI C,'1' ; SET DIGIT +PATTL1: + MOV A,M ; GET BYTE + ANI 80H ; PRINT ATT? + JZ PATTL2 + MOV A,C ; GET DIGIT + CALL COUT +PATTL2: + INR C ; INCREMENT DIGIT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PATTL1 + MOV A,M ; GET R/O BYTE + ANI 80H ; MASK IT + JZ PATTL3 + CALL PRINT + DB ' R/O ',0 + JMP PATTL4 +PATTL3: + CALL PRINT + DB ' R/W ',0 +PATTL4: + INX H ; PT TO SYS BYTE + MOV A,M ; GET SYS BYTE + ANI 80H ; MASK IT + JZ PATTL5 + CALL PRINT + DB 'SYS',0 + JMP PATTL6 +PATTL5: + CALL PRINT + DB 'DIR',0 +PATTL6: + INX H ; PT TO ARCHIVE BYTE + MOV A,M ; GET ARCH BYTE + ANI 80H ; MASK IT + JZ PATTL7 + CALL PRINT + DB ' AR',0 +PATTL7: + LHLD FILECNT ; INCREMENT FILE COUNT + INX H + SHLD FILECNT + POP H ; GET PTR TO DIRECTORY ENTRY + +; PT TO NEXT ENTRY +PROTTEST: + LXI D,ESIZE ; PT TO NEXT ENTRY + DAD D + POP B ; GET COUNT + DCX B ; COUNT DOWN + MOV A,B ; CHECK FOR ZERO + ORA C + JNZ PROTLP + +; RETURN TO CALLER + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; +PRNT: + MOV A,M ; GET CHAR + CALL COUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PRNT + RET + +; +; PRINT COUNT OF NUMBER OF FILES PROTECTED +; +PRCOUNT: + CALL CRLF ; NEW LINE + LHLD FILECNT ; GET COUNT + MOV A,L ; CHECK FOR NONE + ORA H + JZ PRNO + CALL PHLDC ; PRINT DECIMAL COUNT + JMP PRMS +PRNO: + CALL PRINT + DB 'No ',0 +PRMS: + LHLD FILECNT ; 1 FILE PROTECTED? + MOV A,H ; HIGH ZERO? + ORA A + JNZ PRMULT + MOV A,L ; LOW ONE? + CPI 1 + JZ PRSING +PRMULT: + CALL PRINT + DB ' Files Protected',0 + RET +PRSING: + CALL PRINT + DB ' File Protected',0 + RET + +; +; BUFFERS +; +INSPECT: + DS 1 ; INSPECT FLAG (0=NO, 0FFH=YES) +CONTROL: + DS 1 ; CONTROL FLAG (0=NO, 0FFH=YES) +ARCHIVE: + DS 1 ; ARCHIVE FLAG (0=NO, 80H=YES) +SYSTEM: + DS 1 ; SYSTEM FLAG (0=NO, 80H=YES) +READONLY: + DS 1 ; READ/ONLY FLAG (0=NO, 80H=YES) +TAGS: + DS 8 ; 8 TAG BITS +NEXTCH: + DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE +FILECNT: + DS 2 ; COUNT OF NUMBER OF FILES PROTECTED +PROTFCB: + DS 40 ; FCB FOR PROTECT +CMDLNE: + DS 2 ; PTR TO COMMAND LINE SAVE AREA +DIRBUF: + DS 2 ; DIRECTORY BUFFER +STACK: + DS 2 ; OLD STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/PWD.COM b/Images/Source/hd0/s0/u15/PWD.COM new file mode 100644 index 0000000000000000000000000000000000000000..dc7fe7f9a1ab282fd6128a2624045d26a7539cc1 GIT binary patch literal 1024 zcmZvaO=uHA6vtPDR_~HH$lBb@RUtcx{G^=kb^=GQraSV37CV2ZhbRpRjdPfJMX>!{ATjrs~+R7 zp1w3T$)O+pLC*atxNih`DtUrTD!QR+d2(uCP!dtkG%~%DPMPjDMEGR~SB$d3XWJrvRX$3Mht0*}@oF(ptU_E0e#?rSTpHy|_MnThy zFYTK+3{)Q$<8+C$M7hUyiDRGIXX`0VFC;Jte2eoLSX3_EJCQI z>mXgD>FN;g=Z^wnf1cfD?J^cswh0W>X8pCLw|4S?4I@8imN(uxGCxw>5!OoBE#WY# znd|4>O&m2{1w(D(1V!B^Jo_h>$LO(LiF3l>sLgp5rWf2HQ$UJ2kq%fk4`$?lNTRlHSukJ*X4A&u$jI6f3?Z^x?kB-{B{c13wS<|oCN#HN zX0&X*hYf`Hg+~9L(0Lqn&qODq=C^v;-e!?r)NR(k9D04=MY9@lHhURz5$*q3V77;99Y4t>U-NDrS&n zy9*VWZrN@nB+w^BddT+3$4%@Z2TTVw0cu2QBrvU3Vus4t3^wgnt+Acz=g>f?^E+;Q M{Zg+q?SJn71&aBGu>b%7 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/PWD.MAC b/Images/Source/hd0/s0/u15/PWD.MAC new file mode 100644 index 00000000..8c3a2cdd --- /dev/null +++ b/Images/Source/hd0/s0/u15/PWD.MAC @@ -0,0 +1,249 @@ +; +; Program: PWD +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; +version equ 10 + +; +; The purpose of PWD is to display the names of the named directories. +; If the option PASS (P) is given, then the passwords to the directories will +; be displayed as well IF the Wheel Byte is Available and Set. If the Wheel +; Byte is not available, the passwords will be displayed without question. +; + +; +; Basic Equates +; +z3env SET 0f400h ;address of ZCPR3 Environment +fcb equ 5ch +cr equ 0dh +lf equ 0ah + +; +; External References +; + ext z3init + ext cout,crlf,print,padc + ext qprint,qcrlf + ext getndr,getwhl + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env +; +; Print Banner +; + call qprint ;check quiet flag + db 'PWD, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db cr,lf,0 +; +; Check for options +; + lxi h,fcb+1 ;pt to option char + mov a,m ;get option char + cpi '/' ;help? + jz prhelp + cpi ' ' ;no option? + jz namedir + cpi 'P' ;passwords? + jnz invopt ;bad option if not +; +; Prepare to process passwords - check for authorization +; + call getwhl ;get wheel byte + jnz namedir ;permission granted + call print + db ' Password Request Denied - Not Wheel',cr,lf,0 + mvi m,' ' ;clear option +; +; Print Named Directory Info +; +namedir: + call getndr ;get location of directory + jnz ndir1 + call print + db ' Named Directory Buffer Not Available',0 + ret +; +; Print Names of Directory Elements +; +ndir1: + lda fcb+1 ;see if passwords included + cpi 'P' + jz ndir1p +; +; Print Header if Not Quiet for Non-Password Entries +; + mvi b,4 ;4 times +ndir1a: + call qprint ;print banner (optional) + db ' DU : DIR Name ',0 + dcr b ;count down + jnz ndir1a + call qcrlf ;new line + mvi b,4 ;4 more times +ndir1b: + call qprint + db '---- -------- ',0 + dcr b ;count down + jnz ndir1b + call qcrlf ;new line + jmp ndir1z +; +; Print Header if Not Quiet for Password Entries +; +ndir1p: + mvi b,2 ;2 times +ndir1c: + call qprint + db ' DU : DIR Name - Password ',0 + dcr b ;count down + jnz ndir1c + call qcrlf + mvi b,2 +ndir1d: + call qprint + db '---- -------- -------- ',0 + dcr b ;count down + jnz ndir1d + call qcrlf +; +; Begin Output Processing +; +ndir1z: + mvi c,0 ;set entry count + mvi b,1 ;set disk 1 +; +; Print Each Resident Command Name +; +ndir2: + mov a,m ;get table entry + ora a ;end of table? + rz ;exit + cmp b ;same disk? + jz ndir3 +; +; Advance to Next Set of Entries for New Disk +; + mov b,a ;set new disk + mov a,c ;get count + ani 3 ;see if newline already given + cnz crlf ;complete current line + call crlf ;1 additional line + mvi c,0 ;reset count +ndir3: + push b ;save counters +; +; Print DU: +; + mov a,m ;get disk + adi '@' ;convert to letter (A to P) + call cout + inx h ;pt to user + mov a,m ;get user + call padc ;print user number + call print ;print separator + db ': ',0 + inx h ;pt to name +; +; Print DIR +; + call prname ;print name of directory + lda fcb+1 ;check for password option + cpi 'P' + jnz ndir4 + call print + db ' - ',0 + call prname ;print name of password + pop b ;get counters + inr c ;another entry + push b ;save counters + jmp ndir5 +; +; Advance to Next and Print Separator +; +ndir4: + lxi b,8 ;skip over password + dad b +; +; Print Separator +; +ndir5: + call print ;print separator + db ' ',0 + pop b ;get counters +; +; New Line Counter +; + inr c ;increment entry counter + mov a,c ;check for done + ani 3 ;every 4 + cz crlf ;new line + jmp ndir2 +; +; Print 8-char name (directory or password) and advance ptr +; +prname: + mvi b,8 ;print name +prn1: + mov a,m ;get char + call cout + inx h ;pt to next + dcr b ;count down + jnz prn1 + ret +; +; Print Invalid Option and then Help Messages +; +invopt: + call print + db cr,lf,'Invalid Option',cr,lf,0 ;fall thru to PRHELP +; +; Print Help Message +; +prhelp: + call print + db cr,lf,'PWD - Print Working Directories',cr,lf + db cr,lf,'PWD Syntax:' + db cr,lf,' PWD or PWD P' + db cr,lf + db cr,lf,'where just "PWD" prints the names of the directories' + db cr,lf,'and "PWD P" (for PWD PASSWORD) prints the names and' + db cr,lf,'passwords of the directories if the user has Wheel' + db cr,lf,'Powers',0 + ret + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/QUIET.COM b/Images/Source/hd0/s0/u15/QUIET.COM new file mode 100644 index 0000000000000000000000000000000000000000..0a373556f26c225c873bd35bfd79449e4c2f8b90 GIT binary patch literal 512 zcma)%K}!Nb6o6-6gu1zc$1X9{#RRPgJS-s*ns{k(w>$&|9(F^pHC&6lNZmVh>d+tY zY-X|pdoZwjNJXa*-0Rd^l|<;!VZM2f`QDrNS_{JAW_m9#kYO|+I0`IZgXJ&>;E6nEWCXH literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/QUIET.MAC b/Images/Source/hd0/s0/u15/QUIET.MAC new file mode 100644 index 00000000..4eaa4302 --- /dev/null +++ b/Images/Source/hd0/s0/u15/QUIET.MAC @@ -0,0 +1,139 @@ +; +; Program: QUIET +; Author: Richard Conn +; Version: 1.0 +; Date: 29 Mar 84 +; +version equ 10 +z3env SET 0f400h + +; +; QUIET is used to set and reset the Quiet Flag in ZCPR3. +; The forms of the command are: +; +; QUIET DISPLAY <-- Display Setting +; QUIET RESET <-- Turn Quiet Off +; QUIET SET <-- Turn Quiet On +; QUIET / <-- Print Help +; + +; +; Equates +; +fcb equ 5ch +cr equ 0dh +lf equ 0ah + +; +; SYSLIB and Z3LIB Routines +; + ext z3init,print,envptr + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + +; +; Print Banner +; + call print + db 'QUIET Version ' + db (version/10)+'0','.',(version mod 10)+'0',0 + +; +; Check for Command +; + lda fcb+1 ;get first char + cpi 'R' ;reset? + jz qreset + cpi 'S' ;set? + jz qset + cpi 'D' ;display? + jz display + +; +; Print help +; +help: + call print + db cr,lf,'QUIET - Set/Reset/Display Quiet Flag' + db cr,lf,'Syntax:' + db cr,lf,' QUIET D or QUIET DIS - Display Quiet Flag' + db cr,lf,' QUIET R or QUIET RES - Quiet Flag Off' + db cr,lf,' QUIET S or QUIET SET - Quiet Flag On' + db 0 + ret + +; +; Reset Quiet +; +qreset: + call ptquiet ;pt to Quiet Flag + mvi m,0 ;reset it + jmp display + +; +; Set Quiet +; +qset: + call ptquiet ;pt to Quiet Flag + mvi m,0ffh ;set it + +; +; Display Quiet Flag +; +display: + call print + db ' - Quiet Flag is ',0 + call ptquiet ;pt to Quiet Flag + mov a,m ;get it + ora a ;0=reset + jz disres + call print + db 'Set (On)',0 + ret +disres: + call print + db 'Reset (Off)',0 + ret + +; +; Return with HL pting to Quiet Flag +; +ptquiet: + lhld envptr ;pt to environment + lxi d,28H ;offset to flag + dad d + ret + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/READ.ME b/Images/Source/hd0/s0/u15/READ.ME new file mode 100644 index 00000000..2db5f323 --- /dev/null +++ b/Images/Source/hd0/s0/u15/READ.ME @@ -0,0 +1,434 @@ + ZCPR3 Distribution Files, Phase 1 + + Richard Conn + + + + The following listings show all of the ZCPR3 Distribution Files +in Phase 1 of the distribution. All files are: + + Copyright(c) 1984 Richard Conn + All Rights Reserved + United States Copyright Pending + + The ZCPR3 System is released for non-commercial distribution within +the ZCPR2 and ZCPR3 user communities. No licenses are required for non- +commercial distribution. Licenses for commercial distribution (fee requested) +within marketed products are available from Echelon, Inc. See the References +section of the Installation Manual for details on how to contact Echelon, Inc. + + + +ZCPR3 Disk 1 -- + Filename.Typ Size Recs CRC Lines + 1 SYSENV .ASM 1K 5 4C5C 30 + 2 SYSENV .LIB 4K 26 CF64 135 + 3 SYSIOP .ASM 32K 254 1DCD 1220 + 4 SYSNDR .ASM 1K 3 3872 16 + 5 SYSNDR .LIB 2K 10 DA46 82 + 6 Z3BASE1 .LIB 9K 66 2C69 275 + 7 Z3BASE2 .LIB 8K 64 17AD 272 + 8 Z3HDR1 .LIB 19K 150 6B50 608 + 9 Z3HDR2 .LIB 19K 150 2C19 608 + 10 ZCPR3 .ASM 66K 522 2857 2906 + 11 ZCPR3 .INS 4K 28 52CF 160 + +ZCPR3 Disk 2 -- + Filename.Typ Size Recs CRC Lines + 1 SYSFCP .ASM 18K 137 7012 944 + 2 SYSRCP .ASM 44K 352 6315 2305 + 3 Z3TCAP .ASM 24K 189 3701 872 + Filename.Typ Size Recs CRC Lines + 4 SYSFCP1 .LIB 6K 43 C3BB 213 + 5 SYSFCP2 .LIB 6K 43 2324 213 + 6 SYSRCP1 .LIB 11K 81 F030 366 + 7 SYSRCP2 .LIB 11K 81 790C 367 + 8 SYSRCP3 .LIB 11K 81 52FB 366 + 9 SYSRCP4 .LIB 11K 81 871D 366 + + Filename.Typ Size Recs CRC + 1 SYSLIB .REL 21K 161 2921 + 2 VLIB .REL 2K 13 01A1 + 3 Z3LIB .REL 7K 56 61B8 + Filename.Typ Size Recs CRC + 4 Z3TCAP .TCP 7K 51 FB17 + +ZCPR3 Disk 3 -- + Filename.Typ Size Recs CRC Version + 1 ALIAS .COM 4K 30 82D4 1.1 + 2 CD .COM 1K 7 DA48 3.0 + 3 CMDRUN .COM 1K 2 21B5 N/A + 4 COMMENT .COM 1K 5 3C4A 2.0 + 5 CPSEL .COM 1K 8 CCAA 1.0 + 6 CRC .COM 6K 41 A89C 2.0 + 7 DEV .COM 2K 14 F755 1.0 + 8 DEVICE .COM 3K 17 153E 1.0 + 9 DIFF .COM 4K 25 45A7 2.0 + 10 DIR .COM 2K 16 9B8A 1.0 + 11 ECHO .COM 1K 4 F2D6 1.0 + 12 ERASE .COM 3K 20 E71E 5.0 + 13 ERROR1 .COM 2K 12 5EB7 1.0 + 14 ERROR2 .COM 3K 18 2F03 1.0 + 15 ERROR3 .COM 1K 5 8542 1.0 + 16 ERROR4 .COM 1K 5 86D1 1.0 + 17 ERRORX .COM 1K 3 F941 1.0 + 18 FINDF .COM 2K 14 D2A6 2.0 + 19 GOTO .COM 1K 6 6ADA 1.0 + 20 HELP .COM 3K 24 928B 5.0 + 21 HELPCK .COM 2K 16 F3B3 1.0 + 22 HELPPR .COM 5K 35 12E7 1.0 + 23 IF .COM 3K 18 418D 1.1 + 24 IFSTAT .COM 1K 3 6586 1.0 + 25 LDR .COM 3K 20 A14E 1.0 + 26 MCOPY .COM 4K 32 8341 4.0 + 27 MENU .COM 4K 27 8CED 3.2 + 28 MENUCK .COM 3K 20 3CDC 1.0 + 29 MKDIR .COM 6K 41 014B 3.0 + 30 NOTE .COM 1K 1 CB9E 1.0 + 31 PAGE .COM 5K 36 DF9F 2.0 + 32 PATH .COM 2K 10 E421 3.0 + 33 PRINT .COM 6K 42 0492 2.0 + 34 PROTECT .COM 4K 28 A130 3.0 + 35 PWD .COM 1K 8 2B9B 1.0 + 36 QUIET .COM 1K 4 DF6B 1.0 + 37 RECORD .COM 1K 8 C2B4 3.0 + 38 REG .COM 1K 8 1CC4 1.0 + 39 RENAME .COM 4K 27 A2F2 3.0 + 40 SAK .COM 1K 7 7842 2.0 + 41 SETFILE .COM 1K 4 00B2 1.0 + 42 SH .COM 4K 28 A89E 1.0 + 43 SHCTRL .COM 1K 7 E37A 1.0 + 44 SHDEFINE.COM 3K 23 0DEA 1.0 + 45 SHFILE .COM 1K 4 634F 1.0 + 46 SHOW .COM 8K 62 808A 1.0 + 47 SHVAR .COM 3K 23 4D89 1.0 + 48 SUB .COM 3K 20 59E5 3.0 + 49 TCCHECK .COM 2K 14 7235 1.0 + 50 TCMAKE .COM 6K 47 B3A0 1.0 + 51 TCSELECT.COM 3K 22 7C29 1.0 + 52 UNERASE .COM 2K 13 5057 1.0 + 53 WHEEL .COM 2K 11 0CD0 3.0 + 54 XD .COM 4K 28 465B 1.2 + 55 XDIR .COM 8K 62 7248 2.0 + 56 Z3INS .COM 2K 16 DFB7 1.0 + 57 Z3LOC .COM 1K 7 A908 1.0 + 58 ZEX .COM 6K 48 5E36 3.0 + +ZCPR3 Disk 4 -- + Filename.Typ Size Recs CRC Lines + 1 ALIAS .HLP 5K 35 9C58 166 + 2 CMDFILES.HLP 24K 192 4475 728 + 3 COMPARE .HLP 5K 33 26B6 148 + 4 DIRS .HLP 21K 166 29F5 602 + 5 HELP .HLP 1K 7 54CD 20 + 6 HELPSYS .HLP 29K 230 99DA 792 + 7 IF .HLP 13K 99 45A4 457 + 8 IO .HLP 12K 92 21E3 389 + 9 MENU .HLP 32K 253 9059 892 + 10 NDIRS .HLP 16K 122 33D7 439 + 11 SH .HLP 13K 101 6646 419 + 12 SYSRCP .HLP 6K 48 F633 231 + +ZCPR3 Disk 5 -- + Filename.Typ Size Recs CRC Lines + 1 Z3RES .HLP 8K 64 800E 221 + 2 Z3TCAP .HLP 40K 314 381F 1105 + 3 Z3UTIL1 .HLP 30K 234 4B2D 988 + 4 Z3UTIL2 .HLP 21K 166 D3E6 763 + 5 ZCPR3 .HLP 4K 30 666E 105 + +ZCPR3 Disk 6 -- + Filename.Typ Size Recs CRC Lines + 1 ALIAS .ZEX 2K 9 6DBE 63 + 2 ALIAS0 .MAC 8K 63 5072 431 + 3 ALIAS1 .MAC 10K 75 DB42 513 + 4 CD .MAC 3K 22 4202 151 + 5 CMDRUN .MAC 1K 7 F21D 50 + 6 COMMENT .MAC 4K 28 FF64 195 + 7 CPSEL .MAC 7K 52 2669 364 + 8 CRC .MAC 18K 141 15ED 914 + 9 DEV .MAC 9K 71 D980 492 + 10 DEVICE .MAC 11K 84 6EED 576 + 11 DIFF .MAC 15K 115 B983 724 + 12 DIR .MAC 7K 54 2227 373 + 13 ECHO .MAC 4K 28 824C 180 + 14 ERASE .MAC 10K 79 765E 492 + 15 ERROR1 .MAC 8K 57 7BF1 308 + 16 ERROR2 .MAC 9K 66 DFF6 367 + 17 ERROR3 .MAC 4K 27 85FA 153 + 18 ERROR4 .MAC 4K 31 D179 178 + 19 ERRORX .MAC 2K 9 7F9C 68 + 20 FINDF .MAC 22K 171 4220 1049 + 21 GOTO .MAC 4K 27 4536 203 + 22 HELP .MAC 25K 195 FF6A 1207 + 23 HELPCK .MAC 10K 77 A576 519 + 24 HELPPR .MAC 28K 219 CFB6 1380 + 25 IF .MAC 10K 77 F529 526 + 26 IFSTAT .MAC 2K 11 234E 85 + +ZCPR3 Disk 7 -- + Filename.Typ Size Recs CRC Lines + 1 LDR .MAC 11K 88 E5E0 552 + 2 MCOPY .MAC 22K 170 B694 1059 + 3 MENU .MAC 31K 241 D3F6 1509 + 4 MENUCK .MAC 11K 87 B04C 545 + 5 MKDIR .MAC 19K 145 64CB 981 + 6 NOTE .MAC 1K 7 986F 51 + 7 PAGE .MAC 24K 187 AEFF 1182 + 8 PATH .MAC 9K 69 7D6A 459 + 9 PRINT .MAC 28K 219 A093 1403 + 10 PROTECT .MAC 13K 97 E175 590 + 11 PWD .MAC 5K 37 DF00 248 + 12 QUIET .MAC 3K 17 FA09 138 + 13 RECORD .MAC 4K 30 4EE7 193 + 14 REG .MAC 5K 37 401A 266 + 15 RENAME .MAC 13K 103 C4F5 592 + 16 SAK .MAC 5K 38 62C2 244 + 17 SETFILE .MAC 2K 16 73D5 107 + 18 SHCTRL .MAC 3K 21 CAE6 147 + 19 SHOW .MAC 31K 247 8770 1752 + +ZCPR3 Disk 8 -- + Filename.Typ Size Recs CRC Lines + 1 SH .MAC 16K 125 768D 806 + 2 SHDEFINE.MAC 11K 87 396F 658 + 3 SHFILE .MAC 2K 15 3417 104 + 4 SHVAR .MAC 11K 88 6B60 655 + 5 SUB .MAC 23K 183 4AA9 1042 + 6 TCCHECK .MAC 5K 40 7079 280 + 7 TCMAKE .MAC 19K 148 A0C7 1084 + 8 TCSELECT.MAC 11K 87 927E 571 + 9 UNERASE .MAC 14K 110 A09A 726 + 10 WHEEL .MAC 4K 32 FFCF 217 + 11 XD .MAC 18K 144 B1B2 855 + 12 XDIR .MAC 38K 304 8B4B 1887 + 13 Z3INS .MAC 10K 80 7F27 539 + 14 Z3LOC .MAC 4K 30 3583 211 + 15 ZEX .ASM 45K 360 48BD 2194 + 16 ZEX .ZEX 4K 32 782C 180 + +ZCPR3 Disk 9 -- + Filename.Typ Size Recs CRC Lines + 1 Z3INS .IDX 4K 32 6044 232 + 2 Z3INS .SI 31K 241 836B 771 + 3 Z3INS .TOC 13K 101 D54E 207 + 4 Z3INS1 .SI 11K 85 30E0 267 + 5 Z3INS2 .SI 11K 88 2800 339 + 6 Z3INS3 .SI 55K 439 FCCF 1919 + 7 Z3INS4 .SI 28K 224 16D3 998 + 8 Z3INS5 .SI 5K 39 984C 153 + 9 Z3INS6 .SI 33K 259 D8A1 1014 + 10 Z3INS7 .SI 2K 12 F0A3 32 + 11 Z3INS8 .SI 5K 34 EB11 154 + +ZCPR3 Disk 10 -- + Filename.Typ Size Recs CRC Lines + 1 Z3USER .IDX 1K 3 9F34 30 + 2 Z3USER .SI 54K 428 7D58 1886 + 3 Z3USER .TOC 1K 6 1810 24 + + +SYSLIB3 Disk 1 -- + Filename.Typ Size Recs CRC Lines + 1 S0FILEIO.MAC 2K 12 6AA7 86 + 2 S1FILEIO.MAC 2K 12 29E9 86 + 3 S2FILEIO.MAC 2K 12 EE8F 86 + 4 S3FILEIO.MAC 2K 12 B0F6 86 + 5 SALLOC .MAC 3K 22 F78F 113 + 6 SBBLINE .MAC 3K 17 1D79 88 + 7 SBDOS .MAC 1K 4 D833 26 + 8 SBIN .MAC 1K 4 AC82 27 + 9 SBIOS .MAC 3K 17 241E 79 + 10 SBIST .MAC 1K 4 3522 28 + 11 SBLINE .MAC 3K 21 1871 98 + 12 SBOUT .MAC 1K 4 4DF6 30 + 13 SCAPIN .MAC 1K 4 DF2E 28 + 14 SCAPS .MAC 1K 4 22F3 24 + 15 SCAPSTR .MAC 1K 5 FCEA 35 + 16 SCATH .MAC 1K 5 A665 33 + 17 SCCOUT .MAC 2K 9 A488 59 + 18 SCIN .MAC 1K 7 47D4 43 + 19 SCLINE .MAC 2K 11 583E 57 + 20 SCLOUT .MAC 2K 9 2A8B 59 + 21 SCODEND .MAC 1K 8 4F9C 44 + 22 SCOMP .MAC 2K 10 C619 56 + 23 SCOMPHD .MAC 1K 4 67BE 27 + 24 SCONDIN .MAC 1K 6 6666 33 + 25 SCOUT .MAC 1K 7 0A76 46 + 26 SCPOUT .MAC 2K 9 F3B0 59 + 27 SCRC .MAC 3K 24 9649 120 + 28 SCRC1 .MAC 3K 24 7A5D 120 + 29 SCRC2 .MAC 3K 23 E929 118 + 30 SCRLF .MAC 1K 6 6CD3 42 + 31 SCST .MAC 1K 7 B601 45 + 32 SDIR .MAC 2K 15 D2C8 64 + 33 SDIR00 .MAC 2K 15 D5BC 64 + 34 SDIR01 .MAC 2K 12 C259 63 + 35 SDIR02 .MAC 3K 17 5193 104 + 36 SDIR03 .MAC 3K 17 D263 85 + 37 SDIR04 .MAC 2K 11 5228 62 + 38 SDIR05 .MAC 7K 56 754A 282 + 39 SDIR06 .MAC 10K 79 D1DF 423 + 40 SDIR07 .MAC 3K 17 4FA3 111 + 41 SDIR08 .MAC 2K 12 4F2F 65 + 42 SDIR09 .MAC 2K 14 75BA 83 + 43 SDIR10 .MAC 2K 13 3DE7 72 + 44 SDIRBF .MAC 1K 5 F2DC 31 + 45 SDIRQ .MAC 17K 136 6004 708 + 46 SDIRQS .MAC 20K 155 51F3 786 + 47 SEN .MAC 1K 3 F9CF 23 + 48 SEPRINT .MAC 1K 5 2A31 26 + 49 SEPSTR .MAC 2K 15 68B3 91 + 50 SEVAL .MAC 4K 25 13D5 146 + 51 SEVAL1 .MAC 2K 9 782D 66 + 52 SEVAL2 .MAC 2K 11 1BDC 74 + 53 SEVAL3 .MAC 2K 10 BD45 66 + 54 SEVAL4 .MAC 2K 9 10A5 58 + 55 SFCLOS .MAC 1K 4 710C 33 + 56 SFDEL .MAC 1K 4 BB5B 28 + 57 SFEXIST .MAC 1K 5 2C94 31 + 58 SFILEIO .MAC 9K 72 4F9C 418 + 59 SFILL .MAC 2K 10 A547 70 + 60 SFMAKE .MAC 1K 5 5A73 31 + +SYSLIB3 Disk 2 -- + Filename.Typ Size Recs CRC Lines + 1 SFNAME .MAC 5K 39 EB46 245 + 2 SFOPEN .MAC 2K 10 6B08 64 + 3 SFREAD .MAC 1K 4 3E4E 30 + 4 SFRENAME.MAC 2K 12 6A58 80 + 5 SFSIZE .MAC 2K 12 DCDF 91 + 6 SFWRIT .MAC 1K 4 67E3 30 + 7 SFXIO .MAC 9K 65 7928 406 + 8 SGFA .MAC 3K 20 DDA9 130 + 9 SGUA .MAC 1K 5 C628 43 + 10 SINITFCB.MAC 1K 8 FFE8 47 + 11 SINLINE .MAC 6K 44 4103 285 + 12 SINSTR .MAC 2K 12 3077 71 + 13 SISALNUM.MAC 1K 6 2867 40 + 14 SISALPHA.MAC 1K 6 02B4 41 + 15 SISCTRL .MAC 1K 6 533C 40 + 16 SISDIGIT.MAC 1K 6 EDAB 38 + 17 SISGRAPH.MAC 1K 6 EEF8 38 + 18 SISHEX .MAC 1K 6 1958 43 + 19 SISPRINT.MAC 1K 6 EC30 38 + 20 SISPUN .MAC 2K 9 0F59 58 + 21 SISSP .MAC 1K 8 7B4B 59 + 22 SLA2HC .MAC 1K 6 70AD 38 + 23 SLADC .MAC 2K 11 72AE 75 + 24 SLAFDC .MAC 2K 10 843B 62 + 25 SLCRLF .MAC 1K 6 A98A 42 + 26 SLFN1 .MAC 1K 6 A6FF 40 + 27 SLFN2 .MAC 1K 6 82BC 41 + 28 SLFN3 .MAC 1K 8 658E 54 + 29 SLHL4HC .MAC 1K 4 DBC3 28 + 30 SLHL5DC .MAC 2K 14 7961 93 + 31 SLHLFDC .MAC 2K 12 2F66 82 + 32 SLOUT .MAC 1K 7 4084 46 + 33 SLPRINT .MAC 1K 4 67D0 25 + 34 SLPSTR .MAC 2K 14 65D7 90 + 35 SMA2HC .MAC 1K 8 0DC7 40 + 36 SMADC .MAC 2K 14 016F 84 + 37 SMAFDC .MAC 2K 12 BEC3 70 + 38 SMFN1 .MAC 1K 6 3A43 42 + 39 SMFN2 .MAC 1K 6 C23B 45 + 40 SMFN3 .MAC 1K 8 002A 57 + 41 SMHL4HC .MAC 1K 5 9C15 28 + 42 SMHL5DC .MAC 3K 19 F0F5 115 + 43 SMHLFDC .MAC 2K 16 1C5D 108 + 44 SMOVE .MAC 3K 19 67FF 131 + 45 SMTH01 .MAC 1K 4 FD05 33 + 46 SMTH02 .MAC 1K 5 47EC 33 + 47 SMTH03 .MAC 1K 4 8800 30 + 48 SMTH04 .MAC 1K 4 FAD3 28 + 49 SMTH05 .MAC 1K 5 41F7 34 + 50 SMTH06 .MAC 1K 5 9661 34 + 51 SMTH07 .MAC 1K 3 78BD 26 + 52 SMTH08 .MAC 1K 3 AD88 26 + 53 SMTH09 .MAC 1K 3 3EC8 26 + 54 SMTH10 .MAC 1K 4 729D 34 + 55 SMTH11 .MAC 2K 13 7150 98 + 56 SMTH12 .MAC 2K 13 E277 95 + +SYSLIB3 Disk 3 -- + Filename.Typ Size Recs CRC Lines + 1 SPA2HC .MAC 1K 6 FD07 38 + 2 SPADC .MAC 2K 11 35AA 74 + 3 SPAFDC .MAC 2K 10 8746 62 + 4 SPAUSE .MAC 3K 23 A2B8 123 + 5 SPFN1 .MAC 1K 6 5BD1 40 + 6 SPFN2 .MAC 1K 6 6756 41 + 7 SPFN3 .MAC 1K 8 B9E6 54 + 8 SPHL4HC .MAC 1K 4 3F9B 28 + 9 SPHL5DC .MAC 2K 14 D706 92 + 10 SPHLFDC .MAC 2K 12 A7C8 82 + 11 SPOUT .MAC 1K 7 915C 46 + 12 SPRINT .MAC 1K 4 A2A3 25 + 13 SPSTR .MAC 2K 14 A7FD 90 + 14 SRAND .MAC 2K 13 476E 81 + 15 SRIN .MAC 1K 7 1844 43 + 16 SRREAD .MAC 2K 9 F01A 58 + 17 SRWRITE .MAC 2K 9 35C7 58 + 18 SSA2HC .MAC 1K 6 6057 38 + 19 SSADC .MAC 2K 11 1A64 75 + 20 SSAFDC .MAC 2K 10 B9F3 62 + 21 SSCANNER.MAC 2K 12 C2D3 73 + 22 SSCFA .MAC 2K 16 E939 117 + 23 SSCOUT .MAC 1K 6 0636 39 + 24 SSCRLF .MAC 1K 5 6327 33 + 25 SSCTLFL .MAC 1K 4 D7AB 21 + 26 SSFA .MAC 2K 16 9FAC 117 + 27 SSFN1 .MAC 1K 6 A43E 41 + 28 SSFN2 .MAC 1K 6 0E8D 42 + 29 SSFN3 .MAC 1K 8 C4B7 55 + 30 SSHL4HC .MAC 1K 4 4D97 28 + 31 SSHL5DC .MAC 2K 14 6FBA 93 + 32 SSHLFDC .MAC 2K 13 C39D 82 + 33 SSKPUN .MAC 1K 8 A057 48 + 34 SSKSP .MAC 1K 8 490D 48 + 35 SSORT .MAC 14K 111 E332 564 + 36 SSOUT .MAC 1K 5 CA1A 39 + 37 SSPRINT .MAC 1K 4 42CC 26 + 38 SSPSTR .MAC 2K 14 9D1B 89 + 39 SSUA .MAC 1K 6 EA5F 47 + 40 SUD1 .MAC 1K 8 635C 74 + 41 SUD2 .MAC 1K 5 589A 50 + 42 SUD3 .MAC 1K 6 A69A 50 + 43 SVERSION.MAC 1K 5 F1A9 30 + 44 SYSLIB .REL 21K 161 2921 N/A + 45 SYSLIB27.REL 14K 107 1C54 N/A + 46 SYSTEST .MAC 4K 26 C997 129 + 47 SYSTEST0.MAC 4K 29 B39E 194 + 48 SYSTEST1.MAC 3K 21 5D8C 114 + 49 SYSTEST2.MAC 4K 30 9E05 151 + 50 SYSTEST3.MAC 4K 26 92EA 148 + 51 SYSTEST4.MAC 6K 46 02CE 244 + 52 SYSTEST5.MAC 2K 16 2DAF 98 + 53 SYSTEST6.MAC 5K 35 A9F5 211 + 54 SYSTEST7.MAC 5K 36 5138 233 + +SYSLIB3 Disk 4 -- + Filename.Typ Size Recs CRC Lines + 1 SYS2-3 .TXT 9K 71 6B3B 239 + 2 SYSLIB .HLP 2K 9 8184 38 + 3 SYSLIB0 .HLP 14K 112 86FE 355 + 4 SYSLIB1 .HLP 20K 159 8FBB 588 + 5 SYSLIB2 .HLP 5K 33 6DD5 154 + 6 SYSLIB3 .HLP 15K 119 F85C 435 + 7 SYSLIB4 .HLP 12K 90 E7A6 390 + 8 SYSLIB5 .HLP 12K 90 F417 412 + 9 SYSLIB6 .HLP 8K 60 F45A 276 + 10 SYSLIB7 .HLP 6K 45 152C 266 + 11 SYSLIB8 .HLP 5K 37 3CA8 173 + 12 SYSLIB9 .HLP 3K 23 4292 82 + 13 SYSLIBA .HLP 7K 55 6442 192 + 14 SYSLIBB .HLP 5K 39 2009 126 + 15 SYSLIBC .HLP 9K 71 F96C 302 + 16 SYSLIBD .HLP 5K 33 489A 134 + 17 SYSLIBE .HLP 8K 62 55D3 232 + 18 SYSLIBF .HLP 4K 25 2A54 104 + 19 SYSLIBG .HLP 3K 21 EE4C 88 + 20 SYSLIBH .HLP 2K 14 6F02 67 + 21 SYSLIBI .HLP 6K 44 DC1E 158 + + diff --git a/Images/Source/hd0/s0/u15/RECORD.COM b/Images/Source/hd0/s0/u15/RECORD.COM new file mode 100644 index 0000000000000000000000000000000000000000..7f8cd2256ffa2e2ca06f3ac9159d3b01bd30d33e GIT binary patch literal 1024 zcmbVL&r2IY6rRY4x^*pqUW6VVjZla&EqDvmR*aF9nhk3z#8P2(X5(VAWA}#=DAFE! z>!CgL+&`elBGRJ~p}Vk$6!HfYu}}&Hp3R|8=-hJ>DlI;cTP0zsl^n=5 zNLX(D?y&+)PC}(p1(mN0iy3AOloFni;5PNTqGHILTDcAxrCvAN!+~Ie_MxvNEEF)K zETQOI{irKBFHt>xvZT(>DQX@Z*D`GoCTJ!Dq3d8>6f1PF*DcOXV1~U_*P6C0ArLp4 z;F=7(zcN==r(wr%Ho)27uvA?tDky~+n8eZ6u(y|^!eDOJv>InwS(2rq1BMNTxh*z1 zgS93&I|6iJHSAn;J<=-=8wSFH%UxM5mMZgV9|E=YA#isAk)=h$G#YLLYkJ{gQ4EwV z$3P8*hzK-`<3uu`6f&{=GE(;um*K&`h>LnGwhW@13uV;sEt;9=*o+4*TxZLT1$Mj1 zSq9bDZ4S{~uHRxuh7Jd6EdCGOmSkX=TXrOAI(wgZ zophBZZ<6uV)N*R~S9{;PQ>EUc)^VWGW3O{`Hb!<+`~DscNBoa;H26Y8*?&tz$$wA7 zp=cTQKhQ&+juBjB{F?hdI@~ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/RECORD.MAC b/Images/Source/hd0/s0/u15/RECORD.MAC new file mode 100644 index 00000000..6d84034a --- /dev/null +++ b/Images/Source/hd0/s0/u15/RECORD.MAC @@ -0,0 +1,194 @@ +; +; PROGRAM: RECORD +; AUTHOR: RICHARD CONN +; VERSION: 3.0 +; DATE: 4 Apr 84 +; PREVIOUS VERSIONS: 1.3 (5 Jan 83), 1.4 (6 Jan 83) +; PREVIOUS VERSIONS: 1.0 (30 Dec 82), 1.1 (31 Dec 82), 1.2 (1 Jan 83) +; +VERS EQU 30 +z3env SET 0f400h + +; +; RECORD enables and disables the disk output redirectable I/O +; drivers for ZCPR2. This command takes two forms: +; +; RECORD ON <-- Turn on console recording +; RECORD OFF <-- Turn off console recording +; RECORD ON P <-- Turn on printer recording +; RECORD OFF P <-- Turn off printer recording +; + ext z3init,getiop + ext eprint + +fcb equ 5dh ;FCB Input +fcb2 equ 6dh ;FCB2 Input +cr equ 0dh +lf equ 0ah + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + +; +; Start of Program +; + call getiop ;Check for I/O Driver Defn + mov a,h + ora l + jnz start0 + call banner + call eprint + db cr,lf,'Abort -- I/O Driver Address NOT Defined',0 + ret +start0: + call status ;Call Status Routine + jz nodriver ;No Driver Available? + cpi 80H ;MUST have Disk Driver Module (> 80H) Loaded + jnc start1 + call banner + call eprint + db cr,lf,'Abort -- Disk Driver Module NOT Loaded',0 + ret +nodriver: + call banner + call eprint + db cr,lf,'Abort -- No I/O Driver Module Loaded',0 + ret + +start1: + lda fcb ;Get first char + cpi 'O' ;Must be O + jnz help + lda fcb+1 ;Get 2nd char + cpi 'N' ;ON? + jnz off +on: + lda fcb2 ;Printer? + cpi 'P' + jnz on1 + call banner + call eprint + db ' ++ TTY Recording ON ++',0 + call lopen ;LST + ret +on1: + call banner + call eprint + db ' ++ CRT Recording ON ++',0 + call copen ;CRT + ret +off: + lda fcb2 ;Printer? + cpi 'P' + jnz off1 + call lclose ;Close Output + call banner + call eprint + db ' ++ TTY Recording OFF ++',cr,lf,0 + ret +off1: + call cclose ;Close Output + call banner + call eprint + db ' ++ CRT Recording OFF ++',cr,lf,0 + ret +; +; Print Help Message +; +help: + call banner + call eprint + db cr,lf + db cr,lf,'RECORD turns on and off recording of screen displays' + db cr,lf,'on disk under ZCPR3 with the SYSIO Redirectable I/O ' + db 'Drivers' + db cr,lf,'engaged.' + db cr,lf + db cr,lf,'It is invoked by two forms:' + db cr,lf + db cr,lf,' RECORD ON or RECORD ON PRINTER' + db cr,lf,' RECORD OFF or RECORD OFF PRINTER' + db cr,lf + db cr,lf,'Minimum Required Option Forms are ON, OF, and P:' + db cr,lf,' RECORD ON P = RECORD ON PRINTER' + db cr,lf,'If the P option is given, then TTY output is ' + db 'recorded,' + db cr,lf,'else CRT output is recorded.' + db cr,lf,0 + ret + +; +; I/O Driver Interface Routines +; +status: + push h ;Save HL + push d ;Save DE + lxi d,0 ;No Offset for Status +runio: + call getiop ;Get I/O Base Address + dad d ;Pt to Routine + pop d ;Restore DE + xthl ;Restore HL and Place Address on Stack + ret ;"Run" Routine +copen: + push h ;Save Regs + push d + lxi d,36 ;Offset for Console Open Routine + jmp runio ;Run Routine +cclose: + push h ;Save Regs + push d + lxi d,39 ;Offset for Console Close Routine + jmp runio +lopen: + push h ;Save Regs + push d + lxi d,42 ;Offset for Printer Open Routine + jmp runio +lclose: + push h ;Save Regs + push d + lxi d,45 ;Offset for Printer Close Routine + jmp runio + +; +; Print Banner +; +banner: + call eprint + db 'RECORD, Version ' + db (vers/10)+'0','.',(vers mod 10)+'0',0 + ret + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/REG.COM b/Images/Source/hd0/s0/u15/REG.COM new file mode 100644 index 0000000000000000000000000000000000000000..97f426b8152b5dbcbd3644841cde365ba56db502 GIT binary patch literal 1024 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/RENAME.MAC b/Images/Source/hd0/s0/u15/RENAME.MAC new file mode 100644 index 00000000..9144ddb6 --- /dev/null +++ b/Images/Source/hd0/s0/u15/RENAME.MAC @@ -0,0 +1,593 @@ +; PROGRAM: RENAME +; VERSION: 3.0 +; DATE: 18 MAY 84 +; AUTHOR: RICHARD CONN +; PREVIOUS VERSIONS: 2.0 (16 JAN 83) +; PREVIOUS VERSIONS: 1.4 (6 JAN 83), 1.3 (7 DEC 82), 1.2 (10 NOV 82) +; PREVIOUS VERSION: RENAME.ASM Version 1.1 (26 OCT 81) +VERS equ 30 +z3env SET 0f400h + +; +; RENAME Command -- +; RENAME is used to change the name of one or more files. Unlike +; the ZCPR2-resident REN function, RENAME permits ambiguous file names +; and supports an Inspect mode that allows the user to confirm each +; rename before it is done. Additionally, there is a Control Mode which +; allows the user to manually specify the name for each file as it is +; presented to him. +; +; The RENAME command may be of the following forms: +; RENAME dir:afn1=afn2,dir:afn3=afn4,... o +; RENAME dir:afn,dir:afn1=afn2,... o +; The first form shows elements of the form +; dir:afn1=afn2 +; while the second form shows elements of the form +; dir:afn +; which is the same as +; dir:afn=afn +; and only makes sense if Control Mode is used. +; +; The option characters (o) are none or more of the following: +; C -- Control Mode; manually specify each new name +; I -- Inspect and approve each rename +; S -- Include SYStem files +; +; Examples: +; RENAME *.MAC=*.ASM <-- Rename all ASM files to MAC +; RENAME *.MAC C <-- Rename all MAC files to names +; input by the user +; RENAME *.OBJ=*.COM SI <-- Rename all COM files to OBJ +; and include SYStem files +; and Inspect and approve each +; change +; + +FALSE EQU 0 +TRUE EQU NOT FALSE + +ESIZE EQU 16 ; SIZE OF DIR ENTRY (FROM SYSLIB DIRF ROUTINE) + + EXT DIRQ ; DIRECTORY PROCESSOR + + EXT Z3INIT ; INIT BUFFERS + EXT ZFNAME ; FILE NAME PROCESSOR + EXT Z3LOG ; Z3 DU LOG + + EXT F$DELETE ; DELETE FILE + EXT F$RENAME ; RENAME FILE + EXT BBLINE ; INPUT LINE EDITOR + EXT INITFCB ; INIT FCB + EXT BDOS ; BDOS ENTRY + EXT PUTUD ; SAVE CURRENT USER/DISK + EXT GETUD ; RESTORE CURRENT USER/DISK + EXT MOVEB ; COPY ROUTINE + EXT PHLDC ; PRINT HL AS DECIMAL CHARS + EXT PRINT ; PRINT ROUTINE + EXT COUT ; CONSOLE OUTPUT ROUTINE + EXT CIN ; CONSOLE INPUT ROUTINE + EXT CAPS ; CAPITALIZE ROUTINE + EXT CRLF ; NEW LINE ROUTINE + EXT FILLB ; FILL ROUTINE + EXT CODEND ; CODE END COMPUTATION ROUTINE + +; +; CP/M EQUATES +; +CPM EQU 0 ; WARM BOOT +FCB EQU 5CH ; FCB +BUFF EQU 80H ; INPUT LINE BUFFER +CR EQU 13 ; +LF EQU 10 ; + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + LXI H,0 ; GET STACK PTR + DAD SP + SHLD STACK ; SAVE IT + CALL CODEND + SHLD CMDLNE ; SETUP COMMAND LINE BUFFER + LXI D,100H ; BUFFER SIZE + DAD D + SHLD NTFCB ; SET TEMP FCB + DAD D + SHLD DIRBUF ; PTR TO DIR BUFFER + SPHL ; NEW SP + LHLD NTFCB ; SET 2ND FCB + LXI D,40 + DAD D + SHLD OFCB + + CALL PUTUD ; SAVE CURRENT USER/DISK AWAY + + CALL PRINT + DB 'RENAME Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0',0 + LDA FCB+1 ; GET FIRST CHAR OF FILE NAME + CPI ' ' ; NO FILE SPEC? + JZ HELP + CPI '/' ; OPTION CAUGHT? + JNZ ECONT + +; PRINT HELP INFORMATION +HELP: + CALL PRINT + DB CR,LF,'Syntax:' + DB CR,LF,' RENAME dir:afn1=afn2,afn3=afn4,... o...' + DB CR,LF,'Options:' + DB CR,LF,' C -- Control Mode (Allow user to manually name each ' + DB 'file)' + DB CR,LF,' I -- Inspect Mode (Give user approval option)' + DB CR,LF,' S -- Include SYS files' + DB CR,LF + DB 0 + +; RETURN TO OS +RETURN: + LHLD STACK ; GET OLD STACK + SPHL ; SET IT + RET + +; COPY BUFFER INTO TEMP BUFFER +ECONT: + LHLD CMDLNE ; PT TO COMMAND LINE SAVE BUFFER + XCHG ; ... IN DE + LXI H,BUFF+1 ; PT TO BUFFER + MVI B,80H ; BUFFER SIZE + CALL MOVEB ; COPY INTO COMMAND LINE BUFFER + +; EXTRACT FLAGS IF PRESENT + XRA A ; SET NO INSPECT, NO R/O, AND NO SYSTEM FILES + STA INSPECT + STA CONTROL ; SET NO CONTROL MODE + MVI A,80H ; SELECT NON-SYS FILES ONLY + STA SYSTEM + LXI H,0 ; SET FILE COUNT + SHLD FILECNT + LHLD CMDLNE ; PT TO BUFFER +; SKIP TO FILE NAME STRING +SBLANK: + MOV A,M ; SKIP TO NON-BLANK + CPI ' ' ; ? + JNZ SBL1 + INX H ; PT TO NEXT CHAR + JMP SBLANK +; SKIP TO END OF FILE NAME STRING +SBL1: + MOV A,M ; SKIP TO OR EOL + ORA A ; DONE? + JZ OPT + CPI ' ' ; + JZ OPT + INX H ; PT TO NEXT + JMP SBL1 +; CHECK FOR LEADING SLASH ON OPTION AND SKIP IT IF SO +OPT: + CPI '/' ; OPTION CHAR? + JNZ OPTION + INX H ; SKIP SLASH +; PROCESS LIST OF OPTIONS +OPTION: + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ DSPEC + INX H ; PT TO NEXT CHAR + CPI ' ' ; SKIP OVER SPACES + JZ OPTION + CPI '/' ; IF OPTION LETTER, OBVIOUS ERROR, SO HELP + JZ HELP + CPI 'C' ; CONTROL? + JZ OPTCTRL + CPI 'I' ; INSPECT? + JZ OPTINS + CPI 'S' ; SYSTEM FILES? + JNZ HELP + MVI A,0C0H ; SET FOR SYS FILES + STA SYSTEM + JMP OPTION +OPTCTRL: + MVI A,0FFH ; CONTROL MODE + STA CONTROL + JMP OPTION +OPTINS: + MVI A,0FFH ; INSPECT + STA INSPECT + JMP OPTION + +; EXTRACT DISK, USER, AND FILE NAME INFORMATION +DSPEC: + LHLD CMDLNE ; PT TO BEFORE FIRST BYTE + DCX H +DSPEC0: + INX H ; PT TO BYTE + MOV A,M ; GET BYTE + ORA A ; DONE? + JZ HELP + CPI ' ' ; ? + JZ DSPEC0 +; +; MAJOR REENTRY POINT WHEN FILE SPECS ARE SEPARATED BY COMMAS +; HL PTS TO FIRST BYTE OF NEXT FILE SPEC +; +DSPEC1: + CALL GETUD ; RESET USER IF NECESSARY + PUSH H + LHLD NTFCB + XCHG ; PT TO FCB IN DE + POP H + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + PUSH H + LHLD NTFCB + XCHG ; PT TO FCB IN DE + POP H + CALL Z3LOG ; LOG INTO DU + +; FIRST NAME IS NOW EXTRACTED -- EXTRACT POSSIBLE SECOND NAME +NAME2: + LHLD OFCB ; PT TO FCB FOR 2ND NAME + XCHG + LHLD NTFCB ; PT TO FIRST NAME + MVI B,16 ; COPY 16 BYTES + CALL MOVEB + LHLD NEXTCH ; PT TO CHAR WHICH ENDED PARSE + MOV A,M ; GET IT + CPI '=' ; ASSIGNMENT? + JNZ RENAME ; GO AHEAD IF NOT + INX H ; PT TO CHAR AFTER '=' + PUSH H + LHLD OFCB ; PT TO TEMP FCB + XCHG ; ... IN DE + POP H + MVI A,0 ; DIR BEFORE DU + CALL ZFNAME ; EXTRACT FILE NAME INTO FCB, AND GET DISK AND USER + SHLD NEXTCH ; SAVE PTR TO DELIMITER WHICH ENDED SCAN + +; LOAD DIRECTORY AND RENAME FILES +RENAME: + LHLD OFCB + XCHG ; PT TO FCB + LHLD DIRBUF ; PT TO END OF CODE + CALL INITFCB ; INIT THE FCB + LDA SYSTEM ; SET FLAGS + CALL DIRQ ; LOAD DIR, SELECT FILES, PACK, AND ALPHABETIZE + +; REN DIR FILES; HL PTS TO FIRST FILE, BC=FILE COUNT + CALL RENFILES + +; CHECK FOR NEXT FILE SPEC + LHLD NEXTCH ; GET PTR + MOV A,M ; GET DELIM + CPI ',' ; ANOTHER FILE? + JNZ RENDONE + INX H ; PT TO CHAR AFTER COMMA + JMP DSPEC1 ; CONTINUE PROCESSING + +; RENAME COMPLETE -- PRINT COUNT AND EXIT +RENDONE: + CALL PRCOUNT ; PRINT FILE COUNT + JMP RETURN + +; RENAME SELECTED FILES +RENFILES: + MOV A,B ; CHECK FOR ANY FILES LOADED + ORA C + RZ + +; PRINT FILE NAME +RENLP: + PUSH B ; SAVE ENTRY COUNT + CALL PRINT + DB CR,LF,'Rename ',0 + PUSH H ; SAVE PTR TO FCB + LHLD NTFCB ; COPY NEW TEMPLATE INTO RENFCB + LXI D,RENFCB + MVI B,16 + CALL MOVEB + POP H ; GET PTR + PUSH H ; SAVE PTR + INX H ; PT TO FN OF OLD NAME + INX D ; PT TO FN OF RENFCB + MVI B,11 ; 11 BYTES TO FN AND FT +RENLP1: + LDAX D ; GET CHAR OF NEW + CPI '?' ; CHANGE '?' TO OLD CHAR + JNZ RENLP2 + MOV A,M ; GET OLD CHAR + ANI 7FH ; MASK OLD CHAR + STAX D ; STORE IT AWAY AS NEW +RENLP2: + INX H ; PT TO NEXT CHAR + INX D + DCR B ; COUNT DOWN + JNZ RENLP1 + LXI H,RENFCB ; PT TO NEW NAME + CALL PRFN ; PRINT FILE NAME + CALL PRINT + DB ' from ',0 + POP H ; GET PTR TO OLD FILE NAME + PUSH H ; SAVE IT AGAIN + CALL PRFN ; PRINT FILE NAME + POP H ; GET PTR + +; CHECK FOR CONTROL MODE AND PERFORM CONTROL FUNCTION IF SET + LDA CONTROL ; GET FLAG + ORA A ; NZ=YES + JNZ RENCTRL + +; CHECK FOR INSPECTION AND INSPECT IF SET + LDA INSPECT ; GET FLAG + ORA A ; 0=NO + JZ DOIT + +; PROMPT USER FOR RENAME + CALL RENQ ; REN QUESTION + CPI 'Q' ; QUIT? + JZ QUIT + CPI 'Y' ; YES? + JZ DOIT + +; DON'T RENAME FILE +NODO: + CALL PRINT + DB CR,LF,'NO Name Change',0 + JMP RENTEST + +; PRINT FILE NAME PTED TO BY HL +PRFN: + INX H ; PT TO FILE NAME + MVI B,8 ; PRINT NAME + CALL PRNT + MVI A,'.' ; DECIMAL + CALL COUT + MVI B,3 ; PRINT TYPE + CALL PRNT + RET + +; PROMPT USER FOR RENAME +RENQ: + CALL PRINT ; PRINT PROMPT + DB ' -- Rename (Y/N/Q=Quit)? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS ; CAPITALIZE + CALL COUT ; ECHO + RET + +; CONTROL FUNCTION -- ALLOW USER TO RENAME AS HE DESIRES +RENCTRL: + PUSH H ; SAVE PTR TO FILE +RCTRL: + CALL PRINT + DB CR,LF,' -- New Name (=No Change)? ',0 + MVI A,0FFH ; CAPITALIZE + CALL BBLINE ; INPUT LINE FROM USER + ORA A ; CHECK FOR JUST + JNZ RCTRL0 + POP H ; GET PTR TO FILE + JMP RENTEST ; PROCEED WITH NEXT ENTRY +RCTRL0: + LXI D,RENFCB ; PLACE INTO NEW NAME FCB + CALL ZFNAME ; JUST EXTRACT NAME + MVI B,11 ; CHECK FOR ANY WILD CHARS +RCTRL1: + INX D ; PT TO NEXT CHAR + LDAX D ; GET IT + CPI '?' ; CAN'T BE WILD + JZ WERR + CPI '*' ; CAN'T BE WILD + JZ WERR + DCR B ; COUNT DOWN + JNZ RCTRL1 + JMP RDOIT ; DONE -- PERFORM RENAME +WERR: + CALL PRINT + DB CR,LF,'Wild Card (?,*) in Name -- Try Again',0 + JMP RCTRL + +; QUIT RENAME PROGRAM +QUIT: + CALL PRCOUNT ; PRINT COUNT OF FILES RENAMED + CALL PRINT + DB ' QUIT',0 + JMP RETURN + +; REN FILE, BUT GET PTR FIRST +RDOIT: + POP H ; GET PTR + +; RENAME FILE; OLD NAME PTED TO BY HL, NEW NAME IN RENFCB +DOIT: + PUSH H +; STEP 1 -- DETERMINE IF NEW NAME ALREADY EXISTS + LXI D,RENFCB ; PT TO NEW NAME + CALL INITFCB + MVI C,17 ; SEARCH FOR FIRST + CALL BDOS + INR A ; NOT FOUND? + JZ DOIT1 + CALL PRINT + DB CR,LF,' -- File Exists -- Delete It (Y/N)? ',0 + CALL CIN ; GET RESPONSE + CALL CAPS + CALL COUT + POP H ; PREP FOR ABORT + CPI 'Y' ; YES -- CONTINUE? + JNZ RENTEST ; NOT YES, SO SKIP IT +; DELETE OLD FILE, SO SET ATTRIBUTES AND DO IT + PUSH H ; SAVE PTR AGAIN + CALL INITFCB ; CLEAR FCB + MVI C,30 ; SET FILE ATTRIBUTES TO R/W IF NOT ALREADY + CALL BDOS + CALL INITFCB + CALL F$DELETE ; DELETE FILE +DOIT1: + POP H ; HL PTS TO OLD NAME +; CLEAR THE OLD NAME'S ATTRIBUTES IN CASE IT WAS R/O + PUSH H ; SAVE PTR TO OLD NAME + PUSH H + LHLD OFCB ; COPY OLD NAME + XCHG + POP H + MVI B,16 + CALL MOVEB + PUSH D ; CLEAR ATTRIBUTES + MVI B,11 ; 11 BYTES + INX D ; PT TO FIRST +DOIT2: + LDAX D ; GET CHAR + ANI 7FH ; CLEAR ATT + STAX D ; PUT CHAR + INX D ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ DOIT2 + POP D ; NOW SET ATTRIBUTES OF OLD NAME + CALL INITFCB + MVI C,30 ; SET ATTRIBUTES + CALL BDOS + CALL INITFCB +; DO THE RENAME + LXI H,RENFCB ; PT TO NEW NAME + XCHG + CALL INITFCB ; INIT NEW FCB + XCHG ; HL PTS TO NEW NAME, DE PTS TO OLD NAME + CALL F$RENAME ; RENAME THE FILE +; RESTORE THE ORIGINAL ATTRIBUTE BITS + POP H ; GET PTR TO OLD NAME + LXI D,RENFCB+1 ; PT TO NEW NAME + PUSH H ; SAVE PTR TO OLD NAME + INX H ; PT TO FN OF OLD NAME + XCHG ; HL PTS TO NEW NAME, DE PTS TO OLD NAME + MVI B,11 ; 11 BYTES +DOIT3: + LDAX D ; GET ATTRIBUTE BIT OF OLD NAME + ANI 80H ; LOOK ONLY AT ATTRIBUTE BIT + ORA M ; MASK IN NEW NAME BYTE + MOV M,A ; STORE IT AWAY + INX H ; PT TO NEXT + INX D + DCR B ; COUNT DOWN + JNZ DOIT3 +; SET THE ORIGINAL ATTRIBUTES INTO THE NEW FILE + LXI D,RENFCB ; PT TO FCB + CALL INITFCB + MVI C,30 ; SET ATTRIBUTES + CALL BDOS + LHLD FILECNT ; INCREMENT FILE COUNT + INX H + SHLD FILECNT + POP H ; GET PTR TO DIRECTORY ENTRY + +; PT TO NEXT ENTRY +RENTEST: + LXI D,ESIZE ; PT TO NEXT ENTRY + DAD D + POP B ; GET COUNT + DCX B ; COUNT DOWN + MOV A,B ; CHECK FOR ZERO + ORA C + JNZ RENLP + +; RETURN TO CALLER + RET + +; +; PRINT CHARS PTED TO BY HL FOR B BYTES +; +PRNT: + MOV A,M ; GET CHAR + CALL COUT + INX H ; PT TO NEXT + DCR B ; COUNT DOWN + JNZ PRNT + RET + +; +; PRINT COUNT OF NUMBER OF FILES RENAMED +; +PRCOUNT: + CALL CRLF ; NEW LINE + LHLD FILECNT ; GET COUNT + MOV A,L ; CHECK FOR NONE + ORA H + JZ PRNO + CALL PHLDC ; PRINT DECIMAL COUNT + JMP PRMS +PRNO: + CALL PRINT + DB 'No ',0 +PRMS: + LHLD FILECNT ; 1 FILE PROTECTED? + MOV A,H ; HIGH ZERO? + ORA A + JNZ PRMULT + MOV A,L ; LOW ONE? + CPI 1 + JZ PRSING +PRMULT: + CALL PRINT + DB ' Files Renamed',0 + RET +PRSING: + CALL PRINT + DB ' File Renamed',0 + RET + +; +; BUFFERS +; +INSPECT: + DS 1 ; INSPECT FLAG (0=NO, 0FFH=YES) +CONTROL: + DS 1 ; CONTROL FLAG (0=NO, 0FFH=YES) +SYSTEM: + DS 1 ; SYSTEM FLAG (80H=NON-SYS, 0C0H=SYS/NON-SYS) +NEXTCH: + DS 2 ; PTR TO NEXT CHAR IN MULTIFILE COMMAND LINE +FILECNT: + DS 2 ; COUNT OF NUMBER OF FILES RENAMED +RENFCB: + DS 40 ; FCB FOR RENAME +OFCB: + DS 2 ; FCB FOR OLD FILE NAME AND OLD FILE TEMPLATE +NTFCB: + DS 2 ; FCB FOR NEW FILE TEMPLATE +CMDLNE: + DS 2 ; PTR TO COMMAND LINE BUFFER +DIRBUF: + DS 2 ; PTR TO DIRECTORY BUFFER +STACK: + DS 2 ; OLD STACK PTR + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/RENAME31.LBR b/Images/Source/hd0/s0/u15/RENAME31.LBR new file mode 100644 index 0000000000000000000000000000000000000000..88e4345fcf87b26352bf7b67cdd32e6fcdc8c8bb GIT binary patch literal 15616 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 ',0 + call pstr ;print message + call print + db ' <-- ',0 +optdn1: + call stopzex ;suspend ZEX processing + lhld delay ;get delay count in HL +; +; Main Delay Loop +; +sakloop: +; +; Ring Bell if Option Selected +; + lda bell ;get flag + ora a ;set zero flag + cnz bout ;ring bell and delay +; +; Get character if one is available +; + call condin ;optionally get character + jnz gotchar ;process character +; +; Loop if No Delay +; + mov a,h ;check for no delay + ora l + jz sakloop +; +; Delay and test for input +; + call wait1s ;delay 1 sec + dcx h ;count down + mov a,h ;done? + ora l + jnz sakloop +; +; Process Input Character +; If no input and timout instead, A=0 for continuation character +; +gotchar: + cpi ctrlc ;abort? + jz abort +resume: + lda mpflag ;message printed? + ora a ;0=no + cnz qcrlf ;new line if yes + call qprint + db 'Resuming ...',0 + jmp strtzex ;resume ZEX processing +; +; Abort Multiple Command Line if there is one +; +abort: + lda abortf ;abort allowed? + ora a ;0=no + jz resume + call getcl1 ;get address of command line buffer + mov a,h ;any buffer? + ora l + jz abort1 + mov e,m ;get address of next char + inx h + mov d,m + xchg ;HL pts to next char + mvi m,0 ;set no further command +abort1: + lda mpflag ;message printed? + ora a ;0=no + cnz qcrlf ;new line if yes + call qprint + db 'Aborting ...',0 + jmp strtzex ;resume ZEX processing +; +; Ring Bell and Delay Briefly +; +bout: + mvi a,ctrlg ;ring bell + call cout + push h ;save HL + lhld delay ;do not delay if pause already invoked + mov a,h ;zero delay? + ora l + jnz bout1 ;skip delay + call wait1s ;delay +bout1: + pop h + ret + +; +; Other Buffers +; +abortf: + ds 1 ;abort flag +bell: + ds 1 ;bell flag +delay: + ds 2 ;delay constant +mpflag: + ds 1 ;message printed flag + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SETFILE.COM b/Images/Source/hd0/s0/u15/SETFILE.COM new file mode 100644 index 0000000000000000000000000000000000000000..033c8540c3ff350a2f8fb79425b9e2a8559b47b5 GIT binary patch literal 512 zcmZ{ePfHs?7{=#)C4V=OMo-bpv_jFehKQboE_#SjDSBwhK~S(XhXs>>wxxou6u*G@ z1$yp9(1QUzWw#M$V4x9`La2uj6eOpG?se$Q_Rv!g^PA^=c%FC0HDGNzzfuJ9I}-!( z1H@N&lYhIg^g92N7E9YZR<%N>vbkiOJS8M$klA(8&UNO2&w~tgED&v=OO;QXTh@EJ zU~QG?%4S*NWBFZan~qniAL!KN%miWSSB?dJaSrKJne@YkE$R0Y)a`#Qy<8jyrnN(f zJA=M(fS-Za^X;*k^Gylnxoz-UnOjH|NV@5<`#_JAwB791*t1(;rtFDd&||HJKS)%M z=TOG@2qr`kWs*lw#(4r|L?g^^IpjU6| zz2T@>Ml-AY@PJa<9eFrV<8a7XMkeXaAxgp(A{tSRxJFXJ_stCz^{(bLncryLuV#Q` z6RBftJ$9RQkBJj(EQU#}AM4kdsA1!;(w>^?L1*ux^AnwG+`m+}Jv26Kd_GlU&^L5` Qz#e)rs?9reZ~pWCA4j|39RL6T literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SETFILE.MAC b/Images/Source/hd0/s0/u15/SETFILE.MAC new file mode 100644 index 00000000..be2cddc4 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SETFILE.MAC @@ -0,0 +1,108 @@ +; +; Program: SETFILE +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; +version equ 10 + +; +; SETFILE defines the name of a ZCPR3 File Name or displays it. +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +fnum equ 5ch+1 ;file number in 1st FCB +fcb equ 6ch ;2nd FCB +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext z3init,getfn1,print,pfn1,moveb,qprint,cout + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment and Print Banner +; + call z3init ;initialize the ZCPR3 Environment + call qprint + db 'SETFILE, Version ' + db (version/10)+'0','.',(version mod 10)+'0',cr,lf,0 +; +; Check Number of File +; + lxi h,0 ;init count + lxi d,11 ;size of each file name + lda fnum ;get number + sui '0' ;convert to binary + jc error + jz error + cpi 5 ;range? + jc selfile +; +; Print Error Message +; +error: + call print + db ' Invalid File Name Number (not 1-4)',0 + ret +; +; Set Name of File +; +selfile: + dad d ;compute offset from file name 1 + dcr a ;count down + jnz selfile + xchg ;DE contains offset + call getfn1 ;get ptr to shell file name + dad d ;get ptr to file name selected + lxi d,fcb+1 ;pt to name in FCB + xchg ;copy from FCB + mvi b,11 ;11 bytes + mov a,m ;get first char + cpi ' ' ;don't define if no name + cnz moveb ;define name if name given +; +; Print Name of Shell Variable File +; + call print + db ' File Name ',0 + lda fnum ;get number + call cout ;print it + call print + db ' is ',0 + jmp pfn1 + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SF.COM b/Images/Source/hd0/s0/u15/SF.COM new file mode 100644 index 0000000000000000000000000000000000000000..0404612eec773df8028ad579a858adff9cade025 GIT binary patch literal 9216 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 Jp8pHVe*+TllnMX< literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SF.Z80 b/Images/Source/hd0/s0/u15/SF.Z80 new file mode 100644 index 00000000..c9a984fe --- /dev/null +++ b/Images/Source/hd0/s0/u15/SF.Z80 @@ -0,0 +1,46 @@ +; +; SFILER Demo - Simple VFILER by Richard Conn +; This program demonstrates the SFILEH from the new high-order +; components library SFILER. Any program can have a built-in +; VFILER-like capability as easily as it is done in this program. +; +; Assembly instructions: +; 1) assemble SF.Z80 to produce SF.REL; command: +; ZAS SF +; 2) link in the proper libraries to create SF.COM; command: +; ZLINK SF,SFILER/,VLIB/,Z3LIB/,SYSLIB/ +; Installation instructions: +; SF can be installed in the standard way; command: +; Z3INS SYS.ENV SF.COM +; +z3env equ 0f400h ; address of env desc + + ext z3vinit ; must use Z3VINIT for TCAP + ext codend ; free space + ext sfileh ; entry point +; +; Standard ZCPR 3.0 header +; + jp start + db 'Z3ENV' + db 1 +z3eadr: dw z3env +; +; Start of program +; +start: + ld hl,(z3eadr) ; get address + call z3vinit + call codend ; determine start of free space +; +; At this point, the initialization required to run SFILEH is done: +; 1) HL contains the address of the start of the free space area +; after the end of this program +; 2) the FCB at 5CH is properly initialized with file name (space +; filled if wild) and a ZCPR 3.0 - standard DU reference +; (at FCB+0 for the disk and FCB+13 for the user area) +; + call sfileh ; run SFILER module + ret + + end diff --git a/Images/Source/hd0/s0/u15/SH.COM b/Images/Source/hd0/s0/u15/SH.COM new file mode 100644 index 0000000000000000000000000000000000000000..a4c67fe545aeb00402a26d0f44d46d9ce9d4773a GIT binary patch literal 3584 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SH.HLP b/Images/Source/hd0/s0/u15/SH.HLP new file mode 100644 index 00000000..f2aea0aa --- /dev/null +++ b/Images/Source/hd0/s0/u15/SH.HLP @@ -0,0 +1,420 @@ +; + + SH - A Named Variable Shell for ZCPR3 + + + -- The Shell SH -- -- Handling Shell Variables -- + S - The SH Command D - SHDEFINE + C - SH Concept V - SHVAR + P - Potential Probs + -- SH Variable File -- + F - SHFILE + + +:S + +Command: SH 1.0 + +Syntax: + + SH + +Function: + + SÈ ió á Nameä Variablå Shelì foò ZCPR3® Iô promptó thå +useò  foò á commanä line¬  performó aî interpretatioî oî thå +commanä line¬ anä eitheò executeó thå commanä linå itselæ oò +passes the line on to the ZCPR3 Command Processor. + +Options: + + None + + +Comments: + Variables + SÈ  permitó  thå  useò tï  uså  Nameä  Variables¬  likå +MYFILE¬  whicè arå expandeä iî á manneò similaò tï macroó iî +hió commanä lines®  Twï programs¬ SHDEFINÅ anä SHVAR¬ allo÷ +thå  useò  tï dynamicallù creatå Nameä  Variables¬  anä  thå +SHFILÅ  commanä  allowó  Nameä Variablå  definitionó  tï  bå +grouped into sets of variables. + + Á  conventionaì CP/Í commanä linå coulä looë  somethinç +likå this: + + ED MYFILE.TXT + + Using SH, a ZCPR3 command line like Variables + + ED %WORKFILE + +caî bå generated¬  and¬  aó SÈ substituteó thå definitioî oæ +thå  variablå WORKFILÅ wheî iô interpretó thå commanä  line¬ +"EÄ  %WORKFILE¢  coulä bå expandeä intï "EÄ  MYFILE.TXT¢  iæ +WORKFILE=MYFILE.TXT®  Bù changinç thå valuå oæ thå variablå +WORKFILE¬  thå  meaninç  oæ thå commanä  "EÄ  %WORKFILE¢  ió +correspondinglù changed. + + Oncå  SÈ  ió invokeä (bù typinç thå  commanä  SH)¬  anù +commanä typeä bù thå useò ió passeä thrõ SÈ first¬  expandeä +aó required¬  anä then¬ iæ thå commanä ió noô aî SH-residenô +command¬  thå  expandeä commanä linå ió passeä tï ZCPR³  foò +processing. + + SÈ  variableó maù bå nesteä tï anù  depth®  Recursion¬ +however¬  shoulä bå avoided¬ anä iô ió thå responsibilitù oæ +thå useò tï ensurå thaô recursioî doeó noô occur. + Variables + '%%§  ió  interpreteä  bù  SÈ  aó  á  singlå  '%'®  SÈ +variableó are assigneä aó follows: + + VAR1 = "ED %%VAR2" VAR2 = "MYFILE.TXT" + +VAR1 is expanded as + + "ED %VAR2" + +which is, in turn, expanded as + + "ED MYFILE.TXT" + +which is finally executed by being passed to ZCPR3. + + SH Commands + There are three SH-resident commands: + + SHCMT - switch SH to run in comment mode; in + comment mode, all lines which + do not begin with the character + ! are treated as comments and + flushed + SHECHO - with Echo enabled, all expanded command + lines are printed to the user to + show him what the line looked like + after expansion + SHEXIT - SH is popped from the Shell Stack, + enabling the next lower Shell for + execution + + The normal prompt for SH is: Comment Mode + + DU:NAME>> + +as opposed to: + + DU:NAME> + +foò  ZCPR3®  Iæ thå SHCMÔ (SÈ Comment© facilitù ió enabled¬ +this prompt becomes: + + DU:NAME; + + Anù  texô  issueä bù thå useò oò á commanä  filå  (likå +ZEX©  wilì  bå  processeä  aó á  commenô  unlesó  thå  firsô +characteò oæ thå linå ió aî exclamatioî marë (!)¬  whicè  ió +an indicator to process the command text that follows. + + Thå commanä SHCMÔ switcheó tï commenô mode¬  anä !SHCMÔ +switches back. + Built-in Cmds + Thå  SHECHÏ  commanä  ió alsï á  toggle¬  enablinç  anä +disablinç thå echï oæ commanä lineó afteò alì variableó havå +been resolved. + + Thå SHEXIÔ commanä causeó thå Shelì Stacë tï bå  poppeä +onå  level¬  whicè  iî  turî  causeó  thå  SÈ  Shelì  tï  bå +terminated since it was on the top of the stack. + + Botè  SHECHÏ anä SHEXIÔ caî bå executeä froí SÈ Commenô +mode by prefixing these commands with an exclamation mark. + + Thå ¿  commanä (á linå beginninç witè á quesitoî  mark© +invokeó  thå  built-iî  helð facilitù oæ  SH¬  whicè  simplù +reminds the user of what the built-in commands are for SH. + + Other Shells + SÈ   ió  jusô  beginninç  oæ  thå  ZCPR³  Shelì   Stacë +applications® MENÕ anä VFILEÒ arå botè shelló now¬ anä theù +executå likå SH® Alì threå shelló caî pasó commanä lineó tï +ZCPR3¬  havå  ZCPR³  executå  theså commandó iî  itó  normaì +fashion¬  completå  witè thå command-searcè  hierarchy¬  anä +theî  returî tï thå appropriatå shelló wheî done®  Á  Shelì +imposeó  á  ne÷ initiaì commanä linå interpretatioî  oî  thå +inpuô commanä line. + + +Selected Error Messages: + + "Nï Shelì Stack¢ meanó thaô á Shelì Stacë haó noô  beeî +installed in the ZCPR3 System and SH cannot run. + + "Shelì  Stacë Full¢ meanó thaô therå ió noô enougè rooí +on the Shell Stack for SH to push itself and SH cannot run. + + "Shelì  Stacë  Entrù Size¢ meanó thaô thå  shelì  stacë +entrieó  arå  toï shorô foò SÈ tï definå thå  parameteró  iô +needs to control its operation. SH cannot run. + +Examples of Use: + + SH + -- SH is invoked + +:D + +Command: SHDEFINE 1.0 + +Syntax: + + SHDEFINE ufn <-- define variables within file +or + SHDEFINE <-- define variables within SH.VAR + +Function: + + SHDEFINÅ  allowó thå useò tï interactivelù displaù  anä +ediô  thå assignmenô oæ variableó iî á Shelì Variablå  file® +Hå maù add¬  delete¬ anä redefinå Shelì Variableó aó welì aó +lisô alì currenô definitionó oî thå CRÔ oò prinô theí oî thå +printer. + +Options: + + None + +Comments: + + Uså oæ SHDEFINÅ ió explaineä withiî thå prograí itself® +Iô  ió menu-driveî anä thå erroò anä instructionaì  messageó +arå intended to be clear. + + Thå  mosô compleø commanä ió thå Å (foò Edit©  command® +Afteò  issuinç  thió command¬  thå useò ió  prompteä  foò  á +variablå  name®  Iæ hå giveó thå namå oæ á variablå noô yeô +defined¬  thå  useò ió prompteä foò á  definition¬  anä  thå +variablå ió sï defineä unlesó thå useò respondeä witè jusô á +RETURΠ aô  thió  point®  Iæ thå namå oæ thå  variablå  haó +alreadù  beeî  defined¬  thå useò ió askeä iæ hå  wisheó  tï +deletå (D© oò redefinå (R© thå variable® Appropriatå actioî +is taken in response to the user input. + + The user must be a Wheel to run the SHDEFINE command. + + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + SHDEFINE myvars + -- define variables in MYVARS.VAR + +:F + +Command: SHFILE 1.0 + +Syntax: + + SHFILE <-- display name of Shell Variable File +or + SHFILE ufn <-- set name of Shell Variable File + +Function: + + SHFILÅ displayó oò setó thå namå oæ thå Shelì  Variablå +Filå  tï bå useä bù SH®  SHFILÅ maù bå executeä whilå SÈ ió +not running if desired. + +Options: + + None + + +Comments: + + SHDEFINÅ  anä SHVAÒ definå variableó tï bå placeä  intï +Shelì Variablå Files®  SHFILÅ defineó whicè Shelì  Variablå +File will be used by SH when it executes. + + Wheî SÈ anä SHVAÒ execute¬ thå nameä variablå filå theù +deaì witè resideó iî thå ROOÔ directory. + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + SHFILE + -- display name of Shell Variable File + + SHFILE myvars.var + -- define name of Shell Variable File + +:V + +Command: SHVAR 1.0 + +Syntax: + + SHVAR <-- list variables +or + SHVAR var <-- delete variable +or + SHVAR var text <-- define/redefine variable + +Function: + + SHVAÒ  ió á utilitù whicè caî lisô alì Shelì  Variableó +iî  thå  currently-defineä Shelì Variablå Filå oò ediô  thió +filå tï deletå oò changå onå particulaò variablå aô á  time® +SHVAÒ  ió  sometimeó morå convenienô tï uså  thaî  SHDEFINE¬ +whicè  ió  intendeä foò editinç groupó oæ variableó  iî  onå +sitting. + + +Options: + + None + +Comments: + + SHVAÒ maù bå useä whilå runninç SÈ oò not®  Iæ á Shelì +Variablå Filå ió alreadù defineä tï thå ZCPR³ System¬  SHVAÒ +uses this file. If one is not defined, SHVAR uses SH.VAR. + + SH.VAR is always located in the ROOT directory. + + The user must be a Wheel to run SHVAR. + +Selected Error Messages: + + Self-Explanatory + + +Examples of Use: + + SHVAR + -- list shell variables + + SHVAR VAR2 + -- delete the variable VAR2 + + SHVAR VARX THIS IS A TEST + -- define VARX to "THIS IS A TEST" + +:C + + SH Concept + + Oncå  SÈ  ió invokeä (bù typinç thå  commanä  SH)¬  anù +commanä typeä bù thå useò ió passeä thrõ SÈ first¬  expandeä +aó required¬  anä then¬ iæ thå commanä ió noô aî SH-residenô +command¬  thå  expandeä commanä linå ió passeä tï ZCPR³  foò +processing. + + SÈ  variableó maù bå nesteä tï anù  depth®  Recursion¬ +however¬  shoulä bå avoided¬ anä iô ió thå responsibilitù oæ +thå  useò  tï  ensurå thaô recursioî  doeó  noô  occur®  Iæ +recursioî doeó occur¬  thå commanä linå buffeò wilì overflo÷ +and SH will abort the command line. + + + SÈ  Variableó  arå  referenceä  iî  commanä  lineó   aó +"%varname"¬  anä  '%%§ ió interpreteä bù SÈ aó á singlå '%'® +Tï  illustrate¬  assumå  thaô SÈ variableó arå  assigneä  aó +follows: + + VAR1 = "ED %%VAR2" VAR2 = "MYFILE.TXT" + +The command line "%VAR1" is expanded as + + "ED %VAR2" + +which is, in turn, is expanded as + + "ED MYFILE.TXT" + +which is finally executed by being passed to ZCPR3. + + + Shelì  Variablå Fileó arå locateä iî thå ROOÔ directorù +for the commands SH and SHVAR. + + Thå  useò  musô  bå  á Wheeì iî  ordeò  tï  ediô  Shelì +Variablå Files®  Thå commandó SHDEFINÅ anä SHVAÒ wilì  onlù +run if the user is a Wheel. + + + There are three SH-resident commands: + + SHCMT - switch SH to run in comment mode; in + comment mode, all lines which + do not begin with the character + ! are treated as comments and + flushed + SHECHO - with Echo enabled, all expanded command + lines are printed to the user to + show him what the line looked like + after expansion + SHEXIT - SH is popped from the Shell Stack, + enabling the next lower Shell for + execution + + The normal prompt for SH is: + + DU:NAME>> + +as opposed to: + + DU:NAME> + +foò  ZCPR3®  Iæ thå SHCMÔ (SÈ Comment© facilitù ió enabled¬ +this prompt becomes: + + DU:NAME; + + Anù  texô  issueä bù thå useò oò á commanä  filå  (likå +ZEX©  wilì  bå  processeä  aó á  commenô  unlesó  thå  firsô +characteò oæ thå linå ió aî exclamatioî marë (!)¬  whicè  ió +an indicator to process the command text that follows. + + Thå commanä SHCMÔ switcheó tï commenô mode¬  anä !SHCMÔ +switches back. + + Thå  SHECHÏ  commanä  ió alsï á  toggle¬  enablinç  anä +disablinç thå echï oæ commanä lineó afteò alì variableó havå +been resolved. + + Thå SHEXIÔ commanä causeó thå Shelì Stacë tï bå  poppeä +onå  level¬  whicè  iî  turî  causeó  thå  SÈ  Shelì  tï  bå +terminated since it was on the top of the stack. + + Botè  SHECHÏ anä SHEXIÔ caî bå executeä froí SÈ Commenô +mode by prefixing these commands with an exclamation mark. + + Thå ¿  commanä (á linå beginninç witè á quesitoî  mark© +invokeó  thå  built-iî  helð facilitù oæ  SH¬  whicè  simplù +reminds the user of what the built-in commands are for SH. + +:P + + Potential Problems + + Onlù onå noteä probleí existó witè SH®  Certaiî ZCPR3- +residenô  anä  SYSRCP-residenô commandó shoulä  bå  avoided® +Theså commandó include: + + GO - because the TPA has been changed since + the desired command executed + + SAVE - same reason + + SÈ   tendó  tï  bå  á  littlå  slo÷  iî  itó   loading® +Unfortunately¬  SÈ  haó  beeî madå aó smalì aó possiblå  anä +wilì  probablù  continuå  tï  takå  morå  timå  thaî  simplù +invoking the ZCPR3 command processor directly. + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SH.MAC b/Images/Source/hd0/s0/u15/SH.MAC new file mode 100644 index 00000000..c85a4a65 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SH.MAC @@ -0,0 +1,807 @@ +; +; Program: SH +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; + +; +; This program illustrates the design of a simple shell under ZCPR3 +; using Z3LIB. This program is transportable from one ZCPR3 system to another +; provided it is reassembled with the correct address for the ZCPR3 +; Environment Descriptor (Z3ENV) or DDT is used to patch this address +; (which is the first two bytes after the opening JMP). If an external +; ZCPR3 Environment Descriptor is not available, one will have to be +; provided by setting the Z3ENV equate to 0 and providing SYSENV.LIB in +; the current directory at assembly time. +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +lecnt equ 20 ;number of pointers on String Ptr Stack +ctrlz equ 'Z'-'@' ;^Z for EOF +cmdch equ '!' ;in comment mode, invoke following text as command +cmtch equ ';' ;comment character +subch equ '%' ;substitution flag +fcb equ 5ch +tbuff equ 80h +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext getshm,putshm + ext getud,putud,logud,initfcb,f$open,f$read,f$close + ext parser,codend,caps,fillb,hmovb,root,getfn1,pfn1 + ext retud,print,pafdc,bbline,moveb,crlf,cout,sksp,dutdir + ext z3init,getsh2,shpush,shpop,qshell,getefcb,putcl,putcst,putzex + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment +; +; Set Pointers +; + call codend ;find scratch area + shld intline ;set ptr to internal line buffer + lxi d,200H ;reserve 200H bytes + dad d + shld varlist ;set ptr to variable list + xra a + sta loadfl ;say variables not loaded +; +; Check for Shell Stack +; + call getsh2 ;get shell status + jnz start0 ;skip over shell init + call print + db 'No Shell Stack',0 + ret +; +; See if this program was invoked as a shell +; +start0: + call qshell ;find out from ZCPR3 environment + jz shell ;do not push onto stack if invoked as a shell +start1: +; +; Clear Shell Message for Comment Flag +; + mvi b,0 ;message 0 + xra a ;A=0 to clear + call putshm ;set message +; +; Set Name of Shell Variable File if One is Given +; + call getfn1 ;pt to buffer in env + lxi d,fcb+1 ;pt to name + xchg ;copy from name + mvi b,11 ;11 bytes + mov a,m ;check for name + cpi ' ' ;no name if space + jz defname + call moveb ;copy if name present + call setshdef ;set default file type + jmp setshn +; +; Set Name of SH.VAR File +; +defname: + call getfn1 ;get name + lxi d,shvfcb+1 ;pt to FCB + xchg + mvi b,11 ;11 chars + call moveb +; +; Set Name of Shell from External FCB if Possible or From Default if Not +; +setshn: + call root ;get root address + lxi h,shdisk ;pt to shell disk + mov a,b ;get disk + adi 'A' ;convert to letter + mov m,a ;set disk letter + inx h ;pt to user 10's + mov a,c ;get user number + mvi b,10 ;subtract 10's + mvi d,'0' ;set char +setshn1: + sub b ;subtract + jc setshn2 + inr d ;increment digit + jmp setshn1 +setshn2: + add b ;get 1's + mov m,d ;set 10's digit for user + inx h ;pt to 1's digit + adi '0' ;compute 1's digit + mov m,a ;set 1's digit + call getefcb ;get ptr to external fcb + jz start2 ;no external FCB, so use default name + inx h ;pt to program name + lxi d,shname ;pt to string + mvi b,8 ;8 chars + call moveb ;copy into buffer +; +; Push Name of Shell onto Stack +; +start2: + lxi h,shdisk ;pt to name of shell + call shpush ;push shell onto stack + jnz start3 +; +; Shell Successfully Installed +; + call print + db 'Shell Installed',0 + ret +; +; Shell Stack Push Error +; +start3: + cpi 2 ;shell stack full? + jnz start4 +; +; Shell Stack is Full +; + call print + db 'Shell Stack Full',0 + ret +; +; Shell Stack Entry Size is too small for command line +; +start4: + call print + db 'Shell Stack Entry Size',0 + ret +; +; Restart on Empty Line +; +shellr: + call crlf ;new line +; +; Print Shell Prompt +; +shell: + call retud ;get current user and disk + mov a,b ;save disk + adi 'A' + call cout ;print disk letter + mov a,c ;get user + call pafdc ;print A as floating decimal + call dutdir ;convert into DIR reference if possible + jz shell1 ;no match + mvi a,':' ;print colon + call cout + mvi b,8 ;8 chars max +shell0: + mov a,m ;get char + inx h ;pt to next + cpi ' ' ;space? + cnz cout + jnz shell0 +shell1: + mvi b,0 ;get shell message 0 + call getshm + ani 1 ;test for prompt + jz shell2 ;print normal prompt + call print ;comment format + db '; ',0 ;comment + jmp shell3 +shell2: + call print ;normal format + db '>> ',0 ;double prompt +; +; Accept User Input +; +shell3: + mvi a,1 ;tell ZEX that prompt is up + call putzex + xra a ;don't capitalize + call bbline + mvi a,0 ;say that normal processing is running now + call putcst + call putzex + call sksp ;skip over leading spaces + mvi b,0 ;get shell message 0 + call getshm + ani 1 ;test for comment + jz shell4 ;process normally +; +; Process Shell Input as Comment +; + mov a,m ;get char + cpi cmdch ;command override? + jnz shellr ;continue with next line if not + inx h ;pt to command and fall thru to process +; +; Process Shell Command +; +shell4: + mov a,m ;get first char + ora a ;no line? + jz shellr + cpi cmtch ;comment line? + jz shellr +; +; Check for and Process Shell-Resident Command +; + push h ;save HL + call shcommand ;check for shell command + pop h ;restore HL +; +; Expand Shell Command Line +; + call expand ;expand line pted to by HL + jz clovfl ;abort if overflow +; +; Load Multiple Command Line +; + call putcl ;place command line pted to by HL into CL Buffer + rnz ;resume ZCPR3 processing +; +; Input Line is Longer than Command Line Buffer +; +clovfl: + call print ;command line buffer has overflowed + db cr,lf,'CL Ovfl ',0 + jmp shellr +; +; Expand Shell Command Line (pted to by HL), performing variable +; Substitutions +; +; On exit, Z=command line overflow and Line Pted to by HL +; +expand: + push b ;save counter + mvi b,0 ;get shell register 0 + call getshm + ani 2 ;test for echo + cnz crlf ;new line if SHECHO is ON + pop b ;get counter + xchg ;DE pts to line +; +; Init String Pointer Stack +; + mvi a,lecnt ;set local element count + sta locelt + lxi h,locstk ;set local stack + shld locadr + lxi h,0 ;set done code on stack + call locpush ;push HL +; +; Set Ptrs +; + lhld intline ;pt to internal line + xchg ;DE pts to internal line, HL pt next char + mvi b,0 ;256 chars max +; +; Analyze Next Char +; +exp1: + mov a,m ;get next char + cpi subch ;substitution char? + jnz exp2 ;handle normally +; +; Process Shell Variable +; + call expvar ;resolve variable + dcr c ;error? + jz exp1 ;resume if none +; +; Store Next Char +; +exp2: + stax d ;store char +; +; Print Char if SHECHO is ON +; + push b ;save counter + mov c,a ;save char + mvi b,0 ;get shell message 0 + call getshm ;determines if display is on + ani 2 ;test for echo + jz exp3 + mov a,c ;get char + ani 7FH ;mask and don't output null + cnz cout ;echo char +; +; Advance to Next Char +; +exp3: + mov a,c ;get char + pop b ;get counter + inx h ;pt to next + inx d + dcr b ;count down + jz experr ;error if at 0 + ora a ;done? + jnz exp1 + inr b ;increment count (not counting last 0) + dcx d ;pt to 0 in case of abort +; +; Pop String Ptr Stack and Check for Analysis Complete +; + call locpop ;get ptr to previous string + mov a,h ;done? + ora l + jnz exp1 ;resume + dcr a ;set NZ +; +; Expansion Complete +; On entry, Z Flag is Set Accordingly (Z=Error) +; +experr: + lhld intline ;pt to internal line + ret + +; +; Expand Variable +; Return with HL pting to next char, A=char, C=1 if OK, C=2 if error +; +expvar: + shld varptr ;save ptr to variable + inx h ;get next char + mvi c,2 ;prep for error return + mov a,m ;get it + ora a ;EOL? + rz + cpi subch ;double sub char? + rz ;place one sub char in line if so +; +; Place Variable Into SHVAR +; + push b ;save counter + push d ;save ptr to next char + push h ;save ptr to shell variable + lxi h,shvar ;pt to shell variable buffer + mvi b,8 ;8 chars max + mvi a,' ' ;space fill + call fillb + xchg ;DE pts to shell variable buffer + pop h ;pt to shell variable + mvi b,8 ;8 chars max +; +; Place Shell Variable into Buffer +; +expv1: + mov a,m ;get char + call delck ;check for delimiter + jz expv3 ;done if delimiter + stax d ;save char + inx h ;pt to next + inx d + dcr b ;count down + jnz expv1 +; +; Flush Overflow of Shell Variable +; +expv2: + mov a,m ;get char + inx h ;pt to next + call delck ;check for delimiter + jnz expv2 + dcx h ;pt to delimiter +; +; Shell Variable in buffer SHVAR +; HL pts to delimiter after variable in user line +; +expv3: + call locpush ;stack ptr to next char in current string + jz expv4 ;error in stack + call varload ;load shell variable list + jz expv4 ;failure + call namer ;resolve named variable reference + mvi c,1 ;OK + jz expv5 ;name found - resolve +; +; Shell Variable Not Resolved - Restore Ptr to It +; +expv4: + call locpop ;restore ptr + mvi c,2 ;error + lhld varptr ;pt to variable +; +; Entry Point for OK Return +; +expv5: + mov a,m ;get char + pop d ;pt to target + pop b ;get counter + ret + +; +; Push HL onto String Ptr Stack +; Return with Z if Stack Overflow +; +locpush: + lda locelt ;get count + dcr a ;full? + rz + sta locelt ;set count + push d ;save DE + xchg ;DE pts to old string + lhld locadr ;get ptr to top of stack + mov m,e ;store low + inx h + mov m,d ;store high + inx h ;pt to next + shld locadr + xchg ;restore HL + pop d ;restore DE + xra a ;return NZ + dcr a + ret +; +; Pop HL from String Ptr Stack +; +locpop: + push d + lda locelt ;increment element count + inr a + sta locelt + lhld locadr ;get address + dcx h ;pt to high + mov d,m ;get high + dcx h ;pt to low + mov e,m ;get low + shld locadr ;set address + xchg ;restore ptr + pop d + ret + + +; +; Load Shell Variable List +; +varload: + push h ;save regs + push d + push b + lda loadfl ;already loaded? + ora a ;NZ=yes + jnz varl3 + lhld varlist ;clear varlist in case of error + mvi m,ctrlz +; +; Look for Variable File +; + call getfn1 ;pt to file name of SH.VAR + lxi d,shvfcb+1 + mvi b,11 ;11 bytes + call moveb + call putud ;save current location + call root ;determine DU of root + call logud ;goto root + lhld varlist ;pt to named variable list + lxi d,shvfcb ;try to open file + call initfcb ;init FCB + call f$open + jz varl1 +; +; Variable File Not Found +; + call getud ;return home + xra a ;set not found code + pop b ;restore regs + pop d + pop h + ret +; +; Read in Variable File +; +varl1: + lxi d,shvfcb ;read in file + call f$read + jnz varl2 + lxi d,tbuff ;pt to data + xchg ;copy into memory + mvi b,128 ;128 bytes + call hmovb + xchg + jmp varl1 +varl2: + lxi d,shvfcb ;close file + call f$close + call getud ;return home +; +; Say List is Already Loaded +; +varl3: + xra a ;return NZ for OK + dcr a + sta loadfl ;set loaded flag + pop b ;restore regs + pop d + pop h + ret + +; +; Resolve Named Variable Reference +; On input, SHVAR contains the shell variable name and +; CODEND pts to the list of shell variables, terminated by ^Z; +; if found, return with HL pting to name and Z +; +namer: + lhld varlist ;pt to variable list +namer1: + mov a,m ;get char + cpi ctrlz ;end of list? + jz namex + lxi d,shvar ;pt to shell variable name + mvi b,8 ;8 chars +namer2: + ldax d ;get name + cmp m ;match? + jnz nomatch + inx h ;pt to next + inx d + dcr b ;count down + jnz namer2 + ret ;found! +nomatch: + mov a,m ;flush to end of string + inx h ;pt to next + ora a + jnz nomatch + jmp namer1 ;resume search +; +; Search Failed +; +namex: + ora a ;return NZ (^Z in A) + ret +; +; Check to see if char in A is a delimiter +; Return with Z if so +; +delck: + push h ;pt to table + push b ;save BC + call caps ;capitalize char + mov b,a ;char in B + lxi h,dtable ;pt to delimiter table +delck1: + mov a,m ;get delimiter + ora a ;done? + jz notdel + cmp b ;compare + jz yesdel + inx h ;pt to next + jmp delck1 +notdel: + mov a,b ;get char + ora a ;set Z if null, else NZ +yesdel: + mov a,b ;restore char + pop b ;restore regs + pop h + ret + +; +; Delimiter Table +; +dtable: + db '<>;:,.=-_ ',0 + +; +; Check for Shell Command and Process if Found +; HL pts to command line +; +shcommand: + xra a ;DIR before DU + call parser ;parse command line pted to by HL + inx d ;pt to name + lxi h,ctable ;pt to command table +shcmd: + mov a,m ;get first char of next entry + ora a ;done? + rz + mvi b,8 ;commands are 8 chars long + push h ;save ptr to FCB + push d ;save ptr to table entry +shcmd1: + ldax d ;compare + cmp m + jnz shcmd2 + inx h ;pt to next + inx d + dcr b ;count down + jnz shcmd1 +; +; Command Found - Get Address +; + mov a,m + inx h + mov h,m + mov l,a ;HL is address +; +; Clear Stack and Run +; + pop psw ;clear stack + pop psw + pop psw ;clear return address + pop psw ;clear pushed HL + pchl ;"run" command +; +; Command Not Found Yet +; +shcmd2: + pop d ;restore ptrs + pop h + lxi b,10 ;advance to next command + dad b + jmp shcmd ;resume search + +; +; If File Type not Specified, Set Default +; +setshdef: + call getfn1 ;check for file type + lxi d,8 ;pt to file byte + dad d + xchg + lxi h,shvtype ;default file type + mvi b,3 ;3 chars + ldax d ;get char + cpi ' ' ;set if space + cz moveb ;copy + ret +; +; Pop Current Shell +; +shexit: + call print + db cr,lf,'Exiting Shell',0 + jmp shpop ;clear shell stack entry + +; +; Toggle Shell Comment Mode +; +shcomment: + mvi b,0 ;access shell register 0 + call getshm + mov c,a ;save in C + ani 0FEH ;all bits but comment bit + mov d,a + mov a,c ;get comment bit + cma ;flip comment bit (other bits are 1) + ani 1 ;select just comment bit + ora d ;OR in other bits + call putshm ;set new value + jmp shellr ;resume +; +; Toggle Shell Echo Mode +; +shecho: + call print + db cr,lf,' Echo of Shell Commands is O',0 + mvi b,0 ;access shell register 0 + call getshm + mov c,a ;save in C + ani 0FDH ;all bits but echo bit + mov d,a + mov a,c ;get comment bit + cma ;flip comment bit (other bits are 1) + ani 2 ;select just echo bit + ora d ;OR in other bits + call putshm ;set new value + ani 2 ;test echo bit + jz shecho1 + call print + db 'N',0 + jmp shellr +shecho1: + call print + db 'FF',0 + jmp shellr ;resume + +; +; Print Names of SH Commands +; +shhelp: + call print + db cr,lf,'SH Commands --',cr,lf,0 + lxi h,ctable ;pt to table + mvi c,0 ;set count +shh1: + mov a,m ;done? + ora a + jz shellr + call print + db ' ',0 + mvi b,8 ;8 chars +shh2: + mov a,m ;get char + call cout + inx h ;pt to next + dcr b ;count down + jnz shh2 + inr c ;increment count + mov a,c + ani 3 ;new line? + cz crlf + inx h ;skip address + inx h + jmp shh1 ;next + +; +; Command Table +; +ctable: + db '? ' ;help + dw shhelp + db 'SHCMT ' ;comment mode + dw shcomment + db 'SHECHO ' ;echo input + dw shecho + db 'SHEXIT ' ;exit shell + dw shexit + db 0 ;end of table + +; +; Buffers +; +shvfcb: + db 0 + db 'SH ' ;name of shell variable file +shvtype: + db 'VAR' + ds 24 ;36 bytes total +shdisk: + db 'A' ;disk letter + db '00' ;user number + db ':' ;separator +shname: + db 'SH ',0 ;name of shell to go onto stack +shvar: + db ' ' ;shell variable +locelt: + ds 1 ;string stack element count +locadr: + ds 2 ;ptr to next entry on stack +locstk: + ds lecnt*2 ;string ptr stack +varptr: + ds 2 ;ptr to current variable in line +varlist: + ds 2 ;ptr to named variable list +intline: + ds 2 ;ptr internal expansion line +loadfl: + ds 1 ;variables loaded flag + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SH11.LBR b/Images/Source/hd0/s0/u15/SH11.LBR new file mode 100644 index 0000000000000000000000000000000000000000..90792ebb22e0541bcea9c97575b7f0c804edfc03 GIT binary patch literal 22272 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 x?m^BU=1zl|6X)a?=)ZfLEwOk$E1QjjdJL2} literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SHCTRL.COM b/Images/Source/hd0/s0/u15/SHCTRL.COM new file mode 100644 index 0000000000000000000000000000000000000000..2555092b5c27ef0d019f3f726939839bd525ebbe GIT binary patch literal 896 zcmchT&ubG=5Xax{Bu%nri&Y53LwOib38Yknf`O(&5~ET~Xe5YWCD;{%X%do1yB31t zA7HN@y!a0Yg6zSABq7E3=n7ki2X7%nk$72fk6oNiTU~#gJ-qK5W|1pTd;zmmMMvP=s~y-})G==r&M62DFCB>yJZDSlS8b6gVjC6J{S`Y0RH;!b z7uA2`ITxPG<`BiN# z7=*oOVU~Uz_y^G(TCIrI>0!Xk?h=gpJ^c)D5wb0f2jFIijKkvvqS^xA7vRtHI+ts@B ',0 + push h ;save ptr + call pstr ;print element + pop h ;get ptr + dad d ;count down + dcr b ;count down + jnz shdisp1 + ret + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SHDEFINE.COM b/Images/Source/hd0/s0/u15/SHDEFINE.COM new file mode 100644 index 0000000000000000000000000000000000000000..286c69c8c35d3f84abefaf9a5f16b964a168c8b6 GIT binary patch literal 2944 zcmb_dZ){sv6@QNN{@ZSyY~A8za2=;=;xtZbiy%3vo2qe>Y9-E}HBEtqy7)CQxc26_ zBw>ydKu8mxK=5hPR!u9@zEs(mz;tL;;}?g#r`-ty5u+f4)!AzCgm{1nqVU4G&q)^o zABp1g&OP_M^ZT81&$&+)O`r7zhbK(bU){V3H?jBmqzPXWos*3H1%@#@boAaeQJym4cNk(`X6&D57!FkI zU~(xFK4R%{;IwH2r)kANunN4}jmBrBSPV^slhN>{n1q6nXeyCJZnssi3S{BugC4_* z+D=9yT?0}~N=aQ~Qbf8OjZ5wO-k*h_XFcd_bT+kr2PNX@R3bi`h)Liy;z1+HX#9VA z85>g4U@%V@OacQ?P&ghz=bnv(QxX~<@=Tl@BQXb}vtNdQqaHMR6@2ERshPypRLu`c zw&O{Hol0D}0wMf}!gmDc7>#>rC+0nLRWwNwH z%itNoMdyahMjT}P1t=h>e#s15@)X(VqvWGzc>Akw13r1ZvlAL@KN=b^4mAS1R)HcV zAe|VDr=;XQR|6ikjRl`RH#STXCADt{K7nm~k;A_cvufH@a*i+o1U-08tQ3K0R{fV5 zN=WB4^G;5;>g^-Yq%FgY<5sS@p6uD`<-_%)yv_A8RbLy0eLYH2hibMNr*}GW6}kfW z^0n4PXQ1E%?XceMQNuDuERgZ3nQ(ksLT%yrLTZMzhZLKYU@!D+Dw>GbT0TQg za@Wo7VPF?PkN|Mmv$$>s$`wctl6yg{lzJ!^43{ysMhT-N7=q*6Wx1zP#w@oJ#+{vk zoq`phHi)kER|6ezG{^>aj{}~iyn&O!TjZF#=+&Y!n90s>WPYqZMY~)sxsP^Dxh5*w z{or-;S(AC>pLLV3){QE46n>2v9~uarJ~JFViYBDwEFpEw(@oV{mOq~ao@7G);|iE1 z$4Q2YvVV@jX%>)zz))`j0>~}Oh|sf6bnkr zldN(qRLyUe7)tiAhGMcGJc37A`#m#}5sFBG$i?+;81iCaRa0!#;&&727pL!BWG(VI zyZDVn`diZr*<6Z!Q%$h}B+m#8wXog|Pl#QutjyUhR1@4dkiA47K-||8sLDNvO?e< z0pkwxqaUk{#1-JX_zlYK)jIl)tEapja<4a2RKOna;17K8ua!^a-H-Q&7>Xajk2D40 zw_1F{p_B-VwXb`t_WQ>jeIdtOV}~_2@6{CDx}o=O6y%rd87g1uz#F1|L|ydhEkyLG zFZuL<`npd)tp38QA64JP6luksJ0RkDD!XE_s|^Er7)z;gq{L!QWLj^HrPiRgih$bc46xQ32Sz$m@c7jn`Qs zIQ2DNPVqJhgcW`ZSrrsRE3<pBZ2skK)wikR0zqWXz#8-iy@8!W;#l-~rM z%J?<$!ChZds8$RiNxQWY3O)@7~dCVStQq`dQZd;MD@2~2jur~o%=|X z?}?>+sJz7R&PK~E^?(JwYP5x3fYGE7FIcRcxKv)!!yo9+|E&B4rRx5aWihMzEUg|& LQ$B6^zv2HI>g>F* literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SHDEFINE.MAC b/Images/Source/hd0/s0/u15/SHDEFINE.MAC new file mode 100644 index 00000000..e96823ba --- /dev/null +++ b/Images/Source/hd0/s0/u15/SHDEFINE.MAC @@ -0,0 +1,659 @@ +; +; Program: SHDEFINE +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; +version equ 10 + +; +; SHDEFINE is used to define shell variables for the Shell SH. +; It makes entries into the file SH.VAR in the ROOT directory. +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +backup equ 0 ;backup old file? 1 for yes, 0 for no +ctrlz equ 'Z'-'@' ;^Z for EOF +fcb equ 5ch +tbuff equ 80h +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext sctlfl,sout,sprint,scrlf,shldc + ext bbline,sksp,capine,fillb,cout,moveb,getfn1 + ext initfcb,f$open,f$read,f$close,f$make,f$delete,f$write,f$rename + ext z3init,qprint,codend,hmovb,root,logud,getwhl,print + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment + call banner ;print banner +; +; Check for Wheel +; + call getwhl ;get wheel byte + jnz start0 + call print + db cr,lf,' Not Wheel - Aborting',0 + ret +; +; Try to Load Variables +; +start0: +; +; Define File to Work With +; + lxi h,fcb+1 ;check for file name + lxi d,shvfcb+1 ;variable FCB + mvi b,11 ;11 chars + mov a,m ;any name given? + cpi ' ' ;space if none + jz setdef ;set default shell variable file name +; +; Define Passed Name as Shell Variable File +; + call moveb ;set name + lxi h,deftype ;set default type if none + lxi d,shvfcb+9 ;pt to type + mvi b,3 ;3 chars + ldax d ;any chars + cpi ' ' ;if none, copy + cz moveb + jmp bakdef +; +; Define from Shell Variable File Name +; +setdef: + call getfn1 ;get name + call moveb ;copy it +; +; Define $$$ and BAK Files +; +bakdef: + lxi h,shvfcb+1 + lxi d,shvtmp+1 ;set $$$ name + mvi b,8 ;8 chars + call moveb +; + if backup + lxi d,shvbak+1 ;set BAK name + call moveb + endif ;backup +; +; Load Variables +; + call varload + jnz start1 +; +; Initialize Shell Variables if File Not Found +; + call codend ;pt to code end + mvi m,ctrlz ;place ^Z +; +; Process User Commands +; +start1: + call menu ;use menu + rz ;abort + call varsave ;save new shell variables + ret + +; +; Input and Process User Commands +; Return with Z if Abort +; +menu: + call print + db cr,lf + db cr,lf,' ** Shell Variable Editor **' + db cr,lf + db cr,lf,'Edit: E. Edit (Add/Delete/Redefine) Shell Variables' + db cr,lf,' L. List Shell Variables on Console' + db cr,lf,' P. Print Shell Variables on Printer' + db cr,lf + db cr,lf,'Exit: X. Exit and Update SH.VAR on Disk' + db cr,lf,' Q. Quit without Updating SH.VAR' + db cr,lf + db cr,lf,'Command: ',0 + call capine ;get command + lxi h,ctable ;scan command table + call tscan + call print + db ' Invalid Command: ',0 + call cout + jmp menu +; +; Pack and Menu Exit +; Return NZ +; +pack: + call codend ;pack entries in table + mov d,h ;HL=DE + mov e,l +; +; Check Next Entry +; +pack1: + mov a,m ;get next char + stax d ;put it + cpi ctrlz ;done? + jz packx + cpi ' ' ;deleted? + jz pack3 +; +; Copy Entry +; +pack2: + mov a,m ;get char + stax d ;put it + inx h ;pt to next + inx d + ora a ;done? + jnz pack2 + jmp pack1 ;resume +; +; Skip Entry +; +pack3: + mov a,m ;get char + inx h ;pt to next + ora a ;done? + jnz pack3 + jmp pack1 ;resume +; +; Pack Complete +; +packx: + xra a ;NZ + dcr a + ret +; +; Menu Quit +; Return Z +; +mquit: + call print + db cr,lf,' Do you really want to quit (Y/N)? ',0 + call capine + cpi 'Y' + jnz menu + xra a ;Z + ret +; +; List Names in Table on Printer +; +nprint: + mvi a,80H ;select print + jmp nliste +; +; List Names in Table on Console +; +nlist: + mvi a,1 ;select console +nliste: + sta sctlfl ;set flag + call pack ;pack table +nlist0: + call sprint + db cr,lf,'List of Shell Variables',0 + lxi d,0 ;set count + call codend ;pt to list +; +; Main List Loop +; +nlist1: + mov a,m ;get next variable + cpi ctrlz ;done? + jz nlistx +; +; Print Next Element +; + xchg ;print number + inx h ;increment count + call scrlf + call shldc ;print + xchg ;DE contains count + call sprint + db ' Name: ',0 + mvi b,8 ;8 chars in name +nlist2: + mov a,m ;get char + call sout ;print + inx h ;pt to next + dcr b ;count down + jnz nlist2 + call sprint + db cr,lf,' >',0 +nlist3: + mov a,m ;get char + inx h ;pt to next + ora a ;done? + jz nlist4 ;resume + call sout + jmp nlist3 +nlist4: + call sprint + db '<',0 + jmp nlist1 +; +; Exit Listing +; +nlistx: + call scrlf ;new line + mov a,d ;check for none + ora e + jnz menu ;resume menu + call sprint + db ' -- No Shell Variables Defined --',cr,lf,0 + jmp menu + +; +; Add Names to Table +; +nadd: + call print + db cr,lf,'Enter Shell Variable Name (RETURN to Quit): ',0 + mvi a,0ffh ;capitalize + call bbline + call sksp ;skip to first non-blank + ora a ;done? + jz menu ;resume menu +; +; Copy Input Name into Shell Buffer SHVAR +; + push h ;save ptr to name + lxi h,shvar ;init name buffer + mvi a,' ' ;space fill + mvi b,8 ;8 chars + call fillb + xchg ;pt to buffer in DE + pop h ;pt to name + mvi b,8 ;8 chars max +nadd1: + mov a,m ;get name char + ora a ;done? + jz nadd2 + stax d ;store char + inx h ;pt to next + inx d + dcr b ;count down + jnz nadd1 +; +; Search for Name +; +nadd2: + call codend ;pt to first element +; +; Check for End of Entries +; +nadd3: + mov a,m ;get first char of next string + cpi ctrlz + jz addit ;add name at HL +; +; Compare Names +; + lxi d,shvar ;pt to variable + mvi b,8 ;compare + shld curname ;save ptr to current name in case of delete +nadd4: + ldax d ;check for duplicate + cmp m + jnz nadd5 + inx h ;pt to next + inx d + dcr b ;count down + jnz nadd4 + jmp nadd6 +; +; No Match, so Skip Rest of String +; +nadd5: + mov a,m ;skip to end of string + inx h ;pt to next + ora a ;done? + jnz nadd5 + jmp nadd3 ;resume +; +; Match - Determine What User Wants to Do +; +nadd6: + call print + db cr,lf,' Shell Variable Name ',0 + call prname ;print name + call print + db ' Found -' + db cr,lf,' Delete It (D)' + db cr,lf,' Redefine It (R)' + db cr,lf,' No Change (anything else)' + db cr,lf,'Option: ',0 + call capine + cpi 'D' ;delete? + jz delete + cpi 'R' ;redefine? + jnz nadd ;restart if not +; +; Redefine Name +; + lhld curname ;pt to name in buffer + mvi b,8 ;space fill it + mvi a,' ' + call fillb + jmp nadd3 ;resume in case another duplicate +; +; Delete Name +; +delete: + lhld curname ;pt to name in buffer + mvi b,8 ;space fill it + mvi a,' ' + call fillb + jmp nadd ;restart +; +; Add Name +; +addit: + shld curname ;save ptr to new name + xchg ;dest in DE + lxi h,shvar ;pt to name + mvi b,8 ;8 chars + call hmovb ;copy name into buffer + xchg ;pt to after name with HL + push h ;save ptr + mvi m,0 ;store ending 0 and ^Z in case of abort + inx h + mvi m,ctrlz ;store ^Z + call print + db cr,lf,' Definition of ',0 + call prname ;print name + call print + db ' (RETURN to Abort) -',cr,lf,'--> ',0 + mvi a,0ffh ;caps + call bbline + pop d ;get destination + mov a,m ;no input? + ora a ;noadd if not + jz noadd +; +; Copy User Input into Buffer +; +addit1: + mov a,m ;get char + stax d ;put char + inx h ;pt to next + inx d + ora a ;done? + jnz addit1 + mvi a,ctrlz ;mark end + stax d + jmp nadd + +; +; Abort Add +; +noadd: + lhld curname ;pt to first char + mvi m,ctrlz ;mark end + jmp nadd + +; +; Print Name of Shell Variable +; +prname: + push h ;save regs + push b + lxi h,shvar ;pt to name + mvi b,8 ;8 chars +prn1: + mov a,m ;get char + call cout + inx h ;pt to next + dcr b ;count down + jnz prn1 + pop b ;restore + pop h + ret + +; +; Command Table Scanner +; +tscan: + mov b,a ;save char in B +tscan1: + mov a,m ;end of table? + ora a + mov a,b ;prep for return + rz + mov a,m ;get table char + cmp b ;match? + jz tscan2 + inx h ;pt to next entry + inx h + inx h + jmp tscan1 +; +; Command Found - Run It +; +tscan2: + inx h ;get address + mov e,m + inx h + mov d,m + xchg ;address in HL + pop psw ;clear stack + pchl ;"run" command +; +; Command Table +; +ctable: + db 'E' ;enter + dw nadd + db 'L' ;list + dw nlist + db 'P' ;print + dw nprint + db 'X' ;exit + dw pack + db 'Q' ;quit + dw mquit + db 0 ;end of table + +; +; Print Banner +; +banner: + call qprint + db 'SHDEFINE, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db 0 + ret +; +; Save Shell Variable List +; Return with Z if Error +; +varsave: + call print + db cr,lf,' Writing Shell Variables to Disk',0 + lxi d,shvtmp ;open temp + call initfcb + call f$delete ;delete if any exists + call f$make ;create new file + inr a ;error? + rz + call codend ;pt to scratch area +; +; Save Loop +; +vars1: + lxi d,tbuff ;copy into buffer + mvi b,128 ;128 bytes + call hmovb + lxi d,shvtmp ;write block + call f$write + jnz werr ;write error + lxi d,tbuff ;check for done + mvi b,128 ;128 bytes +; +; Check for Done +; +vars2: + ldax d ;look for ^Z + cpi ctrlz + jz varsx + inx d ;pt to next + dcr b ;count down + jnz vars2 + jmp vars1 +; +; Done +; +varsx: + lxi d,shvtmp ;close temp file + call f$close +; +; Delete Old Backup File SH.BAK +; + if backup +; + lxi d,shvbak ;delete any old backups + call initfcb + call f$delete +; +; Create New Backup File SH.BAK=SH.VAR +; + lxi h,shvbak ;new name + lxi d,shvfcb ;old name + call f$rename ;create backup file +; + else +; +; Erase Original File +; + lxi d,shvfcb ;delete file + call initfcb + call f$delete +; + endif ;backup +; +; Create New Shell Variable File SH.VAR=SH.$$$ +; + lxi h,shvfcb ;new name + lxi d,shvtmp ;old name + call f$rename ;create new file + xra a ;return OK + dcr a ;NZ + ret +; +; File Write Error +; +werr: + call print + db cr,lf,'Error in Writing File - Aborting',0 + xra a ;error code + ret + +; +; Load Shell Variable List +; Return with Z if Error +; +varload: +; +; Look for Variable File +; + call root ;determine DU of root + call logud ;goto root + call codend ;pt to scratch area + mvi m,ctrlz ;prep for no file + lxi d,shvfcb ;try to open file + call initfcb ;init FCB + call f$open + rnz ;file not found +; +; Read in Variable File +; +varl1: + lxi d,shvfcb ;read in file + call f$read + jnz varl2 + lxi d,tbuff ;pt to data + xchg ;copy into memory + mvi b,128 ;128 bytes + call hmovb + xchg + jmp varl1 +varl2: + lxi d,shvfcb ;close file + call f$close +; +; Say List is Already Loaded +; + xra a ;return NZ for OK + dcr a + ret + +; +; Buffers +; +curname: + ds 2 ;ptr to current variable name +shvar: + ds 8 ;shell variable name +deftype: + db 'VAR' ;default file type +; + if backup +shvbak: + db 0 + db 'SH ' ;name of shell variable file + db 'BAK' + ds 24 ;36 bytes total + endif ;backup +; +shvtmp: + db 0 + db 'SH ' ;name of shell variable file + db '$$$' + ds 24 ;36 bytes total +shvfcb: + db 0 + db 'SH ' ;name of shell variable file + db 'VAR' + ds 24 ;36 bytes total + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SHFILE.COM b/Images/Source/hd0/s0/u15/SHFILE.COM new file mode 100644 index 0000000000000000000000000000000000000000..7c4585377bec0b9951384c807103832f2031fab8 GIT binary patch literal 512 zcmbV|y-Ncz7{>Fac)hk(th!W}sEeFZ`~b(QgH}Nl6gmhBRSFiWLR}Q}#L-2>L3bxd z6|vyQa4i)Q%uu0=n-mp22M@f(;qXoU4;=E#^E`Q<1X2va+`#Bm63Dj^0C@&-2WH2| zCMHLFSTdbk&#bMozF2QKNaPVj=83I^Opl2nko#0FgS-MZyPVEuSu&N&q!zPjHkLt5 zrB>1`v(8k@mMxU4woamU`xa=vR*yaGQ=S}|apeh!LvX6D*_kiwq2NyO3fziu36TVe zmL2|5(_JKLmY?&y;}UrPM^)ZJl~+n`1HqnXq+US$K)oEKURb<=7Zji1`4x2W1w{)Q z2qKJYGcQoo)T=)c*AEiA({U!3Xk9_0ca^Y3h!v~;-ByT0{edDcmMzZ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SHFILE.MAC b/Images/Source/hd0/s0/u15/SHFILE.MAC new file mode 100644 index 00000000..ec58b66e --- /dev/null +++ b/Images/Source/hd0/s0/u15/SHFILE.MAC @@ -0,0 +1,105 @@ +; +; Program: SHFILE +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; +version equ 10 + +; +; SHFILE defines the name of the shell variable file or displays it. +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +fcb equ 5ch +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext z3init,getfn1,print,pfn1,moveb,qprint + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment and Print Banner +; + call z3init ;initialize the ZCPR3 Environment + call qprint + db 'SHFILE, Version ' + db (version/10)+'0','.',(version mod 10)+'0',cr,lf,0 +; +; Set Name of Shell Variable File +; + call getfn1 ;get ptr to file name 1 + lxi d,fcb+1 ;pt to name in FCB + xchg ;copy from FCB + mvi b,11 ;11 bytes + mov a,m ;get first char + cpi ' ' ;don't define if no name + jz prshfile + call moveb ;define name + call setshdef ;set default file type if none given +; +; Print Name of Shell Variable File +; +prshfile: + call print + db ' Shell Variable File Name is ',0 + call getfn1 ;pt to name + xchg + call pfn1 + ret +; +; Set Type of Shell Variable File if None Given +; +setshdef: + call getfn1 ;check for file type + lxi d,8 ;pt to file byte + dad d + xchg + lxi h,shvtype ;default file type + mvi b,3 ;3 chars + ldax d ;get char + cpi ' ' ;set if space + cz moveb ;copy + ret + +; +; Buffers +; +shvtype: + db 'VAR' + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SHOW.COM b/Images/Source/hd0/s0/u15/SHOW.COM new file mode 100644 index 0000000000000000000000000000000000000000..b91c0608def83aba914b0357e43daeb9065e38a4 GIT binary patch literal 7936 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 acTs=3+nLj{e%=A@L9%Z20C1b9_x}NLZjM<1 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VF41H.LBR b/Images/Source/hd0/s0/u15/VF41H.LBR new file mode 100644 index 0000000000000000000000000000000000000000..c2022e13b616c1ffc61ec5a371063d7b82d9541f GIT binary patch literal 27776 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 U5v0RE+qQrD{co!j{ulj!0G1_aL;wH) literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VF42A.LBR b/Images/Source/hd0/s0/u15/VF42A.LBR new file mode 100644 index 0000000000000000000000000000000000000000..718954fce72b397a8e313fd4da5fe78a758e4357 GIT binary patch literal 31744 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

6xv)}2C*i7w_F$~2xPjX- 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VFILER.COM b/Images/Source/hd0/s0/u15/VFILER.COM new file mode 100644 index 0000000000000000000000000000000000000000..bfb28b3b143b7be018d4c905a1d068d1d75ddb01 GIT binary patch literal 11776 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 pH!VFQb>1P|=(L}X-Fx! ^D - File Forward A - Toggle Alpha Sort + v - File Backward H - Help File Š ^X + - Screen Forward N - New DIR + - - Screen Backward S - Disk Status + -- Screen -- J - Jump tï á Filå Z - ZCPR3 Command + ^A Left Q - Refresh Screen ^C - Exit + ^F Right + + Summary + Movement Commands -- + ^E - Move Up (Wrap to Bottom) + ^X - Move Down (Wrap to Top) + ^D - Move Right (Wrap to First File of Next Line) + ^S - Move Left (Wrap to Last File of Previous Line) + ^F - Move Screen Right (Wrap to First Screen) + ^A - Move Screen Left (Wrap to Last Screen) + + Thå  user'ó Z3TCAÐ entrù maù definå fouò otheò  single- +characteò  commandó  tï  conforí tï thå arro÷  keyó  oî  hió +specifiã  terminal®  Theså commandó wilì overridå  thå  seô +describeä  abovå  iæ anù conflictó exisô (thaô is¬  iæ  youò +down-arro÷ keù generateó á ^E¬ ^Å wilì no÷ meaî Movå Dowî iî +alì cases). + + Screeî  Lefô  anä Righô makå senså wheî therå  arå  toï +manù fileó tï fiô oî onå screen®  Iî thió case¬  thå  fileó +arå  brokeî  intï screeî directories¬  anä Screeî  Lefô  anä +Righô arå useä tï movå betweeî them. +:The DIR Form + DIR Form + Thå Copy¬ Masó Copy¬ anä Logiî commandó prompô thå useò +foò thå directorù tï copù oò loç into® Thå useò maù specifù +anù accepteä ZCPR³ DIÒ forí iî responså tï this. + + Thå  ZCPR³  DIÒ  forí maù bå eitheò  á  DÕ  (Disk/User© +specificatioî  oò á directorù namå (mnemonic)®  Exampleó oæ +DIÒ formó include: + + B <-- Disk B, Current User + 7 <-- Current Disk, User 7 + B7 <-- Disk B, User 7 + wordstar <-- DU associated with the name WORDSTAR + + Iî VFILER¬  theså entrieó maù bå optionallù suffixeä bù +á  coloî (:© aó thå useò desiresº  "B7:¢ anä "B7¢ meaî  thå +samå  thing®  Iæ  á DIÒ forí ió referenceä  iî  thå  VFILEÒ +command line, it MUST be followed by a colon. + +:User Functions + User Fcts + Thå  VFILEÒ  useò  ió giveî addeä  flexibilitù  iî  hió +commanä  invocatioî capabilitù bù thå uså oæ á seô oæ  user- +definablå functions¬  whicè arå executeä bù strikinç á digiô +froí ° tï 9® Thå basiã ideá ió this: + + 1© thå useò createó á filå calleä VFILER.CMD» thió +filå containó hió extendeä commanä set + + 2©  VFILER.CMÄ ió placeä alonç thå user'ó  commanä +searcè path + + 3©  wheî  thå useò ió iî VFILEÒ anä hå  strikeó  á +digiô  oò á pounä sigî (#© foò help¬  VFILEÒ searcheó  alonç Šthå patè foò thå firsô VFILER.CMÄ filå iô findó anä extractó +thå informatioî froí it + + User Fcts + Sincå  VFILEÒ  searcheó foò VFILER.CMÄ alonç thå  path¬ +severaì VFILER.CMÄ fileó maù bå availablå foò thå user® Foò +instance¬  iæ thå patè ió $¤ -¾ A¤ -¾ A15¬  theî VFILEÒ wilì +looë iî thå currenô directory¬ disë A/currenô user¬ anä disë +A/useò 1µ foò VFILER.CMD® Á general-purposå VFILER.CMÄ filå +maù bå placeä iî A15¬  anä special-purposå VFILER.CMÄ  fileó +(sucè aó foò assembleò languagå development¬  Ã development¬ +worä  processing¬  etc© maù bå placeä iî selecteä useò areaó +oî A®  Foò instance¬ A· coulä contaiî Worä Staò anä ió useä +foò worä processinç anä thaô B· ió thå scratcè areá foò texô +files® Witè thió path¬ á useò editinç fileó iî B· wilì finä +WÓ iî A7¬  VFILER.CMÄ (foò worä processing© iî A7¬  anä  hió +systeí commandó iî A15. + + Anù optionó requireä foò thå commandó arå prompteä for¬ +anä  wheî  thå useò inputó valueó foò  alì  options¬  VFILEÒ +chainó  tï thå ne÷ commanä viá thå ZCPR³ Commanä Linå Buffeò +feature¬  executeó thå commanä linå generated¬  anä returns® +VFILER is a true shell under ZCPR3. + User Fcts + Thå structurå oæ VFILER.CMÄ ió quitå simple® Iô caî bå +createä  bù  anù CP/Í texô editor¬  anä iô consistó  oæ  thå +followinç typeó oæ lines: + + 1© á commanä line¬ whicè beginó witè á digiô (0-9© +anä  containó thå texô oæ thå commanä tï bå executeä  shoulä +thaô digiô bå typeä bù thå user + + 2©  á  helð block¬  whicè ió printeä wheneveò  thå +useò typeó á pounä sigî (#)» thió blocë ió denoteä bù á linå +whicè beginó witè á pounä sign¬ anä iô extendó tï thå enä oæ +thå file + + 3©  á  commenô  line¬   whicè  ió  useä  tï  embeä +explanatorù comments¬  whicè arå foò referencå purposeó onlù +anä noô seeî bù thå VFILEÒ user + + COMMAND LINE User Fcts + + Thå  commanä  linå consistó oæ á digit¬  zerï  oò  morå +spaceó (whicè arå ignored)¬ anä thå texô oæ thå commanä witè +embeddeä promptó foò useò input®  Theså promptó arå denoteä +bù  beinç  encloseä iî single- oò double-quoteó  (§  oò  ")® +Wheî  VFILEÒ  executeó theså commanä lines¬  iô  printó  thå +prompô  containeä withiî thå quoteó aó theù arå  encountereä +anä  waitó foò thå useò tï inpuô á linå oæ texô  (terminateä +bù á RETURN)¬  aô whicè poinô thå texô ió substituteä iî thå +commanä  linå wherå thå prompô is®  Iæ á prompô extendó  tï +thå  enä  oæ  á commanä line¬  iô neeä  noô  bå  terminated® +Example: + 1 copy 'Source File? ' 'Destination Dir? ' + +wilì  definå  useò functioî 1®  Thå useò ió  prompteä  witè +"Sourcå File¿  "¬  hå enteró hió text¬  iô ió substituteä iî +thå commanä line¬ hå ió prompteä foò "Destinatioî Dir¿ "¬ hå +agaiî  enteró  á  response¬   iô  ió  substituted¬  anä  thå +resultinç commanä linå ió chaineä to. + User Fcts + 1 copy 'Source File? ' 'Destination Dir? ' + +Iæ  thå useò respondó witè "myfile.txt¢ anä "C0:"¬  theî thå +commanä line + + copy myfile.txt C0: + +ió built® Notå thaô spaceó anä otheò characteró betweeî thå +promptó arå significant. + + 1 mcopy 'Dest Dir? '='Source File? ' + +will generate (to the same inputs) + + mcopy C0:=myfile.txt + + PASSED PARAMETERS User Fcts + + Threå  parameteró  maù bå passeä froí VFILEÒ  intï  thå +commanä  linå beinç generated®  Theså parameteró anä  theiò +symboló are: + + Symbol Parameter + %D Current Disk Letter + %U Current User Number (1 or 2 digits) + %F Current File Name (pted to by arrow) + %$ DU:FILENAME for Current File + + Iæ  thå  useò  musô inserô á  '%§  characteò  intï  thå +commanä  linå hå ió building¬  '%%§ placeó onå '%§ intï  thå +line® Example: + + echo Disk is %d, User is %u, File is %f + +printó (iæ thå useò ió iî A1µ anä ptinç tï MYFILE.TXT): + + Disk is A, User is 15, File is MYFILE.TXT + HELP BLOCK User Fcts + + Thå Helð Blocë iî thå VFILER.CMÄ filå ió simplù á blocë +oæ texô whicè extendó froí thå pounä sigî (#© iî thå filå tï +thå enä oæ thå file®  Thió helð informatioî ió displayeä tï +thå useò aó onå screen¬  anä iô ió thå responsibilitù oæ thå +persoî whï writeó thå VFILER.CMÄ filå tï seå thaô thió  bodù +oæ  texô  (includinç thå linå thå asterisë ió on©  doeó  noô +exceeä 2² lines® Example: + +# Help for Word Processing + + 1 - Run WordStar + 2 - Run WordMaster + 3 - Run ROFF4 + + COMMENT LINE User Fcts + + Á  commenô linå ió anù linå whicè doeó noô begiî witè á +digiô  oò  á  pounä sign®  Thå texô oæ  thaô  linå  ió  thå +comment® Iô ió noô displayeä tï thå VFILEÒ useò anä ió useä +onlù  foò  referencå tï thå persoî whï wrotå thå  VFILER.CMÄ +file® Example: + +! This is a comment +This is also a comment + + RUNNING ZEX User Fcts + + Likå  alì  standarä ZCPR³ Shells¬  VFILEÒ  ió  ablå  tï +supporô  thå executioî oæ thå thå ZEØ commanä filå processoò +oî  toð oæ itself®  Iæ ZEØ ió running¬  VFILEÒ wilì  simplù +prompô ZEØ foò inpuô ratheò thaî enterinç itó normaì screen- +orienteä displaù mode® Iî thió way¬ á commanä executeä froí +thå  VFILER.CMÄ  filå maù invokå ZEX¬  anä alì  oæ  thå  ZEØ +commanä  filå processinç wilì bå performeä beforå VFILEÒ  ió +reentered. + + SAMPLE VFILER.CMD User Fcts + +! VFILER Command File for Richard Conn +1 xdir 'XDIR Options? ' +2 protect %D%U:%F 'PROTECT Attributes? ' +3 wm %$ +4 t2a +5 echo Disk=%d User=%u File=%f DU:FILENAME = %$ +#VFILER Command File for Richard Conn + +The following VFILER Macros are provided -- + + 1 - XDIR with Options + 2 - PROTECT Current File + 3 - Edit Current File + 4 - TERM III + 5 - Echo Current File and Text + +:Tagging Commands + Tagging + Ô - Taç filå foò inclusioî foò masó copù tï anotheò  DÕ +(disk/user© area®  Filå remainó taggeä untiì eitheò á disë +log-iî  oò 'U§ ió useä tï untaç it®  Á 't§ markeò ió placeä +bù thå taggeä filenamå aó á remindeò thå filå ió taggeä  foò +masó copù oò masó delete. + + Õ  - Untaç filå previouslù taggeä foò masó  copy®  'U§ +caî  bå useä tï movå cursoò 'forward§ foò quicë untagginç oæ +files®  Logging-iî  drivå  agaiî witè 'N§ alsï  untagó  alì +files. + + Ç Ô oò Õ - Grouð (Mass© Taç oò Untag® Useò ió prompteä +foò thå operation¬  anä twï oæ hió optionó arå Ô anä U®  Iæ +eitheò  operatioî ió selected¬  tagginç oò untagginç  occuró +automaticallù  froí  thå cursoò positioî tï thå enä  oæ  thå +screeî  oî  alì fileó iî thió area®  Iæ thå useò wisheó  tï +theî seå thå accumulateä sizeó oæ thå taggeä files¬  thå Ç Æ +(Grouð Filå Size© commanä maù bå issued. + +:File Display Commands + Display + Ð - Prinô texô filå tï CP/Í lisô devicå (printer)® Anù +keypresó cancels. + + Ö  - Vie÷  texô filå oî console¬  witè  paginatioî  anä +single-linå turn-up®  ^D + v + ^X + +:Miscellaneous Commands + Misc + Á - Togglå Alphá Sort® Thió commanä reverseó thå senså +oæ thå sorô oæ thå currenô directory¬ reloadó thå directory¬ +anä refresheó thå screen¬ havinç sorteä iô iî thå ne÷ sense® +Sortinç  ió donå bù filå namå anä typå oò bù filå  typå  anä +name. + + È  - Invokeó  externaì HELÐ Information®  VFILEÒ  wilì +chaiî  tï  HELÐ anä displaù thå informatioî  iî  VFILER.HLP® +VFILEÒ  checkó  tï  seå  iæ HELÐ caî  bå  founä  alonç  patè +(externaì  iæ available¬  internaì iæ externaì patè  ió  noô +available©  anä doeó noô attempô tï chaiî iæ HELP.COÍ cannoô +bå found. + + Î - Logiî ne÷ DÕ areá foò displaù anä reseô systeí  foò +disë changes® Formaô oæ DÕ forí ió samå aó 'C§ foò copy. + + Misc + Ó  - Statuó oæ requesteä drive¬  showó  remaininç  disë +storagå   iî  kilobyteó  anä  numbeò  oæ  fileó  iî  currenô +directory. + + Ú - Ruî anù ZCPR³ Commanä Line®  Useò wilì bå prompteä +foò  commanä line¬  anä VFILEÒ wilì bå reentereä iî samå  DÕ +areá aó wheî commanä waó executed®  Commanä wilì executå iî +thå originaì DÕ area as indicated by the prompt. + + ^C - Exit to Operating System. + + ¯  oò  ¿  - Prinô Commanä Summarù  (Shorô  Helð  Info)® +VFILEÒ  maù bå assembleä tï omiô built-iî help¬  creatinç  á +VFILEÒ  whicè  ió  abouô 1Ë shorteò thaî á VFILEÒ  witè  thå +built-iî  help®  Iæ  thå built-iî helð  ió  omitted¬  theså +commandó chaiî tï thå VFILER.HLÐ filå instead. + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/VFILER.MAC b/Images/Source/hd0/s0/u15/VFILER.MAC new file mode 100644 index 00000000..d0512e80 --- /dev/null +++ b/Images/Source/hd0/s0/u15/VFILER.MAC @@ -0,0 +1,4466 @@ + +; TITLE 'VFILER' + +; VERSION: 3.0 +; DATE: 26 June 84 +; AUTHOR: Richard Conn + +; Changes to make Version 3.4 by Richard Conn: +; Symbol CCP changed to CCPLEN (when Z3BASE.LIB was added, the +; symbol CCP in Z3BASE.LIB conflicted with this symbol in VFILER; +; how did version 3.3 ever assemble in the first place, unless someone +; has modified Z3BASE.LIB from the original format?) +; Comments on version 3.3 changes added, prefixed by + +; THE FOLLOWING MAJOR CHANGES WERE MADE BY JAY SAGE AND BOB DEMROW TO +; MAKE VERSION 3.3. The changes were built from version 3.1. + +; The following changes were contributed by Jay P. Sage and marked by +; on the lines or at the blocks changed or added: +; 1. Code modified to eliminate double loading of program, once to +; establish shell and once to run shell. Program now checks after +; shell is established to see if any commands are pending in the +; command line. If there are none, the code is run immediately +; without reloading from disk. Otherwise, pending commands are run +; first as in previous versions. +; Good idea +; 2. The disk logging command was extended to include setting of the +; file selection mask in system file name 4. This command was also +; renamed from 'N' to 'L' to be consistent with common usage in +; previous versions of VFILER and other programs. An equate is +; provided early in the code for those who want to change this. +; The response to the 'L' command is now a general ambiguous file +; specification. If it includes a directory specification, then +; that directory is logged into. Otherwise, one remains in the +; current directory. If it includes a file name specification, +; then that name is copied to system file name 4 and is used as a +; mask for file selection. Otherwise '*.*' is used automatically. +; Note that the colon must now be included to specify only a new +; directory. Since a carriage return alone cancels the command, +; '*.*' would have to be entered to stay in the currect directory +; but include all files. As a shortcut one can enter just a colon +; or semicolon. +; Fine; note that the change of the command name to 'N' was +; done in the first place to be consistent with FRIENDLY, +; the "commercial VFILER" sold by Ampro Computers; but, then +; again, if you use FRIENDLY, you probably don't use VFILER, +; so the problem of consistency may not come up +; 3. Several changes were made in the command table to allow for +; synonyms. The 'X' abort operation was deleted from the 'L' +; command but was made equivalent to control-c in the main command +; table. The functions control-a and control-f, though included in +; the help screen, had not previously been implemented. They are +; here made synonyms for '-' and '+', respectively. (The built-in +; help screen was modified to make this clear.) For ease in +; entering commands, '<' and ',' were made the same as control-s, +; and '>' and '.' were made the same as control-d. +; Fine; I debated for some time about adding synonyms, and +; had originally decided against it; let's try this change +; as-is and see how it works; however, re the addition of +; ^A and ^F as synonyms for - and +, I'm sorry I forgot to +; delete these from the Help screen -- they were intentionally +; omitted because of potential conflict with arrow keys from +; Z3TCAP -- if an arrow key generated ^A or ^F, then the ^A/^F +; movement functions were overriddent by ^A/^F arrows, so I +; decided to drop them completely and have only - and +; again, +; let's try this change for a while and see how it works out +; 4. When files are deleted with the 'D' command, notice to that +; effect is displayed on the command line at the bottom of the +; screen. +; 5. Highlighting on the 'Z80 Code' and '8080 Code' messages was +; deleted. +; Cosmetic +; 6. Rename function made to completely update file ring and display. +; This solves the problem of renamed files being out of place. +; Good idea + +; The following changes were contributed by R.I.Demrow and are marked by +; on all lines that were changed. +; 1. Replaced Z3ENV equate by MACLIB reference to Z3BASE.LIB. This +; library includes definitions for true and false, the value of +; Z3ENV, and the value of I8080 (indicates whether to use Z80 +; opcodes) +; Good idea; it is nice to have these equates carried in thru +; Z3BASE.LIB, but don't expect to find matching CRCs from one +; assembly to the next -- the COM files will differ depending +; on values in Z3BASE; I feel, tho, that the convenience of +; including Z3BASE outweighs the inconvenience of matching CRCs +; 2. Added highlighting to current file and current disk on top line +; of display. +; See comment under next change +; 3. Tagged files are now highlighted on the screen. +; There was a lot of debate during the design of FRIENDLY as +; to whether to point to a file via a pointer or via highlighting; +; the highlighting option was ruled against for the simple reason +; that pointing is very important and fundamental to the VFILER +; concept, and, on some terminals in certain kinds of lighting, +; it is nearly impossible to distinguish a highlighted file from +; one which is not highlighted; however, in this case, the file +; is highlighted AND followed by a tag character, so the best of +; both worlds is retained +; 4. Two new group functions were added: mass print and mass view. +; Not a bad idea, but I prefer using the PRINT and PAGE +; commands for these operations; note that a VFILER.CMD file +; could provide PRINT and PAGE easily without any cost inside +; of VFILER +; 5. The simulated clear-to-end-of-line function was corrected. It +; only cleared part of line before, and it had the wrong divisor in +; a modulus calculation. +; Good +; 6. Changed code to make use of TCAP information about length of +; printer page. That information was obtained in the previous code +; but was not utilized. +; Good + + +; PREVIOUS VERSIONS: 2.0 (18 Sep 83), 1.8 (17 Sep 83) +; PREVIOUS VERSIONS: 1.7 (9 Sep 83), 1.6 (18 Aug 83), 1.5 (20 July 83) +; PREVIOUS VERSIONS: 1.4 (19 July 83), 1.3 (18 July 83) +; PREVIOUS VERSIONS: 1.2 (18 July 83), 1.1 (17 July 83), 1.0 (16 July 83) +; DERIVATION: From FILER (Version 1.6) by Richard Conn +; FILER from DISK7, Version 7.6C, by Frank Gaude' + + +VERS EQU 34 ; Version Number + ; version number + + MACLIB Z3BASE.LIB ; USE LIB TO GET Z3ENV, I8080, FALSE, + ; and TRUE + +; VFILER is copyright (c) 1983, 1984, 1985 by Richard Conn +; All Rights Reserved +; VFILER may be used freely by the ZCPR3 Community + +; VFILER is a screen-oriented, ZCPR3-specific file utility. It can not be +; installed to run under conventional CP/M. VFILER +; extensively employs cursor addressing to position a pointer on the +; screen, allow the user to manipulate the pointer (up, down, right, left, +; next screen, previous screen, GOTO file). The pointer points to files +; in the current user directory and displays the user's position dynamically +; on the screen. Once pointing to a file, user commands can be used to +; manipulate the file (delete, copy, view on console, print on printer, tag +; for later copy or delete, and untag). In the way of being ZCPR3-specific, +; VFILER can chain to external programs via the MCL and then return (ala +; MENU), and it recognizes Named Directories (so the user can log into B:, B4:, +; and MYDIR:, for example). + +; VFILER is installed by Z3INS. + +; VFILER works with ZCPR3 only, with 32k or more of RAM. File copy +; functions are faster with large amounts of RAM. + +; VFILER can be assembled for use with a Z80 or 8080 microprocessor. + + +; SYSLIB, Z3LIB, and VLIB References +; + ext z3vinit,cls,gotoxy,ereol,envptr,getcrt,getprt,vprint + ext z3log,retud + ext fi0$open,f0$get,dutdir,fi0$close + ext sksp,putcl,getmdisk + ext cin,cout,caps,lout,crlf,lcrlf,pafdc,phlfdc + ext pfind,dnscan + ext getsh,getcl1,qshell,shpush,getzrun,putzex,putcst + ext getefcb,shpop,getsh2,getfn2,getshm,putshm + ext codend + ext stndout,stndend,getcl2,zprsfn ; +; +; Basic Definitions +; + +DIM EQU 1 ;GOTO DIM +BRIGHT EQU 2 ;GOTO BRIGHT + +; +; User-Customized Definition +; +VFNAME MACRO ;;Name of VFILER + DB 'VFILER' + ENDM +VFNFILL MACRO ;;Spaces to fill out name to 8 chars + DB ' ' + ENDM +; +Z80 EQU NOT I8080 ; from Z3BASE.LIB +BIHELP EQU TRUE ;TRUE to provide built-in help info +WARMBOOT EQU FALSE ;set TRUE to warmboot on exit +DEFALPHA EQU TRUE ;set TRUE to alpha by name and type, FALSE for + ; ... type and name by default +EPS EQU 18*4 ;N lines x 4 cols per screen + ; EPS = Entries Per Screen +TAGCH EQU '#' ;character used to mark tagged files +DIRCMD EQU 'L' ;command used to log new dir -- be sure it + ;does not conflict with other commands -- used + ;to be 'N' for new (I prefer 'L' for log) + +; +; Command Line Builder Constants +; +FPESC EQU '%' ;escape char +FPDISK EQU 'D' ;disk only (D) +FPUSER EQU 'U' ;user only (U) +FPFILE EQU 'F' ;file name only +MNOTE EQU '#' ;denotes comment area in macro file +UIN1 EQU 27H ;single quote for user input +UIN2 EQU 22H ;double quote for user input + +; +; Cursor Positioning Addresses +; +EPSLINE EQU (EPS/4)+4 ;position of last line of EPS +BANADR EQU 1*256+24 ;banner address +CURHOME EQU 3*256+1 ;home address of cursor +BOTADR EQU 24*256+1 ;bottom of screen +CPMADR EQU EPSLINE*256+1 ;command prompt message +CPADR EQU EPSLINE*256+22 ;command prompt +ERADR EQU (EPSLINE+1)*256+15 ;error message +FSADR EQU ERADR ;file size message +FNADR EQU 1*256+62 ;address of current file name +DUADR EQU 1*256+4 ;address of current DU + +; +; System Functions +; +RDCON EQU 1 +WRCON EQU 2 +PUNCH EQU 4 +LIST EQU 5 +DIRCON EQU 6 +RDBUF EQU 10 +CONST EQU 11 +RESETDK EQU 13 +LOGIN EQU 14 +OPEN EQU 15 +CLOSE EQU 16 +SRCHF EQU 17 +SRCHN EQU 18 +ERASE EQU 19 +READ EQU 20 +WRITE EQU 21 +MAKE EQU 22 +REN EQU 23 +INQDISK EQU 25 +SETDMA EQU 26 +INQALC EQU 27 +ATTR EQU 30 +GETPARM EQU 31 +SGUSER EQU 32 +COMPSZ EQU 35 + +; +; System Addresses +; +OS$BASE EQU 000H ;system base.. +CCPLEN EQU 800H ;..and 'ccp' length in bytes. + ; Changed name from CCP to CCPLEN +GET EQU 0FFH ;get user area e-reg value +BDOS EQU OS$BASE+05H +FCB EQU OS$BASE+5CH +FCBEXT EQU FCB+12 +FCBRNO EQU FCB+32 +FCB2 EQU OS$BASE+6CH +TBUF EQU OS$BASE+80H +TPA EQU OS$BASE+100H + +; +; ASCII Definitions +; +CTRLA EQU 'A'-'@' ; +CTRLC EQU 'C'-'@' ;..control-C.. +CTRLD EQU 'D'-'@' +CTRLE EQU 'E'-'@' +CTRLF EQU 'F'-'@' ; +CTRLR EQU 'R'-'@' +CTRLS EQU 'S'-'@' ;..XOFF.. +CTRLX EQU 'X'-'@' +BS EQU 08H ;..backspace.. +TAB EQU 09H ;..tab.. +LF EQU 0AH ;..linefeed.. +FF EQU 0CH ;..formfeed.. +CR EQU 0DH ;..carriage return.. +CAN EQU 18H ;..cancel.. +EOFCHAR EQU 1AH ;..end-of-file.. +CTRLZ EQU 1AH ;..clear screen.. +ESC EQU 1BH ;..and escape character. + +; +; MACROS TO PROVIDE Z80 EXTENSIONS +; MACROS INCLUDE: +; +; BR - JUMP RELATIVE +; BRC - JUMP RELATIVE IF CARRY +; BRNC - JUMP RELATIVE IF NO CARRY +; BRZ - JUMP RELATIVE IF ZERO +; BRNZ - JUMP RELATIVE IF NO ZERO +; BJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; +BR MACRO ?N ;;JUMP RELATIVE + IF Z80 + .z80 + jr ?N + .8080 + ELSE + jmp ?N + ENDIF + ENDM +; +BRC MACRO ?N ;;JUMP RELATIVE ON CARRY + IF Z80 + .z80 + jr c,?N + .8080 + ELSE + jc ?N + ENDIF + ENDM +; +BRNC MACRO ?N ;;JUMP RELATIVE ON NO CARRY + IF Z80 + .z80 + jr nc,?N + .8080 + ELSE + jnc ?N + ENDIF + ENDM +; +BRZ MACRO ?N ;;JUMP RELATIVE ON ZERO + IF Z80 + .z80 + jr z,?N + .8080 + ELSE + jz ?N + ENDIF + ENDM +; +BRNZ MACRO ?N ;;JUMP RELATIVE ON NO ZERO + IF Z80 + .z80 + jr nz,?N + .8080 + ELSE + jnz ?N + ENDIF + ENDM +; +BJNZ MACRO ?N ;;DECREMENT B AND JUMP RELATIVE ON NO ZERO + IF Z80 + .z80 + djnz ?N + .8080 + ELSE + dcr b + jnz ?N + ENDIF + ENDM +; +; END OF Z80 MACRO EXTENSIONS +; + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; +; MACLIB Z3BASE ; already included above + MACLIB SYSENV +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; Once Environment is Initialized, One of Three Major Functions +; will be Performed: +; 1. VFILER will be installed as a Shell if invoked explicitly +; by user command +; 2. The VFILER Function will be performed if VFILER is invoked +; by ZCPR3 as a Shell and ZEX is not Running +; 3. A Command Line will be Input by VFILER from ZEX and Passed +; on to ZCPR3 without Processing +; + call z3vinit ;initialize the ZCPR3 Env and the VLIB Env +; +; Set Opsys Stack Pointer +; + if not WARMBOOT + lxi h,0 ;clear hl-pair then.. + dad sp ;..add stack address. + shld stack + endif ;not warmboot + +; +; Check to see if VFILER was executed as a shell +; + call qshell ;get and test message from ZCPR3 + jz runsh ;execute shell procedures +; +; Initialize VFILER as a Shell +; + call shtest1 ;there must be a shell stack + call shtest2 ;there must be a command line buffer +; +; FUNCTION 1: Set Up VFILER as a Shell +; Run Shell Via Exit to Opsys +; + call getefcb ;determine name of program + brz shgo1 ;name not given, so use default + inx h ;pt to name + lxi d,filercmd ;define name of program + mvi b,8 + call moveb ;copy name +shgo1: + call idu ;set initial disk/user + lxi h,filercmd ;establish shell + call shpush ;push onto shell stack + brnz shgo2 ;error? + + call filsel ;select file mask +; +; Print Done Message +; + call vprint + db ' Shell Installed',cr,lf,0 + mvi b,0 ;shell message 0 + mvi a,0 ;no wait + call putshm ;set shell message + + ;changes made by +; jmp chain2 ;set IDU into command line and go + call chain2 ;set IDU into command line + call getcl2 ;see if any more commands on line + ora a + brz runsh ;if none, run shell immediately + jmp os$ccp1 ;else return to opsys + +; +; Establish File Selection (made into subroutine ) +; +filsel: + call getfn2 ;setup file name + lxi d,11*3 ;use 4th system file + dad d + lxi d,fcb+1 ;pt to FCB + xchg + mvi b,11 ;copy 11 chars + call moveb + lxi h,joker ;make wild if FCB is empty + mvi b,11 ;11 chars + ldax d ;check first char + cpi ' ' + cz moveb + ret +; +; Error in Shell Stack Installation +; +shgo2: + cpi 2 ;shell stack full + brnz shgo3 + call vprint + db ' Shell Stack Full',0 + ret +shgo3: + call vprint + db ' Shell Entry Size',0 + ret + +; +; VFILER was invoked as a Shell +; Check for ZEX Input in Progress +; +runsh: + call getzrun ;check ZEX message byte + jnz zexrun ;process ZEX command line if ZEX running +; +; FUNCTION 2: Run VFILER and Perform Main Function +; + mvi a,0 ;set no shell message + call putcst + call setup ;init buffers and pointers + call stackset ;setup stack +; +; Process Initial Help if Available and Requested +; + if BIHELP ;built-in help available? + lda fcb+1 ;check for initial help + cpi '/' + brnz runsh1 + call helpmsg ;print help message + call sak ;strike any key to continue + br runsh2 +runsh1: + endif ;BIHELP +; +; Check for Delay Before Resuming VFILER and Delay if Set +; + mvi b,0 + call getshm ;get shell message 0 + ani 80h ;check MSB + cnz sak ;pause for input +; +; Begin VFILER Processing +; +runsh2: + call stackset ;reset stack + call fload ;load files + push psw + call setscr ;set up screen display variables + pop psw + brnz runsh4 ;continue if OK +; +; Entry Point to Log Into New Dir and Resume +; +runsh3: + call logdir ;error - log into another dir + br runsh2 +; +; Entry Point for Command Processing +; Display Screen and Input/Process Command +; +runsh4: + call stackset ;reset stack + call refresh ;refresh screen display +; +; Display Current File and Input/Process Command +; +loopfn: + call loopfn1 ;print current file name +; +; Input/Process Command +; +loop: + call stackset ;reset stack + call loopfn2 ;get command from user + call loopfn3 ;process command in A + br loop ;continue +; +; Set Stack Pointer +; +stackset: + pop d ;get return address + lhld crctbl ;top of stack + sphl ;start local stack + push d ;return address on new stack + ret +; +; Check for Presence of Shell Stack +; +shtest1: + call getsh ;get shell stack data + rnz + pop psw ;clear stack + call vprint + db 'No Shell Stack',0 + ret + +; +; Check for Command Line +; +shtest2: + call getcl1 ;get command line data + rnz + pop psw ;clear stack + call vprint + db 'No Cmd Line',0 + ret + +; +; FUNCTION 3: Run ZEX on Top of VFILER +; Accept Command Line and Pass it to ZCPR3 +; +zexrun: + call vprint ;print prompt + db 'VFILER> ',0 + mvi a,1 ;tell ZEX that it is prompted + call putzex + call getcl1 ;pt to command line buffer + mov a,l ;set ptr to first char + adi 4 + mov c,a + mov a,h + aci 0 + mov b,a ;BC pts to first char + mov m,c ;store low + inx h + mov m,b ;store high + inx h ;pt to char count + xchg ;... in DE + mvi c,rdbuf ;input line via BDOS + push d ;save ptr + call bdos + pop h ;pt to char count + inx h + mov e,m ;get char count + inx h ;pt to first char + push h ;save ptr + mvi d,0 ;DE=char count + dad d + xra a ;A=0 + mov m,a ;store ending 0 + pop h ;pt to first char + call putzex ;resume ZEX (A=0) + call putcst ;set command status to normal (A=0) + ret ;return to opsys + +; +;************************************************** +; +; CRT Routine for VFILER +; +VCLS: + CALL CLS ;try to clear the screen + RNZ ;OK if done + PUSH H ;save regs + PUSH B + CALL GETCRT ;get CRT Data + INX H ;get number of lines on screen + MOV B,M ;B=number of lines +VCLS1: + CALL CRLF ;new line + BJNZ VCLS1 + POP B ;restore regs + POP H + RET +; +; EREOL Routine for VFILER +; +VEREOL: + CALL EREOL ;try to erase to EOL + RNZ ;OK if done + PUSH B ;save count + MVI A,' ' ;space out + CALL VEREOL1 ;send B spaces + POP B ;get count + MVI A,BS ;backspace in +VEREOL1: + CALL COUT ;send char + BJNZ VEREOL1 ;count down + RET +; +; Setup Screen Display Variables +; +SETSCR: + LXI H,CURHOME ;set cursor home + SHLD CURAT + LHLD RING ;set ring position +; +; Entry to Reset Ring Position at HL +; +SETSCR1: + SHLD RINGPOS +; +; Entry to Reset Local Ring Position at HL +; +SETSCR2: + SHLD LOCBEG ;front of ring + LXI D,EPS*13 ;new end? + DAD D + XCHG + LHLD RINGEND ;end of ring + XCHG + CALL CMPDEHL + BRC SETSCR3 + XCHG +SETSCR3: + XCHG + SHLD LOCEND + RET + +; +; Display file name of current file +; +LOOPFN1: + LXI H,FNADR ;position cursor for file name print + CALL GOTOXY + LHLD RINGPOS ;pt to current file name + INX H ;pt to first char +; JMP PRFN ;print file name + CALL STNDOUT ; turn on highlighting + CALL PRFN ; print file name + CALL STNDEND ; turnoff highlighting; + RET ; +; Get command from user and clear error line if any +; +LOOPFN2: + CALL ATCMD ;position at command prompt + CALL DKEYIN ;wait for character from keyboard + PUSH PSW ;save command + LDA ERMFLG ;error message? + ORA A ;0=no + CNZ ERCLR ;erase old error message + POP PSW ;get command + RET +; +; Process Command +; +LOOPFN3: + CPI MNOTE ;command summary + BRZ CPROCM + CPI '0' ;macro? + BRC CPROC0 + CPI '9'+1 ;macro? + BRNC CPROC0 +CPROCM: + CALL CMACRO ;process macro command + MOV B,A ;save command + CALL ERMSG + DB 'No U Fct ',0 + MOV A,B ;get macro digit + JMP COUT ;return for loop processing +CPROC0: + CALL CTPROC ;process command or return if not found + CALL ERMSG + DB 'Invld Cmd: ',0 + MOV A,B ;get char + CPI ' ' ;expand if less than space + BRNC CPROC1 + MVI A,'^' ;control + CALL COUT + MOV A,B ;get byte + ADI '@' ;convert to letter +CPROC1: + JMP COUT ;return for loop processing + +; +; SET UP BUFFERS +; +SETUP: + CALL RETUD ;get home DU + MOV A,B + STA H$DR ;home drive + MOV A,C + STA H$U$A ;home user area + CALL CODEND ;start of free space + LXI D,100H ;256 bytes/unit + DAD D + SHLD CRCTBL ;table for CRC list et al + DAD D + DAD D ;allow 512 bytes + SHLD CMDBUF ;command line buffer + MVI M,64 ;64 bytes in line + LXI D,70 ;arbitrary beyond EOL + DAD D + SHLD DUM$FCB ;dummy FCB + INR H + MVI L,0 ;next page + SHLD BUFENTRY ;free space to end of TPA + +; +; Set CRT/Printer Data +; + CALL GETCRT ;CRT DATA + MOV A,M + STA CWIDTH ;WIDTH + INX H + MOV B,M + INX H + MOV A,M + STA CTPP ;TEXT + MOV C,A + MOV A,B ;TOTAL NUMBER OF LINES + SUB C + DCR A ;1 LESS + STA CSPP ;LINES TO SKIP + CALL GETPRT ;PRINTER DATA + MOV A,M + STA LWIDTH ;WIDTH + INX H + MOV B,M + INX H + MOV A,M + STA LTPP ;TEXT + MOV C,A + MOV A,B ;TOTAL NUMBER OF LINES + SUB C + STA LSPP ;LINES TO SKIP + INX H + MOV A,M + STA LFFEED ;CAN FORM FEED? + +; +; Begin Further Inits +; + XRA A + STA HELPDISP ;no help display yet +; + MVI A,DEFALPHA ;alpha by name and type + STA ALPHA +; + LHLD ENVPTR ;pt to ZCPR3 Env Desc + LXI D,80H+10H ;pt to cursor commands + DAD D + LXI D,CTABLE ;pt to area + MVI B,4 ;4 commands +CURINIT: + MOV A,M ;get command + STAX D ;put it + INX H ;pt to next + INX D + INX D + INX D + BJNZ CURINIT +; + CALL IDU ;set initial disk/user + CALL LOGRDU ;log into it +; + LHLD BUFENTRY ;base address + SHLD RING ;beginning of ring +; + LXI H,CURHOME ;home address for cursor + SHLD CURAT +; + CALL GETMDISK ;get max disk number (1-N) + ADI '@' ;convert to ASCII (A-P) + STA MAXDR ;set letter +; + RET + +; set initial disk/user +IDU: + LXI D,FCB ;log into DU specification + CALL Z3LOG ;perform login +IDU1: + CALL RETUD ;get current DU in BC + MOV A,C ;get current user + CALL IDU$USET ;set it + MOV A,B ;get current disk + CALL IDU$DSET ;set it + RET +IDU$USET: + STA C$U$A ;..store as current and.. + STA O$USR ;..as original for exit. + STA R$U$A ;..requested user area + RET +IDU$DSET: + STA C$DR + STA R$DR ;requested disk + RET + +; check for existance of file whose first 12 FCB bytes are pted to by DE +; return with A=0 if not found, A=0FFH if found + +FILECHK: + LXI H,S$FCB ;copy into FCB + XCHG + MVI B,12 ;12 bytes + CALL MOVE ;copied into S$FCB + XCHG ;HL pts to FCB + CALL INITFCB ;init FCB + LXI D,S$FCB ;pt to FCB + JMP FFIND + +; +; Select drive and user area (system reset for disk change on-the-fly) +; +; +LOGDIR: + CALL CPRMPT ;prompt to get drive/user selection + DB 'Login DIR (and file mask): ',0 + CALL DEFSPEC ;define full file specification +LOG1: + CALL LOGRDU ;set current and log in + JMP CRLF ;new line and exit + +; +; Actually log into DU requested +; +LOGRDU: + LDA R$DR ;make requested disk current + STA C$DR + CALL RESET ;reset disk system + LDA R$U$A ;establish requested area.. + STA C$U$A ;..as current area. + CALL SET$USR + LXI H,0 ;initialize tagged.. + SHLD TAG$TOT ;..file size accumulator. + RET + +; +; Define file specification +; (comes before DEF$D$U and includes preparing to change system file 4 for new +; mask) +; +DEFSPEC: + CALL RDSPEC ;get user input + CALL TOKEN1 ;position HL to first token and test for end + JZ LOOP ;if no entry, loop back for another command + LXI D,FCB ;use default FCB + CALL ZPRSFN ;parse the filespec into FCB + CALL FILSEL ;copy filespec into system file 4 + CALL TOKEN1 ;back to first token + XRA A ;scan for DIR before DU + CALL DNSCAN ;scan again to get drive and user values + BRNZ DEFDU2 ;if found, enter new values + RET ;otherwise, just return + +; +; Define current drive and user area +; many modifications +; +DEF$D$U: + CALL RDSPEC ;read DU and filespec + CALL TOKEN1 ;position HL to first token + JZ LOOP + + ;delete this redundant test +; +; MOV A,M ;check for exit +; CALL CAPS +; CPI 'X' +; BRNZ DEFDU1 +; INX H ;check for space or EOL +; MOV A,M +; DCX H +; ANI 7FH ;mask MSB +; CPI ' '+1 +; JC OS$CCP ;abort +;DEFDU1: + + XRA A ;A=0 to scan for DIR before DU + CALL DNSCAN ;look for DU or DIR form and return DU + BRZ ERRET ;error +DEFDU2: + MOV A,B ;return disk and user + STA R$DR + INR A ;set FCB + STA FCB + MOV A,C + STA R$U$A + RET +; +; position to first token and set flag to show end of buffer +; +TOKEN1: + LHLD CMDBUF ;pt to possible drive + INX H + INX H + CALL SKSP ;skip over leading spaces and return + MOV A,M ;check for no input + ORA A + RET +; +; reads line of input from user -- pulled out as subroutine +; +RDSPEC: + LHLD CMDBUF ;pt to command line buffer + INX H + INX H + MVI B,20 ; # of blanks to.. + CALL FILL ;..clear 'cmdbuf'. + LHLD CMDBUF ;get DU selection from.. + XCHG + MVI C,RDBUF ;..console buffer read. + CALL BDOS + JMP CONVERT ;make sure alpha is upper case and return +; +; Error return and recovery from command cancellation +; +ERRET: + CALL ERMSG + DB 'DIR Entry Error',0 + JMP LOOP +COMCAN: + LDA CANFLG ;check for nature of abort + ORA A ;..from.. + JZ RUNSH2 ;no file found, so run the shell again + JMP RUNSH4 ;..error/command abort. +; +; find file along path (file FCB pted to by DE) +; on return, A=0FFH if found, A=0 if not found, and flags set +; +FFIND: + MVI A,0FFH ;look in current dir also + JMP PFIND ;path search from Z3LIB +; log in default directory +DLOGIN: + LDA C$DR ;disk in B + MOV B,A + LDA C$U$A ;user in C + MOV C,A ;fall thru to SLOGIN +; log in DU in BC +SLOGIN: + PUSH H ;save regs + PUSH D + PUSH B + MOV A,C ;set user + CALL SET$USR + POP B + MOV A,B ;set disk + CALL SET$DR + POP D ;restore regs + POP H + RET + +; e x i t + +; return to ccp + +; +; Entry point for VFILER exit +; +OS$CCP: + CALL SHPOP ;clear shell stack +; +; Entry point for command line exec +; +OS$CCP1: + LDA O$USR ;get and set original.. + CALL SET$USR ;..user area and.. + LXI D,TBUF ;..tidy up.. + MVI C,SETDMA ;..before going home. + CALL BDOS + + IF WARMBOOT + JMP OS$BASE + ENDIF ;warmboot + + IF NOT WARMBOOT + LHLD STACK ;put pointer.. + SPHL ;..back to 'sp'. + RET ;return to ccp + NOP ; to try jump to start + NOP + + ENDIF ;not warmboot + +; +; FLOAD loads the files into the buffer, setting up the ring +; Return with NZ if load OK, Z if no files loaded +; +FLOAD: + CALL FRESTOR ;get bytes remaining on drive (decode default) +; +; Set up file name from System File 4 +; Select all files if no entry in System File 4 +; + CALL GETFN2 ;pt to first system file name + LXI D,11*3 ;pt to 4th file name + DAD D + LXI D,FCB+1 ;pt to FCB + MVI B,11 ;11 bytes + CALL MOVEB + LXI H,JOKER ;..treat as '*.*' with 'joker'.. + MVI B,11 ; # of characters to move + LDAX D ;get first char of file name + CPI ' ' ;if space, fill with *.* + CZ MOVEB ;set field to *.* + LDAX D ;get first char of file name + CPI '/' ;if opt, fill with *.* + CZ MOVEB +; +; Build ring with filename positioned in default FCB area +; + MVI C,SETDMA ;initialize dma address.. + LXI D,TBUF ;..to default buffer. + CALL BDOS + XRA A ;clear search 'fcb'.. + STA FCBEXT ;extent byte.. + STA FCBRNO ;..and record number. + LXI D,FCB ;default FCB for search + CMA + STA CANFLG ;make cancel flag true + MVI C,SRCHF ;..of first occurrence. + CALL BDOS + INR A ; 0ffh --> 00h if no file found + BRNZ SETRING ;if found, branch and build ring. + STA CANFLG ;make log-cancel toggle false (0) + CALL ERMSG ;else say none found, fall thru to log. + DB 'No File Found',0 + XRA A ;Set Error Code + RET + +; establish ring (circular list) of filenames + +SETRING: + LHLD RING ;initialize ring pointer + SHLD RINGPOS ;start --> current position of ring + +; put each found name in ring. a-reg --> offset into 'tbuf' name storage + +TO$RING: + DCR A ;un-do 'inr' from above and below + ADD A ;times 32 --> position index + ADD A + ADD A + ADD A + ADD A + ADI TBUF ;add page offset and.. + MOV L,A ;..put address into.. + MVI H,0 ;..hl-pair. + LDA FCB ;get drive/user designator and.. + MOV M,A ;..put into 'fcb' buffer. + XCHG + LHLD RINGPOS ;pointer to current load point in ring + XCHG + MVI B,12 ;move drive designator and name to ring + CALL MOVE + XCHG ;de-pair contains next load point address + MVI M,' ' ;space for potential.. + INX H ;..tagging of files for mass copy. + SHLD RINGPOS ;store and search.. + MVI C,SRCHN ;..for next occurrence. + LXI D,FCB ;filename address field + CALL BDOS + INR A ;if all done, 0ffh --> 00h. + BRNZ TO$RING ;if not, put next name into ring. +; +; All filenames in ring -- setup ring size and copy-buffer start point +; + LHLD RINGPOS ;next load point of ring is start of buffer + SHLD RINGEND ;set ring end.. + SHLD BUFSTART ;..and copy-buffer start. + PUSH H + LHLD RING + LXI D,13 ;compare 'ringend' (tab base+13) + DAD D + XCHG + POP H + CALL CMPDEHL + BRNZ SORT ;sort if more than one file in ring + XRA A ;set NZ for Return + DCR A + RET +; +; Sort ring of filenames +; +SORT: + LHLD RING ;initialize 'i' sort variable and.. + SHLD RINGI + LXI D,13 ;..also 'j' variable. + DAD D + SHLD RINGJ +SORTLP: + LHLD RINGJ ;compare names 'i & j' + XCHG + LHLD RINGI + PUSH H ;save position pointers.. + PUSH D ;..for potential swap. + LDA ALPHA ;check for type of alphabetization + ORA A ;if Zero, alpha by type and name + JZ SORTTN + +; sort by file name and type + MVI B,12 ; # of characters to compare + CALL CMPSTR ;do comparison + BR NOCMP ;final test + +; sort by file type and name +SORTTN: + PUSH H ;save ptrs + PUSH D + LXI B,9 ;pt to type + DAD B + XCHG + DAD B + XCHG + MVI B,3 ;3 chars in file type + CALL CMPSTR ;compare type + POP D ;get ptrs + POP H + BRNZ NOCMP ;final test + PUSH H + PUSH D + MVI B,8 ;8 chars in file name + INX H ;pt to first + INX D + CALL CMPSTR ;compare name + POP D ;get ptrs + POP H + BRNZ NOCMP ;final test + LDAX D ;final compare and fall thru + CMP M + +; final test for swapping purposes +NOCMP: + POP D + POP H + MVI B,13 + BRNC NOSWAP +; +; Swap if 'j' string larger than 'i' +; +SWAP: + MOV C,M ;get character from one string.. + LDAX D ;..and one from other string. + MOV M,A ;second into first + MOV A,C ;first into second + STAX D + INX H ;bump swap pointers + INX D + BJNZ SWAP +NOSWAP: + LHLD RINGJ ;increment 'j' pointer + LXI D,13 + DAD D + SHLD RINGJ + XCHG ;see if end of 'j' loop + LHLD RINGEND + CALL CMPDEHL + JNZ SORTLP ;no, so more 'j' looping. + LHLD RINGI ;bump 'i' pointer + LXI D,13 + DAD D + SHLD RINGI + DAD D ;set start over 'j' pointer + SHLD RINGJ + XCHG ;see if end of 'i' loop + LHLD RINGEND + CALL CMPDEHL + JNZ SORTLP ;must be more 'i' loop to do +; +; Sort done -- initialize tables for fast crc calculations +; + CALL INITCRC +; +; Calculate buffer maximum available record capacity +; +B$SIZE: + LXI B,0 ;count records + LHLD BDOS+1 ;get 'bdos' entry (fbase) + + IF NOT WARMBOOT + LXI D,-(CCPLEN) + DAD D + ENDIF ;not warmboot + + DCX H + XCHG ;de-pair --> highest address of buffer + LHLD BUFSTART ;start address of buffer (end of ring list) +B$SIZE2: + INX B ;increase record count by one + PUSH D + LXI D,128 ; 128-byte record + DAD D ;buffer address + record size + POP D + CALL CMPDEHL ;compare for all done + BRNC B$SIZE2 ;more will fit? + DCX B ;set maximum record count less one + MOV A,B ;memory available for copy? + ORA C + BRNZ B$SIZE3 ;yes, buffer memory space available. + CALL ERMSG + DB 'No Room',0 + XRA A ;Error code + RET +B$SIZE3: + MOV L,C ;store.. + MOV H,B ;..maximum.. + SHLD REC$MAX ;..record count. + XRA A ;return NZ for OK + DCR A + RET +; +; left to right compare of two strings (de-pair points to 'a' string; +; hl-pair, to 'b'; b-reg contains string length.) +; +CMPSTR: + LDAX D ;get an 'a' string character and.. + CMP M ;..check against 'b' string character. + RNZ ;if not equal, set flag. + INX H ;bump compare.. + INX D ;..pointers and.. + DCR B ; (if compare, set as equal.) + BRNZ CMPSTR ;..do next character. + RET +; +; COMMAND: MACRO (0-9) +; Process macro command +; +CMACRO: + PUSH PSW ;save digit + LXI H,MACFCB ;set up name of macro file + LXI D,S$FCB + PUSH D + MVI B,12 ;12 chars + CALL MOVE + XCHG + CALL INITFCB ;init FCB + POP D ;pt to FCB + CALL FFIND ;search along path for file + BRNZ CMFOUND ;file found + POP PSW ;clear stack + POP D ;clear ret address + CALL ERMSG + DB 'File ',0 + LXI H,MACFCB+1 + CALL PRFN ;print file name + CALL VPRINT + DB ' NOT Found',0 + JMP LOOP +; found macro file +CMFOUND: + CALL SLOGIN ;log in + CALL FI0$CLOSE ; CLOSE FILE IF ALREADY OPEN + LXI D,S$FCB ;pt to FCB + CALL FI0$OPEN ;open for byte-oriented input + POP PSW ;get command + MOV C,A ;... in C +; new line +CMFL1: + CALL F0$GET ;get first char of line + JNZ CMFLERR ;EOF encountered + CMP C ;match? + BRZ CMFL3 +; skip out line +CMFL2: + CALL F0$GET ;skip out line + JNZ CMFLERR + CPI LF ;EOL? + BRNZ CMFL2 + BR CMFL1 +; found command +CMFL3: + MVI A,MNOTE ;macro note? + CMP C + JZ CMFLNOTE + PUSH D + LHLD CRCTBL ;buffer for command line + LXI D,256 ;+256 + DAD D + POP D +; skip leading blanks in command line +CMFL4: + CALL F0$GET ;get next char + BRNZ CMFL6 ;mark end of buffer and go + CPI ' ' ;skip leading blanks + BRZ CMFL4 +; load command line into buffer +CMFL5: + ANI 7FH ;mask char + CPI CR ;EOL? + BRZ CMFL6 + CPI CTRLZ ;EOF? + BRZ CMFL6 + CPI FPESC ;file pted to? + JZ CMFLIF + CPI UIN1 ;user input? + BRZ CMFL5A + CPI UIN2 + BRZ CMFL5A +CMFL50: + MOV M,A ;store char + INX H ;pt to next +CMFL51: + CALL F0$GET ;get next char + BRZ CMFL5 + BR CMFL6 + +; print prompt to user and get input +CMFL5A: + PUSH H ;save buffer ptr + CALL CPRMPT ;at command prompt line + DB 0 +CMFL5B: + CALL F0$GET ;get next char + BRNZ CMFL5B1 + ANI 7FH ;mask + CPI UIN1 ;end of prompt? + BRZ CMFL5C + CPI UIN2 + BRZ CMFL5C + CPI CR ;end of prompt? + BRZ CMFL5C + CPI CTRLZ ;eof? + BRZ CMFL5C + CALL COUT ;send char + BR CMFL5B +CMFL5B1: + MVI A,CTRLZ ;eof +CMFL5C: + PUSH PSW ;save offending char + LHLD BUFSTART ;pt to buffer + MVI M,128 ;128 char in line + INX H ;set no chars + MVI M,0 + DCX H ;pt to count + XCHG + MVI C,RDBUF ;get line from user + CALL BDOS + LHLD BUFSTART + INX H ;pt to count + MOV A,M ;get count + INX H ;pt to first char + PUSH H ;save ptr + ADD L + MOV L,A + MOV A,H + ACI 0 + MOV H,A ;HL pts to after last char + MVI M,0 ;store ending zero + POP H ;HL pts to first char of line + POP PSW ;get char + POP D ;DE pts to next char in buffer + MOV B,A ;char in B +CMFL5D: + MOV A,M ;copy chars + ORA A ;zero=done + BRZ CMFL5E + STAX D ;put char + INX H ;pt to next + INX D + BR CMFL5D +CMFL5E: + XCHG ;HL pts to next char in buffer + MOV A,B ;check offending char + CPI UIN1 ;user input? + BRZ CMFL51 + CPI UIN2 + BRNZ CMFL5 + BR CMFL51 +; complete buffer and test for content +CMFL6: + MVI M,0 ;store ending 0 + PUSH D + LHLD CRCTBL ;pt to first char in line + LXI D,256 + DAD D + POP D + MOV A,M ;get first char + ORA A ;empty? + BRNZ CMFL7 +; error return +CMFLERR: + PUSH B + CALL DLOGIN ;return home + POP B + MOV A,C ;invalid command + RET +; try to chain +CMFL7: + PUSH H ;save ptr + CALL DLOGIN ;return home + POP H + CALL CHAIN ;chain to command line pted to by HL + JMP LOOP + +; print documentation built into the macro file +CMFLNOTE: + CALL VCLS ;new screen + MVI C,0 ;set tab counter +CMFLN1: + CALL F0$GET ;get next char + BRNZ CMFLN4 ;done + ANI 7FH ;mask + CPI CTRLZ ;eof=done + BRZ CMFLN4 + CPI TAB ;tab process + BRZ CMFLN2 + CALL COUT ;print char + CPI CR ;new line? + BRZ CMFLN3 + INR C ;new pos + CPI LF + BRNZ CMFLN1 + DCR C ;back up position count + BR CMFLN1 +CMFLN2: + MVI A,' ' ;space over for tab + CALL COUT + INR C ;incr position + MOV A,C ;done? + ANI 7 ;every 8 + BRNZ CMFLN2 + BR CMFLN1 +CMFLN3: + MVI C,0 ;bol for CR + BR CMFLN1 +CMFLN4: + CALL DLOGIN ; RETURN HOME + LHLD RINGPOS ;print current file + INX H + CALL PRFN + CALL VPRINT + DB ' Enter Digit or RETURN - ',0 + CALL DKEYIN + POP D ;get ret address + CPI '0' ;in range? + JC RUNSH4 + CPI '9'+1 ;in range? + JNC RUNSH4 + PUSH D ;replace ret address + JMP CMACRO + +; insert file pted to (% prefix command) +CMFLIF: + CALL F0$GET ;get next char + JNZ CMFL6 + CPI FPESC ;doubled? + JZ CMFL50 + LXI D,CMFL51 ;return address + PUSH D ;... on stack + ANI 5FH ;capitalize + CPI FPFILE ;file only? + BRZ CMFLIF1 + CPI FPDISK ;disk only? + BRZ CMFLIF2 + CPI FPUSER ;user only? + BRZ CMFLIF3 + CALL CMFLIF2 ;Disk + CALL CMFLIF3 ;User + MVI M,':' ;separator + INX H ;fall thru to file name +CMFLIF1: + XCHG ;save ptr to next + LHLD RINGPOS ;pt to current file + INX H + MVI B,8 ;8 chars in filename + CALL CMFL5X + MVI A,'.' ;put dot + STAX D + INX D + MVI B,3 ;3 chars max + CALL CMFL5X + XCHG ;HL pts to next + RET +CMFLIF2: + LDA C$DR ;store disk + ADI 'A' + MOV M,A + INX H ;pt to next + RET +CMFLIF3: + LDA C$U$A ;user + CPI 10 ;less than 10? + BRC CMFLIF32 + MVI B,'0' ;compute 10's +CMFLIF30: + SUI 10 ;subtract 10's + BRC CMFLIF31 + INR B + BR CMFLIF30 +CMFLIF31: + ADI 10 + MOV M,B ;store 10's + INX H +CMFLIF32: + ADI '0' ;store 1's + MOV M,A + INX H + RET +CMFL5X: + MOV A,M ;get char + CPI ' ' + BRZ CMFL5X1 + STAX D ;put char + INX H ;pt to next + INX D + BJNZ CMFL5X + RET +CMFL5X1: + INX H ;advance + BJNZ CMFL5X1 + RET +; +; Process command from table +; +CTPROC: + MOV B,A ;command in B + LXI H,CTABLE ;pt to table + MOV A,M ;any cursor commands? + ORA A + JNZ CTPR1 + LXI H,CTAB1 +; +; Command table scanner +; HL = Table +; B = Command Letter +; +CTPR1: + MOV A,M ;get table command char + ORA A ;end of table? + RZ ;done if so + CMP B ;match? + BRZ CTPR2 + INX H ;skip to next entry + INX H + INX H + BR CTPR1 +CTPR2: + INX H ;pt to address + MOV A,M ;get low + INX H + MOV H,M ;get high + MOV L,A + XTHL ;address on stack + RET ;"jump" to routine + +; Command Table +CTABLE: + DB 0 ;user cursor positioning + DW UP + DB 0 + DW DOWN + DB 0 + DW FORWARD + DB 0 + DW REVERSE +CTAB1: + DB CTRLC ;if exit, then to opsys + DW OS$CCP + DB 'X' ;alternate exit + DW OS$CCP + DB CTRLR ;screen refresh? + DW RUNSH4 + DB CTRLE ;system cursor positioning + DW UP + DB CTRLX + DW DOWN + DB CTRLD + DW FORWARD + DB CTRLS + DW REVERSE + + DB '.' ;alternate commands + DW FORWARD + DB '>' + DW FORWARD + DB ',' + DW REVERSE + DB '<' + DW REVERSE + + DB CR ;nop + DW LOOP + DB '+' ;jump forward + DW JUMPF + DB CTRLF ;jump forward + DW JUMPF + DB '-' ;jump backward + DW JUMPB + DB CTRLA ;jump backward + DW JUMPB + DB ' ' ;go forward + DW FORWARD + DB BS ;back up? + DW REVERSE + DB 'A' ;alphabetize? + DW ALPHASW + DB 'C' ;copy a file? + DW FCOPY + DB 'D' ;delete a file? + DW FDEL + DB 'F' ;show file size? + DW FSIZE + DB 'G' ;group operation? + DW GROUP$OP + DB 'H' ;external help? + DW EXTHELP + DB 'J' ;jump to a file? + DW GOTO + DB DIRCMD ;log-in another drive? + DW RUNSH3 + DB 'P' ;output file to 'list' device? +; DW LSTFILE ; + DW SPRINT ; + DB 'Q' ;screen refresh? + DW RUNSH4 + DB 'R' ;rename? + DW RENAME + DB 'S' ;free bytes on.. + DW DSTAT ;..requested drive? + DB 'T' ;if tag, put TAGCH in.. + DW TAG ;..front of cursor. + DB 'U' ;remove TAGCH from.. + DW UNTAG ;..in front of cursor? + DB 'V' ; 'view' file at console? + DW VIEW + DB 'Z' ;run ZCPR3 command + DW RUNZCPR3 +; + IF BIHELP ;built-in help? + DB '?' ;help + DW HELP + DB '/' ;help also + DW HELP + ELSE + DB '?' ;help + DW EXTHELP + DB '/' ;help also + DW EXTHELP + ENDIF ;BIHELP +; + DB 0 ;end of table + +; h e l p (menu) + + IF BIHELP ;built-in Help? +HELPMSG: + CALL VPRINT + DB CR,LF,CR,LF + DB ' ' + DB '-- Tagging Commands -- --------- File Operat' + DB 'ions ----------',CR,LF + DB ' ' + DB ' T - ',DIM,'Tag File',BRIGHT + DB ' C - ',DIM,'Copy File',BRIGHT,' ' + DB 'D - ',DIM,'Delete File',BRIGHT,CR,LF + DB ' ' + DB ' U - ',DIM,'Untag File',BRIGHT + DB ' F - ',DIM,'File Size',BRIGHT,' ' + DB 'R - ',DIM,'Rename File',BRIGHT,CR,LF + DB ' ' + DB ' G - ',DIM,'Group ' + DB 'Copy/Delete/FSize/Tag/Untag',BRIGHT,CR,LF ; + DB ' ' + DB ' ',DIM,'Group ' ; + DB 'Print/View',BRIGHT,CR,LF,CR,LF ; + DB ' ' + DB '-- File Print & View -- --- User Functions ---',CR,LF + DB ' -- Cursor -- ' + DB 'P - ',DIM,'Print',BRIGHT + DB ' V - ',DIM,'View',BRIGHT + DB ' 0-9 - ',DIM,'Execute',BRIGHT,' ',MNOTE,' - ',DIM,'Help' + DB BRIGHT,CR,LF + DB ' ^E ' + DB CR,LF + DB ' ^ ' + DB '-- Movement Commands -- ---- Miscellaneous ----',CR,LF + DB ' ^S <-+-> ^D ' + DB ' - ',DIM,'File Forward' + DB BRIGHT,' A - ',DIM,'Toggle Alpha Sort',BRIGHT,CR,LF + DB ' v ' + DB ' - ',DIM,'File Backward' + DB BRIGHT,' H - ',DIM,'Help File',BRIGHT,CR,LF + DB ' ^X ' + DB ' + - ',DIM,'Screen Forward',BRIGHT + DB ' ' + + DB DIRCMD ;changes to reflect command choice + + DB ' - ',DIM,'Log DIR and/or Mask',BRIGHT,CR,LF + DB ' ' + DB ' - - ',DIM,'Screen Backward',BRIGHT + DB ' S - ',DIM,'Disk Status',BRIGHT,CR,LF + DB ' -- Screen -- ' + DB ' J - ',DIM,'Jump to a File',BRIGHT + DB ' Z - ',DIM,'ZCPR3 Command',BRIGHT,CR,LF + DB ' ^A ',DIM,'Backward',BRIGHT,' ' ; + DB ' Q - ',DIM,'Refresh Screen',BRIGHT + DB ' ^C - ',DIM,'Exit',BRIGHT,CR,LF + DB ' ^F ',DIM,'Forward',BRIGHT,' ' ; + + IF BIHELP ; + DB ' ' ; + DB '? or / - ',DIM,'Toggle Help Screen',BRIGHT ; + ENDIF ; + + DB 0 + RET +HELP: + LDA HELPDISP ;toggle flag + CMA + STA HELPDISP + JMP RUNSH4 ;refresh screen and restart + ENDIF ;BIHELP +; +; COMMAND: H +; +EXTHELP: + CALL CPRMPT + DB 'Read Help File (Y/N)? ',0 + CALL CIN + CALL CAPS + CPI 'Y' + JNZ LOOPFN + CALL ERMSG + DB DIM,'Chaining to Help File ...',BRIGHT,0 + LXI H,MOREHELP ;run HELP Command + CALL CHAIN ;chain to it + JMP LOOPFN + +; +; COMMAND: A +; +; Toggle alphabetize switch and reload files +; +ALPHASW: + LDA ALPHA ;toggle flag + CMA + STA ALPHA + CALL CPRMPT ;tell user what is happening + DB 'Sorting by File ',0 + LDA ALPHA ;get flag + ORA A ;check it + BRZ ASWTN + CALL VPRINT + DB 'Name and Type',0 + JMP RUNSH2 +ASWTN: + CALL VPRINT + DB 'Type and Name',0 + JMP RUNSH2 ;reload files + +; +; COMMAND: Z +; +; Execute ZCPR3 command line +; +RUNZCPR3: + CALL ERMSG ;position at error message line + DB 0 + LXI H,H$DR ;pt to Home Drive (followed by Home User) + CALL PRDU ;print DU + CALL VPRINT ;print prompt + DB '> ',0 + PUSH D + LHLD CRCTBL ;use last half of CRC Table + LXI D,256 + DAD D + POP D + MVI M,126 ;store length of line + INX H + MVI M,0 ;store count + DCX H ;pt to beginning + XCHG ;DE pts to buffer + PUSH D + MVI C,RDBUF ;Read Line from User + CALL BDOS + POP H + INX H ;pt to char count + MOV E,M + INX H ;pt to first char + MVI D,0 ;set no high-order offset + PUSH H ;save current ptr for later + DAD D + MVI M,0 ;store ending zero + POP H ;pt to first char of command line + MOV A,M ;abort if no first char + ORA A + JZ LOOP + CALL CHAIN ;chain to it + JMP LOOPFN ;continue + +; chain to command pted to by HL ending in zero + +CHAIN: + CALL PUTCL ;store command line + BRNZ CHAIN1 + CALL ERMSG + DB 'CL Err',0 + RET +CHAIN1: + MVI B,0 ;set shell message 0 + MVI A,80H ;enable wait + CALL PUTSHM + CALL CHAIN2 ; + JMP OS$CCP1 ;run command line - moved + + + ;made a subroutine +CHAIN2: + LDA C$DR ;get current disk + ADI 'A' ;convert to ASCII + STA FILE$D ;store in proper place + LDA C$U$A ;get current user + LXI H,FILE$U ;store user number + MVI C,'0' ;set char +CHAIN3: + SUI 10 ;convert to ASCII + BRC CHAIN4 + INR C ;increment 10's char + BR CHAIN3 +CHAIN4: + MOV M,C ;store 10's digit char + INX H ;pt to 1's digit + ADI 10+'0' ;add back for 1's digit + MOV M,A ;store 1's digit char + CALL GETSH2 ;pt to shell buffer + LXI D,8 ;skip 8 chars (VFILER Name) + DAD D + LXI D,FILE$D ;place DU + XCHG + MVI B,5 ;store 5 chars (duu:0) + CALL MOVEB + RET ; + +; +; COMMAND: G +; +; Group operation +; +GROUP$OP: + CALL CPRMPT + DB 'Group Cmd (Copy/View/Print/Delete/File Sizes/' ; + DB 'Tag/Untag)? ',0 ; + CALL KEYIN ;get response + MOV B,A ;command in B + LXI H,GTABLE ;pt to table + CALL CTPR1 ;process command + JMP LOOP ;resume if not found +; +; Group Command Table +; +GTABLE: + DB 'C' + DW MASS$COPY + DB 'D' + DW MASS$DEL + DB 'P' ; + DW MASS$PRINT ; + DB 'V' ; + DW MASS$VIEW ; + DB 'F' + DW MASS$FSIZE + DB 'T' + DW MASS$TAG + DB 'U' + DW MASS$UNTAG + DB 0 ;end of table + +; +; COMMAND: GU +; +MASS$UNTAG: + MVI B,' ' ;untag char +; +; Common Entry Point for Mass Untag/Tag - B = Untag/Tag Char +; +MUTLOOP: + LHLD RINGPOS ;move to tag + LXI D,12 + DAD D + MOV M,B ;set tag byte + INX H ;pt to next + SHLD RINGPOS + XCHG ;done? + LHLD LOCEND + CALL CMPDEHL + BRNZ MUTLOOP + LXI H,CURHOME ;reset cursor + SHLD CURAT + LHLD LOCBEG ;set ring position + JMP JFW0 ;reset screen from LOCBEG + +; +; COMMAND: GT +; +MASS$TAG: + MVI B,TAGCH ;tag char + BR MUTLOOP ;do work + +; +; COMMAND: U +; +UNTAG: + MVI B,' ' ;set tag byte +; +; Common Entry Point for Untag/Tag - B = Untag/Tag Char +; +UT: + LHLD RINGPOS ;move back one.. + LXI D,12 ;..character position.. + DAD D ;..and check tagging status. + MOV M,B ;if file previously tagged, remove.. + CALL REFFN ;refresh file name + JMP FORWARD + +; +; COMMAND: T +; +TAG: + MVI B,TAGCH ;tag char + BR UT ;do tag + +; +; Refresh file name with new tag +; +REFFN: + CALL CLRCUR ;clear cursor + MVI A,' ' ;one more space + CALL COUT + LHLD RINGPOS ;reprint file name +; INX H +; CALL PRFN +; MOV A,M ;print tag +; JMP COUT + CALL HILITFN ; brighten + RET ; + +; +; COMMAND: GF +; +MASS$FSIZE: + CALL WORKMSG ;print 'Working' msg + LXI H,0 ;zero total + SHLD TAG$TOT + LHLD RINGPOS ;save ring position + SHLD SRINGPOS + LHLD RING ;set new ring position + SHLD RINGPOS +; +; Main Loop to Compute File Sizes +; +MASS$FS: + LHLD RINGEND ;at end of ring? + XCHG + LHLD RINGPOS + CALL CMPDEHL ;same if so + BRZ MASS$FS2 + LXI D,12 ;pt to tag + DAD D + MOV A,M ;get tag + INX H ;pt to next file + CPI TAGCH ;tagged? + BRNZ MASS$FS1 ;skip if not tagged +; +; Compute Size of Tagged File +; + PUSH H ;save ptr to next file + CALL SIZER ;compute file size + XCHG ;size in DE + LHLD TAG$TOT ;get total + DAD D + SHLD TAG$TOT ;new total + POP H ;get ptr to next file +MASS$FS1: + SHLD RINGPOS ;set ptr to next file + BR MASS$FS +; +; File Size Accumulation Done - Print Result +; +MASS$FS2: + LHLD SRINGPOS ;restore ring position + SHLD RINGPOS + CALL FSNOTE ;print file size message + CALL VPRINT ;print specific + DB 'Tagged Files is ',0 + LHLD TAG$TOT ;get total + BR FSIZE1 ;print size in HL and return + +; +; COMMAND: F +; +; determine and display file size in kilobytes -- round up to next disk +; allocation block -- accumulate tagged file summation +; +FSIZE: + CALL SIZER ;compute file size of current file + PUSH H ;save value + CALL FSNOTE ;print file size message + LHLD RINGPOS ;print file name + INX H + CALL PRFN + CALL VPRINT ;print trailer + DB ' is ',0 + POP H ;get size +; +; Print file size in HL and exit to screen +; +FSIZE1: + CALL PHLFDC ;print value in HL as floating + MVI A,'K' ;print suffix + CALL COUT + JMP LOOPFN ;resume + +; +; Compute File Size at RINGPOS +; Return Size in HL +; +SIZER: + CALL RINGFCB ;move name to 's$fcb' +; +; Determine file record count and save in RCNT +; + MVI C,COMPSZ + LXI D,S$FCB + CALL BDOS + LHLD S$FCB+33 + SHLD RCNT ;save record count and.. + LXI H,0 + SHLD S$FCB+33 ;..reset opsys +; +; Round up to next disk allocation block +; + LDA B$MASK ;sectors/block - 1 + PUSH PSW ;save 'blm' + MOV L,A + XCHG + LHLD RCNT ;..use here. + DAD D ;round up to next block + MVI B,3+1 ;convert from.. + CALL SHIFTLP ;..records to kilobytes. + POP PSW ;retrieve 'blm' + RRC ;convert.. + RRC ;..to.. + RRC ;..kilobytes/block. + ANI 1FH + CMA ;finish rounding + ANA L + MOV L,A ;hl-pair contains # of kilobytes + RET + +; +; COMMAND: - (Previous Screen) +; +JUMPB: + LXI H,CURHOME ;set cursor home + SHLD CURAT + LHLD RING ;at front? + XCHG + LHLD LOCBEG + CALL CMPDEHL + BRZ JUMPBW ;back up and wrap around + SHLD LOCEND ;set new end + LXI D,-EPS*13 ;back up + DAD D + SHLD LOCBEG ;new beginning + SHLD RINGPOS ;new position + JMP RUNSH4 +JUMPBW: + LHLD LOCBEG ;at first screen? + XCHG + LHLD RING ;pt to first element of ring + CALL CMPDEHL + BRZ JBW0 ;advance to end + LXI H,-EPS*13 ;back up + DAD D ;first element of new local ring + BR JFW0 +JBW0: + LXI D,EPS*13 ;pt to next screen + DAD D + XCHG + LHLD RINGEND + CALL CMPDEHL + XCHG + BRZ JBW1 + BRC JBW0 +JBW1: + LXI D,-EPS*13 + DAD D ;pt to first element of new local ring + BR JFW0 +; +; COMMAND: + (Next Screen) +; +JUMPF: + LXI H,CURHOME ;set cursor to home + SHLD CURAT + LHLD LOCEND ;see if Local End <= Ring End + XCHG + LHLD RINGEND + CALL CMPDEHL + BRZ CMDLOOP + LHLD LOCEND ;new screen starting at LOCEND + BR JFW0 + +; +; Reset to Beginning of RING and Resume Command Looping +; +CMDLOOP: + CALL SETSCR ;reset all screen pointers +CMDLRET: + JMP RUNSH4 +; +; Reset RING Position to HL +; +JFW0: + CALL SETSCR1 ;reset RINGPOS on ... + BR CMDLRET +; +; Reset Local Ring to HL +; +JFW0A: + CALL SETSCR2 ;reset LOCBEG on ... + BR CMDLRET + +; +; COMMAND: ' ', Left-Arrow +; +FORWARD: + CALL CLRCUR ;clear cursor + CALL FOR0 ;position on screen and in ring + CALL SETCUR ;set cursor + JMP LOOPFN +; advance routine +FOR0: + LHLD RINGPOS ;at end of loop yet? + LXI D,13 ;i.e., will we be at end of loop? + DAD D + XCHG + LHLD LOCEND + CALL CMPDEHL ;compare 'present' to 'end' + BRNZ FORW ;to next print position + CALL CUR$FIRST ;position cursor + LHLD LOCBEG ;set position pointer to beginning and.. + SHLD RINGPOS + RET +FORW: + LHLD RINGPOS ;advance in ring + LXI D,13 + DAD D + SHLD RINGPOS ;new position + CALL CUR$NEXT ;position cursor + RET + +; +; COMMAND: BS, Right-Arrow +; +REVERSE: + CALL CLRCUR ;clear cursor + CALL REV0 ;position on screen and in ring + CALL SETCUR ;set cursor + JMP LOOPFN +; Back Up Routine +REV0: + LHLD LOCBEG + XCHG + LHLD RINGPOS ;see if at beginning of ring + CALL CMPDEHL + BRNZ REV1 ;skip position pointer reset if not.. + CALL CUR$LAST ;end of local ring + LHLD LOCEND ;set to end +1 to backup to end + LXI D,-13 + DAD D + SHLD RINGPOS + RET +REV1: + CALL CUR$BACK ;back up 1 +REV2: + LHLD RINGPOS + LXI D,-13 ;one ring position.. + DAD D ;..backwards. + SHLD RINGPOS + RET + +; +; COMMAND: Up-Arrow +; +UP: + CALL CLRCUR ;clear cursor + LHLD RINGPOS ;see if wrap around + LXI D,-13*4 ;4 entries + DAD D + XCHG + LHLD LOCBEG ;beginning of local screen + CALL CMPDEHL + BRC UP2 ;wrap around + MVI B,4 ;back up 4 entries +UP1: + PUSH B ;save count + CALL REV0 ;back up in ring and on screen (no print) + POP B ;get count + BJNZ UP1 + BR DOWN1A +UP2: + LHLD RINGPOS ;advance to beyond end + LXI D,13*4 + DAD D + XCHG + LHLD LOCEND ;compare to local end + XCHG + CALL CMPDEHL + BRZ DOWN1A ;at end, so too far + BRC DOWN1A ;beyond end, so back up + SHLD RINGPOS ;new ring position + LHLD CURAT ;advance cursor + INR H ;next line + SHLD CURAT + BR UP2 + +; +; COMMAND: Down-Arrow +; +DOWN: + CALL CLRCUR ;clear cursor + LHLD RINGPOS ;see if wrap around + LXI D,13*4 ;4 entries + DAD D + XCHG + LHLD LOCEND ;end of local screen + XCHG + CALL CMPDEHL + BRZ DOWN2 ;wrap around + BRC DOWN2 ;wrap around + MVI B,4 ;forward 4 entries +DOWN1: + PUSH B ;save count + CALL FOR0 ;advance in ring and on screen (no print) + POP B ;get count + BJNZ DOWN1 +DOWN1A: + CALL SETCUR ;set cursor + JMP LOOPFN +DOWN2: + LHLD CURAT ;preserve column + MOV B,L ;column number in B + LXI H,CURHOME ;home position + SHLD CURAT ;set new position + LHLD LOCBEG ;beginning of local ring + SHLD RINGPOS ;new ring position +DOWN3: + LHLD CURAT ;check for at top of column + MOV A,L ;get col + CMP B ;there? + BRZ DOWN1A + LHLD RINGPOS ;advance in ring + LXI D,13 ;13 bytes/entry + DAD D + SHLD RINGPOS + LHLD CURAT ;get cursor position + LXI D,19 ;advance 19 bytes/screen entry + DAD D + SHLD CURAT + BR DOWN3 + +; +; COMMAND: S +; +; Determine remaining storage on requested disk +; +DSTAT: + CALL CPRMPT + DB 'Status of Disk (Letter): ',0 + CALL KEYIN ;get char + PUSH PSW + CALL CRLF + POP PSW + SUI 'A' ;convert to number + JC LOOP + MOV B,A ;... in B + LDA MAXDR ;compare to max + SUI 'A' + CMP B + JC LOOPFN + MOV A,B ;get disk + STA R$DR ;requested drive + CALL RESET ;..login as current. + CALL FRESTOR ;determine free space remaining + CALL PRINT$FRE ;print value + LDA C$DR ;login original as.. + CALL SET$DR ;..current drive. + JMP LOOPFN + +; +; COMMAND: GD +; +MASS$DEL: + MOV A,B ; recover the opcode + STA MASSOP ; need it later + CALL CPRMPT + DB 'Mass Delete (Y/N/V=Verify)? ',0 + CALL KEYIN ;get response + CPI 'Y' + BRZ MD1 + CPI 'V' + JNZ LOOP ;return to position +MD1: + STA MDFLG ;set flag +; STA MASSOP + JMP MASS$RUN + +; +; COMMAND: D +; +FDEL: + XRA A ;set no mass operation + STA MFLAG + CALL DELETE ;delete file +; +; Was Deletion Done? Abort if Not +; + LDA DELCODE ;0=not done + ORA A + JZ LOOPFN ;abort if not +; +; Reset Local Display +; + LHLD LOCEND ;move in end + LXI D,-13 + DAD D + SHLD LOCEND + XCHG + LHLD RINGPOS ;position beyond end of ring? + CALL CMPDEHL + BRNZ FDEL1 +; +; Cursor Beyond End of Display +; + CALL CUR$BACK ;back up cursor + LHLD LOCEND ;reset position + LXI D,-13 + DAD D + SHLD RINGPOS +FDEL1: + LHLD LOCEND ;get local end + XCHG ;... in DE + LHLD LOCBEG ;erased all local files? + CALL CMPDEHL + JZ CMDLOOP ;reset + JMP JFW0A ;rescreen from LOCBEG + +; +; Delete filename at RINGPOS +; +DELETE: + XRA A + STA DELCODE ;set deletion not done + CALL RINGFCB ;get file name + LDA MFLAG ;mass operation? + ORA A ;0=no + BRZ DEL1A ;do delete with message +; +; Test for Verify on Mass Delete +; + LDA MDFLG ;verify? + CPI 'V' + BRNZ DEL1 ;delete without verify +; +; Verify and Delete only if Approved +; + CALL CPRMPT + DB 'Delete ',0 + CALL PRFNS ;print file name in S$FCB + CALL VPRINT + DB ' (Y/N)? ',0 + CALL KEYIN + CPI 'Y' + RNZ ;abort if not approved +; +; Delete File (Mass Operation) +; +DEL1: + LDA MDFLG ;mass operation - verify on? + CPI 'V' + BRZ DEL2 +DEL1A: CALL ERMSG ;print information for mass del w/o verify + DB 'Deleting File ',0 + CALL PRFNS +; +; Delete File in S$FCB +; +DEL2: + LXI H,S$FCB ;set file to R/W + CALL ATTRIB + RZ ;abort + LXI D,S$FCB ;point at delete 'fcb' + MVI C,ERASE ;erase function + CALL BDOS + INR A + BRNZ DELCL ;close up erased position +FNF$MSG: + CALL FNF1 ;show error message + JMP LOOPFN + +; +; Close up erased position +; +DELCL: + MVI A,0FFH + STA DELCODE ;set deletion done + LHLD RINGPOS ;prepare move up pointers + PUSH H + LXI D,13 ;13 bytes/entry + DAD D ;de-pair = 'to' location + POP D ;hl-pair = 'from' location +; +; Move 13-byte ring entries from HL to DE +; +MOVUP: + XCHG ;HL=dest + PUSH H ;check if at end + LHLD RINGEND ;get old end pointer + CALL CMPDEHL ;check against current end location + POP H + XCHG ;DE=dest + BRZ MOVDONE ;must be at end of ring + MVI B,13 ;one name size + CALL MOVE ;move one name up + BR MOVUP ;go check end parameters +; +; Move Complete +; +MOVDONE: + LHLD RING ;see if ring is empty + XCHG + SHLD RINGEND ;set new ring end if all moved + CALL CMPDEHL ;..(listend --> listpos --> ring) + RNZ + CALL ERMSG + DB 'List Empty',0 + JMP RUNSH3 ;go to drive/user area with files + +; +; COMMAND: R +; +; Set-up to rename file at cursor position -- scan keyboard buffer and +; move filename to destination FCB (DFCB) +; +RENAME: + LHLD RINGPOS ;move name from ring to rename 'fcb' + LXI D,D$FCB ;place to move name + MVI B,12 ;amount to move + CALL MOVE + CALL CPRMPT ;new name prompt + DB 'Rename File to: ',0 + LXI D,D$FCB+16 ;pt to FCB to fill + CALL FILENAME ;get file name + LXI H,D$FCB+1 ;check for any wild cards -- none permitted + MVI B,11 ;11 bytes +WILDCHK: + MOV A,M ;get char + INX H ;pt to next + CPI '?' ;wild? + BRZ WILDFND + BJNZ WILDCHK + +; copy old file status bit ($r/o or $sys) to new filename + +CPYBITS: + LXI D,D$FCB+1 ;first character of old name.. + LXI H,D$FCB+17 ;..and of new name. + MVI B,11 ; # of bytes with tag bits +CBITS1: + LDAX D ;fetch bit of old name character + ANI 80H ;strip upper bit and.. + MOV C,A ;..save in c-reg. + MVI A,7FH ;mask for character only + ANA M ;put masked character into a-reg + ORA C ;add old bit + MOV M,A ;copy new byte back + INX H ;bump copy pointers + INX D + BJNZ CBITS1 ;DJNZ + +; check if new filename already exists. if so, say so. then go +; to command loop without moving ring position + + LDA D$FCB ;copy new name to source 'fcb' + STA S$FCB + MVI B,11 + LXI H,D$FCB+17 ;copy new name to.. + LXI D,S$FCB+1 ;..source 'fcb' for existence check. + CALL MOVE + LXI H,S$FCB+12 ;clear 'fcb' system.. + CALL INITFCB ;..fields. + LXI D,S$FCB ;search to see if this file exists + MVI C,SRCHF ;search first function + CALL BDOS + INR A ; 0ffh --> 00h if file not found + BRZ RENFILE ;to rename, if duplicate doesn't exists. + CALL ERMSG ;announce the situation + DB 'File Already Exists',0 + JMP COMCAN ;try again? + +; wild char found in file name -- error + +WILDFND: + CALL ERMSG + DB 'AFN NOT Allowed',0 + JMP COMCAN + +; copy new name into ring position + +RENFILE: + ;following not needed with full screen refresh +; LHLD RINGPOS ;get ring position pointer +; INX H ;pt to name +; PUSH H ;save ptr +; XCHG +; LXI H,D$FCB+17 ;point at new name and.. +; MVI B,11 +; CALL MOVE ;..move. +; LHLD CURAT ;get current position on screen +; LXI D,4 ;advance 4 chars +; DAD D +; CALL GOTOXY +; POP H ;get ptr +; CALL PRFN ;print file name +; MOV A,M ;print tag +; CALL COUT + LXI D,D$FCB ;rename 'fcb' location + MVI C,REN ;rename function + CALL BDOS + INR A ; 0ffh --> 00h if rename error +; JNZ LOOP ;if okay, proceed, else.. +; JMP FNF$MSG ;..show no-file msg. + JZ FNF$MSG ;if error, report it + JMP RUNSH2 ;start over + +; get file name from user and process into FCB pted to by DE +FILENAME: + PUSH D ;save ptr + LHLD CMDBUF ;command line location + XCHG + MVI C,RDBUF ;console read-buffer function + CALL BDOS + CALL CONVERT ;capitalize alpha + POP H ;set to null drive + MVI M,0 ;..required by 'bdos'. + INX H + +; initialize new filename field with spaces + + PUSH H ;save start pointer + MVI B,11 ; # of spaces to 'blank' + CALL FILL + POP H + XCHG + LHLD CMDBUF ;put length.. + INX H + MOV C,M ;..in c-reg. + INX H + XCHG ;de-pair --> buffer pointer and hl-pair.. + CALL UNSPACE ;..--> 'fcb' pointer. remove leading spaces. + +; extend buffer to spaces beyond command length + +EXTEND: + PUSH H + MOV L,C ;double-byte remaining length + MVI H,0 + DAD D ;to buffer end +1 + MVI M,' ' ;force illegal character end + POP H + +; start filename scan + +SCAN: + MVI B,8 ; 8 characters in filename +SCAN1: + CALL CKLEGAL ;get and see if legal character + JC COMCAN ;all of command line? + CPI ' ' ;see if end of parameter field + RZ ;rename file + CPI '.' ;at end of filename + BRZ SCAN2 ;process filetype field + CPI '*' ;rest wild? + BRZ SCAN1B + MOV M,A ;put character into destination 'fcb' + INX H + BJNZ SCAN1 + +; entry if eight characters without a 'period' + +SCAN1A: + CALL CKLEGAL ;scan buffer up to period or end + RC ;no extent if not legal + CPI ' ' ;end of parameter field? + RZ + CPI '.' + BRNZ SCAN1A ;do till end or period + BR SCAN2A ;continue at correct place + +; make rest of entry wild + +SCAN1B: + MVI M,'?' ;fill with ?'s + INX H + BJNZ SCAN1B + LDAX D ;get next char + INX D ;pt to after dot + CPI '.' ;must be dot + JNZ COMCAN ;cancel if not + BR SCAN2A + +; build filetype field + +SCAN2: + INX H ;advance ptr to file type field + BJNZ SCAN2 +SCAN2A: + MVI B,3 ;length of filetype field +SCAN3: + CALL CKLEGAL ;get and check character + BRC SCAN4 ;name done if illegal + CPI ' ' ;end of parameter field? + BRZ SCAN4 + CPI '.' ;check if another period + BRZ SCAN4 + CPI '*' ;rest wild? + BRZ SCAN4B + MOV M,A + INX H + BJNZ SCAN3 ;get next character + BR SCAN4A +SCAN4: + INX H ;advance to end of type field + BJNZ SCAN4 +SCAN4A: + CALL INITFCB ;..and zero counter fields. + RET +SCAN4B: + MVI M,'?' ;make wild + INX H + BJNZ SCAN4B + BR SCAN4A ;complete rest + +; +; COMMAND: J +; +GOTO: + CALL CPRMPT + DB 'Jump to Filename: ',0 + LXI D,D$FCB ;pt to FCB + CALL FILENAME ;get file name + LHLD RING ;pt to first element of ring + SHLD RINGPOS ;set position + SHLD LOCBEG ;set local beginning + PUSH H + LHLD CRCTBL ;pt to CRC Table + MVI M,0 ;set local counter + POP H +GOTOL: + CALL GOTOCOMP ;compare + BRZ GOTOF ;we are there + PUSH H + LHLD CRCTBL ;pt to table + INR M + MOV A,M + POP H + CPI EPS + BRNZ GOTOL1 + LHLD CRCTBL ;zero first entry + MVI M,0 + LHLD LOCBEG ;reset local beginning + LXI D,EPS*13 + DAD D + SHLD LOCBEG +GOTOL1: + LHLD RINGPOS ;advance to next entry + LXI D,13 + DAD D + SHLD RINGPOS ;new position + XCHG ;position in DE + LHLD RINGEND ;check for completion + CALL CMPDEHL ;compare current position with end of ring + BRNZ GOTOL + LHLD RING ;pt to first element + SHLD RINGPOS ;set position + CALL FNF1 ;print message + JMP CMDLOOP +GOTOF: + LHLD LOCBEG ;we have local beginning + PUSH H + XCHG ;ring location in DE + LXI H,CURHOME ;set cursor ptr + SHLD CURAT +GOTOF0: + LHLD RINGPOS ;at position? + CALL CMPDEHL + BRZ GOTOF1 + LXI H,13 ;advance location + DAD D + PUSH H + CALL CUR$NEXT ;advance cursor + POP D ;pt to next ring position + BR GOTOF0 +GOTOF1: + POP H ;pt to local ring + JMP JFW0A ;process +GOTOCOMP: + LHLD RINGPOS ;pt to current entry + INX H ;pt to first char of file name + LXI D,D$FCB+1 ;pt to first char of new file + MVI B,11 ;11 bytes +GOTOC1: + LDAX D ;get char + CPI '?' ;match? + BRZ GOTOC2 + CMP M ;match? + RNZ ;no match +GOTOC2: + INX D ;pt to next + INX H + BJNZ GOTOC1 + RET + +; +; COMMAND: V +; +; Type file to console with pagination set to 'lps' -- single-line scroll +; using bar , to cancel, any other key to page screen. +; +VIEW: + CALL VIEWFL ; + JMP RUNSH4 ; + +VIEWFL: ; + CALL VCLS + CALL VPRINT + DB CR,LF,DIM,' Cancels, Turns Up One Line, ' + DB 'Other Keys Page Screen',BRIGHT,CR,LF,LF,0 + MVI A,1 ;initialize.. + STA LPSCNT ;..lines-per-screen counter. + STA VIEWFLG ; 'view' paginate if not zero + MVI A,WRCON ;write console out function + BR CURRENT ;to common i/o processing +; +; COMMAND: P +; +; Send file to logical list device -- any keypress cancels +; +SPRINT: ; +; +; Set Flags for First Time Thru and No Mass Print +; + XRA A ; A=0 + STA FIRST$M ; set for prompt for destination +; +; Do Print +; + CALL LSTFILE ; print file at RINGPOS +; +; Advance to Next File +; + JMP RUNSH4 ; refresh screen and reset stack +; +; +LSTFILE: + LDA FIRST$M ; by-pass prompt. + ORA A ; + BRNZ SKPPRMT ;..1st time thru in mass-print mode. + DCR A ; A=0FFH + STA FIRST$M ; set not first time any more + CALL CPRMPT + DB 'Print on LST Device (Y/N)? ',0 + CALL KEYIN ;get response + CPI 'Y' + JNZ LOOP +SKPPRMT: ; + CALL ERMSG + DB 'Printing ',0 + LHLD RINGPOS ;pt to file name + INX H + CALL PRFN ;print it + MVI A,1 ;one for.. + STA VIEWFLG ;..output to printer. + DCR A ;zero for.. + STA LPSCNT ;..lines-per-page counter + STA EOFLAG ; used to provide formfeed at end of file + MVI A,LIST ;out to 'list' device function and fall thru + +; output character for console/list/punch processing + +CURRENT: + STA CON$LST ;save bdos function + +; output file to console/printer/punch + + CALL RINGFCB ;position name to 'fcb' + XCHG ;HL pts to S$FCB + CALL INITFCB ;set 'fcb' for use + LXI D,TBUF ;set to use default dma buffer + MVI C,SETDMA ;address set function + CALL BDOS + LXI D,S$FCB ;open file for reading + MVI C,OPEN ;file open function code + CALL BDOS + INR A ; 0ffh --> 00h if open not okay + BRNZ ZEROCR ;if not okay, show error message. +; +; File Not Found Error +; +FNF: + CALL FNF1 ;print file not found message + JMP LOOP +; +; Print File Not Found Message +; +FNF1: + CALL ERMSG + DB 'File NOT Found',0 + RET +; +; Continue +; +ZEROCR: + XRA A + STA S$FCB+32 ;zero file 'current record' field + STA CHARCNT ;zero char count for tabbing + CALL PHEAD ;print heading if output to LST device +READMR: + LXI D,S$FCB ;point at file 'fcb' for reading + MVI C,READ ;record read function + CALL BDOS + ORA A ;check if read okay + BRNZ CURDONE ;eof? + LXI H,TBUF ;point at record just read + MVI B,128 ;set record character counter to output +READLP: + MOV A,M ;get a character + ANI 7FH ;force to 'ascii' + CPI EOFCHAR ;see if end-of-file + BRZ CURDONE ;back to ring loop if 'eof' + MOV E,A ;put character for 'bdos' call + PUSH B + PUSH H + PUSH D ; (character in e-reg) + LDA CON$LST ;get function for punch/list/console output + MOV C,A + MOV A,E ;check char + CPI TAB ;tabulate? + BRNZ NOTAB + MVI E,' ' ;space over +TABL: + PUSH B ;save key regs + PUSH D + CALL BDOS + POP D ;get key regs + POP B + CALL INCCCNT ;increment char count + ANI 7 ;check for done at every 8 + BRNZ TABL + BR TABDN +NOTAB: + CALL BDOS ;send character + CALL INCCCNT ;increment char count +TABDN: + LDA VIEWFLG ;if 'view'.. + ORA A + POP D ;get char in E in case PAGER is called + CNZ PAGER ;..check for 'lf'. + MVI E,GET ;get status or char + MVI C,DIRCON ;console status function + CALL BDOS ;status? + POP H + POP B + ANI 7FH ;if character there, then abort.. + CNZ CANVIEW ;already got char + INX H ;if not, bump buffer pointer. + BJNZ READLP ;no, more in present record. + BR READMR ;yes, get next record. +CURDONE: + MVI A,TRUE ; set eoflag for formfeed at end of file + STA EOFLAG ; + LDA CON$LST ;console? + CPI WRCON + JZ BOTTOM ; prompt for user + JMP FORMFD ; +; JMP RUNSH4 ;refresh screen and continue user input + +PAGER: + MOV A,E ; (character in e-reg) + CPI LF + RNZ + XRA A ;zero char count + STA CHARCNT + LDA CON$LST ;printer or console? + CPI LIST ;check for printer + BRZ PAGEP + LDA CTPP ;get number of lines of text per screen + MOV B,A ;... in B + LDA LPSCNT ;is counter.. + INR A ;..at.. + STA LPSCNT ;..limit.. + CMP B ;..of lines-per-screen? + RC ;no, return. + XRA A ;yes, initialize.. + STA LPSCNT ;..for next screen full. + CALL VPRINT + DB ' ',DIM,'[View More...]',BRIGHT,CR,0 ;show msg line + CALL DKEYIN ;wait for keyboard input + CPI ' ' ;see if bar.. + PUSH PSW + CALL VPRINT + DB ' ',CR,0 ;clear above msg line + POP PSW + BRNZ CANVIEW ;..if not, see if cancel. + LDA CTPP ;set for single line + DCR A + STA LPSCNT ;..scroll and.. + RET ;..return for one more line. + +PAGEP: + LDA LTPP ;get number of lines of text per page + MOV B,A ;... in B + LDA LPSCNT ;is counter.. + INR A ;..at.. + STA LPSCNT ;..limit.. + CMP B ;..of lines-per-screen? + RC ;no, return. +FORMFD: XRA A ; zero for.. + STA LPSCNT ;..lines-per-page counter + LDA LFFEED ;form feed available? + ORA A ;0=no + JZ PRFEED + CALL LCRLF ;new line + MVI A,FF ;send form feed char + CALL LOUT + LDA EOFLAG ; if true then output final formfeed + ORA A ; + RNZ ; don't do heading if final formfeed + JMP PHEAD ;print header and done +PRFEED: + LDA LSPP ;number of lines to skip + MOV B,A ;number of lines to skip + MVI C,LIST ;LST output +PAGELST: + CALL LCRLF ;new line on LST + BJNZ PAGELST + JMP PHEAD ;print heading and done + +CANVIEW: + CPI CTRLC ;^C? + JZ COMCAN + RET ;return for another page + +INCCCNT: + LDA CHARCNT ;increment char count + INR A + STA CHARCNT + RET + +PHEAD: + LDA CON$LST ;printing to printer? + CPI LIST + RNZ + LXI H,HEADMSG ;print heading +PHEAD1: + MOV A,M ;get char + ORA A ;done? + BRZ PHEAD2 + CALL LOUT ;send to printer + INX H ;pt to next + BR PHEAD1 +PHEAD2: + LXI H,S$FCB+1 ;pt to file name + MVI B,8 ;8 chars + CALL PHEAD3 + MVI A,'.' ;dot + CALL LOUT + MVI B,3 ;3 more chars + CALL PHEAD3 + CALL LCRLF ;new line + CALL LCRLF ;blank line + RET +PHEAD3: + MOV A,M ;get char + CALL LOUT ;LST it + INX H ;pt to next + BJNZ PHEAD3 + RET + +; +; COMMAND: GC +; +; Copy files tagged using the 't' command. auto-erase if file exists +; on requested destination drive or in user area. +; +MASS$COPY: + MOV A,B ; recover opcode + STA MASSOP ; + CALL ERMSG + DB 'Mass Copy',0 +; XRA A ;A=0 +; STA MASSOP ;set operation to mass copy +; +; Main Entry Point for Mass Operation of Copy or Delete +; On entry, MASSOP = 0 if copy, 0FFH if delete +; +MASS$RUN: + LHLD RINGPOS ;save position + SHLD SRINGPOS + LHLD RING + LXI D,-13 ;back up to before first ring element + DAD D + SHLD RINGPOS ;set position +; +; Set Flags for First Time Thru and Mass Operation +; + XRA A ;A=0 + STA FIRST$M ;set for prompt for dest with first file + DCR A ;A=0FFH + STA MFLAG ;this is a mass operation +; +; Main Mass Operation Loop +; +MASS$OLP: + LHLD RINGPOS ;re-entry point for next file + LXI D,13 ;advance to next + DAD D + SHLD RINGPOS + XCHG ;at ring.. +; +; Check for Loop Completion -- DE = Current RINGPOS +; +MASS$OLP1: + LHLD RINGEND ;..end yet? + CALL CMPDEHL ;compare present position with end +; BRZ MASS$OLX ;done + JZ MASS$OLX ; +; +; Check for Tagged File at RINGPOS +; + LHLD RINGPOS ;get position + LXI D,12 ;get 1st possible tag location + DAD D + MOV A,M ;get tag + CPI TAGCH + BRNZ MASS$OLP ;not tagged, so skip +; +; Select Mass Operation +; + LDA MASSOP ;get type of mass operation +; ORA A ;0=COPY +; BRZ MASS$OC ;do copy + CPI 'C' ; check if copy + BRZ MASS$OC ; yes its copy + CPI 'P' ; check if print + BRZ MASS$LST ; yes its print + CPI 'D' ; check if delete + BRZ MDELETE ; its delete + CPI 'V' ; check if view + BRZ MASS$FVIEW ; its view + CALL ERMSG ; should be one of above + DB 'Illegal character',0 ; + JMP LOOP ; get new comand + +; COMMAND: GP +; +; Print tagged files using the 't' command +; + +MASS$PRINT: ; + MOV A,B ; recover opcode + STA MASSOP ; + CALL ERMSG ; + DB 'Mass Print',0 ; + BR MASS$RUN ; + +MASS$LST: ; + CALL LSTFILE ; + BR MASS$OLP ; skip to next + +; COMMAND: GV +; +; View tagged files using the 't' command +; + +MASS$VIEW: ; + MOV A,B ; recover opcode + STA MASSOP ; + CALL ERMSG ; + DB 'Mass View',0 ; +; BR MASS$RUN ; + JMP MASS$RUN ; + +MASS$FVIEW: + CALL VIEWFL ; + BR MASS$OLP ; + + +; Do Mass Delete - Current File Delete +; +MDELETE: ; + CALL DELETE ;delete filename at RINGPOS +; +; Advance to Next File if Delete Aborted +; + LDA DELCODE ;deletion done? + ORA A ;0=no +; BRZ MASS$OLP ;skip to next if not + JZ MASS$OLP ; +; +; Stay at Current File if Delete Done - Ring was Compressed by Delete +; + LHLD RINGPOS ;get current ring position + XCHG ;... in DE (don't advance) +; BR MASS$OLP1 ;loop until thru ring list + JMP MASS$OLP1 ; +; +; Do Mass Copy - Current File Copy +; +MASS$OC: + CALL COPY ;do copy +; BR MASS$OLP ;loop until thru ring list + JMP MASS$OLP ; +; +; Exit Mass Operation Loop +; +MASS$OLX: + LHLD SRINGPOS ;reset ring position + SHLD RINGPOS + LDA MASSOP ; (if delete, restart) +; ORA A ;NZ=delete +; JNZ RUNSH2 + CPI 'D' ; check if delete + JZ RUNSH2 ; else either print or copy + LHLD LOCBEG ;copy, so reset local ring + JMP JFW0A ;rescreen + +; +; COMMAND: C +; +; Copy source file at current 'ring' position to another drive. set-up +; fcb's and buffer area and check for correct keyboard inputs. contains +; auto-crc file copy verification. +; +FCOPY: +; +; Set Flags for First Time Thru and No Mass Copy +; + XRA A ;A=0 + STA FIRST$M ;set for prompt for destination + STA MFLAG ;not a mass copy +; +; Do Copy +; + CALL COPY ;do copy of file at RINGPOS +; +; Advance to Next File +; + JMP FORWARD ;advance to next file +; +; Copy File at RINGPOS +; +COPY: + LXI H,0 ;initialize storage for.. + SHLD CRCVAL ;..'crc' working value. + CALL RINGFCB ;move from 'ring' to 'sfcb' + LXI H,S$FCB+12 ;set pointer to source extent field + CALL INITFCB + MVI B,32 ;copy source 'fcb' to destination 'fcb' + LXI H,S$FCB+1 ;from point.. + LXI D,D$FCB+1 ;..to point.. + CALL MOVE ;..move across. + LXI D,S$FCB ;open file for reading + MVI C,OPEN ;open function + CALL BDOS + INR A ; 0ffh --> 00h if bad open + JZ FNF ;file not found +; +; Source File is Open -- If first time thru, get dest dir +; +COPY2: + LDA FIRST$M ;by-pass prompt, drive/user compatibility.. + ORA A ;..test, and disk reset after.. + BRNZ COPY3M ;..1st time thru in mass-copy mode. + DCR A ;A=0FFH + STA FIRST$M ;set not first time any more + CALL CPRMPT ;prompt for drive selection + DB 'Copy to DIR: ',0 + CALL DEF$D$U +; +; Check to ensure that either drives or user areas are different +; + LDA FCB ;get requested drive from 'fcb' and.. + MOV B,A ;..put into b-reg for.. + LDA S$FCB ;..comparison + CMP B + BRNZ COPY3 ;branch if different + LDA R$U$A ;requested user area --> rua + MOV B,A + LDA C$U$A ;current user area --> cua + CMP B + BRNZ COPY3 + CALL ERMSG ;if not, show error condition: + DB 'Src DIR = Dest DIR',0 + JMP LOOP ;try again? +; +; First File Copy - Reset System +; +COPY3: + CALL RESET ;make sure disk is read/write + CALL DLOGIN ;return home +; +; Nth File Copy - Copy without Resetting System +; +COPY3M: + LDA FCB ;put requested drive into.. + STA D$FCB ;..place in destination fcb (used to log in) + LDA R$U$A ;toggle to.. + CALL SET$USR ;..requested user area. + LXI D,D$FCB ;search for duplicate + MVI C,SRCHF ; 'search first' function + CALL BDOS + INR A ;if not found, 0ffh --> 00h. then.. + BRZ COPY5 ;go to 'make' function for new file. + LDA MFLAG ;auto-erase.. + ORA A ;..if.. + BRZ COPY4M ;..in mass-copy mode. + CALL ERMSG ;If found, ask to replace: + DB 0 + LXI H,D$FCB+1 + CALL PRFN + CALL VPRINT + DB ' Exists on Dest -- Erase (Y/N)? ',0 + CALL KEYIN ;get answer + CPI 'Y' ;if yes, then delete and copy ... + BRZ COPY4M ;... else fall thru to CUA$LOG and exit +; +; Log into Current User Area +; +CUA$LOG: + LDA C$U$A ;reset to current user area + JMP SET$USR ;set user and return to caller + +; +; Erase destination file and proceed +; +COPY4M: +; +; Set File Attributes +; + LXI H,D$FCB ;pt to FCB + CALL ATTRIB ;clear bytes in FCB and set attr of file + BRZ CUA$LOG ;return to caller if R/W not permitted +; +; Delete old file at dest +; + LXI D,D$FCB ;delete file already existing + MVI C,ERASE ;erase function + CALL BDOS +; +; Create new file at dest +; +COPY5: + LXI D,D$FCB ;create new file and open for writing + MVI C,MAKE ;make function + CALL BDOS + INR A ;if directory full, 0ffh --> 00h. + BRNZ COPY6 ;if not, branch. + CALL ERMSG + DB 'Dest Dir Full',0 + JMP LOOPFN ;if error, back to ring processor. +; +; Perform Copy +; +COPY6: + CALL CPRMPT + DB 'Copying File ',0 + LXI H,D$FCB+1 ;print file name + CALL PRFNSX + CALL VPRINT + DB ' to ',0 + LDA D$FCB ;print dest DU + ADI '@' + CALL COUT ;print disk + LDA R$U$A ;get user + CALL PAFDC ;print user + MVI A,':' + CALL COUT + XRA A ;clear 'eof'.. + STA EOFLAG ;..flag. +COPY6A: + CALL CUA$LOG ;current user area + LXI H,0 ;clear current-record.. + SHLD REC$CNT ;..counter. + LHLD BUFSTART ;set buffer start pointer.. + SHLD BUF$PT ;..to begin pointer. +; +; read source file -- fill buffer memory or stop on 'eof' -- update 'crc' +; on-the-fly +; +COPY7: + LHLD BUF$PT ;set dma address to buffer pointer + XCHG ; de-pair --> dma address + MVI C,SETDMA + CALL BDOS + LXI D,S$FCB ;source 'fcb' for reading + MVI C,READ ;record read function + CALL BDOS + ORA A ; 00h --> read okay + BRZ S$RD$OK + DCR A ;eof? + BRZ COPY8 ;yes, end-of-file, set 'eof' flag. + CALL ERMSG + DB 'Read Error',0 + JMP LOOPFN +; +; Read OK - Update CRC +; +S$RD$OK: + LHLD BUF$PT + MVI B,128 +COPY7A: + MOV A,M ;get character and.. + CALL UPDCRC ;..add to 'crc' value. + INX H + DCR B + BRNZ COPY7A ;loop 'till record read finished +; +; Update Buffer Ptr and Record Count +; + LHLD BUF$PT ;bump buffer pointer.. + LXI D,128 ;..by.. + DAD D ;..one.. + SHLD BUF$PT ;..record. + LHLD REC$CNT ;bump buffer.. + INX H ;..record count and.. + SHLD REC$CNT ;..store. + XCHG ;ready to compare to.. +; +; Check for Full Buffer +; + LHLD REC$MAX ;..maximum record count (full-buffer). + CALL CMPDEHL ;compare + BRNZ COPY7 ;if not full, get next record. + BR COPY9 ;full, start first write session. +; +; Indicate end-of-file read +; +COPY8: + MVI A,TRUE ;set 'eof' flag + STA EOFLAG +; +; Write source file from memory buffer to destination +; +COPY9: + LDA R$U$A ;set user to requested.. + CALL SET$USR ;..area. + LHLD BUFSTART ;adjust buffer pointer.. + SHLD BUF$PT ;..to start address. +COPY10: + LHLD REC$CNT ;buffer empty? + MOV A,H + ORA L + BRZ COPY11 ;buffer empty, check 'eof' flag. + DCX H ;dec buffer record count for each write + SHLD REC$CNT + LHLD BUF$PT ;set up dma address + PUSH H ;save for size bump + XCHG ;pointer in de-pair + MVI C,SETDMA + CALL BDOS + POP H + LXI D,128 ;bump pointer one record length + DAD D + SHLD BUF$PT + LXI D,D$FCB ;destination file 'fcb' + MVI C,WRITE ;write record function + CALL BDOS + ORA A ; 00h --> write okay + BRZ COPY10 ;okay, do next record. else.. + CALL ERMSG ;..say disk write error. + DB 'Copy Disk Full',0 +; +; Error in Write -- Delete Destination File and Abort +; +C$ERA: + LXI D,D$FCB ;delete.. + MVI C,ERASE ;..partial.. + CALL BDOS ;..from directory. + JMP LOOPFN ;back to ring +; +; Destination Buffer Written - Check for End +; +COPY11: + LDA EOFLAG ;buffer all written, check for 'eof'. + ORA A + JZ COPY6A ;branch to read next buffer full + LXI D,D$FCB ;point at 'fcb' for file closure + MVI C,CLOSE + CALL BDOS + INR A ;if no-close-error then.. + BRNZ CRC$CMP ;..compare file crc's. + CALL ERMSG + DB 'Copy Close Error',0 + JMP C$ERA +; +; Read Destination File and Compare CRCs +; +CRC$CMP: + LHLD CRCVAL ;transfer 'crc' value to.. + SHLD CRCVAL2 ;..new storage area. + LXI H,0 ;clear working storage.. + SHLD CRCVAL ;..to continue. + LXI D,TBUF + MVI C,SETDMA + CALL BDOS + LXI H,D$FCB+12 + CALL INITFCB + LXI D,D$FCB + MVI C,OPEN + CALL BDOS + INR A ; 0ffh --> 00h if bad open + JZ BADCRC ;if bad open, just say 'bad-crc'. + XRA A ;zero 'fcb'.. + STA D$FCB+32 ;..'cr' field. +CRCWF1: + LXI D,D$FCB + MVI C,READ + CALL BDOS + ORA A ;read okay? + BRZ D$RD$OK ;yes, read more. + DCR A ;eof? + BRZ FINCRC ;yes, finish up and make 'crc' comparison. + CALL ERMSG + DB 'Copy Read Error',0 + JMP LOOP +; +; Block Read OK - Update CRC +; +D$RD$OK: + LXI H,TBUF + MVI B,128 +CRCWF2: + MOV A,M ;get character to.. + CALL UPDCRC ;..add to 'crc' value. + INX H + BJNZ CRCWF2 + BR CRCWF1 +; +; Read Complete - Check CRCs +; +FINCRC: + LHLD CRCVAL ;put written-file 'crc' into.. + XCHG ;..de-pair. + LHLD CRCVAL2 ;put read-file 'crc' and.. + CALL CMPDEHL ;..compare 'de/hl' for equality. + BRNZ BADCRC ;if not zero, show copy-error message. + CALL VPRINT ;if zero, show 'verified' message. + DB ' -- Verified',0 + JMP CUA$LOG ;return to current user and return to caller +; +; Error on Copy +; +BADCRC: + CALL CUA$LOG ;return to current user + CALL ERMSG + DB ' -- CRC Error',0 + JMP LOOP ;abort + +; +; clear attributes of file (HL) and set attributes on disk +; return code of 0FFH (NZ) indicates OK to proceed, 0 (Z) indicates abort +; +ATTRIB: + PUSH H ;save regs + PUSH H + PUSH D + LHLD DUM$FCB ;init FCB + LXI D,12 ;12 bytes in + DAD D + POP D + CALL INITFCB + LHLD DUM$FCB ;pt to dummy FCB + XCHG ;... in DE + POP H + MVI B,12 ;copy + PUSH D + CALL MOVE + POP D ;pt to FCB + MVI C,SRCHF ;look for file + CALL BDOS + INR A ;file not found = 0 + POP H + RZ ;abort if no file + PUSH H ;save ptr + DCR A ;adjust + RRC ;right 3 bits to indicate offset into BUFF + RRC + RRC + LXI H,TBUF ;pt to buffer + ADD L ;pt to FCB of file + ADI 9 ;pt to R/O Byte + MOV L,A + MOV A,M ;get byte + ANI 80H ;extract R/O Bit + BRZ ATTRIB0 + CALL ERMSG + DB 0 + POP H + PUSH H + INX H ;pt to file name + CALL PRFN ;print file name + CALL VPRINT + DB ' is R/O -- Erase (Y/N)? ',0 + CALL KEYIN + CPI 'Y' + JZ ATTRIB0 + POP H + XRA A ;error return + RET +ATTRIB0: + POP H ;get ptr + PUSH H ;save ptr + INX H ;pt to first char + MVI B,11 ;11 Bytes +ATTRIB1: + MOV A,M ;get byte + ANI 7FH ;mask it + MOV M,A ;put byte + INX H ;pt to next + DCR B ;count down + JNZ ATTRIB1 + POP D ;pt to FCB + MVI C,ATTR + CALL BDOS + XRA A + DCR A ;no error return + RET + +; +;************************************************** +; +; CRC subroutines +; +; initialize tables for fast crc calculations + +INITCRC: + LHLD CRCTBL + MVI C,0 ;table index +GLOOP: + XCHG + LXI H,0 ;initialize crc register pair + MOV A,C + PUSH B ;save index in c-reg + MVI B,8 + XRA H + MOV H,A +LLOOP: + DAD H + BRNC LSKIP + MVI A,10H ;generator is x^16 + x^12 + x^5 + x^0 as.. + XRA H ;..recommended by ccitt for asynchronous.. + MOV H,A ;..communications. produces the same.. + MVI A,21H ;..results as public domain programs.. + XRA L ;..chek, comm7, mdm7, and modem7. + MOV L,A +LSKIP: + BJNZ LLOOP + POP B + XCHG ;de-pair now has crc, hl pointing into table. + MOV M,D ;store high byte of crc.. + INR H + MOV M,E ;..and store low byte. + DCR H + INX H ;move to next table entry + INR C ;next index + BRNZ GLOOP + RET + +UPDCRC: + PUSH B ;update 'crc'.. + PUSH H ;..accumulator.. + LHLD CRCVAL ;pick up partial remainder + XCHG ;de-pair now has partial + MVI B,0 + XRA D + MOV C,A + LHLD CRCTBL + DAD B + MOV A,M + XRA E + MOV D,A + INR H + MOV E,M + XCHG + SHLD CRCVAL + POP H + POP B + RET + +; +;************************************************** +; +; WORKHORSE Routines +; +; conin routine (waits for response) +; +KEYIN: + CALL CIN ;get input + CALL CAPS ;capitalize + JMP COUT ;echo + +; direct console input w/o echo (waits for input) + +DKEYIN: + CALL CIN ;get char from BIOS + JMP CAPS ;capitalize + +; convert keyboard input to upper case + +CONVERT: + LHLD CMDBUF ; 'current keyboard buffer length'.. + INX H + MOV B,M ;..to b-reg. + MOV A,B + ORA A ;if zero length, skip conversion. + JZ COMCAN +CONVLP: + INX H ;point at character to capitalize + MOV A,M + CALL CAPS + MOV M,A ;put back into buffer + BJNZ CONVLP + RET +; +; Fill buffer with 'spaces' with count in b-reg +; +FILL: + MVI M,' ' ;put in space character + INX H + BJNZ FILL ;no, branch. + RET +; +; Ignore leading spaces (ls) in buffer, length in c-reg. +; +UNSPACE: + LDAX D ;get character + CPI ' ' + RNZ ;not blank, a file is entered. + INX D ;to next character + DCR C + JZ COMCAN ;all spaces --> command recovery error + BR UNSPACE +; +; Check for legal filename character -- return with carry set if illegal +; +CKLEGAL: + LDAX D ;get character from de-pair + INX D ;point at next character + CPI ' ' ;less than space? + RC ;return carry if unpermitted character + PUSH H + PUSH B + CPI '[' ;if greater than 'z', exit with.. + BRNC CKERR ;..carry set. + MVI B,CHR$TEND-CHR$TBL + LXI H,CHR$TBL +CHR$LP: + CMP M + BRZ CKERR + INX H + BJNZ CHR$LP + ORA A ;clear carry for good character + POP B + POP H + RET + +CKERR: + POP B + POP H + STC ;error exit with carry set + RET + +CHR$TBL: + DB ',',':',';','<','=','>' ;invalid character table +CHR$TEND: + DS 0 +; +; Print file name in S$FCB +; +PRFNSX: + PUSH H ;save regs + PUSH B + BR PRFNS0 +PRFNS: + PUSH H ;affect only PSW + PUSH B + LXI H,S$FCB+1 +PRFNS0: + CALL PRFN ;print file name + POP B ;restore + POP H + RET +; +; Print file name pted to by HL +; +PRFN: + MVI B,8 ;8 chars + CALL PRFNS1 + MVI A,'.' + CALL COUT + MVI B,3 ;file type and fall thru +PRFNS1: + MOV A,M ;get char + CALL COUT + INX H ;pt to next + BJNZ PRFNS1 + RET +; +; Copy filename from RINGPOS to SFCB +; +RINGFCB: + LHLD RINGPOS ;move name from ring to source 'fcb' + LXI D,S$FCB ;place to move filename and.. + MVI B,12 ;..amount to move (fall thru to MOVE) +; +; move subroutine -- move b-reg # of bytes from hl-pair to de-pair +; +MOVE: + MOV A,M ;get hl-pair referenced source byte + ANI 7FH ;strip attributes + STAX D ;put to de-pair referenced destination + INX H ;fix pointers for next search + INX D + BJNZ MOVE + RET + +MOVEB: + PUSH H ;SAVE HL, DE + PUSH D + CALL MOVE + POP D ;RESTORE DE, HL + POP H + RET +; +; Initialize FCB system fields (entry with hl-pair pointing to FCB) +; +INITFCB: + MVI B,21 ;fill ex, s1, s2, rc, cr counters with zeros. +INITLP: + MVI M,0 ;put zero (null) in memory + INX H + BJNZ INITLP + RET +; +; Disk system reset -- login requested drive +; +RESET: + MVI C,RESETDK ;reset system + CALL BDOS + LDA R$DR ;make requested drive.. +SET$DR: + MOV E,A ;..current + MVI C,LOGIN + JMP BDOS ;return to caller +; +; Set/reset (or get) user area (call with binary user area in a-reg) +; +SET$USR: + MOV E,A ;user number in E +GET$USR: + MVI C,SGUSER + JMP BDOS ;return to caller +; +; Compare de-pair to hl-pair and set flags accordingly +; +CMPDEHL: + MOV A,D ;see if high bytes set flags + CMP H + RNZ ;return if not equal + MOV A,E + CMP L ;low bytes set flags instead + RET +; +; Shift hl-pair b-reg bits (-1) to right (divider routine) +; +SHIFTLP: + DCR B + RZ + MOV A,H + ORA A + RAR + MOV H,A + MOV A,L + RAR + MOV L,A + BR SHIFTLP + +; +; Determine free storage remaining on selected drive +; +FRESTOR: + MVI C,INQDISK ;determine current drive + CALL BDOS ;returns 0 as a:, 1 as b:, etc. + INR A ;make 1 --> a:, 2 --> b:, etc. + STA FCB + MVI C,GETPARM ;current disk parameter block + CALL BDOS + INX H ;bump to.. + INX H + MOV A,M ;..block shift factor. + STA BSHIFTF ; 'bsh' + INX H ;bump to.. + MOV A,M ;..block mask. + STA B$MASK ; 'blm' + INX H ;bump to.. + INX H ;..get.. + MOV E,M ;..maximum block number.. + INX H ;..double.. + MOV D,M ;..byte. + XCHG + SHLD B$MAX ; 'dsm' + MVI C,INQALC ;address of allocation vector + CALL BDOS + XCHG ;get its length + LHLD B$MAX + INX H + LXI B,0 ;initialize block count to zero +GSPBYT: + PUSH D ;save allocation address + LDAX D + MVI E,8 ;set to process 8 bits (blocks) +GSPLUP: + RAL ;test bit + BRC NOT$FRE + INX B +NOT$FRE: + MOV D,A ;save bits + DCX H + MOV A,L + ORA H + BRZ END$ALC ;quit if out of blocks + MOV A,D ;restore bits + DCR E ;count down 8 bits + BRNZ GSPLUP ;branch to do another bit + POP D ;bump to next count.. + INX D ;..of allocation vector. + BR GSPBYT ;process it + +END$ALC: + POP D ;clear alloc vector pointer from stack + MOV L,C ;copy # blocks to hl-pair + MOV H,B + LDA BSHIFTF ;get block shift factor + SUI 3 ;convert from sectors to thousands (k) + BRZ PRT$FRE ;skip shifts if 1k blocks +FREK$LP: + DAD H ;multiply blocks by k-bytes per block + DCR A ;multiply by 2, 4, 8, or 16. + BRNZ FREK$LP +PRT$FRE: + SHLD DISKSP ;save disk space + RET +; +; Print free space on disk +; +PRINT$FRE: + CALL ERMSG ;position and set flags + DB 0 + LHLD DISKSP + CALL PHLFDC ; # of free k-bytes in hl-pair + CALL VPRINT + DB 'K Bytes on Disk',0 + RET + +; +;************************************************** +; +; MESSAGE Routines +; +; Print VFILER Banner +; +BANNER: + CALL VCLS ;clear screen + LXI H,BANADR + CALL GOTOXY + CALL VPRINT ;print banner + DB 'VFILER, Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0' + IF Z80 + DB ' ' +; DB DIM ; + DB '[Z80 Code]' +; DB BRIGHT ; + ELSE + DB ' ' +; DB DIM ; + DB '[8080 Code]' +; DB BRIGHT ; + ENDIF + DB 0 + RET +; +; Home the Cursor +; +CUR$FIRST: + LXI H,CURHOME ; HOME ADDRESS + SHLD CURAT ; SET CURSOR POSITION + JMP GOTOXY +; +; Last File Position +; +CUR$LAST: + LHLD RINGPOS ; ADVANCE + SHLD LOCPOS ; SET LOCAL POSITION +CL0: + LXI D,13 + DAD D + XCHG + LHLD LOCEND ; END OF LOCAL RING? + CALL CMPDEHL + RZ + XCHG ; NEW POSITION + SHLD LOCPOS + PUSH H ; SAVE POSITION + CALL CUR$NEXT ; ADVANCE CURSOR + POP H ; GET POSITION + BR CL0 +; +; Advance the Cursor +; +CUR$NEXT: + LHLD CURAT ; COMPUTE NEW POSITION + MOV A,L ; CHECK FOR NEW LINE + ADI 19 ; SIZE OF EACH ENTRY + CPI 70 + BRNC CN1 ; ADVANCE TO NEXT LINE + MOV L,A ; NEW POSITION + SHLD CURAT + JMP GOTOXY +CN1: + MOV A,H ; GET LINE + LXI H,CURHOME ; GET COL + MOV H,A ; SET LINE AND FALL GO TO CUR$DOWN + SHLD CURAT + BR CUR$DOWN +; +; Back Up the Cursor +; +CUR$BACK: + LXI H,CURHOME ; GET HOME + XCHG ; ... IN DE + LHLD CURAT + CALL CMPDEHL ; COMPARE + BRZ CUR$LAST ; GOTO END IF LAST + MOV A,L ; CHECK FOR FIRST COL + CMP E + BRZ CB1 + SUI 19 ; BACK UP ONE COL + MOV L,A + SHLD CURAT ; NEW POS + JMP GOTOXY +CB1: + MOV A,E ; GET HOME COL + ADI 19*3 ; GET LAST COL + MOV L,A + DCR H ; PREV LINE + SHLD CURAT + JMP GOTOXY +; +; Move Cursor Down One Line +; +CUR$DOWN: + LXI H,CURHOME ; GET HOME ADDRESS + MOV B,H ; LINE IN B + LHLD CURAT ; GET CURRENT ADDRESS + INR H ; MOVE DOWN + MOV A,H ; CHECK FOR TOO FAR + SUB B + CPI EPS/4 + BRNC CD1 + SHLD CURAT ; OK, SO SET POSITION + JMP GOTOXY +CD1: + MOV A,L ; GET COL + LXI H,CURHOME + MOV L,A + SHLD CURAT + JMP GOTOXY +; +; Refresh Screen +; +REFRESH: + LHLD CURAT ; SAVE CURSOR AND RING POSITIONS + SHLD SCURAT + LHLD RINGPOS + SHLD SRINGPOS + CALL BANNER ; PRINT BANNER +; + IF BIHELP ;built-in help? + LDA HELPDISP ;DISPLAY HELP? + ORA A ;0=NO + BRZ REF1 + CALL HELPMSG ;PRINT HELP MESSAGE + BR REF2 +REF1: + ENDIF ;BIHELP +; + CALL DISPFILES ; DISPLAY FILES +REF2: + LXI H,DUADR ; DU ADDRESS + CALL GOTOXY + LXI H,C$DR ; PT TO CURRENT DRIVE (FOLLOWED BY CUR USER) + CALL STNDOUT ; TURNON HIGHLIGHTING + CALL PRDU ; PRINT DU:DIR> + CALL STNDEND ; TURN OFF HIGHLIGHTING + LXI H,CPMADR ; COMMAND PROMPT MESSAGE + CALL GOTOXY + CALL VPRINT ; PROMPT WITH DRIVE PREFIX + DB DIM + DB 'Command (? = ',0 + LDA HELPDISP ; IN HELP NOW? + ORA A ; 0=NO + BRZ REF3 + CALL VPRINT + DB 'Files',0 + BR REF4 +REF3: + CALL VPRINT + DB 'Help',0 +REF4: + CALL VPRINT + DB ')?',BRIGHT,0 + LHLD SCURAT ; RESTORE CURSOR AND RING POSITIONS + SHLD CURAT + LHLD SRINGPOS + SHLD RINGPOS + CALL SETCUR ; RESTORE CURSOR ON SCREEN + RET +; +; Print DU pted to by HL +; +PRDU: + PUSH H ; SAVE REGS + PUSH B + MOV A,M ; GET DRIVE + MOV B,A + ADI 'A' ; CONVERT TO LETTER + CALL COUT + INX H ; PT TO USER + MOV A,M ; GET USER + MOV C,A + CALL PAFDC ; PRINT USER AS FLOATING + MVI A,':' ; PRINT COLON + CALL COUT + CALL DUTDIR ; SCAN NAMED DIRECTORY TABLE + BRZ PRDU2 ; NO NAME? + MVI B,8 ; PRINT NAME +PRDU1: + MOV A,M ; GET CHAR + CPI ' ' ; DONE IF SPACE ENCOUNTERED + BRZ PRDU3 + CALL COUT + INX H + BJNZ PRDU1 + BR PRDU3 +PRDU2: + CALL VPRINT + DB 'Noname',0 +PRDU3: + POP B ; RESTORE REGS + POP H + RET + +; +; Refresh File Display +; +DISPFILES: + CALL CUR$FIRST ; POSITION CURSOR AT FIRST POSITION + LHLD LOCBEG ; PT TO FIRST FILE NAME + SHLD LOCPOS ; SAVE LOCAL POSITION +DSPF1: + LHLD LOCEND ; AT END? + XCHG + LHLD LOCPOS + CALL CMPDEHL + JZ CUR$FIRST ; POSITION AT FIRST ENTRY AND RETURN + MVI B,4 ; 4 SPACES + MVI A,' ' +DSPF2: + CALL COUT + BJNZ DSPF2 + PUSH H ; SAVE CURRENT LOCAL POSITION IN RING +; INX H ; PT TO FILE NAME +; CALL PRFN ; PRINT FILE NAME +; MOV A,M ; PRINT TAG +; CALL COUT + CALL HILITFN ; brigten filename + POP H ; GET CURRENT LOCAL POSITION + LXI D,13 + DAD D + SHLD LOCPOS + CALL CUR$NEXT ; ADVANCE CURSOR + BR DSPF1 + +HILITFN: ; + PUSH H ; save for later + LXI D,12 ; locate the tag byte + DAD D ; + MOV A,M ; put tag byte in a for store + STA TAGFLG ; + POP H ; back to beginning of filename + INX H ; point to filename + LDA TAGFLG ; + CPI ' ' ; if space don't highlight + CNZ STNDOUT ; set highlight on + CALL PRFN ; put out filename + MOV A,M ; get tag byte + CALL COUT ; and output it + LDA TAGFLG ; + CPI ' ' ; + CNZ STNDEND ; turn off highlighting + RET ; +; Position Cursor at CURAT +; +SETCUR: + LDA HELPDISP ; NOGO IF IN HELP DISPLAY + ORA A + RNZ + LHLD CURAT + CALL GOTOXY + CALL VPRINT + DB DIM,'-->',BRIGHT,0 + RET +; +; Clear Cursor +; +CLRCUR: + LDA HELPDISP ; NOGO IF IN HELP DISPLAY + ORA A + RNZ + LHLD CURAT + CALL GOTOXY + CALL VPRINT + DB ' ',0 + RET +; +; Command Prompt +; +CPRMPT: + LXI H,CPADR ; GET ADDRESS +MPRINT: + PUSH H ; SAVE ADDRESS + CALL GOTOXY + PUSH B +; MVI B,76-(CPADR MOD 255) + LDA CWIDTH ; find screen length in chars + SUI (CPADR MOD 256)-1 ; determine number of char. to blank + MOV B,A ; put number in b + CALL VEREOL ; ERASE TO EOL + POP B + POP H ; GET ADDRESS + CALL GOTOXY ; POSITION CURSOR + JMP VPRINT ; PRINT MESSAGE AND RETURN +; +; Working Message +; +WORKMSG: + CALL ERMSG + DB DIM,'Working ...',BRIGHT,0 + RET +; +; Error Message +; +ERMSG: + MVI A,0FFH ; SET ERROR MESSAGE FLAG + STA ERMFLG + LXI H,ERADR ; GET ADDRESS + BR MPRINT +; +; Print File Size Info +; +FSNOTE: + CALL ERMSG ; USE THIS ROUTINE + DB 'Size of ',0 + RET +; +; Position for File Size Print +; +ATFS: + LXI H,FSADR+13 ; POSITION FOR PRINT OF FILE SIZE + JMP GOTOXY +; +; Clear Error Message +; +ERCLR: + XRA A ; CLEAR FLAG + STA ERMFLG + LXI H,ERADR ; POSITION + CALL GOTOXY + PUSH B +; MVI B,76-(ERADR MOD 255) + LDA CWIDTH ; find screen length in chars + SUI (ERADR MOD 256)-1 ; determine number of char. to blank + MOV B,A ; put number in b + CALL VEREOL ; ERASE TO EOL + POP B + RET +; +; Position at Command Prompt and Clear It +; +ATCMD: + LXI H,CPADR ; POSITION + CALL GOTOXY + PUSH B +; MVI B,76-(CPADR MOD 255) + LDA CWIDTH ; find screen length in chars + SUI (CPADR MOD 256)-1 ; determine number of char. to blank + MOV B,A ; put number in b + CALL VEREOL ; CLEAR MESSAGE + POP B + LXI H,CPADR ; REPOSITION + JMP GOTOXY +; +; Position at Bottom of Screen and Prompt for Continuation +; +BOTTOM: + LXI H,BOTADR ; POSITION + CALL GOTOXY +; +; Prompt for Continuation +; +SAK: + CALL VPRINT + DB DIM,'Strike Any Key -- ',BRIGHT,0 + JMP KEYIN + + +; +; S T O R A G E +; +; Initialized +; +HEADMSG: + DB 'File: ',0 +MOREHELP: + DB 'HELP ' ;HELP Command for further info + VFNAME ;VFILER Name + DB 0 +MACFCB: + DB 0 + VFNAME ;VFILER Name + VFNFILL ;Filler + DB 'CMD' +FILERCMD: + VFNAME ;VFILER Name + VFNFILL ;Filler + DB ' ' ;one space +FILE$D: + DB 'x' +FILE$U: + DB 'xx' + DB ':' ;colon + DB 0 +JOKER: + DB '???????????' ;*.* equivalent +FIRST$M: + DB FALSE ;1st time thru in mass-copy mode +MFLAG: + DB TRUE ;multiple file copy flag-->0 for mass copy +TAG$TOT: + DW 0 ;summation of tagged file sizes +CMDBUF: + DS 2 ;command buffer maximum length, usage, and.. +; +; Uninitialized +; +STACK: + DS 2 +LWIDTH: + DS 1 ;WIDTH OF LINE +LTPP: + DS 1 ;LINES OF TEXT PER PAGE +LSPP: + DS 1 ;LINES TO SKIP PER PAGE +LFFEED: + DS 1 ;PRINTER CAN FORMFEED? (0=NO) +CWIDTH: + DS 1 ;WIDTH OF SCREEN +CTPP: + DS 1 ;LINES OF TEXT PER SCREEN +CSPP: + DS 1 ;LINES TO SKIP PER SCREEN +ALPHA: + DS 1 ;alphabetization flag (0=type and name, 0FFH= + ;...name and type) +B$MAX: + DS 2 ;highest block number on drive +B$MASK: + DS 1 ;sec/blk-1 +BSHIFTF: + DS 1 ;# of shifts to multiply by sec/blk +BUFENTRY: + DS 2 ;buffer start +BUF$PT: + DS 2 ;copy buffer current pointer.. +BUFSTART: + DS 2 ;..and begin pointer. +CANFLG: + DS 1 ;no-file-found cancel flag +C$DR: + DS 1 ;'current drive' +C$U$A: + DS 1 ;'current user area' (must follow C$DR) +CHARCNT: + DS 1 ;character count for tab expansion +CON$LST: + DS 1 ;bdos function storage +CRCTBL: + DS 2 ;tables for 'crc' calculations +CRCVAL: + DS 2 ;2-byte 'crc' value of working file and.. +CRCVAL2: + DS 2 ;..of finished source read-file. +CURAT: + DS 2 ;current cursor position +DELCODE: + DS 1 ;deletion code (0=delete not done) +D$FCB: + DS 33 ;fcb for destination file/new name if rename +DISKSP: + DS 2 ;space remaining on disk +DUM$FCB: + DS 2 ;dummy FCB for file attributes +DRLET: + DS 1 ;scratch for drive letter +EOFLAG: + DS 1 ;file copy loop 'eof' flag +ERMFLG: + DS 1 ;error message present flag +H$DR: + DS 1 ;home drive +H$U$A: + DS 1 ;home user area (must follow H$DR) +HELPDISP: + DS 1 ;display help screen (0=no) +LPSCNT: + DS 1 ;lines-per-screen for 'view' +LOCBEG: + DS 2 ;local beginning of ring +LOCEND: + DS 2 ;local end of ring +LOCPOS: + DS 2 ;local ring position (temp) +MASSOP: + DS 1 ;mass file operation code (0=no) +MAXDR: + DS 1 ;max driver letter +MDFLG: + DS 1 ;mass delete verify flag +O$USR: + DS 1 ;store initial user area for exit +R$DR: + DS 1 ;'requested drive' +RCNT: + DS 2 ;# of records in file and.. +REC$CNT: + DS 2 ;..currently in ram buffer. +REC$MAX: + DS 2 ;maximum 128-byte record capacity of buffer +RING: + DS 2 ;ptr to beginning of ring +RINGI: + DS 2 ;ring sort pointer +RINGJ: + DS 2 ;another ring sort pointer +RINGEND: + DS 2 ;current ring end pointer +RINGPOS: + DS 2 ;current ring position in scan +R$U$A: + DS 1 ;'requested user area' +SCURAT: + DS 2 ;save cursor position +S$FCB: + DS 36 ;fcb for source (random record) file +SRINGPOS: + DS 2 ;save ring position +TAGFLG: ; temp for tag + DS 1 ; +T$DR: + DS 1 ;temp disk +TEST$RT: + DS 1 ;intermediate right-justify data +T$U$A: + DS 1 ;temp user +T$UN$FG: + DS 1 ;tag/untag file summation switch +USER: + DS 1 ;temp user buffer +VIEWFLG: + DS 1 ; (00h) 1-->to list/punch else to crt 'view' + + END + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/VFILR4-1.LBR b/Images/Source/hd0/s0/u15/VFILR4-1.LBR new file mode 100644 index 0000000000000000000000000000000000000000..dfb7af8a77f30179cc86a3b5df56dfeed745ff98 GIT binary patch literal 26240 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VFILR4-2.LBR b/Images/Source/hd0/s0/u15/VFILR4-2.LBR new file mode 100644 index 0000000000000000000000000000000000000000..f5682fa1914ea9a20464cdd828db54b0738a39ca GIT binary patch literal 160512 zcmeF43wTuJo&V3|GK4@vLJ)@gnHeCHnM^K2GUqtLPzWJXZsDqk%0>twH6$??LKFgO zt6kT&)NbAGwp+K|zpZXBsag$+0?8O;Mvoe8C`Bto3|>Z1DzVn;?>RGPCX;}> z?LN=;DGxa_=e=Kk@9p=#pLqo_@=p*(38x58I~RV$_mwZb*Ipv~-zQ`X($hoi7cX45P$c`L#0i3V=@9#?7q3Ab!rqiP zQ&`eE#2)pxrl|1h>&m6XRYLFM!`Q?BU5R6bAD)SC?^=9a$$g0y;m@ar*soYvvSt;< z|LeqD!T9Ys_Dff?^qo#D7CNU6v0uA>5wE{1l5zx_KdwEiKW~y#n7%cxJ*&T)ljaED zFvhiK_4nv*6cluWl6aziE4= zxUIUjqDE|}tf{PMtQ2=vHZ)e()rxi7#0}IC*N8=Vg?Xa5wz_sprFc_iQ-!msvau;G zRdWdI?c!2#d&SO5aYx10N*-oiO-)@(b#0ZnWqUq)C2m-{xOA0RQM*;FZ*CGB>vmLXzQpR(WxU zS66MX!Cw=+T_w6G#aj?cEz;av56{~wTc}{D)YJskH`MK@Z)#+z*K)r@tf;9$U{oT^ zX$5k$t*&85MN=+wsFgzn%Cn|MY^<)L8h{HpuS05@wpTPEX^qV_P2x60ke1q9+uYa; zH;vUzC^pm&s;*9K*sc34dtR-u)aeG~J%~pgjZb4!yx8{nC&2U@M zh@w)HOz~AV@FHrctk~+TtF38;G}Kf!im>8eSW+r#$i7vq+*RG!BqDU=DlK&@!~iA9 zqT5>CP`Rb4uA%iRaV{&hx&|^pxuG5!>QFH|L{{LeJhmg(&X$U5>%lCY^rEz zqKb^zHa0a>LxL)5Tg96zTP@;_%Ercus>-~y)U;IAP?n%1D#RUi4Jb&|bWLSbrC7sC zfs27E-YDKmUfEP^XgOCeUAr!C@v4$MF)bCsy2 zsB5m`ReAODa#r?ebCCv!=G6#cuWe0BrL1qOtY~V6fG}yQt7ifM_p6($kvuM@^_6u< zEpL`w1dutZ*G5Q)mQP3nYH>?L^-YwD77{y@ZYv(uwKt0u$h2B{jR<{dEy@A)zXja{ z?>V;A)oyEMy#*K6%B^XstTqrxb%R)2htjUyiU!t%;-?tY(n9!%X?q39CmJ=Yd8CYT z#xuhlq@}i0A_eGoYMRk&P#;vs8+9cWoM^ea6h+0$sHo7w%7Ww+o_T3P@bMi&(Fjqb zHggra3RFIfnW#5W=fO)0T|zUuwMe~}^WG3yP@7{#4caEv5o&V>8q-ZXs+*{rKn&npb047rI&7V?64>zW(TX;NpE%l+M4Sy@k>)S9K1581A3ZbI&^scX2I`ed!Ov7&21 zXIEFN?`>UF5YfWM##I5tZoBk=Up% zodkYsH9An%!HfF-oym*phouZow^gId-cnc7yaUNa7o>KEtiw}#d}`3;)mv^R$wJMj zJvFI>${pw%F}kpUYVGnh=)|v+ z3l^?j!9u7(GlVVcuVA@ynd-0tt+>9T0RyPGwW6tlB)ke83R-U+`mxG-G`s4i>WZ4` zTj85rh>eg?q!;6>I(}hx%hRK#4PDmaHF<~|O&DERuDHFfg$74_LD$2CTx*-n4NPda zZ6k5vl0r>=%l67Glv<>LI>Tz#LGsWVd8^a%%QJM{!nIu9s3bM31}1$N&cv;CC`Jlb ztzzDkm#!>XzJ75jDwW0;R97yU*D_z~m`9$=mzGmHAbML+NDvmap0rZqEmKR}O=!J* zs)2$+^F+T{Q_+Ct%sO)#Ix1_bY1V*XwEl*QD$-pn6B1Q*?4wN!RowlfU z#x2|HAf62^%rKOIhe_uvNvld;L`ntBV zz6r94Pz!U#!YgHWTI!T|v(YbZ=Cc^Cn_IeagF$%TVSLQkKDA`k$|Xz7rltymgZPh! z;;`BhEu#(g(FWythjKb6vrU+s`LxtF-Yry1L*`SonQr?@D zdDa#*j!|l@${%Ji(-Zl&U-&vw+m*b0C1h6qpGBE9+jD~u$`{8d%VsN6GnD78rZFC~ zq2t--t<1-TnFGo_*%xdnO7a}#VY4Y)v52;hJO`x?TRO$?XNg7N`_?EpFd3D*<|uhK z<-yq$_P^Scx2$E#KicrkGs$qkR_L`Ju$6cw8#-*GcZCY%q>x80B71A1vcooNY3)ul z?X6Fb@WR7sI| z;0ZAk*@1#Uyk>i4WsOy@SfFPH_qf*{s-It<^GEM!vostZ1p?XC-}l%1}wpC_H&iwb%Y zf}y^JQpJm=x4hOT106~B-%2nR>(1^CiMD}|SsVpnHycdvh0<)-g{Igxgk}e>Ob%t+ z#)T}lF-QX(FFL!|bh@A92rrZ1GuxI0+i~zR23|&?4iWs60mU-wLQh#+hb#h~7XEETKv8N?P`KL{U%!v3q1IFQK&5)Y4ik#JI?cCEM$&X>e)~*OabX zzhfYQos2hlH05uHs=9b63GSCe}B+len;}G zJCYZ_lDz(8@{)f_Uinb+y6+}m{iozLA0?L@NEU+ie&v;9i3+M zLaB0^vEX>BoS0<#)6vv=>(K&Okg%J4o>P+2o9w~Y-}T$)$-5u#^S7anji`%^kNwt+ z&;7z+Q;INn7=PE}Z+l9@pqw&c(3Fxmn2<7l@WWBbus6Xz3HE9D6Y-Y?cPaRD47x`d z@t21`FaDf^r;P^u<>GH1{uT~e(n^F06BY|?la~y-(#i&RPyO=XmQgE&%E{$|ef(-+ z43Eop$Zu zrwLQ>cirG!smo!$U~p-AKK=w`E%RzYxy$-WdV<-IXbDPow;Z(3mSJSeuw=`b*M2tH zGF!HIWZ&BcmI;|5-|3U>t*z7Y(;qGyaGgw$#W-Lgq(FFZV+ z+5`niA^$9!yMT%EYx<64tFgkL7O|VT4ae~;#uFAU*=HkRvgU`OzMVNXU3mQOO>Cd$PT2+9+YOGj!Yj=j$ar=(X*QJ(`%71`P`;#c`CB% zr?B89lM;{5ITX}j3WDM>AecQzvqD!H4f5OJ>>~4s^{pU}W;R80UM<)lRT)Y!6{W)6 zvlw}i`})X?8Xq}HS6-luswL%D#@Q$gUR!>n)s$cqVc-=Hh-v+qqlL-deTVuA5{wP~ znPY{?^?k~nqkY$>kQcmqt%r`dvprV1;|P_fM`n)NLe^*R&gru%zS(W)a(s{GK!Vm) zROPS7%B4!Qt;=7ZvjBb4d)Cl8qt!Mlw7x4Hv3A4Nii#$vRctg-Br(gY+|@)*xvU|4 zE?X#oPE?$lBip2)nP*fLskh+JQE&P^mmCOicW-}|m4tMG%{b-k-a}$imNnx-Ur#3$ z5(OEQEK77k3)2{B%^)LWxGj_|_PMQE*!CqdYQdMBfC0;n5%?AwungV=0Yd|(0Boq? zUB9xKCObQ9CCkOqh6aIkf9U;ekpJ%%WTs$z7p*kVCf zHuQ$(H*M*xGaPIB(=FDco|cH$%sx!Hl4%V6!z^E7qB3=iub0~G^13QaSvM_Sy5@#W zo)rt%F1rEcK7-OmbDC?#RBM|9qmTLIrwJhsMx7%T(+s6;maRZuey#)~*Aa{TH3`#% zwvfk`+#&waG{KsAy`Ur%QdgVQ@vLu5JLY^o%w=}i7Hdi?5u*_ns_MK-@LfR}kJv8U zvIS}(adBmBbtT4hW~}=)U*x0-SnhL>ugWwkZo|y($hvX3rt^*Q{ zoD*_Zm9Ja6YUNstf1(Jbs=C&|{Je%%XSXz0HelH+idctNL4{FIi-l;Lxp~maY}roB z)FF07d9;+T-qsoks5or2wQ^ep)QJ?j8xdpGjHPv>xOU@Oz6vA@2^LtJkgAO>d`O@L zB`HlAl{3b$ifa?lrLL>1q7{;jkJmXghb(j-FO)MvqYB1mPBGNYf!O7@n7UE5=9vah zhjgf`*I*V6o&(aMXYUg+w}dO>DD#X&nhQ=!%bJDpZ%T)Er7gj`5i?DcSiVa%z`Fw1 z=*}zB`jvHQkZ5)OKxK{Dcc=bGnr#T*-pHTDIiLWq#VZFwaWsSPY^X!B{d z0+(UV@r81}IafYZkTU=&yFk-{GMXs8YEeG6D5qzuvmCrrg8tRUlcmYY;s(?in-6ZV ztsy1V)s;2%Y;+QB8}nDP?&U3OXd^lnWX4dk9U2q1WUJG;%*)G55X?u=0n_9Ry;#1> zDr2%7IAuUF35In-3VJOe(NH3!l+@L?;@d_cWes%pWVl)wv%a=*b#rCqt(AD)AS7?7 zu51wm!+Ifwb#yRXA*8IRLqZb`Ulvkm48^yF!kC3M_1i0;erssLd%2KYj^$(%d|o4@ zTvH7-Gmmw#kg^!N2u6O<)MaLHz0vweHX{A_x>m4l@(s?Jbc)ced{e*|ytrOCgR720mN)#cj71E*g zzZt7Ns#tQdNJv`_)r{ugIwAeKlJYfkp(0?)VPRB~Bmc%FLfT67;E@zvEu^!GQd2Z4 z$(euSLLsdjN~VaTQX##eavR#ycG3}*R@Mr}a^Dlb1_v4K@Xe!@Zn?=12YmKYjQ`uWYZjR~s_Oa$^1))_FwC9F5lAeW!8!2oH< zPbfD~-C{r(l`}dOX<1R-xP_$v?@qjzG&i7=P}7uZFei-5Oi1BrO1(1Snzhi(RP3n3 z+6MuQoquB~eP+zR@ml&!zw*YlqG6uX;q)emH!dclG_T=C`W)xo$>PkKNpaFjmgjp^ z&V*zuRuKj?Ot$m0qO!J`xtuVqbZrUQET_E-3>s)N4cta5a9+v%kdjCZEnMBHJKKuo&UEFmOj@$hisSAadU-Twx_Am}-7CaizjcWMXQuN@u(s?7cxR)t zNj6<n#agWOz|(yE2r7f%NI|rbOl8 z@k+PVb6Dy)f=(L2ux1-s&iY|gitVme-in|>*)A*pG(-7emZw(kKp-<_A`mPPF=xR7 zae^{xf-*L1#$dV;eev17&;E0k>A2@DDU=ZCwjw>IO}B+okB~t!v>nH!GS4h|9+G(A zL_3~TEuvu)^-PFDz?gxW@us0dE{KcZbv``!J>9w>5LTJzsI>oB z8OyfkIh5V#^kn5|amJrbDfsY?RW`Ui7R&@qsiDNc+lG+oNT=WYu+3;x-pMjAm6bp7 zY^9sqZJ4US?9URJQF_H`=3kS7>76XQU$Uaiz584RZW@sc_%uIlGbW`Ari65{t^3Jm zM@{I&{KyaI?`L`QP$asxhn|9(TidXO zoQU%=lR-y_ucO$2bi|@$Oj3hkB18FnoM|!;sNgw+)h!CzgOFY=_ImJ@gh?IlNa6}) z=ngEslD$_7rcXf%DWwze*gzjTjVJD zo*qi-`u_MR(G?rfNb6~)=4T~oR!eey<1O(D65~C@oMhZ)4jGOisP$`CWA7B1$z@F; z9Ns8QKUiUs13@`3QYrFcrm|%EFs61SR00=`QOr<**4ELWeF=noCHD zk6A2D`qiq!^xHO;=GbX+{<)GjB|q^Da&qbJF+253QGtu0m2__XO z*TI$2RyB4lOR>R?xhkJxjbclG^Y;-j?j|vW{djb<2yf@0CYN_@_{U zQ01PMe3%G_<)~y$iI#F?uK(O7QAVnaV|&qw_3$e0JJvrR6L3WHwWFi!+RpB?$&jkP ze%%CrP5!EQ)i(fl7tmi*9oiE6+Wqi^mGarWE$BmfSh=*%r-6#*v3#6r$7oGGrFnuW zjlNUwuw@F(wBMWTIVX|sTh%X|+r*R~q7iB;-wmVAZDRT*u>g7Cx`v@JlTuIicNkj^bj%Jf4Jkg>8(-DTg+QNr?Xlx?DD0X7z%u!i*)$ zho)oHd6GEJ6O9;;QGh7ta}pbrF_!n!I=?4KY9KV;zMyTCF-_TPHJv-RR+gb8b6Dod z)IhbsE5p4|c$x8@bpVY=D?_Gs;aZb|Vro=Tt1MOtd?Jqx$yVBpj%rJ6y~1Ks9kCfh z6Kz94(zv<}wPS@MqbB1M5iWUgr*0VBG+p4DsBWaRH_Lq1hV7oc)*fGQw6fDiy?UpFB!;y? zI%Uu_rlzrmtWaNJr5m(&N|WKb4>}{$39b>s;up;hi>xZ_8&a{cvs(gO`j)0?dBUj9 zPNRyO9Ztjp&OThm)@v?Yf&&?M0*`>Lm_NnsM)?m9vmT2-*AfVpl;6@J@Pu12zo zZ#mEfvF(T>lIgcrced#jo;)u1o+DDn0QR*mV6$xpFJ^HeUw#OtMye3(zD4C>;hIv- z1x8|&b=V(Uyqdh>_vXgcf+;`z%9g06nc;W795tnf4cNj~pGheD!n$ZRr!;ezkKO>A zaXUvV&^U&3u4;S(YiB5T%;;J>gKU^8%_{x|-&GB%oWfO@@+c@`p#koAoo(n*J1?>2 zhstf&gjU-&hBnwXq1{gjEyM;9?`~}0LLkO5R(D>;pMCdDr*5eq5B}Bj6#Aq4sDd)b zkSgz#F6+ zx-_zElrs$mI4(%?CYl!KQqXP`48kX)9l_haTX*XZs(R$HnEBpowG?5z z6qCG3riqv?-ujp=1wpr1r_zF|S$4I^F3hj|o@Pw4M$d*#sD%5U$N(uE+}Y-_hM<>ys7*agk_d6n1v zi@J=DI)e?f8fRO_il_YD$no2fQTVS_@G!dVXV=WS@!ZiL?h(UeNd-i$J1tn zHW4%C{>)Tp*ZL-TMLFMdz0g7f6YDgC{SF5j=%GHZSdidtXt5$f&-2pLC!Mr+V#TnK zKAtq8G_d@HHmCm?GR9Lx!v>}@jlnE)l3+6AP_2IIuy|$DHFmG8d|AR*xH-4UEARPE z-R^&@vV4i@)E1*De2Ipkf_(d8*|JF9{op*?j3E3>R_2-I3Ccg3$IDSR^75k!S?iIGP$fq}G)YM;kS#Nv|MsbrL0<{Y~6j=+|ws!^!FN5tXcdeQTZXv{N25aSLBS&$r*ia zlUtq)Rk|^4<&>6I+I{<@A5M7zbVMvkJAuSjm9L} zF~`4*Kej^+Xn$3*xMkkSDFp?tT-h^9IG*ZyUSg_y`_mGtc=oPPN`ctgVVf2jU0_<> zE={^Z{OteP(#z@FAO6Mipe+%Tr*?l2MEXy?e&u%exso>|5}V@%?B%qCa_mn}gBWS^ zVU%S0WD+YE#CRsYK>6-^g;LuCMf{D{4MEFGl0SVaY=ZWeBrBS0@01xSlVn5UHI6;M zwx!%UUHn5&mg&8o>VNROA{|e(CFRT)KeNn`{pP{J%uxnUg7CD>G3Agg(P8??m^2k% z#dng$KSJL7Gp7oZ5k=qbr^KW^2W=^IK;Q*5-QAD-u|JXVXFn!}RKuV6``PRhTdwr_ zssGlekKFc*Kl#}1j+s?^X4aVoFpR2GVckTD%`=UIm}!nq3azvyVF6XP%QeH`$A&!V zuCaFl6(c)Bx)8^Fmf`56)0u!tM4{XF0|}}MXtS{*NT1?M7K~%2oZYv|yZ0xL(5~@E z{$5&FrS|ZxiDMndsBgxu(wDHG^*Q!1>aA{}KRA^iskm{XVC~mVRCM?UXdfjDQg8!8 zy?|apX_(b!MNTQBLA+2*Wbg<~K4QDfiJ|->n3eeZ(eaGR6_fg;1%8Oh`~&hjWktc0 z@=Dsf3~uq%U!_a~XR z$$eUERf&NhoWvQCg7cYer0pck#0D+d3L8ah0V(S z{oU#+aq$Xmok*D-he(mt@o;3#7%-)xGFR3yjWq>h5s#TsRB3kfl2%iCzX`_;mdf2& zUBb5Al;9OtA-}z|q0d?5HYOtZPd-ZleN2;Y`wSVXAOyHfT+~XZ0ihhm=0q(PlvoH} z>p{Q3H}KeuQ0bVXoS8#=lD1?VEi#SeTcS#SHom9_W*}&)I(UI-OUO6O7nu98h=a`s za|P3Ad?#IXu7EEI;`7_z3*O7;Q zIys;&)a1k-(+7RZ{U|?n0%0~rFSdd^MxOdH-Rm=*3(p8?Y@RK1?`&OFU_T_u!RTXBrY=ib2%&C_1oF$FrE}ZAY)Hqy2I}+o~o9thaGGaq=q0jFpGqJbhxf z=LM;(pB&yeyRQ?Uz6m+zag(||ie!2lLzICI7}H{twviAF?BIy3%isg5&*^kFi-p48 zS#65w(7Y4{si$%DH7!+l>RJ#~Nf1FqX~c=X5XjAedf1hNR^^+R1D!lQAEoDoGw8$ZuRGeX`MW76bAm8=1MTy61UBU; z^^TrC3|x3b+}xRyiBo7BtjZw={=?m!@!kD0Cv%c8c_JoRT2WqhZv$2#S%UypG; zpr&%PJtpLE_@nJe@&z_2=~o@kw`X2~&ev7vKrhSEJKrAc>sJ=pJ#`M{ZU;91kwbd= zXFJk|0We;5+*ledFTV|hvk1YDk3T+J-9ash6;R*b=_E28n z4SUED@Y_S)z!UaRL*SS8&>DJF2YzA?EyaTe13h-F1Hs^P2Yo7&9IK{eJ^4zveah`h zv4h7@2Gf0T@7dw_cwg8Z1@J0)Fm6pZC@UStRQ7SSAZ+2gpjr#uTJR0n5k|+SPRCh8 zz~=DOI=<$|SrLe`5N)&2^ySmf|6cJxjx*ne`PV}ftBW8c87p@Ob$ zj@FLAR~)w@vI{+gc2UhctfA|>_Bh(Cl!SW6t-iY*1DMCG>IgjKpc$0|CEwBYLx(r1 ztXuhoqcg4R0V;5eFpoQuyME#Dr%yO@CatT(;fI_aLs*9#R^K5?JGAgj!FkTql>3he~-|MP&W`4zKOzBk?0 zogD#ZuCgJw>&jf^C_USKSE=7%8pz4@4)$Qhq9i#3D{?W3N$y&Z>-UP|@nuCWO>Ytk z0$sV7rR{PxI9pwfP7Lp5ZO0d$ygT>6D_yxT#3?st;Mcjz4bGEYx&6ijdi@c5?aZ|% zciocK!ja72U)sy72(dlV$mU$YTt5_@R#C9m}$9-UNJ^q7x{+pMnQ zJOnszei@_)Z;SE}>ME*jwr_;clz%S>?9N+7Ql5A1L?Jji=oVVhkGABcbx*;ZDY@(B zyiQ+5I9RU%1=Z8%P3WMs&|#jw!25aq)c^ix-t?~f^L(G>!4Tm+mNz-M>nC}>i}c>T z3t@J_#MhD6xy%uqOz*GdB_j^U)U>Xb5XW=mu7~36=sLyY>!X+uA^Sv(>@yKDE8YU? zy!%21{{W@~GxIO_2k4aW1te+!mYJi3$roCvyyy*1FSOvhA{Oj^JaBz}Z>EJ!`-45| zE2gbIZ5@67KDImw;zVy(Z9eNO%YyyL%HDj)_bvH-zUus7uW}+Er;-Er=Xc=Gdlec` z;K%v2Ea(V4oS)ove}11^xB!*(?L!N-6Fq9j(s}NnoU4_0$g?+4_Sa@=A;qir`jFSrr+k5=; z;FV5y1@0~kE$F(Qf>B?6^9tL`STMI19xpgKuMj=Kyuwwx?!J59-M5$dZY;!!b{N2e z?`{Mg@^pQZyygb}6%oGjNMV+7jCTPg=ZA%!i-l#Lfx=Zi-oXyqw|%}4Q~Xd~S9hTm z-+lkDPzkc<$Ay7lVOGfA_4`72^_?ml4>^0jQ2Dsb2C?CoR`Ze>( z$*!nA@2YUO=Rf49G0AAi%*a+2yE5NNq$kc%;F(I#Js3eJyVE`r>eE1>mOXdI${)Bj~4hQyZg=exqR!3`purXzHj3LZ@=bmf8uY>VrJ(l{^AVB z-+hc!0$zhJp~#y+k3@PT(Ic52MtY3u=|n@a?=B9SZCE?79do>)ld}fd-rN9F8Bl8( z)*0Ya7>V*Vl&S$Hu0##uq-Rd)||-IRYW?&x}dt}?2q>%v^b;vTfR_gRBxoYA9h ztsMy(-tW(gI|8>A`97XYP6BVvWx=B_x%IKYg}GB)ZN*s)jz&ju*M%Z|n20NIp@`)O zypCHycH2E|#ZVlcaP<;sG2!+2Ho3;&B1a1|}MeTa{q3F%=Is)4f1?F=7A7 zf#R{gbH)2Mqje^@9}Oh9Z}U&27K)kZZ5aFL2n#~NWEHJ{m8Za6c6MLuvm4yI&Kg>w zP{0(F4g=c_Lf+_1ue(M_<1#DtX6SaiQ4pQH7iOKu05VG* z^#Jw(s83#Xp{x(1Qa77ZAkSAD1?6FPCx+hc-fNVA8}ndjPs#K!Oe2Q=2J4tzk8}mx ze&szk*^>sg)31Ew?&jZ^pO3ho{@qWV%#ym2q&)}mNrNf*O_ErO#*q8Ow(*XsWH?#! zrAsuPT)i;!>4Y=v-_%&lmsyK*IHs=FK#8%G9yx|=EQUb$AfAoSnMdjaKu_<3A{w;kZ{_S)O|MrT;zuCSB|MvBv{M+Li|28m`f6LYQx9@QN z?M|EWossxA*n@woiqF5LNAqv@Yy8_hw{oY-zrp9o{M&zN{F|uf-{vv?4dEEwC`7L1 z;QZUYM1eE&s>^+JHYt2s$uxIZ!!KY zJwE>iDHzJX9cKI+^AX|Siiv+qkH^0qwPh|+`L|Z$-yhB-3-E7ntnzP=BfP}p-{xHo|JI}OZzri@!u%V1 z)AMhLLeIbbT;tzvC;kl)y@66A)tR1uV}aO<`1$qpoXh0j?w1grj(954U z6%FOzkY>z(IsbMN{M!lQ--0px+iNQSc5+z$?F8{}zhnFxzJh;q|LyW`I7@Mzj(_W? z^Nd0JOwwP2e>2OOwSS&$nJHsG9Os8&9)vyF8O^W&|8`#z6w2)ABj?}9)Qkd)4b=>v z%o+GMv#flZk#ApT&+@qZ+eLODXCQ`uE0QhSWF&zdi@Fi{@P<}MJ0@+f^rvej6Le^VnaAm2(j z4r1F_xMXie!d#jka$^qjZ<-t8-@@PLjE;O~{9AGi|5hYpr*jr|W5K^6$A^i3V>RWc z*M-EtnPd1jB%bka2#WJ>EH(tQ=jgbQm+^0`a*^FI|Hh)3P0^fJ3pPkq#`w2~sWg#g z79&>7`06`FW1|_ z{M$+F8)Bjq;osOSN9EtX!}zy|oJ9Dy@=Nk>RU`9nPig$ybntJ}|IWYt4e@V=VfnX@ zqWCw%{{sJJh~eMx?u_Q&KCH->HpBC8k4c`#hVXA#vJwAwJLBJe&iFTDeEw}7=id%U0O=z98!c%5vi#c&m4D+A zfq%P`@oxth|5iR6|8{_#t;CN4Rq6RR-fOnIrV;;!fRkO|-a!Cpi_)R|+mkB)RyCA= ztBT>@ZqoR-?GgSB3&fH5w>MP&ZJNfv!GQR;F2HLuz`xC4{2NXXp;|7URTKEP5;+qQg9TWm zEjq6yo3Jfq$C@ z{*4WHIBRIJ%k~}#ha7RbQRUx|(rEszY8d|QB_03v66fC#jveQ9?U*g+viU#f-=?XN z4B_8+$%Xm1KFM-3(BpmJA}&7bniLvf_--zv)USkChPT-=^VgcNG7|i;)h-z9bFd->PLh%1PzlsxF^@ zdmZN*S#LxW=u7f%L*2worip)pU~P40Uexn%=z_q%%^rz=`;N{2I^*Bwx%X&-Nkt0& z4P|~g{2SJ2jDNeR@^AQ5`8S^ISpJRG5bNeae?#Gh`L|zl{_UjX!$cVT8<(RY{2MU5)=TqmcWV3_V!#hv49maW z8D_Ue;NPmE__rq|YTulH!^o}Y-`?i@8`m$K+r*R~;NQ%gf8zu$@o!ug!TC3QhZ2IV z!J)`8j>CD|dBnf5#dRP2QVSvejUmh+?mKMbNtlU$%Z~7GFa=0cJyC`KQsr(yKbW!EsR8c39XZ)L%SmNK(h<{5``8O!) z%&LD9k0M+sD%+o!i8ft8w_Zr^5W3PN_uXmd3wT4dvfZ zA(!UgG=CcZroF5DoA#>lZ`ym9f71*&|E9|%lznuVndzcc)ggY(5YxsdRsIbcM~GIG z4lTmJ!G@{Qh<_u6FzY11zcCdi__uYOe`6bZ)XqoX-_YHFe=8cEfBQA(-woiC*#9{+}ZNzcD6ACZ5nmd)?bW>lDedxyp~<+B3f-*yb;-+Cap zuMW?@azK_KF+_L3iEG$5&rFF@NYM3{2Np1gW|IEu)*3rJpcAv z3H%%19g6U82S(uEAWH-d59Qym2hq*>H#g?f?xFk}+6PM!4I6RzH<|c1-~fvyU~+In zK&;BYd6-Vki>AP!0`PBM8HAn6zsY+3O%C&K^BDi;)%Z8Kis9dS;`47P5lb%kH+=qu z__u<~;V?(u=<-jDJ%k z##7r5rA{98BiZzm=D z6JLyfJH`07+rYn_VEo(51q!{K)bnqAJ{*^Sdx28>yvD!bFtWn2Jg@^8>xWA7wB|K@P}uzL;uZQdpMH?}oF{2NCgKj+_?K32{@zy{_QOBZ$_1W+o@gC@o#KPl=!!Y8UMxwEtY>H_hS)9gnvud__y>}{*6rw)VU<_Z`gX)B>=NOOg4#s zLzv*-wCMS4f_r298-6dGrR9?RTOunt^bZ>Uh9zBue_N11<*IGygMULaisj#s1(kmT z+DkkA_@O^iRv;if{RY#6*`_y;gMK;^c$?HLXMCFR_snM)KyU?C<{)$9VPM&ju`ni%I-_& zxrlt5L*!d-4wllsj2vj=>G^Yd za`NpsBj48R$+z`6%2%SuH|}PSM!p?zCM|I#ohuCFKC9?c$>ikQVItr1LB3H8WiZ``_&ilazG?0#9SV71!)?ST#o9FO(Ir+902SL7-5&32%S5K199ZpXT z*sUG0sVB{sLB1i4p;G( z1Np{3@4zR>x9n*0tzua6txhH1ym_vACtyHEzTxE-C-}Y|Wm|!#4)yR5k#Am*Z?6*h zcEYIuQ2T_)w}%+{*1*s$_<9ew^}E~R15NL zW*)*;$+rX|-x4@779rpA^AKQ|e4Cf&xg~~t`79{pPZRm}NQ8Xr4U=zv#L-FaRPyb2 zJig({H#v%Yo6N~K`XKU6jw0WfQ%=53A@XfQH2FravEze>LSKqcS)6Xe@|PQGmc`F3~+`Su74mB=@={8;jh8^w@sFpNXK z!8Ag?;YClry~xNn7>3C=e9sNTZFq?y-|+6#TSk*_u#F+#U=oLX`xlLTgY^*d4Q4v> z4R2B88`3+Jd^>Xq^6h+~>w_@)Hd-U!W)u0gkI1)ug}zK8-_TDiJn7}++m)PrJI_(K z+lhSJK*2Eb?e;>STO;3^hzsW14v}v^i;!>MEA*TP z`SwACeCt-px5FUcx(j_jEL8g0^TWbGKO^6M%gDFiG4iduQ2CI^x8JMeTR$h??&suN z)@6}zUKf#Xc!GSx6Xcthk#AWsBzh#%!$=R6eA^jCzU>^2e2ecaF8TK9 zTni6|k#7pfH)xu^3G(giT*Xk-6`X6|Ih1_+jL~IXasB=T*))01!a5&8BbM!x-6Prj+< z*cMj5`M%G{w{l|E%5~&hKap?!M847Flap^BfP8zKlW(6DKN|R~SR>!&spQ){3I*=L zl&$jEIr&!3$+vmYElj?Jcy|^}zGX?ilz8M@4#>ATjC`9NL%yxilW#XkO0yK$ z5GLQ)d)GF}cT<>r`v%Cje;orW^__y);``@0$ zb{D(<4O_FM_oMsY#?$?8`{yXdHsxpR{CH`s%J+ZmsKn;y--J*e?- z%iPL+D*pzbBlB-hYW!Qio_|}$_&0=eg&T#a=iflIy*M)ewpHWbZ23ME<$A`yP2~I= z&IU9__&2Iu#=pIAY5wgw#=q?xhJX7Zm+l2L25M-M=yNjZ<)&=Zly|Vk?3S#&-BtH87Hx>heiQNCjDi_%e^KUGg*%ZxrwP01~ z5kKquD3vC%%wnViC@770$Seq_5CZUTuTnF)YHVT9IH+WL{w~|ZpZ}1Y~-*Sn6 zLwT2k`L`GL6aV%y?tfe6_8rVoHeVM1ws~0o4YHCl3*mFwLP|SPacYh<{;fn-Md~d$ zWc(YGoRRrA9^^&IvPvhkR3NphzX_YwqS`M0pw%=hB)Z<|Nr-!P}S1pkHm0(rVJ;ZU zzbzY^CNnDK8BIf?LZn=i?~?HrkZ^K1NDF8DVf0)M~%?QiD( zw~S%=w}c%1{cjoI-wb65z_!%uEDR+HbOD@UMFL#_XIPxTFMu;FOi(X?Gb~BaE`T$v zPT&{78P+A>;y1(k1a<+OVM7940B0yqV3+$T88Q4D-edT;gd9EpmJ!RpWvKjHhRVNX z4CUW4RQ@eP<=--f@NXHz@NY05hJS<2@cdhs1kNh<{x>Yyh=1G9__u?Mf4d?+|F(?t zZ_i2e+w9@{-=_b?`8TJ^zwwB`zum|9H@d@Y8m1=0-2e6*J6rh*u58frZ@kxR$E7CV z-w<#zzm+DuC>_eb9aH(YokRJzoiY3yu8`vQzqLg8H!KiG;@{4x{F_7L-(W!eTMyth zC-^rfzb#|@TMrI0JHfxbs0#vNm3dxL`8TKRc^PF#_rJZw`L~ydf7|TF zJsC0gzdfq*Z)+I;M%hX?A5i(XBxXkG1^@Pp%D>^K?k%qn|8}KY!H8tQr@8y`__uQr z{*BkP%D?$oMSiIAZ);>6@+banwT^!yQ2_t;oCI+g_Wrkb!N0NJmWF}?Bjkwu8xMx_ zZ-}moX)+l9_CE1%7?lyy>%_k;1OMg#|Hg(pGx)bFW!yApc|*d5!YcoUlt%M!JBQ)l z-q7)HxM+Y*6d;@{abEXI%$BcW^MB62In+po@Nc~2!u;EZlI2#$ziCPro65iGMOV+i zQAvV-VxeEv;WLi1S(asJH_ z%fInr#4Twk(;@uZF4>N9Qu()?m(Rc9H_3T#1c|yd|2EW3%w(GQHwadvJ2O$%-T#Iz z2>e^oNc`K6={M}@m;IN4e^UjMij?c%E{A`^8jbO9i5xgW3N-$WCp(sZV>Lwl8%r>x zl=E*8|2LxfH%KzV()c%8N<{H*YJ6%7BK{4%&@u9&@o!jm#qe*}Y5dz*-2Vob8vh1y z|AW?BfPX`lzOLinth^W1^KbC0)z{ck0#rE&fZ-=TzHYj7xX*!^$Ih<{^?>pu9U7DD{n#}pT?Cnf$3 z!c6>|JHo$h*7I-OvvJ2CKQUl#vX^grR>5@qmj zAL#hEy^MbgNGRE`Hb|!o8p6K?fJFqrzm*XG#mC<=;+2aNiuBf14lS-%fM>ZLh|^ zwaKo1bOjvvw>HkdwaK2_hvnbM2K<}q20+cZO?x^2hP6kSe>)wAf7?3@{|0~H-|!^< z?fhl)Zy$30?R=Pj`!K@4-3tEgR*ipSN`1>h*>ai<)}_PqZ)b^r zeEto45WnI4TPfz#r9=5Qv=5dd8aCqaZ)L>4mC4Fl$x=o`%ehTu8vnMG>C{%BDd3uH zcK_Q7*|JRI-^%p-TUnTYTgLde6&n8rS26tC>G=E`O2l#%_&0q1h4{Axm&d=I#mZnD zMv_?m4Li><{2Mcg%fF!=v&~}gZ>weB*Nc^3asKT*+R9t_%VGQ*eo$e6@o&A1e>=|k zH~bRnUBtiP(zG_$i}ZL|vj09V|CTG`#~>^V82<)D^~wTQvC6;whWNL4C42W5zg-D~h~%Pz^kv8@T>-2c`)WM?&8hNl*a}toH`-2D z`8VvBs=0{6zj2%4`8S$wgMY&z4e)OR#J^pk@^9Pq{2Ms~{|42bx=;iHr!Ey~FDs0| zEmILVIs?KGIOSlD?iRR-c8u6oQV_m88=HgdGPpH>;a-ip4DL<33~reQ!%>ic;jqny z>!4@3AS%PdaC|q9O;?o8Im-KUJlLSrU^uovs<^YUQA(G=F{#tDaJUMNT#rQz5fpB^ zhQduJ6i#;&9Gf7hvq~c2unDb;9rHj;JJke$gwx{Y^9t@wy9tgZB!+~GcM%*44;_UD z!eR9o0pW1-3v9KW{enznLC?YA8aO0h#o+Mk9<<@l0JUQMnxoB^(Y;84fqm?wihWxZ{MwVRtDG4mT0_+i@KZNAC#b zuZqJ>jKbmA8^_@m5)M~PINVh^Xi>hIIcR(IJV;ND!}T*9ZmS-L+nS@aM&WSW&Al29 z_nbp{j&Qhp2S4ZI9xs9aNF%vWb1&#EdvgRPr~8G5e|okD=?Za zg8PtgINS#32)sf#++o7uItYiuqdL%T2M*V+1_On5ivz*nb0>W&BFEugBpl8Q9FAfr zgXuoR=h;a(oaT(;czV+ zhs$;N3W39s^(wMnq2X}L9KIDChr0G+w<8V(94)>6X!yN(+_k@PS9SP%b&jE*f4mceAlJdHraJYVs!)-0- zx}f54=YhkG%Ec94Ptu1Thr2*HT!S;Sk>PMx1BYt>hULyxHs^LN%2i&XXS;8)`VFQ5 zmxjZo;bt_B!(FZ6a2ps7H>M!)d@iPIyIi*chuiJMbdce2`+>tfp9@2)0>97XD%+eV zpJzB6UjK`|1_+1yPA=@b0>I%m5Dw=eS5K19-A>PKz~Oes;&59F0-rM+?(+x^_W{G< z-Xa{%;8ZVy`&}Fyj!vqcEVv9D4r$zslq1bs7!J1uINTQCaQyQQd;*7aN8@ny!{Tsl zDh{_I&$ZX-x}D>2c-iN4-2oh~xxmwgdgve=ZUu0-HwlM(+o=@gDWgEG!GbP=yPffF zD+q_XgAs2lfW!TgaJY8}huf>+aQieI?sk;k9lDF)_Bbh~J;34e@({L)!(|ckqhplV+U2OEpS{SY|Z0LS5e4jk@* zJYRA?W@yMa!EasddA`r{@Xm0!=Lv^962al#3gd7m5XZ~pPQ~Hg;qeWR!<9wha5j#^ z(FfshWl=aBbINhJ9Kzu$qj5NTjm6N|INa|U4hO?9 z4u|g%91bs0I2_)cVH^%G(Ks9oVsJQ^#KGZyqTz6`9)iQcOozkaEeeN2dWYh0f4Bq= z_j#c!6vp998V*-PINY}ghx=BcPb3@;{lvnPD>x2!HOJvT=lt7#!r>|@7>2{`FZ7ja zINY6t!<7;aR~o_Lsu&JeN*;XsIS%(P9EbZc;c!nyaJZiqdOimZ7mDC;zfp0x7lFh5 zrqK6`LggZR4i*M3G92zK!{OdxINWavl|jPc-dAzBiyVi0kmGQc%fjJSxCn>C6F3~6 zz~NRf9L^Gh!(9&?ZdC+_s}AFE7T|E-clmAv`BpO5_iy;X+cW$v0UR9O-1vZ9$=`9f zFAThm>;X937`g}!k3@PT(Ic52MtZ0?+}EOTxUUU|!^L+N7l#{NWZ}Uu9PV}Ca8Nw` zJ8-yxxk^S6h&TJ!hT?Ez_(gDW{XPyH?yE(4$pC6J`!jtSjGa1ZNoxE~P?_bZ0OJ)+0qRCDYStKWS8#c;UI z1hQ?`;cyoThr38P98Eqs4i^Fr_c6!e#^55jG2x5gmZ>=0G71Im84h-2+-FfZ+-DIS zZkp7UMi;?N3*&HU@h*b1NWMw&a5xz_TrtDpiehlM3Ox>Yi==#23RH%1IQHJvEctE; z<8VI!4);C6;l4Q%4tI!fxTiS|ckllghx=mu+lvn64CmhtNAquoz`q@3{M#tv-{wd7 zw=BlLy{7VSui2Du5dSu5B>wH)82;@wjejfrBK+I8hVpNRu-(P@w@~E%H;sRrtMP9? z;QZUYHsuE+@o%sP|5hKLf14D|zdfMwZ>4VKUX_1?&yo4J$29&eN6){NGX4$WjB}$9 z_57P9UpY21|8}FszghBqD9Tlgf6L(f8-Ct=M}&W)+GYIP(M$7hos560ABKPX9^>C8 z#pmB31w;9_V~l@eJ|g^^m-x3y@%XowY?;ew&#A?#+(G=?9^&8bwV7XL{2MAF`u?{a zZsl$ld?+^)|JJJVZx1m3O?`{v-|(whtzU$HgJYF{gB;-{9{*N)IsDs6m4CwzJtNH; z|Hj_*{2QXs^KXx9{M$XmzagSGP-?OK8wm&Z{O~$|BEBLnsf4lq}&Qj>_ ze>+d-8R^~~QtoEpcm3J@Z#LO7pYd-t*j>r&qV9iVM<4a~zYPtQZU|t`z`xmL<$H{O z`xbj{jLW}$&hCE;#oYfkU$)fANCG<+f%AlAHl(#5!phEp%nwJBZH9k#|J$Z)xKQ~w z>fky5c1Tj@a{jH3^5%gJ=igX>Fj0P$&0Qc0TfUBeJA>^(Oq3%08=K{*{M!#0{}z#x2>-V6lKfl!$o!j6s{C83%D<%!<=;|O z{w-DI-%^M0Z>huZZ!jN*e}m2N{M*x#=jkE*8!Xyf+3}xe}nj+ zi00oQ$p}m1-)Jcj#lNZXsV#{3H}pcs$cx6mVc8YKzpc~wHzW8rxYYPJi2M6mZvp-d zS-L~VzfI@8sGfg=UmgEeuO0fm1poG)WPe}f-%z+={_PpgznzhMmiGNE|`8O!)a3Nfnf2)tr zziqrM{w?o+!oPh^_rJZXWfICh;@_AqTFq%Yx`g?d z$8-J-8pm+XRUKM{e}he!em5Gw@sXXV;g$Z&PU+i(A|K4n?F4N_6+CW z5M`Ku12}Yv``@^fK%vQcAn1H474i5t^hx*j0SEqV7w6x0$)4MW<=@B#{F~~A@o%l1f5X}% z%)gzC!@so-!@t2F_%}R>e|zV$`M38t|MpIpe|s;&zcqn>Ytr~Prql<;WjV

VehWYB=8(u{zEq$w}Nm70&p&pN@TaEpu+RhvRXVzwa(i~6fD&C2`TlKzGZgMcb>QQ7VQ3|&_ zGi3jm@Yar1;jq}1Cvq`nC|PkcZ<;Rq073|GjQ zW1kLy6Q-71+j|$`ZbF%5i#%K2-K{J;w~_o!sNiU=(*9LvqSBUO|HX2YWaudl)U*1b zqA~vFbACm_;KNDy!XniWyebKI1A+I>_nXrj^TD}5jck;0T3xs3DFL~qBIzI4=aws| zs}pr)|I9G=iuDabsd z*0iMeQ9Q8(am2ayXWuJi30bfx6yp=6CNWcjVX4IPaBRoFnMUdNT6P85Dx!MdC>j#ojq{x|fv`WSDg?X*Rr0fsL6pGySvgbWJ zfg!ej*vDD&`{(yQ&-4DC=Y5{{y$vV)S~;l^M5j?r4%d~Di_izk$anPsDKwV3$_xjg z(WK-gg)!bmq>csURY%@XYssu|xU{;Jl+wgAvZD|uQ?gm5K1-H{&#OIT-65pCK$<($ zcoD6OBIDO~sh>!hRr(J}Q-ntNkf(Wns$6zE)bEqhw+LaJHy+{f;8WgMVGUNH(qPll zAc#sb`!E73t`)%5TvY!^3g?!IgY6~!E-C!}9{wrsa)UhV;Ht3n^j*9}5WZ0)o$&h- z$afeiG$DMx=<%hI^dWDAIO!8Wj09(T^^26*RH(6;d*^FxNlM0GQ(-sE3(YoTFQqrz z7W}C@>7+bo*6InHxe1y^@oS7sX(w$-nZgRYG8@Zsz?Ttqp{uHs#<|F$j{`$`3 zjxD)aEpB%v{j0c<3u?r!q`{#f6qjS*;w-rAfmplUvk-bPG*%lOt?iX(LCWu$uCWPo z_s%R$xV-qx{$MYi=~X;@1fa|%$U&i-GCs2lKfrC4XzvW}Y~LPiZQikyc<9e1(!`V- z!UpHrNy#SCpQcQw-b$HWYCZKZd~>0mGWXBdQy*3->Ku&L{@?_330|*uI@EXNGp(@#`n0Ok;Do5 zGZqr^76l1ASpZa?>a!*nt`Ot0jYb3!l?`GNlJgxVXjrr zIs&h85FezkbC^z;S{hi@!m%7I6j$-63^yV)7Kx_9S+F{9X=%49;R&a8n*dX~!3%sK zos!sM5XQg>@11r4m(!R_+EJpMpPCiYQ=YNwxw_-XpE9fUNr$;xRwo_)(oB|%r6zm{ z#2zf7<>L8=Lv3QAc$(P%T0Ey%b(qD)Gr;2FImOCwr`75kX>*g>$Qtdec8m@jLK*!S zormjC=0T{DhGKbF9iyeR5;%@p9D16@>9bZJqajA>AdL}9PWi1^j?uD1-9u|>8qDSL zN`RGp0akiL@x9JKNuFnNxb__S6&gb2H7?R0%+QX)4chI+A^H`KksGvjg@#y7(&pYL z?`E>FUC=ngq-3CTh1M4F{uVHko?fJ7%%-WZ0K)SN^kuQMqUY(rc_xU->jI-R0FMS% zI*NVRS3!9E5P-Tq24<$M(7~jFV5C}oih+H!4#wQAH#25j?O^<=7Hg%0ncN0z6YvMK zE#Q!&Fv#frOslbmm$h#*M4*p(I|!3foG>e-k26qo;|#=Pl)1M#*3oiIUU{84Btu}N z^UTIv7V5Z|k)nQyG0W7;4CIeCexDw;De5^`ga#W~K9j4sQgH;=v$#Z>3N{w7k^8UVn+~|`*6@#~T?BMrRe#9_4x)_u zJ_{K$_9pcB?XupmP_eS$oyO2gd_}H8#ibx}RpR-kVh>zK-_mVm#^0Sntf&Rn0D9Dd zj+dZ%46U)CS4vO=hQ4k=?=5eqh@DMst=n5$L`7^r5Q&S4XtYm+zB|+(>J4{GB67YE z4~wCJXyQOPCU!*+4zEMbsvS*j&poq!k6#o!!m)THIv{RXw-Gs;VL2A*J&+JLJXOCz zTq_1caWJ-fIGzai$C1-nwSC~=U_$JP^o8**t-*E?bh{(*7qQV$?8V4H?}MvdgRxk6 zAYn;45m<;1_Vh%$A{grr_eW#HVox+CZf$Gp47P3AZK)&Y&RDcJ7U~z9z7vflz>zBC zyx&=|GaBp0-im#pSZ}xnIl;sLa7l!R5@KYTrBu}#6_X$v7yE%8HuP^(pk11GMS*4) zY;_MxhGSuIaG*PKIMN;NUME73V`1RhFDmzhx(}=cKz7=~H zYy+kI6yzpRx1SSk-!N)8;jw>08`#ff^p%{e#@NLPuP$Qz4sIcdL2wZd=O(V_vW>M3 zp6PX5&|I%>E-G!~K*bUpsqH*cyU*>(;vK%}vO&&SI)v~tPfNvbyB;j+*@a15!4q@XE#)MFtLP*W(s>Wm-zi=oyhSolbdQ3= zCZUh=frETTJ;dV+fESiNSW4BXHSmORbGdpX!VBhH>7OKJq@DmbtP8Gqv-~gZQYyFa zY5$LA#L};-s_F}6o^E>X3uTtyz%Fid5I*x5qQ2*zszOS+zLRnYa9q>ROm=z6obBVmD1yt pE;gUa=$~`&f_LOT{;m2MH*yi0z`4p?GNWIU{{qrYgM|P9 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/MOVEPRN.COM b/Images/Source/hd0/s0/u2/MOVEPRN.COM new file mode 100644 index 0000000000000000000000000000000000000000..63e864f4018b8d3c101ba5ceecb521b43a775a17 GIT binary patch literal 4992 zcmeHJVQd@a8NN&63vqJxeRtNRM9TKrXDD@oDM?kdD0P}9F^x!U$99M+HWjyV8dJv? z-Cc094pWJL{MnzukFh_~eyp3u!dRKNbt;KX5I*S&?#R?d17yH#!`mb#O6ZU-d%rt3 zakX_~fA}%wPX4~{{odz&-uHdJ&z6hda8MN9d#F1;dl-C2%ok(2bNH9zQR#Y~$d{9E zKg+%X`wHwUu&=Ze zuHfWyN>PHzy z%%-4?Gg3xPq%xMMP&v7VW^1&?IY*jZa1< z#y~AgAM2_rCRtowX*fSi0|iSNd|FcHaUDq{Qj$s5o}Evfna5d4KBwT*Nw^i+6rfh5 zCAjz&IXN8o&knLc1EeMI?ODCMEqeDqxHVQSAK_^BKI)F+X4~GONtX%x{?W z){WM;nfDlqDlu1?-!a#j_Ew7eqPV{?2E5;Ae#HC?*e)|`%!{p;THj~>418}eZ!v#h z-eH`;ha$1@(0JS%iw{TRUJs!vHk=RIdB1k?Mw-N*6k?2_5G)@dp z1j%P2$V840k31YRhlnjQJOKb0qBEnmNGv{zaVQ*}oEdEyjhu)@M#z9MF{0DQ%>mn@ zX4Szrvw|<`^QQyP4K=2;H!Q+f7lPyJ&j(o4MW zRMWTf1sXkRIAQdCvk9%)>lCbS)>&Nob1h^la0)yf()9Zqm8FPie8Lcc3czbq56c@*Opp z&^yGa5C=3@aWFXpYyWWSPjMn!_`n%B3M=0>9USSEcgO;7>Z-uCK|Sr43GdlN>)${VyR9j*7rFricoz{4EDTO__5P*AtorZnuN$$1Q*A8uLRv&UhcfL<(QCD0&*Iwo}kV^Yxnx-ke%C8q* z;=llH;9wAMFTzQv^y0Dzl2pp;C4C#JF)tU|p&2SCLaXm{dHC=`3tPC#6+htEa&5WK zpf`1!P_9|v5=gQJYHV{QD8EQij<%wWvXtsZ`YD&lzFu@7Ky;&0fQ5~Ky?Dw6)q*}@ zUdw{y9aJadIzoxI!Vp3iC`XrWqbk*!1HoJ#1jte89_k=@=nGUE(=G}*-d1=V1$K%n zC_q8=`4SN3@`axwi}liNtk1#`)*Md4I;dSjJx6x*01v^xye(MUst3P|0L@wGcL7ZS zw9){DZ$zP+w-R;pjpZ9=qOVw?-TZE%uknplzIqvnHHQGGLG9~Mhgtt-6~48dt69-} zE9H{GU7IIGKF%A%Tl2gzb;}G;^=`Fi_^PE9(7AywAJ~Dt##Gu14G>Qq@7MS;1C%^7}C zdqU{xuy%M+V8OH%#$bM0FuhL;J(g1}J|-;ZVLO0%fSebY=9Rqme4PwJZQ2h7w(v~d z|GWTl{zRzjvx%+=LRVf}6Rs3~A(S61m2<|Sp*M|z>-rxBV;EMCmb~|i_Z_>(H$)kU z>&E#v|Bg%f*EgyU=0j?Y2 YKnGYK6Vpdi(qF#y-L>=2mg@Qc1s1s(mjD0& literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/PATCH.LST b/Images/Source/hd0/s0/u2/PATCH.LST new file mode 100644 index 00000000..7a4a98f1 --- /dev/null +++ b/Images/Source/hd0/s0/u2/PATCH.LST @@ -0,0 +1,1877 @@ + ; + ;In order to minimize changes to the locations of User area + ;data, the origin is forced here to 180H above the start of + ;the TPA. + ; + ORG TPA+180H ;Always start user area in same spot + + ; + ;This jump table provides commonly used subroutines for use + ;by custom subroutines in the User areas. It must not be + ;modified in any way. + ; + + ; + ;To output a character to the terminal from within your + ; custom subroutines, call DISPLA with the character + ; to be output in the accumulator (A register). All + ; registers will be preserved. + ; +0280 DISPLA:: +0280 C3 0CB6 JMP CO ;Display character routine + + ; + ;To output a string to the terminal that is in the normal + ; user area format (count followed by bytes), call + ; STRING with HL pointing to the string to be output. + ; Upon returning, HL points to the byte following the + ; string. + ; +0283 STRING:: +0283 C3 17C6 JMP STROUT ;Display string routine + + ; + ;To use WordStar's standard list output drivers, call the + ; following subroutines. In all cases, all registers + ; except for the PSW are unchanged by the subroutines. + ; +0286 LSTOUT: ;Prints char in A. +0286 C3 0000* JMP LO + +0289 LSOSTA: ;Returns output status to A (0 if busy). +0289 C3 0000* JMP LOSTAT + +028C LSTIN: ;Inputs char from printer to A. (Only +028C C3 0000* JMP LI ;works if custom ULISTI exists.) + +028F LSISTA: ;Returns input status to A (0 if no char). +028F C3 0000* JMP LISTAT ;(Only works if custom ULISTA.) + +0292 LSTRNG: ;Send string to list device. (HL points + +0292 C3 0000* JMP LSTSTR ;to string, count byte first, just like + ;console strings). + + ; + ;This flag is used if WordStar is on a multi-user system. It should + ;be set to zero on single-user systems. Each bit of MPMFLG is used + ;as follows: + ; + ; Bit Meaning + ; + ; + ; 0 If 0, WordStar will issue a SYSTEM RESET when logging + ; onto a removable disk drive. If 1, no reset will + ; occur, and the operating system itself must handle + ; any disk swapping. + ; + ; 1 If 1, users can share documents. Before opening a + ; document to edit, WordStar will check to see if temporary + ; files with that document name (e.g. FILENAME.$A$) + ; already exist. If such files exist, WordStar will open + ; the document as a protected document, preventing any + ; changes to it. If 0, WordStar will delete existing + ; temporary files when opening the document for editing. + ; + ; 2 If 1, users can share printer. MP/M function calls are + ; issued to attach and detach the list device. If 0, + ; the printer is assumed to be always attached. + ; + ; 3 If 1, WordStar will issue frequent MP/M "dispatch to + ; next task" function calls to assure that multiple users + ; have balanced access to the computer. If 0, WordStar + ; assumes that only one user is on the computer at a time. + ; If the operating system itself can load share adequately + ; (such as MP/M 8/16 systems), set this bit to 0. + ; + ; 4-6 Reserved. + ; + ; 7 If 1, TurboDOS 1.3 operating system. WordStar will not + ; check the disk drive write protect vector, will not check + ; printer busy status, and will issue the TurboDos printer + ; detach call when done printing. If 0, CP/M or MP/M. + ; WordStar does not support TurboDos 1.2. + ; + ;If you are using MP/M, bits 0, 1 and 2 should all be set to 1. Bit 3 + ;should be set for older versions of MP/M. If you are running on a + ;networked system, only bit 1 should be set. If you are using TurboDos + ;1.3 in a multi-user environment, bits 1 and 7 should be set. If you + ;are using single-user TurboDos, only bit 7 should be set. + ; +0295 MPMFLG:: +0295 00 DB 0 ;Zero for single-user systems + +0296 00 DB 0 ;Reserved + + ; + ;SHARE specifies how WordStar will handle two users in a shared file + ;system who attempt to edit the same file. If 0, the second user + ;will be denied access to the file. If 1, the second user can + ;view as much of the file as can be loaded into memory, but he + ;cannot modify the file. + ; +0297 SHARE:: +0297 01 DB 1 ;Allow viewing (protected edit) + +0298 00 00 00 DB 0,0,0 ;Reserved + + ; + ;The function key table allows you to program any function keys that + ;your terminal supports into one or more other keystrokes. Note that + ;on many terminals, the function keys generate a sequence of characters + ;where the first character is a control code. Since WordStar probably + ;uses this same code for one its commands, a timer is used to determine + ;when the "burst" of characters from the function key is done. + ;This works because the terminal will usually send the function + ;key characters at close to full baud rate. At 9600 baud, each character + ;takes 1/960 of a second to send, or close to one millisecond. That + ;means that three characters would take approximately three milliseconds. + ;There is no way that even the fastest human typist could type that + ;fast! Therefore, this method will usually work. + ; + ;Each function key in the table below is represented by two strings. + ;The first describes the "burst" from the key. The second is what it + ;should be translated into. You may not use string indirections in + ;this table (size of -1 followed by address). + ; + ;The end of the function key table is indicated when the size of the + ;function key string is zero. If you have more function keys than will + ;fit, you can put a continuation address after the zero to point to more + ;table. The table at that address must be the same format as this + ;one. No continuation is indicated by an address of zero. + ; + ;One character "bursts" will not work here. If you need to translate + ;a single character into something else, use the user console input + ;routine UCONI. + ; + ;Warning! Terminals or computers that have their own type-ahead + ;buffering may cause problems with this approach since it will be more + ;likely that characters other than just function keys will be "burst" + ;into WordStar by it. + ; + +029B FUNDLY:: +029B 00 DB 0 ;Milliseconds of delay between characters + ;of function key burst (if zero, no + ;function keys are implemented). See + ;section on delays below before adjusting + ;FUNDLY for your system. + +029C 01 DB CTRLA ;Character that starts each burst + ;(set to 0FFh to disable) + +029D FUNTBL:: +029D 03 DB 3 ;Three chars in burst +029E 01 40 0D DB CTRLA,'@',CR ;Function key 1 +02A1 02 DB 2 ;Two chars in replacement +02A2 0B 42 DB CTRLK,'B' ;Mark beginning of block + +02A4 03 DB 3 +02A5 01 41 0D DB CTRLA,'A',CR ;Function key 2 +02A8 02 DB 2 +02A9 0B 4B DB CTRLK,'K' ;Mark end of block + +02AB 03 DB 3 +02AC 01 42 0D DB CTRLA,'B',CR ;Function key 3 +02AF 02 DB 2 +02B0 0B 43 DB CTRLK,'C' ;Copy marked block + +02B2 03 DB 3 +02B3 01 43 0D DB CTRLA,'C',CR ;Function key 4 +02B6 02 DB 2 +02B7 0B 56 DB CTRLK,'V' ;Move marked block + +02B9 03 DB 3 +02BA 01 44 0D DB CTRLA,'D',CR ;Function key 5 +02BD 02 DB 2 +02BE 0B 59 DB CTRLK,'Y' ;Delete marked block + +02C0 03 DB 3 +02C1 01 45 0D DB CTRLA,'E',CR ;Function key 6 +02C4 02 DB 2 +02C5 11 46 DB CTRLQ,'F' ;Find string + +02C7 03 DB 3 +02C8 01 46 0D DB CTRLA,'F',CR ;Function key 7 +02CB 02 DB 2 +02CC 11 41 DB CTRLQ,'A' ;Search and replace + +02CE 03 DB 3 +02CF 01 47 0D DB CTRLA,'G',CR ;Function key 8 +02D2 01 DB 1 +02D3 0C DB CTRLL ;Repeat last find or replace again + +02D4 03 DB 3 +02D5 01 48 0D DB CTRLA,'H',CR ;Function key 9 +02D8 02 DB 2 +02D9 0B 44 DB CTRLK,'D' ;Save document + +02DB 03 DB 3 +02DC 01 49 0D DB CTRLA,'I',CR ;Function key 10 +02DF 02 DB 2 +02E0 0B 51 DB CTRLK,'Q' ;Abandon editing + +02E2 03 DB 3 +02E3 01 4A 0D DB CTRLA,'J',CR ;Function key 11 +02E6 06 DB 6 +02E7 11 46 10 DB CTRLQ,'F',CTRLP ;Find end of paragraph +02EA 0D 0D 0D DB CR,CR,CR + +02ED 03 DB 3 +02EE 01 4B 0D DB CTRLA,'K',CR ;Function key 12 +02F1 08 DB 8 +02F2 11 46 10 DB CTRLQ,'F',CTRLP ;Find beginning of paragraph +02F5 0D 0D 42 0D DB CR,CR,'B',CR,CTRLD +02F9 04 + +02FA 00 DB 0 ;End of table +02FB 0000 DW 0 ;No continuation + + REPT 128-($-FUNTBL) ;Allow 128 bytes for table + DB 0 + ENDM + +031D 00 00 DB 0,0 ;Reserved + + ; + ; TERMINAL PATCH AREA + ; + ;This section contains the user-modifiable constants and + ; routines for hardware-dependent terminal functions + ; and characteristics required by the editor. + ; + ;There are three types of patches in this area. One can + ; patch data values (HITE, WID) which describe the + ; terminal, strings (CLEAD1, ERAEOL) which define + ; control sequences, or actual microprocessor + ; instructions. + ; + ;For the string sequences, the first byte of the patch + ; indicates the number of bytes in the string, + ; followed by that many string bytes. If there is + ; insufficient room for the whole string, the format + ; can be modified by putting a -1 (0FFH) where the + ; number of bytes would go, and then putting the + ; address in the following two bytes (low order byte + ; first) of the address where the longer patch + ; resides. The longer patch must then be of the + ; normal format which is the number of bytes followed + ; by the string. + ; + ;This area is normally patched for your specific terminal + ; by the interactive INSTALL program. Additional + ; patching to this area is needed only for unusual + ; terminals or video boards, or to meet special + ; requirements, or to enhance or personalize your + ; copy of WordStar. The default user area is + ; set up for this example installation. + ; + + ; + ;Video screen height, width, and wrap-around parameters are required. + ; +031F HITE:: +031F 18 DB 24 ;Must be exact screen height in lines. +0320 WID:: +0320 50 DB 80 ;Must be <= exact screen width in columns. +0321 WRAP:: +0321 FF DB TRUE ;Indicates if terminal wraps around to next + ;line if a character is displayed in WIDth + ;column of screen (set FALSE if it doesn't) + +0322 XONOFF:: +0322 FF DB TRUE ;TRUE if XON/XOFF protocol to be used for + ;the CRT terminal + +0323 SCROLL:: +0323 14 DB 20 ;Number of columns that are horizontally + ;scrolled when cursor moves beyond right + ;or left side of screen. + +0324 DIRSIZ:: +0324 05 DB 5 ;Number of lines available for directory + ;at bottom of screen. If zero, no directory. + +0325 0B DB 11 ;Larger directory for document selection + + ; + ;Delete Display String + ; + ;The following string indicates to WordStar how to display a delete + ;character (hex 7F) on the screen while editing. On terminals that + ;interpret the delete character code into a displayable character, it + ;is recommended that DELSTR be translated into the delete code itself + ;(length of 1, then 7FH). All characters in the string must display. + ; +0326 DELSTR:: +0326 03 DB 3 ;Number of chars in string +0327 44 45 4C DB 'DEL' ;What is displayed +032A 00 00 DB 0,0 ;Spare bytes + + ; + ;Soft and End of Line Hyphen Display String + ; + ;In order to distinguish soft hyphens from normal hyphens in the text, + ;WordStar will substitute the following string when one is encountered. + ; + +032C SHYSTR:: +032C 01 DB 1 ;Number of chars in string +032D 3D DB '=' ;What is displayed +032E 00 00 00 00 DB 0,0,0,0 ;Spare bytes + ; + ;Block Marker Strings + ; + ;Block marker strings are displayed on the screen to show the start and + ;end of a block of text. The strings are in the typical format of the + ;length followed by as many characters. Control characters should not + ;be included within these strings because they would not be sent + ;directly to the screen. + ; + +0332 BBLOCK:: +0332 03 DB 3 ;Three chars +0333 3C 42 3E DB '' ;Begin block +0336 00 DB 0 ;1 spare + ; +0337 KBLOCK:: +0337 03 DB 3 ;Three chars +0338 3C 4B 3E DB '' ;End block +033B 00 DB 0 ;1 spare + + ; + ;Special character used when displaying soft spaces with ^OB. + ; +033C SOFTSP:: +033C 2B DB '+' ;Soft spaces show up as plus signs + +033D 00 00 00 00 DB 0,0,0,0,0 ;Reserved +0341 00 + + ; + ;The following string is used at sign-on to describe the type + ;of terminal being used by WordStar. Up to 40 bytes are available + ;for the string, including its null terminator. + ; +0342 CRTID:: +0342 55 6E 69 6E DB 'Uninstalled Terminal',CR,LF,0 ;Terminal name +0346 73 74 61 6C +034A 6C 65 64 20 +034E 54 65 72 6D +0352 69 6E 61 6C +0356 0D 0A 00 +0359 20 20 20 20 DB ' ' ;Extra room +035D 20 20 20 20 +0361 20 20 20 20 +0365 20 20 20 20 +0369 20 + + ; + ;Cursor positioning control sequences are required. + ; + ;Cursor positioning for most terminals is accomplished + ; by sending: + ; + ; 1. A 'lead-in' string of one or more terminal + ; specific characters. + ; 2. The line number, with an offset (often 20H) added. + ; For some terminals, the column number is + ; sent first. + ; 3. For some terminals, another 'lead-in' string. + ; 4. The column (or line) number, with an offset. + ; 5. For some terminals, a terminating string. + ; + ;For most terminals, the line and column number are sent + ; as one-byte binary numbers. Some terminals require + ; that a two- or three-digit ASCII number is sent. + ; + ;For terminals that do not fit the above patterns, you + ; must code your own subroutine. + ; + ;For example, the cursor is positioned on this sample + ; installation by sending: + ; + ; ESCAPE, '=', + ; line number plus 20H, + ; column number plus 20H. + ; +036A CLEAD1:: ;Initial lead-in string +036A 02 DB 2 ;Number of characters +036B 1B DB ESC ;First character +036C 3D DB '=' ;Second character +036D 00 00 DB 0,0 ;Space for two more characters + +036F CLEAD2:: ;Sent between line and column +036F 00 DB 0 ;Number of characters, none in our +0370 00 DB 0 ;example. First character +0371 00 00 00 DB 0,0,0 ;Space for three more characters + +0374 CTRAIL:: ;Terminating string +0374 00 DB 0 ;Number of characters +0375 00 00 00 00 DB 0,0,0,0 ;Space for four characters + +0379 CB4LFG:: ;Send column before line? +0379 00 DB 0 ;Set non-zero to send column first + +037A CUROFF:: ;Cursor offsets + + ;Offset to add to line +037A 20 DB 20H ;Add 20H to line number (0 is top + ;line of screen before offset) + + ;Offset to add to column +037B 20 DB 20H ;Add 20H to column number (0 is + ;left-most column of screen + ;before offset) + +037C ASCUR:: ;Binary/ASCII digit flag +037C 00 DB 0 ;0 to send binary line and column + ;2 to send 2-digit ASCII numbers + ;3 to send 3-digit ASCII numbers + + ; + ;Provision for positioning cursor by user-coded + ; subroutine, instead of under control of above + ; items. For use in exceptional cases only. + ; + ;Insert a JMP instruction to your subroutine in the + ; following three bytes. Whenever the first byte + ; is non-NOP, this location will be called to + ; position the cursor, and the above cursor patch + ; items will be ignored. + ; + ;Your subroutine will receive the line number in the L + ; register (0 = top line), the column number in + ; the H register (0 = left-most column), and the + ; video attributes at the next typing position in + ; the A register. Attributes are represented as + ; described for the VIDATT routine, except that the + ; warning/error bit indicates double-strike. + ; + ;Your subroutine may alter all registers. + ; +037D UCRPOS:: +037D 00 NOP ;Normally NOP, or JMP to your cursor +037E 00 NOP ;positioning routine. +037F C9 RET + + ; + ;Displaying characters on some screens can be significantly faster if the + ;cursor can be turned off. + ; +0380 ONCUR:: ;Turn cursor on by changing to jump +0380 00 NOP ;to custom subroutine. +0381 00 NOP ; L = current cursor line +0382 C9 RET ; H = cursor column + +0383 OFFCUR:: ;Turn cursor off by changing to jump +0383 00 NOP ;to custom subroutine. +0384 00 NOP ; L = current cursor line +0385 C9 RET ; H = cursor column + + ; + ;Everything in the rest of this section is optional. + ; The items relate either to enhanced performance, + ; or for accomodating unusual terminals. + ; + + ; + ;Erase screen. If this function is not available, leave + ; the first byte zero, and the WordStar will either send + ; line feeds, or update a screen of text using ERAEOL + ; below. + ; + ;After the screen is erased, WordStar assumes that the video + ; attributes are set to normal (dim for the example + ; terminal), and that the cursor is at the home position + ; (upper left hand corner). + ; +0386 ERASCR:: +0386 03 DB 3 ;Number of characters +0387 1A DB CTRLZ ;First character (clear screen) +0388 1B 29 DB ESC,')' ;Additional characters (dim) +038A 00 00 00 00 DB 0,0,0,0,0,0 ;Room for 13 more +038E 00 00 +0390 00 00 00 00 DB 0,0,0,0,0,0,0 +0394 00 00 00 + + ; + ;Backspace one character string. If this function is not + ; available, leave the first byte zero, and WordStar + ; will use cursor addressing to backspace. + ; +0397 BAKSPC:: +0397 01 DB 1 ;Number of characters +0398 08 DB BS ;First character +0399 00 00 00 DB 0,0,0 ;Additional characters + + ; + ;Erase to end of line string. If this function is not + ; available, leave the first byte zero, and WordStar + ; will perform the function more slowly via software. + ; +039C ERAEOL:: +039C 02 DB 2 ;Number of characters +039D 1B DB ESC ;First character +039E 54 00 00 DB 'T',0,0 ;Additional characters + + ; + ;Erase to end of screen string. If this function is not + ; available, leave the first byte zero, and WordStar + ; will perform the function more slowly via software. + ; +03A1 ERAEOS:: +03A1 02 DB 2 ;Number of characters +03A2 1B DB ESC ;First character +03A3 59 00 00 DB 'Y',0,0 ;Additional characters + + ; + ;Delete screen line containing the cursor, and move lower + ; lines on the screen up one line. If this function + ; is not available, leave the first byte zero, and + ; WordStar will perform the function more slowly + ; via software. + ; +03A6 LINDEL:: +03A6 02 DB 2 ;Number of characters +03A7 1B DB ESC ;First character +03A8 52 00 00 DB 'R',0,0 ;Additional characters + + ; + ;Insert a blank line on the screen, moving the line + ; containing the cursor, and the lines below it down + ; one line. If this function is not available, leave + ; the first byte zero, and WordStar will perform + ; the function more slowly via software. + ; +03AB LININS:: +03AB 02 DB 2 ;Number of characters +03AC 1B DB ESC ;First character +03AD 45 00 00 DB 'E',0,0 ;Additional characters + + ; + ;WordStar will use LINDEL and LININS to delete or insert a group + ; of lines rather than just displaying a whole new screenful + ; of characters. LINMAX below indicates the maximum number + ; of lines that this would generally be faster than the + ; re-display. Set to zero if don't care. + ; +03B0 LINMAX:: +03B0 05 DB 5 ;Five lines + + ; + ;Terminal initialization string. A string of bytes which + ; will be sent to the terminal at the beginning of a + ; session. See also INISUB. + ; +03B1 TRMINI:: +03B1 FF DB -1 ;Number of bytes +03B2 0386 DW ERASCR ;Use extension mechanism (-1 as byte +03B4 00 00 DB 0,0 ;count) to erase screen as initialization. + + ; + ;Terminal un-initialization string. A string of bytes + ; which will be sent to the terminal at the end of a + ; session. See also UNISUB. + ; +03B6 TRMUNI:: +03B6 02 DB 2 ;Number of bytes +03B7 1B 28 DB ESC,'(' +03B9 00 00 DB 0,0 + + ; + ;User-patchable initialization subroutine. Called before + ; the TRMINI string is sent. This subroutine may be + ; used for special console initialization or other + ; purposes. See UCRPOS comments. + ; +03BB INISUB:: +03BB 00 NOP ;Normally NOP, or JMP to +03BC 00 NOP ;your subroutine +03BD C9 RET + + ; + ;User patchable un-initialization subroutine. Called + ; before the TRMUNI string is sent. This subroutine + ; may be used to 'undo' any special terminal status + ; used for the WordStar. See UCRPOS comments. + ; +03BE UNISUB:: +03BE 00 NOP ;Normally NOP, or JMP to +03BF 00 NOP ;your subroutine +03C0 C9 RET + + ; + ;Video attributes are used in various places on the WordStar display. + ;The following table describes what each bit of an attribute byte + ;means when used within WordStar. Note that when no bit is set, that + ;is the normal condition. + ; + ; Bit WordStar Usage + ; + ; none Normal text + ; 0 Strike-out text + ; 1 Warning & error messages + ; 2 Marked block of text + ; 3 Underlined text + ; 4 Subscripted text + ; 5 Superscripted text + ; 6 Bold text + ; 7 Italic (or ribbon color) + ; + ;For this sample installation, the following translation of attribute + ;bits into video conditions could be used. + ; + ; WordStar Example + ; + ; Normal Dim + ; Warning Blink + ; Marked Inverse + ; Underlined Underline + ; Subscripted Bright + ; Superscripted Bright + ; Highlighted Bright + ; + ;Because each terminal uses such diverse strings to change video + ;attributes, you must provide a custom subroutine at VIDATT to + ;build the proper one for yours. You may be able to take advantage + ;of the fact that many terminals use a binary method to encode the + ;attributes. If you do not wish to use any video attributes, put + ;the customary two NOP's followed by a RET at VIDATT to disable it. + ; + ;The following implementation is for this sample installation. On that + ;terminal the following sequences are required for the different + ;attributes in our table: + ; + ; Attribute Sequence Screen Space + ; + ; Dim ESC ) NO + ; Bright ESC ( NO + ; Normal video ESC G 0 YES + ; Blink ESC G 2 YES + ; Inverse ESC G 4 YES + ; Underline ESC G 8 YES + ; Underline, blink ESC G : YES + ; Underline, inverse ESC G < YES + ; Underline, inverse, blink ESC G > YES + ; + ;However, since the ESC G attributes take up screen space, we cannot + ;use them with WordStar. Therefore, all attributes are highlighted + ;using bright. + + + ; + ;The VIDATT subroutine is used to change video attributes on the screen. + ;On entry, WordStar will supply the attributes that are on in the C + ;register. You must translate them into whatever your particular terminal + ;requires. The following implementation is a sample installation. + ;This subroutine is called only when a video attribute changes. + ; +03C1 VIDATT:: ;Change to NOP, NOP, RET if not needed +03C1 21 03D2 LXI H,vdim +03C4 0C INR C ;Normal video? +03C5 0D DCR C +03C6 CA 0283 JZ STRING + ; +03C9 21 03CF LXI H,vbrite ;Highlight everything else +03CC C3 0283 JMP STRING + ; +03CF 02 1B 28 vbrite: DB 2,ESC,'(' ;Bright +03D2 02 1B 29 vdim: DB 2,ESC,')' ;Dim + + REPT 128-($-VIDATT) ;Allow total of 128 bytes for VIDATT + DB 0 + ENDM + + ; + ;Normally the status line, text and directories are displayed in + ;dim intensity so that bold and doublestruck text can be shown in + ;high intensity. Setting BRITE to 0FFH reverses the usage of + ;bright and dim for the status line, text and directories ;zero + ;normally. + ; +0441 00 BRITE:: DB 0 ;Don't reverse + ;0FFH = normal text bright + + ; + ;Delays are executed after various terminal functions, before + ; the next character is sent to the terminal, to + ; allow response time required by certain terminals + ; when operating at a high baud rate. Set to a + ; larger value if you suffer a loss of characters + ; after a terminal function. + ; + ;Note that an additional delay FUNDLY is located near the + ; function key table FUNTBL above. + ; + ;Each delay is approximately the number of milliseconds + ; on a 4 MHz Z80 processor, about twice as long on + ; a 2 MHz 8080 (in other words, divide delay values + ; in half for a 2 MHz processor to achieve the same + ; results). + ; +0442 DELCUS:: +0442 00 DB 0 ;No delay after cursor positioning + ;(if your terminal works better with + ;5 milliseconds of delay, you would + ;put a "5" here instead) + +0443 DELMIS:: ;Miscellaneous screen delays +0443 00 DB 0 ;No delay + +0444 DXOFF:: ;If XON/XOFF used for terminal, sometimes +0444 07D0 DW 2000 ;a legitimate ^S will be interpreted as an + ;XOFF character. DXOFF is used to time out + ;so that the terminal will continue. + +0446 DLONG:: ;Long delays (like at sign-on) +0446 07D0 DW 2000 ;2 seconds = 2,000 milliseconds + ;(1000 if 8080) + +0448 DMED:: ;Medium delays (like at P, O, or K menus) +0448 03E8 DW 1000 ;1 second = 1,000 milliseconds + ;(500 if 8080) + +044A DSHORT:: ;Short delays (like before help menus) +044A 00C8 DW 200 ;200 milliseconds (100 if 8080) + +044C UPDLY:: ;Position update delay +044C 00C8 DW 200 ;200 milliseconds (100 if 8080) + +044E DDISK:: ;Disk access delay. If character typed +044E 01F4 DW 500 ;during disk access, wait this duration for + ;more characters. 500 milliseconds + +0450 DFAST:: ;Delay when typing fast. Holds off displaying +0450 0032 DW 50 ;the rest of the line briefly + + ; + ;Optional user-supplied console I/O subroutines. You may + ; patch JMP's here to your own console input, console + ; output, and console status subroutines, in which + ; case these routines, instead of the operating + ; system BIOS entry points, will be used for all + ; console I/O. These subroutines may alter all registers. + ; + ;Use of a custom subroutine accessed here is suggested, + ; for example, to drive a video board that cannot be + ; driven via output to the operating system. + ; +0452 UCNSTA:: ;User console status subroutine. +0452 00 NOP ;Normally NOP, or JMP to your own +0453 00 NOP ;subroutine. Must return 0 in A if +0454 C9 RET ;no character ready, 0FFH if one is + ;ready. + +0455 UCONI:: ;User console input subroutine. +0455 00 NOP ;Normally NOP, or JMP to your own +0456 00 NOP ;subroutine. Must return the +0457 C9 RET ;character in A. May be called + ;before a character is ready. If + ;no character is ready, routine + ;must wait until a character is + ;available. + +0458 UCONO:: ;User console output subroutine. +0458 00 NOP ;Normally NOP, or JMP to your own +0459 00 NOP ;subroutine. Subroutine receives +045A C9 RET ;the character in A, video attributes in + ;B, and current cursor address in HL. + + ; + ;This is 128 bytes set aside for anything that the user wishes to use. + ;If more than 128 bytes are required, it is necessary to put them after + ;the main WordStar code which can be determined by looking at the + ;contents of BGNMEM to see where it is. After using as much space as + ;necessary, change BGNMEM to the new beginning of free memory. + ; +045B MORPAT:: +045B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +045F 0000 0000 +0463 0000 0000 +0467 0000 0000 +046B 0000 0000 +046F 0000 0000 +0473 0000 0000 +0477 0000 0000 +047B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +047F 0000 0000 +0483 0000 0000 +0487 0000 0000 +048B 0000 0000 +048F 0000 0000 +0493 0000 0000 +0497 0000 0000 +049B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +049F 0000 0000 +04A3 0000 0000 +04A7 0000 0000 +04AB 0000 0000 +04AF 0000 0000 +04B3 0000 0000 +04B7 0000 0000 +04BB 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +04BF 0000 0000 +04C3 0000 0000 +04C7 0000 0000 +04CB 0000 0000 +04CF 0000 0000 +04D3 0000 0000 +04D7 0000 0000 + + ; + ;CRTPAT is a patch area that may be used by WordStar's installation + ;program. + ; +04DB CRTPAT:: +04DB 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +04DF 0000 0000 +04E3 0000 0000 +04E7 0000 0000 +04EB 0000 0000 +04EF 0000 0000 +04F3 0000 0000 +04F7 0000 0000 +04FB 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +04FF 0000 0000 +0503 0000 0000 +0507 0000 0000 +050B 0000 0000 +050F 0000 0000 +0513 0000 0000 +0517 0000 0000 +051B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +051F 0000 0000 +0523 0000 0000 +0527 0000 0000 +052B 0000 0000 +052F 0000 0000 +0533 0000 0000 +0537 0000 0000 +053B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +053F 0000 0000 +0543 0000 0000 +0547 0000 0000 +054B 0000 0000 +054F 0000 0000 +0553 0000 0000 +0557 0000 0000 + + ; + ;The following string is used to describe the name of the default + ;printer used by WordStar. Up to 40 bytes are provided for the + ;string, including its null terminator. + ; +055B PRNID:: +055B 44 72 61 66 DB 'Draft Printer',CR,LF,0 ;Printer name +055F 74 20 50 72 +0563 69 6E 74 65 +0567 72 0D 0A 00 +056B 20 20 20 20 DB ' ' ;Additional room +056F 20 20 20 20 +0573 20 20 20 20 +0577 20 20 20 20 +057B 20 20 20 20 +057F 20 20 20 20 + + ; + ;WordStar uses a default printer driver if none is specified by the + ;user. The following is its name. It may be up to six characters long, + ;null terminated. + ; +0583 DEFPRN:: +0583 44 52 41 46 DB 'DRAFT',0 ;Standard driver +0587 54 00 +0589 20 DB ' ' ;One extra char + + ; + ;The print delay timer is used to time how long the printer is busy + ;before telling the user that it's been busy a long time. This would + ;primarily be used when the printer was in another room and you might + ;not know that it was busy due to a paper jam or being off line. + ; +058A PRNDLY:: ;Delay before saying printer busy +058A 0000 DW 0 ;Zero to disable + + ; + ;Pausing between each page is used if single sheets of paper are being + ;printed. + ; +058C PPAUSE:: +058C 00 DB FALSE ;Continuous form (don't pause) + + ; + ;Many printers can use form feeds to quickly get from one page to the + ;next. If your printer can, setting PFFEED to TRUE will cause WordStar + ;to use form feeds instead of carriage returns and line feeds. + ; + +058D PFFEED:: +058D 00 DB FALSE ;Carriage returns to next page + + ; + ;Some users, like programmers, may want to usually print non-documents. + ;In this case, WordStar prints any lines that begin with a period (dot + ;commands), and expands tab characters (09H) according to the filetype + ;in the EDCOND table elsewhere in the User Area. + ; +058E PNODOC:: +058E 00 DB FALSE ;Don't print as a non-document + + ; + ;Printer protocol flags. Only one of these flags may be set TRUE at + ;one time. If neither flag is set, WordStar assumes all printer busy + ;handshaking is done externally to WordStar (requires ULISTA and ULSTI + ;subroutines below). + ; + +058F LXOFF:: ;Printer XON/XOFF protocol. +058F 00 DB FALSE + +0590 LETX:: ;Printer ETX/ACK protocol. +0590 00 DB FALSE + +0591 LCHRMX:: ;Maximum chars before sending ETX. +0591 80 DB 128 ;Half of buffer size. + + ; + ;User list device output subroutines are used if the normal systems list + ;device is not to be used. The user subroutine overrides the LSTDEV + ;selection below. + ; +0592 ULOSTA:: +0592 00 NOP ;User list output status subroutine. +0593 00 NOP ;Normally NOP, or JMP to your own +0594 C9 RET ;subroutine. Must return 0 in AL if + ;list device is busy, 0FFH if idle. + +0595 ULSTO:: +0595 00 NOP ;User list output subroutine. +0596 00 NOP ;Normally NOP, or JMP to your own +0597 C9 RET ;subroutine. Subroutine receives the + ;character in AL. + + ; + ;User list input subroutines are used if either XON/XOFF or ETX/ACK + ;protocols are used to indicate when the printer is busy. + ; +0598 ULISTA:: +0598 00 NOP ;User list input status subroutine. +0599 00 NOP ;Normally NOP, or JMP to your own +059A C9 RET ;subroutine if LXOFF or LETX is TRUE. + ;Must return 0 in AL if no char pending. + +059B ULSTI:: +059B 00 NOP ;User list input subroutine. +059C 00 NOP ;Normally NOP, or JMP to your own +059D C9 RET ;subroutine if LXOFF or LETX is TRUE. + ;Returns character in AL. + + ; + ;Printer Output Selection + ; + ;When WordStar prints, it sends its output to one of the devices specified + ;with LSTDEV. + ; + ; 00H = TTY device + ; 01H = CRT device + ; 02H = LPT device + ; 03H = UL1 device + ; FFH = Default LST device + ; +059E LSTDEV:: +059E FF DB 0FFH ;Use LST device + + ; + ;Before printing, WordStar will call ULPORT below to allow for custom + ;print output redirection. A pointer to the name of the printer (null + ;terminated, all capital letters) will be passed to the subroutine in HL. + ;It is up to this subroutine to then route the printer output to the + ;appropriate output port by whatever means is available to it. + ; + +059F ULPORT:: +059F 00 NOP ;Normally NOP if no redirection to be done. +05A0 00 NOP ;Change to JMP to your own subroutine. +05A1 C9 RET + + ; + ;The user list device uninitialize routine is called after printing is + ;completed, and can be used to restore the printer state for non-WordStar + ;applications. + ; + +05A2 ULUNPT:: +05A2 00 NOP +05A3 00 NOP +05A4 C9 RET + + ; + ;The ULINI string is sent to the list device after ULPORT is executed + ;and before the document is printed. + ; +05A5 ULINI:: ;User list device initialize string +05A5 00 DB 0 +05A6 00 00 00 00 DB 0,0,0,0,0,0,0,0,0 +05AA 00 00 00 00 +05AE 00 + ; + ;The ULUNI string is sent to the list device after the document is + ;printed and before the ULUNPT routine is executed. + ; +05AF ULUNI:: ;User list device uninitialize routine +05AF 00 DB 0 +05B0 00 00 00 00 DB 0,0,0,0,0,0,0,0,0 +05B4 00 00 00 00 +05B8 00 + + ; + ;When WordStar begins printing, space is allocated for the three header and + ;three footer lines. HFMAX determines how much space to allocate. + ; +05B9 HFMAX:: +05B9 0064 DW 100 ;Up to 100 characters per header or footer + + ; + ;DATSEP is used while merge printing to separate one data item from + ;another in the data file. + ; +05BB DATSEP:: ;Comma +05BB 2C DB ',' + + ; + ;DLIST is the list output delay. Every time a character is output to + ;the printer, this delay is used. + ; +05BC DLIST:: +05BC 00 DB 0 ;No delay + + ; + ;Custom Printer Control Strings: These strings are sent to the printer + ;when the custom print control characters, ^Q, ^W, ^E, or ^R are + ;encountered in text being printed. They can be used to invoke special + ;printer functions not controlled by the standard driver, such as expanded + ;or compressed modes of printing. + ; + ;Note that some drivers may interfere or override the custom print controls + ;you have defined. In this case, use a generic driver such as DRAFT or + ;CUSTOM. + ; + ;A fixed length of 25 bytes is reserved for each string, where the + ;first byte is the count of characters to be sent to the printer, and + ;the following bytes (up to 5) are the characters to be sent. If + ;longer strings are required, the first byte can be -1, followed by a + ;two byte address pointing into a patch area, where the actual count + ;and string can be found. + ; +05BD UPRCTL:: ;Custom Print Controls + +05BD 00 UPRQ:: DB 0 ;^Q, length +05BE 00 00 00 00 DB 0,0,0,0,0,0 ; string of up to 24 characters +05C2 00 00 +05C4 00 00 00 00 DB 0,0,0,0,0,0 +05C8 00 00 +05CA 00 00 00 00 DB 0,0,0,0,0,0 +05CE 00 00 +05D0 00 00 00 00 DB 0,0,0,0,0,0 +05D4 00 00 + ; +05D6 00 UPRW:: DB 0 ;^W +05D7 00 00 00 00 DB 0,0,0,0,0,0 +05DB 00 00 +05DD 00 00 00 00 DB 0,0,0,0,0,0 +05E1 00 00 +05E3 00 00 00 00 DB 0,0,0,0,0,0 +05E7 00 00 +05E9 00 00 00 00 DB 0,0,0,0,0,0 +05ED 00 00 + ; +05EF 00 UPRE:: DB 0 ;^E +05F0 00 00 00 00 DB 0,0,0,0,0,0 +05F4 00 00 +05F6 00 00 00 00 DB 0,0,0,0,0,0 +05FA 00 00 +05FC 00 00 00 00 DB 0,0,0,0,0,0 +0600 00 00 +0602 00 00 00 00 DB 0,0,0,0,0,0 +0606 00 00 + ; +0608 00 UPRR:: DB 0 ;^R +0609 00 00 00 00 DB 0,0,0,0,0,0 +060D 00 00 +060F 00 00 00 00 DB 0,0,0,0,0,0 +0613 00 00 +0615 00 00 00 00 DB 0,0,0,0,0,0 +0619 00 00 +061B 00 00 00 00 DB 0,0,0,0,0,0 +061F 00 00 + + ; + ;Strike-out character + ; +0621 STKCHR:: +0621 2D DB '-' ;Strike out character + ; + ;If PFFEED above is TRUE, or you specifically tell WordStar to use form feeds + ;during printing, the following string is sent to the printer to eject the + ;paper to the next page. All printer drivers use this string. + ; +0622 01 FORMF:: DB 1 ;^L +0623 0C DB FFEED +0624 00 00 00 00 DB 0,0,0,0,0 +0628 00 +0629 00 00 00 00 DB 0,0,0,0,0,0 +062D 00 00 +062F 00 00 00 00 DB 0,0,0,0,0,0 +0633 00 00 +0635 00 00 00 00 DB 0,0,0,0,0,0 +0639 00 00 + ; + ;This is 128 bytes set aside for printer subroutines. + ;This area is also used for print control strings for the CUSTOM + ;printer driver. + ; +063B PRNPAT:: +063B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +063F 0000 0000 +0643 0000 0000 +0647 0000 0000 +064B 0000 0000 +064F 0000 0000 +0653 0000 0000 +0657 0000 0000 +065B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +065F 0000 0000 +0663 0000 0000 +0667 0000 0000 +066B 0000 0000 +066F 0000 0000 +0673 0000 0000 +0677 0000 0000 +067B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +067F 0000 0000 +0683 0000 0000 +0687 0000 0000 +068B 0000 0000 +068F 0000 0000 +0693 0000 0000 +0697 0000 0000 +069B 0000 0000 DW 00,00,00,00,00,00,00,00,00,00,00,00,00,00,00,00 +069F 0000 0000 +06A3 0000 0000 +06A7 0000 0000 +06AB 0000 0000 +06AF 0000 0000 +06B3 0000 0000 +06B7 0000 0000 + + ; + ;If non-standard initialization parameters are used, the + ;following identification string can be displayed at + ;sign-on. Up to 40 bytes are available for the string, + ;including the null terminator. + ; +06BB INITID:: +06BB 00 DB 0 ;No ID if standard +06BC 20 20 20 20 DB ' ' +06C0 20 20 20 20 +06C4 20 20 20 20 +06C8 20 20 20 20 +06CC 20 20 20 +06CF 20 20 20 20 DB ' ' +06D3 20 20 20 20 +06D7 20 20 20 20 +06DB 20 20 20 20 +06DF 20 20 20 20 + + ; + ;Legal Drives + ; + ;Note that the first drive is assumed to be the default drive where any + ;special files are located such as the WSMSGS.OVR file. The drives listed + ;should be reduced to the ones that are actually in use on the system + ;upon which WordStar is running. + ; + ;If the most significant bit of the drive letter is set to 1, WordStar + ;will assume that the drive is non-removable. A disk reset will not + ;be done when non-removable drives are logged. + ; +06E3 LGLDRV:: +06E3 41 42 43 44 DB 'ABCDEFGHIJKLMNOP',0 ;Every legal drive +06E7 45 46 47 48 +06EB 49 4A 4B 4C +06EF 4D 4E 4F 50 +06F3 00 + + ; + ;Legal User Numbers + ; + ;Some CP/M operating systems can support user numbers from 0 to 15, + ;others support 0 to 31. Also, a user can be prevented from accessing + ;other user numbers if zero. + ; +06F4 LGLUSR:: +06F4 10 DB 16 ;Sixteen user numbers from 0 to 15 + + ; + ;WordStar uses several files. Their names are specified here. WordStar + ;uses the following search pattern to try to find the file: + ; + ; 1. Look on the current drive and user. + ; 2. Default user (DEFUSR) on the current drive. + ; 3. Current user on the default drive. + ; 4. Default user on the default drive. + ; + ;If the drive byte of the filename is non-zero, it should be set to a + ;number 1 through 16 representing drives A through P respectively. In + ;this case, WordStar will look only on the specified drive and the + ;DEFUSR user number for the file. + ; +06F5 MSFILE:: ;Message file +06F5 00 57 53 4D DB 0,'WSMSGS OVR' +06F9 53 47 53 20 +06FD 20 4F 56 52 + +0701 HPFILE:: ;Help messages file +0701 00 57 53 48 DB 0,'WSHELP OVR' +0705 45 4C 50 20 +0709 20 4F 56 52 + +070D FF DB 0FFH ;Zero if never to search for help + +070E IXFILE:: ;Indexer exclusion word list filename +070E 00 57 53 49 DB 0,'WSINDEX XCL' +0712 4E 44 45 58 +0716 20 58 43 4C + +071A LDFILE:: ;Load file for overlays +071A 00 57 53 20 DB 0,'WS OVR' +071E 20 20 20 20 +0722 20 4F 56 52 + +0726 OVFILE:: ;Print driver overlays +0726 00 57 53 50 DB 0,'WSPRINT OVR' +072A 52 49 4E 54 +072E 20 4F 56 52 + +0732 WSFILE:: ;File containing WordStar (after running pgm) +0732 00 57 53 20 DB 0,'WS COM' +0736 20 20 20 20 +073A 20 43 4F 4D + +073E SHFILE:: ;Shorthand file +073E 00 57 53 53 DB 0,'WSSHORT OVR' +0742 48 4F 52 54 +0746 20 4F 56 52 + + ; + ;If WordStar does not find its own files (WS.COM, WS.OVR...) on the + ;logged user, it will look for them on the default user. + ; +074A DEFUSR:: +074A 00 DB 0 ;Default user number for system files + ;Set to 0-16 or 0-31 (depends on LGLUSR), + ; or -1 to defeat + + ; + ;When you use the S command at the Opening Menu, this is the spelling + ;check command that is used. If you want WordStar to prompt for the + ;document to be checked and then automatically append it to this command, + ;set SPFILE non-zero. + ; +074B 02 SPCMD:: DB 2 ;Five letters in command +074C 54 57 DB 'TW' ;Run The WORD Plus +074E 00 00 00 00 DB 0,0,0,0,0 ;Spare bytes for longer commands +0752 00 +0753 00 00 00 00 DB 0,0,0,0,0 +0757 00 + +0758 FF SPFILE::DB 0FFH ;Automatically ask + + ; + ;When you run a program at the Opening Menu, WordStar first tries to find + ;the COM file in the current drive and user, then in this drive and user. + ;The default is to look on drive A, user 0. + ; +0759 01 URUN:: DB 1 ;Drive code (0=disabled, 1=A, 2=B, ...) +075A 00 DB 0 ;User number + + ; + ;INILOG allows the user to specify a drive and user number for WordStar to + ;log onto at start up time. The first byte is a character count, the + ;following bytes (up to three) can contain a drive name (A-P) and user + ;number (0-31). + ; +075B INILOG:: +075B 00 DB 0 +075C 00 00 00 DB 0,0,0 + + ; + ;WordStar creates backup and temporary files. The following + ;are the file types to be used for them. + ; +075F BAKTYP:: ;Type for backup files +075F 42 41 4B DB 'BAK' + +0762 BFTYPE:: +0762 24 42 24 DB '$B$' ;File type of temporary file before memory + +0765 AFTYPE:: +0765 24 41 24 DB '$A$' ;File type of temporary file after memory + +0768 BLKTYP:: +0768 24 43 24 DB '$C$' ;Type for block move/copy buffer file + + ; + ;When the directory is displayed, file types from this table + ;are suppressed. Question marks may be used as wild cards to + ;match any character. + ; +076B NOTYPE:: ;File types to be ommitted from directories +076B 43 4F 4D DB 'COM' ;Command files +076E 4F 56 52 DB 'OVR' ;Overlays +0771 24 3F 24 DB '$?$' ;WordStar temporary files + +0774 00 00 00 DB 0,0,0 +0777 00 00 00 DB 0,0,0 +077A 00 00 00 DB 0,0,0 +077D 00 00 00 DB 0,0,0 +0780 00 00 00 DB 0,0,0 +0783 00 DB 0 ;End of table + + ; + ;DIRFIL is a file name "image" that is used in conjunction with NOTYPE (above) + ;to determine which files are to be displayed in WordStar's directories. + ;DIRFIL determines which files can possibly be included, and NOTYPE then + ;eliminates certain types of files. Use a question mark in DIRFIL at each + ;spot where any file name character can match. + ; +0784 DIRFIL:: +0784 3F 3F 3F 3F DB "???????????" ;All files match +0788 3F 3F 3F 3F +078C 3F 3F 3F + + ; + ;The name of the file to be edited can be specified at the operating system + ;prompt. ININON indicates whether the file should be edited as a document + ;or nondocument. + ; +078F ININON:: +078F 00 DB FALSE ;Not non-document from command line + + ; + ;WordStar normally makes BAK backup files every time you save your work. + ;INITBAK can be used to disable backups by setting it FALSE. + ; +0790 INIBAK:: +0790 FF DB TRUE ;Make backups + + ; + ;When a nondocument is edited, WordStar will decide how to expand tabs + ;(ASCII 09H), and whether or not to use auto-indenting by looking in this + ;table. + ; + ;There is a special case of the tab masks shown below. When the most + ;significant bit of the tab mask is set to 1, WordStar will assume that + ;you want to use variable tabbing. When the tab key is typed, instead + ;of inserting an ASCII 09H into the file, spaces will be entered up to + ;the next tab stop. The tab stops used are in the INIRLR table. An + ;ASCII 09H can still be entered in this mode, however, by typing ^PI. + ; +0791 EDCOND:: ;Edit conditions for specific file types +0791 50 41 53 01 DB 'PAS',00000001B,TRUE ;File extension, followed by a +0795 FF +0796 50 4C 49 03 DB 'PLI',00000011B,TRUE ;binary tab mask (e.g. a mask of +079A FF +079B 43 20 20 03 DB 'C ',00000011B,TRUE ;00000111B expands tab characters +079F FF +07A0 48 20 20 03 DB 'H ',00000011B,TRUE ;to every 8th column), followed by +07A4 FF + ;TRUE if auto-indent is turned on. + +07A5 00 00 00 07 DB 0,0,0,00000111B,FALSE ;End of table with defaults if file +07A9 00 + ;type doesn't match above + +07AA 00 00 00 00 DB 0,0,0,0,0 ;Room for four more +07AE 00 +07AF 00 00 00 00 DB 0,0,0,0,0 +07B3 00 +07B4 00 00 00 00 DB 0,0,0,0,0 +07B8 00 +07B9 00 00 00 00 DB 0,0,0,0,0 +07BD 00 + + ; + ;WordStar normally only considers alphabetic or numeric characters + ;as being within a "word". If other characters are legally part + ;or a word too, then the bit for the corresponding character code in + ;the following table must be set to a 1. + ; + ;There are 256 bits in the table to allow for 8-bit character sets. + ;The default table has the bits set for the numbers "0" through "9" + ;(ASCII codes of 30H through 39H), for the upper case letters + ;"A" through "Z" (41H through 5AH), and the lower case letters "a" + ;through "z" (61H through 7AH). Since the ASCII codes are only + ;seven bits, the corresponding codes with the eighth bit set are + ;also legal. + ; +07BE LGLCHR::; 01234567 89ABCDEF +07BE 00 00 DB 00000000B,00000000B ;Codes 00H to 0FH +07C0 00 00 DB 00000000B,00000000B ;Codes 10H to 1FH +07C2 00 00 DB 00000000B,00000000B ;Codes 20H to 2FH +07C4 00 00 DB 00000000B,00000000B ;Codes 30H to 3FH +07C6 7F FF DB 01111111B,11111111B ;Codes 40H to 4FH +07C8 FF E0 DB 11111111B,11100000B ;Codes 50H to 5FH +07CA 7F FF DB 01111111B,11111111B ;Codes 60H to 6FH +07CC FF E0 DB 11111111B,11100000B ;Codes 70H to 7FH +07CE 00 00 DB 00000000B,00000000B ;Codes 80H to 8FH +07D0 00 00 DB 00000000B,00000000B ;Codes 90H to 9FH +07D2 00 00 DB 00000000B,00000000B ;Codes A0H to AFH +07D4 00 00 DB 00000000B,00000000B ;Codes B0H to BFH +07D6 7F FF DB 01111111B,11111111B ;Codes C0H to CFH +07D8 FF E0 DB 11111111B,11100000B ;Codes D0H to DFH +07DA 7F FF DB 01111111B,11111111B ;Codes E0H to EFH +07DC FF E0 DB 11111111B,11100000B ;Codes F0H to FFH + + ; + ;When you use ^A or ^F to move a word at a time, WordStar uses the + ;following table to determine which characters to skip. It is organized + ;in the same manner as LGLCHR above. + ; +07DE MOVCHR::; 01234567 89ABCDEF +07DE FF 92 DB 11111111B,10010010B ;Codes 00H to 0FH +07E0 FB C3 DB 11111011B,11000011B ;Codes 10H to 1FH +07E2 3F F5 DB 00111111B,11110101B ;Codes 20H to 2FH +07E4 FF CE DB 11111111B,11001110B ;Codes 30H to 3FH +07E6 FF FF DB 11111111B,11111111B ;Codes 40H to 4FH +07E8 FF FF DB 11111111B,11111111B ;Codes 50H to 5FH +07EA FF FF DB 11111111B,11111111B ;Codes 60H to 6FH +07EC FF FE DB 11111111B,11111110B ;Codes 70H to 7FH +07EE FF 92 DB 11111111B,10010010B ;Codes 80H to 8FH +07F0 FB C3 DB 11111011B,11000011B ;Codes 90H to 9FH +07F2 3F F5 DB 00111111B,11110101B ;Codes A0H to AFH +07F4 FF CE DB 11111111B,11001110B ;Codes B0H to BFH +07F6 FF FF DB 11111111B,11111111B ;Codes C0H to CFH +07F8 FF FF DB 11111111B,11111111B ;Codes D0H to DFH +07FA FF FF DB 11111111B,11111111B ;Codes E0H to EFH +07FC FF FE DB 11111111B,11111110B ;Codes F0H to FFH + + ; + ;Certain special characters can be inserted into this table to cause + ;WordStar to automatically generate a backspace character (^H) preceding + ;the character as you type. This can be especially useful for accent + ;characters in some foreign languages. + ; +07FE AUTOBS:: ;Automatic backspace table +07FE 00 DB 0 ;Number of characters in table +07FF 00 00 00 00 DB 0,0,0,0 ;Up to 8 character codes +0803 00 00 00 00 DB 0,0,0,0 + + ; + ;When WordStar gets a file for editing, it will use the following + ;initial conditions. + ; +0807 INIDOC:: ;Document initializations + +0807 03 DB 3 ;Top of page margin. + +0808 08 DB 8 ;Bottom of page margin. + +0809 42 DB 66 ;Total lines per page. + +080A 0001 DW 1 ;Initial page number (note 2 bytes). + +080C FF DB TRUE ;Page number prints at bottom of page + ;if TRUE. No page number if FALSE. + +080D 1C DB 28 ;Column where page number prints. + +080E 02 DB 2 ;Heading margin. This is the number of lines + ;above the text where the heading is to print. + +080F 02 DB 2 ;Footing margin. This is the number of lines + ;below the text where the footing is to print. + +0810 07 DB 00000111B ;Default document tab mask (must be + ;binary, 00000000B through 01111111B). + +0811 08 DB 8 ;Left column where printing starts. + +0812 FF DB TRUE ;Bidirectional printing if TRUE. Just + ;unidirectional or printer controlled + ;if FALSE. (Many printers do not allow + ;software control of print direction). + +0813 FF DB TRUE ;Letter quality printing if TRUE. Draft + ;quality if FALSE. (Only supported on + ;some printers.) + +0814 02 DB 2 ;Microjustified printing. 0 turns it off, + ;1 turns it on, and 2 makes it discretionary + ;(depending on the printer driver in use). + +0815 00 DB FALSE ;Underline blanks between words if TRUE. + ;NOTE: Not implemented for all printers. + +0816 0C DB 12 ;Standard character width (in HMI units). + ;The printer is reset to this when done + ;printing. + +0817 08 DB 8 ;Standard line height (in VMI units). The + ;printer is reset to this after .LH dot + ;commands. It is also used to determine + ;the page size in VMI units by multiplying + ;by the lines per page above. + +0818 0C DB 12 ;Character width (in HMI units) + ;for normal pitch. If HMI is 120, ten pitch + ;is 12/120, twelve pitch is 10/120. + +0819 0A DB 10 ;Character width for alternate pitch (use + ;^PA to select alternate pitch while editing). + +081A 03 DB 3 ;Subscript and superscript roll (in VMI + ;units). This value determines how + ;far up or down the carriage moves when + ;subscripting or superscripting. + +081B 08 DB 8 ;Line height (in VMI units). This value + ;determines how far to roll the carriage + ;to get to the next line. + + ; + ;The default ruler line can be described by defining the following values. + ;Note that the tab stop tables must contain values in ascending order only. + ;The regular tab stops are put in the table first, immediately followed by + ;the decimal tabs. + ; +081C INIRLR:: ;Ruler data + +081C 01 DB 1 ;Left ruler margin + +081D 41 DB 65 ;Right ruler margin + +081E 00 DB 0 ;Paragraph margin + +081F 0B DB 11 ;Eleven tabs +0820 06 0B 10 15 DB 6,11,16,21 ;Tab stops +0824 1A 1F 24 29 DB 26,31,36,41 ;(Must be in +0828 2E 33 38 DB 46,51,56 ;ascending order) +082B 00 00 00 00 DB 0,0,0,0 ;Space for 4 more + +082F 00 DB 0 ;No decimal tabs +0830 00 00 00 00 DB 0,0,0,0,0,0 ;Space for 6 +0834 00 00 + +002F inisiz EQU $-INIDOC ;Size of document initialization + + ; + ;INIRLI determines whether the ruler line is re-initialized from INIRLR each + ;time any document is edited. If INIRLI is FALSE, you can change the initial + ;ruler line with ^OL, ^OR, ^OI, and ^ON commands, and have those changes + ;be used for every document edited until you exit WordStar. + ; +0836 INIRLI:: +0836 FF DB TRUE ;Initialize ruler for each document + + ; + ;As you move through a document, WordStar executes some of the dot commands, + ;like .RR ruler line commands, as they are encountered. As WordStar moves + ;forward through the text, the old ruler line is stored in memory so that it + ;can be restored when you move backwards over the .RR later. Other dot + ;commands work in a similar manner. + ; + ;DSTKSZ is used to allocate storage for the dot commands. While you are + ;editing, WordStar puts a Dot-Limit indicator in the status line if you + ;use too many dot commands. + ; + ; Dot Command Size + ; .RR 26 + ; .RM .LM .LH .PL 1 + ; .MT .MB 1 + ; .PN 2 + ; +0837 DSTKSZ:: +0837 01F4 DW 500 ;Room for 19 .RR commands or 500 .RM & .LM + + ; + ;INIDIR determines whether the directory is initially displayed or not. + ;DIRSRT tells WordStar whether or not to sort directories in alphabetical + ;order before displaying them. + ; + +0839 INIDIR:: +0839 FF DB TRUE ;Directory on + +083A DIRSRT:: +083A FF DB TRUE ;Sort directory in alphabetical order + + ; + ;INIHLP is the default help level. It can have a value from 0 to 3. + ; + +083B INIHLP:: +083B 03 DB 3 ;Maximum help level at start + + ; + ;When editing, the last erasure can be undone with ^U. UNONE determines + ;whether single character erasures with ^G and DEL can also be undone. + ; + ;UNSIZE is the maximum erasure that can later be undone. The unerase + ;buffer shares the same memory space as the text you are editing. Making + ;UNSIZE very large may cause WordStar to "spill over" to disk more + ;frequently, slowing down editing. + ; +083C UNONE:: ;Don't unerase single characters +083C 00 DB FALSE + +083D UNSIZE:: +083D 01F4 DW 500 ;Maximum unerase size + + ; + ;VMSIZE indicates the number of 128-byte records that can be read from + ;the disk for WordStar's messages and menus. + ; +083F VMSIZE:: +083F 04 DB 4 ;Four records (.5k byte) + + ; + ;EDSIZE indicates the minimum number of records of edit buffer required + ;to edit a document properly. WordStar must be able to keep a whole + ;page in memory to determine page breaks and line numbers correctly. + ;Less memory can sometimes be used with occasional strange results. + ;(Non-documents are automatically allocated a minimum of 6 records.) + ; +0840 EDSIZE:: +0840 1C DB 28 ;Enough memory for an average full page + + ; + ;BFSIZE is the number of 128-byte records that WordStar uses for its + ;general purpose buffer. There is a different buffer allocation for + ;editing, the Opening Menu, and for merge printing. + ; + ;This buffer is used for: + ; + ; - File directories (each file uses 11 bytes), + ; - Printer driver directory (each driver uses 11 bytes and 256 + ; bytes are used for buffering), + ; - File copies, + ; - Block reads and writes, + ; - Merge printing. + ; +0841 BFSIZE:: +0841 10 DB 16 ;Edit buffer size (16 records = 2k) + ;(Minimum is 1 record) + +0842 10 DB 16 ;Opening menu buffer size + ;(Minimum is 3 records) + +0843 10 DB 16 ;Merge print buffer size + ;(Minimum is 1 record) + + ; + ;If a document becomes too large to fit in memory at one time, WordStar + ;begins to "spill" the excess to the disk. TYSIZE determines how many + ;128-bytes records to use for each spillover. Picking a correct size + ;is important but can usually be done by trial and error. If TYSIZE is + ;too large, you may see long delays during scrolling or typing when memory + ;fills. + ; +0844 TYSIZE:: +0844 10 DB 16 ;Number records read or stored while typing + +0845 00 00 00 00 DB 0,0,0,0 ;Reserved + + ; + ;A "find" or "find and replace" uses the INIFIN options if you do not + ;explicitly enter any at the "Options?" prompt. The possible options + ;that can be used are: + ; + ; W whole words only + ; U ignore case + ; B backwards search + ; G whole file + ; R rest of file + ; N replace without asking + ; + ;Blank the unused options. + ; +0849 INIFIN:: +0849 20 20 20 20 DB ' ' ;No options +084D 20 20 + + ; + ;The status line is usually displayed at the top of the screen. + ;INISTA lets you always turn it off. STFILL specifies what character + ;to use to fill unused space in the status line. + ; +084F INISTA:: +084F FF DB TRUE ;Display status line + +0850 STFILL:: +0850 20 DB ' ' ;Fill with blanks + + ; + ;When paragraphs are aligned with ^B or ^QU and hyphen help is on, HYMAX + ;is used to determine when to ask the user to hyphenate a word. + ; +0851 HYMAX:: +0851 05 DB 5 ;Ask user when the word extends more than 5 + ;characters past the right margin + + ; + ;When WordStar asks a question that requires a Y for yes or N for no response, + ;YNCR indicates whether or not the user must push the RETURN key before + ;WordStar will accept it. + ; +0852 YNCR:: +0852 00 DB FALSE ;Don't wait for RETURN key + + ; + ;WordStar can index every word in a document as well as selected words and + ;phrases. IDXALL determines whether this is the default or not. + ; +0853 IDXALL:: +0853 00 DB FALSE ;Don't index every word + + ; + ;Using ^B or ^QU in a nondocument normally strips the eighth bit from + ;each character in a line. STRPFL can disable stripping. + ; +0854 STRPFL:: +0854 FF DB TRUE ;Stripping is enabled + ; + ;Editor Entry Conditions + ; +0855 INIEDT:: +0855 FF DB TRUE ;Right justification when typing +0856 FF DB TRUE ;Word wrap when typing at end of line +0857 FF DB TRUE ;Insert on +0858 FF DB TRUE ;Print controls displayed +0859 00 DB FALSE ;No hyphen help +085A FF DB TRUE ;Ruler displayed +085B 00 DB FALSE ;Block column mode off +085C 00 DB FALSE ;Block column replace mode off +085D 01 DB 1 ;Single spacing +085E 02 DB 2 ;Scrolling speed +085F 00 DB FALSE ;Proportional spacing off +0860 00 DB FALSE ;Soft space not displayed + +0861 00 00 00 DB 0,0,0 ;Reserved + ; +000F iniesz EQU $-INIEDT ;Size of editor conditions + + ; + ;The following are special characters that affect how numbers are + ;evaluated and dispayed. + ; +0864 COMCHR:: +0864 2C DB ',' ;Comma to separate 1,000's + +0865 DECCHR:: +0865 2E DB '.' ;Decimal point + + ; + ;The following flags are used to control the way WordStar processes + ;certain commands. CTLNFL and CTLHFL are provided primarily to allow + ;WordStar 3.3 users to use ^N and ^H in the same way as they are accustomed. + ; +0866 CTLNFL:: +0866 FF DB TRUE ;Set non-zero if ^N to break line and + ;RETURN moves down a line when insert off. + ;Set to zero so ^N converts paragraph lines + ;and turns auto indent on/off for + ;nondocuments, and RETURN always inserts CRLF. + +0867 CTLHFL:: +0867 00 DB 0 ;Set non-zero if ^H to be same as ^S instead + ;of DEL. + +0868 CASEFL:: +0868 00 DB 0 ;Set non-zero if ^^ is case toggle. When + ;zero and CLTNFL is non-zero, use as + ;paragraph line and auto-indent on/off. + +0869 DELFLG:: +0869 00 DB 0 ;Set non-zero if DEL erases to left, zero + ;to erase to right (like ^G). + +086A BLKFLG:: +086A FF DB 0FFH ;Set non-zero if the cursor should move + ;to column 1 if the cursor is next to a block + ;marker at the left edge of the screen + +086B LSPFLG:: +086B 00 DB 0 ;Set non-zero if lines with soft carriage + ;returns should not be added to paragraphs + ;for line spacing other than 1 + + ; + ;RLRVID allows the user to select video attributes used to highlight + ;the ruler line. See VIDATT for bit definitions. + ; +086C RLRVID:: +086C 00 DB 0 ;No ruler highlighting + + ; + ;AHEAD indicates whether type ahead is allowed for ^E, ^X, ^W, ^Z, + ;^G, DEL, ^T, ^Y, ^QY, and ^QDEL. If AHEAD is 0, WordStar's type + ;ahead buffer will be flushed whenever one of the functions is + ;encountered. If it is non-zero, no flushing will occur. This + ;flag should be used primarily for external keyboard enhancers where + ;the functions shown above are to be used. WordStar's function key + ;and shorthand processing automatically compensate. + ; +086D AHEAD:: +086D 00 DB 0 ;Flush + + ; + ;Maximum size for the shorthand definitions. Should be optimized to + ;match actual usage since it reduces the amount of memory available + ;for text while editing and printing. The size of each definition + ;is equal to 5 plus the number of characters defined. If this value + ;is smaller than the size of the shorthand file (see SVFILE above), + ;only some of the definitions will be used. Setting it to zero + ;disables shorthand and makes the ESC key clear the screen instead. + ; +086E HANMAX:: +086E 04 DB 4 ;Size of shorthand buffer in records + ;(4 times 128 = 512 bytes) + + ; + ;With shorthand you can insert the dollar-formatted results of the last + ;math you performed. WordStar uses the format below when you do this. + ;(Make sure that the character count includes the zero at the end.) + ; +086F DOLLAR:: +086F 11 DB 17 ;Character count +0870 2D 2D 2C 2D DB '--,---,---,---.99' +0874 2D 2D 2C 2D +0878 2D 2D 2C 2D +087C 2D 2D 2E 39 +0880 39 +0881 00 00 00 DB 0,0,0 ;Spare + +0884 00 00 00 00 DB 0,0,0,0,0,0,0,0 ;Reserved +0888 00 00 00 00 +088C 00 00 00 00 DB 0,0,0,0,0,0,0,0 +0890 00 00 00 00 + + ; + ;EXTRA is a large buffer area for general patching. Some versions of + ;the WINSTALL installation program use EXTRA. Whenever EXTRA is used, + ;RAM1ST must be changed to point to the first available byte within EXTRA + ;that is still available for WordStar's use. If all of EXTRA is used, + ;RAM1ST should point to endpat. + ; +0894 RAM1ST:: +0894 0896 DW EXTRA ;First location in EXTRA that WordStar can use + ; +0896 EXTRA:: DS 512 ;Patch area +0A96 endpat:: ;End of patch area + + +0A96 08 0C 57 UDATE: DB 08,12,87 ;User area version date + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/PRINT.TST b/Images/Source/hd0/s0/u2/PRINT.TST new file mode 100644 index 00000000..b8dc204a --- /dev/null +++ b/Images/Source/hd0/s0/u2/PRINT.TST @@ -0,0 +1,143 @@ +.hePRINT.TST Features of Your Printer +.f1 WordStar +.f2 Print test +.f3 Page # +.oj on + WordStaò anä Youò Printer + +WordStar‚  workó  witè á widå rangå oæ printeró anä offeró  yoõ  á +varietù oæ prinô enhancements® Whetheò youò printeò caî producå +thå  prinô enhancementó outlineä iî thió documenô dependó oî  itó +capabilities®   Pleaså notå thaô noô alì printeró arå capablå  oæ +showinç alì thå exampleó below. + +Speciaì Printinç Capabilities + +WordStaò supportó thå followinç speciaì printinç capabilities: + + ª Boldface¬ Doublå strike + * Italics/Alternatå ribboî color + * Strikå out + * Overprinô (aó iî co^te) + * Noncontinuouó underline¬ anä +.ul on + * Continuouó underline +.ul off + + * SuperScript¬ SubScript + + * anä almosô anù combinatioî -­ WordStar + +Characteò Width + +Somå  printeró  wilì  supporô  WordStar‚  commandó  foò   variablå +characteò widths® + +.cw 24 +µ characteró peò inch® (.C× 24) +.cw 20 +¶ characteró peò inch® (.C× 20) +.cw 14 +8.¶ characteró peò inch® (.C× 14) +.cw 12 +1° characteró peò inch® (.C× 12) +.cw 10 +1² characteró peò inch® (.C× 10) +.cw 7 +17.± characteró peò inch® (.C× 7) +.cw 12 + +Youò printeò caî alsï bå seô tï "toggle¢ betweeî normaì pitcè anä +alternatå pitch: + +     Thió  sentencå ió printeä witè thå normaì 1°-pitcè  setting¬ +     theî toggleä tï 1² pitch¬ theî bacë tï normal. +.cw 7 + +Yoõ caî alsï changå thå normaì anä alternatå characteò widths: + +.cw 14 +.rm 55 +     Thå  "normal¢ characteò widtè ió 1´ (8.¶ cpi©  anä +     thå alternatå characteò widtè ió · (17.± cpi). +.pa Š.rm 65 +.cw 10 + +.cw 12 +Linå Height + +Yoõ caî alsï uså differenô linå heights. + +.lh 16 +Thió ió aî examplå oæ variablå linå height® (.LÈ 1¶ ­ ³ lpi) +.lh 12 +Thió ió aî examplå oæ variablå linå height® (.LÈ 1² ­ ´ lpi) +.lh 8 +Thió ió aî examplå oæ variablå linå height® (.LÈ ¸ ­ ¶ lpi) +.lh 6 +Thió ió aî examplå oæ variablå linå heighô® (.LÈ ¶ ­ ¸ lpi) +.lh 8 + +Proportionaì Printing + +.ps on +.uj on +WordStar‚  alsï supportó proportionaì printinç foò  mosô  printeró +thaô  havå  it®   Yoõ  selecô  proportionaì  fontó  bù   changinç +characteò widthó aó iî thå followinç examples: + +.cw 22 +Thió ió characteò widtè 22. +.cw 11 +Thió ió characteò widtè 11. +.cw 9 +Thió ió characteò widtè 9. +.cw 7 +Thió ió characteò widtè 7. +.uj dis +.ps off +.cw 12 + +Other + +Phantoí Spacå¬ Phantoí Rubout + +WordStaò maù allo÷ yoõ tï prinô speciaì characteró (foò  example¬ +á  paragrapè  sigî  oò centó sign© bù  usinç  thå  phantoí  spacå +commanä (^PF© oò thå phantoí rubouô commanä (^PG© iî á  document® +Foò  youò  printer¬ thå phantoí spacå characteò isº  ¬  anä  thå +phantoí rubouô characteò isº . + +Switchinç tï Drafô Mode + +.lq off +Doô matriø printeò driveró allo÷ switchinç froí NLÑ (neaò  letteò +quality© modå tï drafô modå foò fasteò printing. +.lq on + +Microspacå Justification + +.uj on +WordStar‚   allowó  microspacå  justification¬  iæ  youò   printeò +supportó  it¬ tï producå evenlù spaceä wordó iî  justifieä  text® +Microspacinç spreadó thå whitå spacå betweeî wordó (anä sometimeó +betweeî thå letteró oæ eacè word© aó evenlù aó possible® +.uj dis +.pa ŠLookinç Aô Thió Filå Onscreen + +Iæ  yoõ wanô tï seå thå embeddeä commandó thaô produceä thå  texô +yoõ arå no÷ reading¬ follo÷ theså steps: + +1 Aô thå Openinç Menu¬ presó D‚ tï ediô á document. + +² Aô thå prompô foò filename¬ typå print.tsô anä presó Enter. + +Noticå thaô thå texô onscreeî includeó somå characteró thaô don'ô +appeaò  iî  thå  printeä copy® Foò example¬ á  headinç  linå  ió +identifieä  bù  thå  doô  commanä .he®   Wordó  iî  boldfacå  arå +surroundeä bù ^ anä appeaò eitheò highlighteä oò iî á  differenô +coloò oî youò screen. + +Tï continuå viewinç thå contentó oæ thió file¬ ¬ presó ^C® Presó +^R‚ tï movå iî thå otheò direction. + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/READ.ME b/Images/Source/hd0/s0/u2/READ.ME new file mode 100644 index 00000000..3f1cf909 --- /dev/null +++ b/Images/Source/hd0/s0/u2/READ.ME @@ -0,0 +1,2141 @@ + --THE README FILE-- + ------------------------ + +README contains late-breaking news and tips about WordStar, +and information about printers. + + +THE DISKS THAT CAME IN YOUR PACKAGE +----------------------------------- + +The file HOMONYMS.TXT is included on the Speller disk +contrary to what is listed in Appendix D. + + +INSTALLATION +------------ + +WINSTALL and WSCHANGE + + WordStar has two installation programs: + + o WINSTALL contains the basic choices to install WordStar. + It is recommended for all users. + + Be sure and install your valid disk drives since WordStar + running under CP/M cannot recover from attempts to access non- + existent disk drives. + + o WSCHANGE contains every installation and customization + choice. It is designed for advanced users and users who + want to customize WordStar after they're familiar with it. + Use the menu listing below for a directory of the menus + in WSCHANGE. + +Directory of WSCHANGE Menus + + The chart below shows the organization of menus in WSCHANGE. + Print it out and refer to it as you customize WordStar. + + Main Installation Menu + + A Console + A Monitor + A Monitor selection + B Monitor name + C Screen sizing + B Function keys + C Monitor patches + A Special characters + B Cursor control + C Screen control + D Keyboard patches + A Function keys + B Save function keys + E Interface patches + A Console busy handshaking + B Special I/O subroutines + B Printer + A Printer choices + A Printer selection + B Printer name + C Default printer driver + B Printer driver library + A Select library file + B Create smaller library + C Add new printer driver + D Change printer driver data + C WS printer patches + A Custom print controls, printer initialization + + NOTE: Disregard the "CUSTOM & SIMPLE Controls Save CUSTOM/SIMPLE + Controls" option shown. This is not available from this menu. + + D Printing defaults + E Printer interface + A Printer port selection + B Printer busy handshaking + C Printer subroutines + C Computer + A Disk drives + A Valid disk drives + B Maximum valid user number + C Delay disk access if typing + B Operating system + A Single-user system + B Multi-user MP/M + C Multi-user Turbo DOS + D ZCPR3 + C Memory usage + D WordStar files + E Directory display + F Computer patches + D WordStar + A Page layout + A Page sizing & margins + B Headers & footers + C Tabs + B Editing settings + A Edit screen & help level + B Typing + C Paragraph alignment + D Blocks + E Erase & unerase + F Lines & characters + G Find & replace + H WordStar 3.3 compatibility + I Printing defaults + C Other features + A Spelling checks + B Nondocument mode + C Indexing + D Shorthand (key macros) + E Merge printing + F Miscellaneous + E Patching + A Auto patcher + B Save settings + C Reset all settings + +MEMORY USAGE +------------ + + WordStar requires a minimum TPA size of 50 kbytes to run + using the factory defaults. The TPA is the amount of memory + available in your computer for use by programs that have a + file type of COM. To see how big the TPA is in your computer, + press the question mark key (?) at the Opening Menu. + + The amount of memory required by WordStar can be reduced by + approximately 3 kbytes if necessary. Use the WSCHANGE program + to select the minimum memory configuration option. The menu + will show you what capabilities are being reduced. + + WordStar uses a general-purpose buffer for a variety of + tasks. WordStar allocates memory to this buffer for editing, + for merge printing, and at the Opening Menu (see BFSIZE in + PATCH.LST). The buffer used for editing is usually the most + sensitive to a reduced TPA size. (You may be able to use the + Opening Menu and print, but there may be insufficient memory + for editing.) + + The merge print buffer is used only to hold merge print + variable names and data. Increase it if you run out of memory + while merge printing. + + The Opening Menu buffer is used primarily to hold the file + directory, and for miscellaneous tasks. + + +LOW-MEMORY INDICATOR IN STATUS LINE +----------------------------------- + + If the Low-Memory indicator appears in the status line, it + means that WordStar was unable to complete some function. + The most common symptoms are: the line number in the + status line is wrong, or a paragraph alignment could not be + completed. You may correct the line counter by saving your + file, exiting WordStar, and re-loading your file. To correct + the paragraph alignment, move your cursor to the point where + paragraph alignment stopped, and then press ^B again. + + The reason this comes up is that WordStar was not able to fit + a big enough chunk of text into memory at one time. + + When you first begin editing, WordStar uses the value from + EDSIZE in the user area to determine the minimum amount + of memory required for a page of text. The default + is set for approximately a 55 line by 66 column page. If + your page size is routinely larger than this, you may want + to increase EDSIZE. Multiply the number of lines by the + number of columns, and divide by 128. + + If the Low-Memory indicator comes on while printing, it is due + to either the same reasons as for editing, or there is + insufficient memory to print the text proportionally spaced. + The amount of memory required depends on which printer + driver you are using. If you aren't using the .PS ON dot + command to turn proportional spacing on in your document, + low memory won't be a problem. Also, WordStar uses more + memory for merge printing than it does for regular printing + (around 2.5 kbytes more). + + The Low-Memory indicator will also appear when a full disk error + is encountered during editing. Treat the disk-full error as you + would normally. + + +RAM-RESIDENT PROGRAMS +--------------------- + + RAM-resident programs, such as SmartKey, reduce the amount of + working memory (TPA) that WordStar can use. The new features in + WordStar, such as shorthand, may reduce the need for these + RAM-resident programs, thus freeing memory for WordStar. + + +ZCPR3 SUPPORT +------------- + + In order to enable the ZCPR facilities within WordStar, the user + must use the Z3INS utility provided with ZCPR to install the + address of the ZCPR "environment" into WordStar. The environment + contains information that WordStar uses to support ZCPR-specific + functions. + + Generally, the user should log onto the drive containing the file + WS.COM, and issue the command: + + Z3INS SYS.ENV WS.COM + + The user should also run either WINSTALL or WSCHANGE to further + install WordStar for ZCPR. However, this is not mandatory because + the only thing that happens is that the WordStar sign-on says + "ZCPR3," and the LGLUSR location in the user area is changed for a + maximum user number of 31. (The normal default for LGLUSR is 15.) + + Once the user has installed WordStar for use with ZCPR, the user + will be able to use the following ZCPR features: + + - A named directory may be used when logging onto a new drive/user. + + - A named directory may be used instead of a drive/user as part + of any file name. + + - The drive/user always appears above file directories. (For CP/M + only the drive letter is shown if the user number is zero.) + + - The directory name also appears above the directory if one has + been defined for the currently logged drive/user. + + - If WordStar does not find its OVR files on the current drive and + user, it will search the drives and user numbers in the ZCPR + search path rather than using its standard search pattern. + + - WordStar installs itself as a ZCPR "shell" process which lets the + user enter any legal ZCPR command when running a program. (CP/M + can only run programs that are COM files.) + + +OSBORNE USERS +------------- + + The command to change a hard carriage return to a soft carriage + return (document mode) or to turn Auto-indent ON (nondocument + mode) does not function on the Osborne because of a limitation + in its BIOS. The following patch can be applied to change the + command from ^^ to ^- (Ctrl-Hyphen): + + Using DDT or SID in the file WSMSGS.OVR: + + At 02DA replace 1E with a 1D + At 02EF replace 1E with a 1D + At 0359 replace 1E with a 1D + At 06B2 replace 1E with a 1D + At 06C9 replace 1E with a 1D + + At the system prompt type SAVE 53 WSMSGS.OVR + + For more information on how to use SID or DDT, see your CP/M + reference guide. As always, be sure and apply the patch to a + COPY of the file. + + +INSTRUCTIONS FOR TWO FLOPPY DISK COMPUTERS +------------------------------------------ + + Do not remove the Program disk while you are using WordStar. + + The Printer Driver Library file (WSPRINT.OVR) on the WordStar + program disk is much smaller than the Printer Driver Library + file contained on the disk labeled PRINTER. Be sure to read the + section in "Starting" that discusses the printer library file. + + +RUN A PROGRAM +------------- + + Once you press R you can type the drive and user number for the + program you want to run. You may run only .COM files. CCP commands, + such as DIR cannot be used. + + +INDEXING +-------- + +Using StarIndex + + StarIndex 1.01 works with files created with this release of + WordStar. + +"Can't Use That Printer" Message + + When WordStar creates an index or table of contents, it uses + the printer drivers $INDEX and $TOC. If you created a smaller + WSPRINT.OVR file, you may have left these drivers out. To + return them to the file, copy the original WSPRINT.OVR file + onto your disk. When you create a smaller file again, be sure + to save these drivers. See Appendix C in the WordStar manual + for a list of other drivers to save. + + +SPELL CHECKING +-------------- + + Dual floppy disk users: + + Unless you have sufficient room on your working WordStar program + disk for the files TW.COM, SPELL.COM, MARKFIX.COM, REVIEW.COM and + MAINDICT.CMP you will not be able to run a spell check from the + Opening Menu. You will need to exit WordStar and replace the + working WordStar program disk with the dictionary disk you created + during installation. This disk should contain the files listed + above. Make sure the disk in drive B has the file you want to + spell-check. + + Follow the directions for running a spell check in The WORD Plus + manual. + + +UPGRADING FROM A PREVIOUS RELEASE +--------------------------------- + + This release of WordStar contains many new features and commands. + See the "What's New" booklet for a complete list. The following + changes came in too late to be included in the documentation. + +Printer Patches + + Previous versions of WordStar treat most dot matrix printers + and other non-daisy wheel printers as a DRAFT printer with a + few patchable items. Because of this, many users have used + these patches to be able to use certain features of their + printers. Sometimes the patches have been quite extensive, and + some users have many files that count on them. + + The printer drivers of WordStar Release 4, on the other hand, + are very powerful. Almost every driver recognizes all the print + controls and all the dot commands. In fact, if a document is + written to be printed on one kind of printer, it is likely that + it will also print fine on some other printer. + + However, if you want to use your existing files with WordStar + 4, and those files rely on the user area being patched in a + special way, you can probably do so by moving the patches into + WordStar 4, and using the CUSTOM or SIMPLE printer driver. + + On the INSTALL disk is a program called MOVEPRN.COM that + copies the printer driver portion of the previous release's + user area into files that can be installed into Release 4 with + the "auto patcher" feature. + + Copy the program MOVEPRN.COM onto the disk containing the + WS.COM file for the previous version. Type + + MOVEPRN WS.COM FILE1.PAT FILE2.PAT + + MOVEPRN extracts the proper portions of the user area and + writes them into two files that may then be used with the "auto + patcher" feature of WSCHANGE. + + FILE1.PAT is to be used with the general patching menu + (Choose E "Patching" on the WSCHANGE Main Menu, then A "Auto + Patcher"). FILE2.PAT should be used to install strings first + into the SIMPLE driver, and then into the CUSTOM driver (choose + B "Printer" on the WSCHANGE Main Menu, then B "Printer driver + library", D "Change printer driver data" and D "Driver auto + patcher"). + + Test print your document first with the SIMPLE driver, and then + with the CUSTOM driver to see which one produces the most + satisfactory results. + + Also read Appendix C for more information on using the Auto + Patcher. + + +Hanging Indents + + For WordStar Professional Release 4, MailMerge reformats indented + text created with ^OG to the current margins. If you want the text + to remain indented, use embedded ruler lines or the .RM, .LM, + and .PM commands. See the "Reference Guide" for more information. + + Pressing ^OG to wrap back to the first tab on the ruler line after + having reached the last tab works the same way it did in previous + versions of WordStar, contrary to what is stated in the manual. + + +TERMINALS +--------- + + WordStar comes installed for an "idealized" special terminal. + WINSTALL and WSCHANGE allow you to install many terminals by + name, thus allowing WordStar to take advantage of the special + features that the terminal might support, such as underlining + or the function keys. + + Use either WINSTALL or WSCHANGE to pick your specific terminal + or computer screen from the Monitor menu. If your terminal + isn't on the menu, it probably emulates one of those that is + there. Look in your terminal documentation to find out. + + After you install WordStar for the proper terminal, run + WordStar and open the file PRINT.TST to see which attributes + (such as bold and underline) work on your screen. + WordStar will highlight the following in some way... + + Bold (^PB) + Underline (^PS) + Strike-out (^PX) + Subscript (^PV) + Superscript (^PT) + Doublestrike (^PD) + Italics (^PY) + Blocks (^KB, ^KK) + Error messages + + Most of the time, normal text will be shown in dim intensity, + and highlighted text will be shown in bright intensity. You + may have to use a brightness and/or contrast knob to adjust + your screen the first time you use WordStar this way. + + If your dim intensity is too dim to see well, and you can't + adjust it, you can change the BRITE flag to ON using WSCHANGE. + This will invert bright and dim in your text, so that regular + text is displayed bright, and highlighted text will be + displayed as dim. However, text in the menus is not affected. + + +DISPLAY PROBLEMS WITH TERMINALS +------------------------------- + + Once you have installed WordStar for the proper terminal, you + may still experience display problems. + + If text from the previous screen remains after WordStar + displays a new screenful of text, the most likely cause is + cursor wrap. Basically, WordStar must know what happens to the + cursor when a character is displayed at the rightmost position + of the screen. It can either remain at the right edge, or it + can wrap to the beginning of the next line. The WRAP flag in + WordStar must be set either on or off to correspond to the + way the terminal works. (It is generally set for the + terminal's factory default, but the default can usually be + changed using the terminal's setup mode.) + + Another possible cause for display problems is your terminal's + incomplete emulation of some other terminal. The most + common differences are... + + Line insert (LININS), line delete (LINDEL), + Erase to end of screen (ERAEOS), + Erase to end of line (ERAEOL), + And, erase screen (ERASCR). + + Look in the manual for your terminal and use WSCHANGE to see + if the control sequences match. + + +PRINTERS +-------- + +WHAT'S IN THIS SECTION + + This section contains the following information: + + Choosing a Printer + Setting Up Your Printer + Printer Drivers + Proportional Printing + Laser Printers + Information on Specific Printers + +CHOOSING A PRINTER + + WordStar is ready to work with over 100 printers. The printer you + choose during installation becomes your default printer. However, + when you print a document, you can choose any other printer. To + choose a default printer, follow these steps: + + 1. Look at the Printer Information brochure that came in your + package. The first chart shows the printers listed on the + Printer Selection Menus. If your printer is on the menu, + simply choose it during installation. + + 2. If your printer isn't listed on the menu, it may work like a + printer that is. Refer to the second chart in the Printer + Information brochure for a list of printers that work like + printers on the menu. When WordStar asks you to choose a + printer, choose the printer that works like yours. + + 3. If neither chart lists your printer, choose Typewriter Printer + (if your printer can backspace) or Draft Printer (if it can't). + These choices may not take advantage of all your printer's + features, but they will work with almost any printer. + + Note: If you choose Draft or Typewriter, you can modify custom + print controls and printer initialization. + + If you want to make more modifications to take advantage of your + printer's feature, choose the Custom or Simple drivers, then use + the WS Printer Patches section of WSCHANGE to tell WordStar the + codes for your printer. Refer to your printer manual for these + codes. Some printers work better with the Custom driver and some + with the Simple driver. Try using both and see which works better + with your printer. See the "Reference Guide" for more information. + +SETTING UP YOUR PRINTER + +Choosing a Printer Port + + Each printer is connected to a printer port at the back of + the computer. WordStar looks for printers on the LST: port. + If your printer is connected to a different port, use + WSCHANGE to tell WordStar the correct port. + +Testing Your Printer Connection + + At the operating system prompt, type "PIP LST:=READ.ME." This + file should be printed by your printer. If it is not, your printer + may be connected to a different port. See your computer reference + manual, and the section on the STAT command in your CP/M + reference manual for more information. + + +PRINTER DRIVERS + + The WSPRINT.OVR file on the Printers disk contains a printer + driver for each printer on the Printer Selection Menu. The printer + driver for a printer contains all the codes WordStar needs to work + with that printer. + + Each printer driver has a short name. If you choose a printer when + you print a document, you see the names of the printer drivers, not + the names of the printers. + +PROPORTIONAL PRINTING + + WordStar supports proportional printing on a number of printers. + To turn on proportional printing, either install WordStar to + default to proportional printing, or place a ".PS on" command + in your document. At print time, WordStar selects the + appropriate proportional font based on the character width + (.CW) currently in effect. + + The specific printer descriptions later in this section show + recommended character widths for proportional typefaces. + These widths are for a normal mix of upper- and lowercase + letters. If you have many words or phrases all in uppercase + or if you want your text less densely printed, choose a larger + character width. + + While WordStar mostly sets character widths based on the + proportional-width table in the driver, on the more advanced + daisy wheel printers, WordStar uses the printer's proportional- + spacing mode. WordStar determines how much white space is needed + to right-justify the line based on its own proportional width + tables. If the table values don't match the wheel installed, + WordStar won't be able to justify the line correctly. + + WordStar sends standard ASCII characters; if a proportional wheel + uses a different spoke mapping, set up the printer to handle this. + +LASER PRINTERS + + WordStar supports laser printer features such as font changes + and proportional spacing. + + WordStar supports several laser printers: the Canon LPB-8 A1 & A2; + the Hewlett-Packard LaserJet, LaserJet+, and LaserJet 500+; + and the Ricoh LP4080. Refer to the "Specific Printer + Information" section of this file for information on these + printers. General notes about using laser printers are given below. + +Paper Size and Margins + + Laser printers come with preset page margins. You need to + compensate for these margins by changing page length in your + WordStar documents. The chart below shows the recommended + settings for 8 1/2 X 11 inch paper for both portrait and landscape + orientations. These settings allow 55 lines of text for portrait + orientation and 40 lines of text for landscape orientation (at 6 + lines per inch). They also allow for a footer of up to 3 lines + and a one-line header. If you use multiple-line headers, adjust + the top margin accordingly. + + Dot Default Portrait Landscape + Setting Command Value Orientation Orientation + ------- ------- ------- ----------- ----------- + page length .PL 66 62 47 + top margin .MT 3 2 2 + bottom margin .MB 8 5 5 + header margin .HM 2 1 1 + footer margin .FM 2 2 2 + + If the laser printer is your primary printer, you can use WSCHANGE + to make these settings the defaults. + + Because laser printers leave small margins at the left and right + sides of the page, you may want to use a smaller page offset + setting (the default is .PO 8). + +Form Feeds + + When you print with a laser printer, answer Y for yes to the "Use + form feeds (Y/N)?" prompt at print time. (The default is NO.) If + the laser printer is your primary printer, you can use WSCHANGE to + change the default to yes. + +WordStar Commands for Font Selection + + The WordStar dot commands and print control commands listed below + determine the fonts used for printing a document. + + .PR .PR OR=L selects landscape orientation; .PR OR=P (or just + .PR OR) selects portrait orientation (the default). If + either of these commands appears after the first printing + line on a page, the orientation will not change until the + following page. + + .PS .PS ON selects proportionally spaced characters; .PS OFF + (the default) selects fixed-spaced characters. + + .CW The character-width setting (.CW followed by the width in + 120ths of an inch) determines the character pitch and font + selected for fixed-width printing. For proportional fonts, it + determines the point size and proportional-width table + selected. + + .LQ .LQ ON selects near letter quality print (if supported by + your printer). LQ OFF selects draft quality print. Default + is ON. + + ^PY The italic print control toggles between normal and italic + characters when the appropriate italic font is available. + + ^PB The boldface print control toggles between normal and bold + characters when the appropriate bold font is available. + + ^PD The double strike print control used with the laser printers + toggles overprinting with a horizontal offset of 1/120" + between the two character images. This allows a bold effect + where no bold font is available. + + ^PA ^PA turns alternate pitch on. Use .CW to assign different + character widths to normal pitch (see ^PN below) and alternate + pitch so that each pitch accesses a different font. You can + then change fonts by switching between the two pitches. This + is the only way to use two fonts on the same line. + (See "Character width" and "Pitch" in the "Reference Guide.") + + ^PN ^PN turns normal pitch on. You can use it with ^PA as + described above. + + ^P@ When working with columns, if you use alternate and normal + pitch for two fonts, or if you use proportional spacing, you + may need to use ^P@ to make sure the columns line up. + Remember that the column position set with ^P@ is determined + by the normal pitch character width. (See "Columns" and + "Proportional spacing" in the "Reference Guide." + +INFORMATION ON SPECIFIC PRINTERS + + This section describes the capabilities of each printer listed on + the Printer Selection Menu. The printers are listed in alphabetical + order (except for the generic printers such as "Draft," + "Typewriter," "Custom," "Simple," and the various print-to-disk + options, which are listed first). + + There is a chart for each printer explaining how features work and + listing any special notes about the printer. Each printer is + described in the following format: + +PRINTER NAME ----- Driver: (short name) + + ^PY Effect of italics/ribbon color print control + ^PT/V Subscript/superscript information + .CW Information on available character widths and fonts. The + chart shows the .CW, .LQ, and .PS settings required to use + different fonts. + + .LQ OFF .LQ ON .PS ON Font Name + ------- ------ ------ --------- + .cw val .cw val recommended value (range) font 1 + .cw val .cw val recommended value (range) font 2 + + .UL Continuous-underline information (if restrictions) + .UJ Microspace-justification information (if restrictions) + + N/A means a command has no effect on this printer. + + NOTES Switch settings, special features, anomalies. + +DRAFT PRINTER (nonbackspacing) ----- Driver: DRAFT + + ^PD Overprints the line twice + ^PB Overprints the line three times + ^PS Overprints the underscore character in a separate pass + ^PT/V Prints super/subscripts with a full line between + super/subscript and text + .LH Sets line height only in multiples of full lines + .CW N/A + .PS N/A + .LQ N/A + .UJ N/A + + NOTES This driver works with any printer that doesn't automatically + perform a line feed when it receives a carriage return command. All + overprinting is done by returning the carriage and passing over the + line again. + +TYPEWRITER PRINTER (backspacing) ----- Driver: TYPEWR + + ^PD Backspaces and overprints each character twice + ^PB Backspaces and overprints each character three times + ^PS Backspaces and overprints the underscore character + ^PT/V Prints super/subscripts with a full line between + super/subscript and text + .LH Sets line height only in multiples of full lines + .CW N/A + .PS N/A + .LQ N/A + .UJ N/A + + NOTES This driver works with any printer that doesn't automatically + perform a line feed when a it receives a carriage return command, + and responds to a backspace character. Overprinting is done by + backspacing. + +AUTO LINE FEED PRINTER (backspacing) ----- Driver: AUTOLF + + ^PD Backspaces and overprints each character twice + ^PB Backspaces and overprints each character three times + ^PS Backspaces and overprints the underscore character + ^PT/V Prints super/subscripts with a full line between + super/subscript and text + .LH Sets line height only in multiples of full lines + .CW N/A + .PS N/A + .LQ N/A + .UJ N/A + + NOTES This driver works with any printer that automatically + performs a line feed when it receives a carriage return character, + and responds to a backspace command. Overprinting is done by + backspacing. + +SIMPLE CUSTOMIZABLE PRINTERS ----- Driver: SIMPLE + + All print controls cause control strings (on and off) in + the user area to be sent to the printer. These strings + are used by both the SIMPLE and CUSTOM drivers. They can + be installed with the WSCHANGE program. + + .LQ Controlled by user area strings + .PS Controlled by user area strings + .CW N/A + .UJ N/A + .LH N/A + + NOTES This printer driver prints the line in one pass, sending + control strings from the user area to select print enhancements. + +CUSTOMIZABLE PRINTERS ----- Driver: CUSTOM + + All print controls cause control strings (on and off) in + the user area to be sent to the printer. These strings + are used by both the SIMPLE and CUSTOM drivers. They can + be installed with the WSCHANGE program. + + .LQ ON/OFF controlled by user area strings + .PS ON/OFF controlled by user area strings + .LH Sets line height only in multiples of full lines + .UJ N/A + .CW N/A + + NOTES This driver prints the line in multiple passes, sending + control strings from the user area to select print enhancements. + +PREVIEW TO DISK ----- Driver: PRVIEW + + This driver prints documents to the PREVIEW.WS file to allow + you to preview the format and appearance of a document before + printing. Headers, footers, and pagination are shown correctly + and print controls remain in the file to display onscreen + attributes. Dot commands are not printed. + +PRINT TO DISK WITHOUT PRINT CONTROLS ----- Driver: ASCII + + This driver prints to the ASCII.WS file, stripping headers and + footers, high bits, and print controls. + +PRINT TO DISK WITHOUT HEADERS AND FOOTERS ----- Driver: XTRACT + + This driver prints to the XTRACT.WS disk file, stripping headers + and footers, but preserving high bits and print controls. + +ANADEX 9500A, 9500B ----- Driver: 9500 + + ^PY N/A + ^PT/V Even superscript roll + + .CW .CW Font name + --- --------- + 9 13.3 cpi + 10 12 cpi + 12 10 cpi + 18 6.7 cpi + 20 6 cpi + 24 5 cpi + + .LH 1/24" resolution, use even values + .UJ This printer has no incremental horizontal positioning + .PS N/A + .LQ N/A + +ANADEX 9501B, INTEQ 5100B ----- Driver: 9501B + + ^PY N/A + ^PT/V Even superscript roll + + .CW .CW Font name + --- --------- + 7 16.7 cpi + 8 15 cpi + 10 12.5 cpi + 12 10 cpi + 14 8.3 cpi + 16 7.5 cpi + 20 6.2 cpi + 24 5 cpi + + .LH 1/24" resolution, use even values + .UJ This printer has no incremental horizontal positioning + .PS N/A + .LQ N/A + +C. ITOH STARWRITER 1550 AND 8510 ----- Driver: C1550 + + ^PY N/A + ^PT/V Prints full-size characters with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 10 elite + 12 pica + 14 expanded compressed + 20 expanded elite + 24 expanded pica + + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification + +C. ITOH F10 STARWRITER ----- Driver: QUME + + See Diablo 630, 1610, 1620 Daisy Wheel. + + Note: Proportional printing was tested with a Theme 10 wheel. + +CANON LBP-8A1 AND LBP-8A2 LASER PRINTER ----- Driver: LBP8 + + ^PY Selects italics if appropriate font installed + ^PT/V Prints full-size characters with roll + .PS .PS + .CW OFF ON Font Name + --- -- --------- + 6 - 20 cpi + 8 - 15 cpi + 9 - 13.3 cpi + 10 - 12 cpi (elite) + 12 - 10 cpi + 20 - 6 cpi + 24 - 5 cpi + 16 - 7.5 cpi + - 7 (0-8) Garland 8 point + - 10 (9-11) Garland 12 point + - 14 (12-17) Expanded 8 point + - 20 (18-30) Expanded 12 point + + .LQ N/A + .PL For 11 inch paper, a value of 62 is recommended + .PR OR "=Landscape" or "=Portrait" to select orientation + + NOTES Answer yes to the "Use form feeds" prompt. This driver is + configured to select all the built-in fonts in the LBP8, as well + as fixed pitch cartridges and the Garland PS cartridge. Other + proportional cartridges require modifying the proportional spacing + tables with WSCHANGE. For more information on laser printers, see + the "Laser Printers" section above. + +CITIZEN MSP ----- Driver: CITMSP + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 10 elite + 12 pica + 14 expanded compressed + 20 expanded elite + 24 expanded pica + + .LH Use even values. Driver operates at 2/48 resolution. + .PS N/A + .UJ Microjustification slows printing. Continuous underlining + suppresses microjustification. + + +DATAPRODUCTS PAPER TIGER SPG-8050 & SPG-8070 ----- Driver: SP8050 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, prints full-size + .LQ .LQ .PS + .CW ON OFF ON Font name + --- --- --- --------- + 7 7 5 (0-6) condensed + 10 10 8 (7-8) elite + 12 12 10 (9-13) pica + 14 14 - expanded condensed + 20 20 16 (14-17) expanded elite + 24 24 20 (18-30) expanded pica + +DIABLO 630, 1610, 1620 DAISY WHEEL ----- Driver: DIABLO + + ^PY Selects red/black ribbon color + ^PT/V Prints super/subscripts in separate pass with specified roll + .CW Supports any value from 0 to 30. Usual fixed pitch values + are 8 (15 cpi), 10 (12 cpi), and 12 (10 cpi). + .BP ON selects bidirectional printing; OFF selects left-to-right + printing + .LQ N/A + .UL Continuous underlining does not suppresses microspace + justification. Continuous underlining may be irregular. + .PS ON selects proportional spacing; OFF selects fixed pitch + spacing. If a proportional print wheel has a non-standard + spoke pattern, configure the printer to translate spoke + position into the appropriate character. This driver + explicitly positions each character when proportional spacing + is selected. + + NOTES The proportional spacing tables are set up for a Diablo + metal 96 character BOLD PS wheel. + +DIABLO 630 DAISY WHEEL WITH WP OPTIONS ----- Driver: 630WP + + ^PY Selects red/black ribbon color + ^PT/V Prints super/subscripts in separate pass with specified roll + .CW Supports any value from 0 to 30. Usual fixed pitch values + are 8 (15 cpi), 10 (12 cpi), and 12 (10 cpi). + .LQ N/A + .UL Continuous underlining does not affect microspace justifi- + cation + .PS ON selects proportional spacing; OFF selects fixed pitch + spacing. If a proportional print wheel has a non-standard + spoke pattern, configure the printer to translate spoke + position into the appropriate character. This driver sends + codes to the printer to turn proportional spacing on and off, + and the printer controls character to character spacing. + + NOTES The proportional spacing tables are set up for a Diablo + metal 96 character BOLD PS wheel. + +DIABLO 630 DAISY WHEEL, EXTENDED CHARACTER SET ----- Driver: 630ECS + + ^PY N/A + ^PT/V Prints super/subscripts in separate pass with specified roll + .CW Supports any value from 0 to 30. Usual fixed pitch values + are 8 (15 cpi), 10 (12 cpi), and 12 (10 cpi). + .LQ N/A + .UL Continuous underlining does not affect microspace justifi- + cation + .PS ON selects proportional spacing; OFF selects fixed pitch + spacing. If a proportional print wheel has a non-standard + spoke pattern, configure the printer to translate spoke + position into the appropriate character. This driver sends + codes to the printer to turn proportional spacing on and off, + and the printer controls character to character spacing. + + NOTES The proportional spacing tables have been set up for a Diablo + metal 96 character BOLD PS wheel. + +DIABLO C150 & C200 COLOR JET PRINTERS ----- Driver: C150 + + ^PY Selects red/black ink + .CW 10 characters per inch only + .LH 1/30" resolution + .PS N/A + .LQ N/A + +EPSON FX-80 AND FX-100 ----- Driver: FX80 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 10 elite + 12 pica + 14 expanded compressed + 20 expanded elite + 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + +EPSON FX-85, FX-185 AND FX-286 ----- Driver: FX85 + + ^PY Selects draft quality italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 6 - - compressed elite + 7 - - compressed + 10 - - elite + 12 12 11 (10-13) courier + 14 - - expanded compressed + 20 - - expanded elite + 24 24 22 (20-30) expanded courier + + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + .UJ must be on for proportional text to be right-justified. + +EPSON LQ-800 AND LQ-1000 ----- Driver: LQ800 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + - - - compressed script + 6 6 - compressed elite + 7 7 6 (0-7) compressed + 8 - subscript 15 cpi + 10 10 - elite + 12 12 10 (8-16) pica + 14 14 - expanded compressed + 16 - expanded script + 20 20 - expanded elite + 24 24 - expanded courier + +EPSON LQ-1500, VERSION 2.0 ----- Driver: LQ1500 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + 10 10 - elite + - - 8 (1-9) subscript 15 cpi + 12 12 11 (10-13) courier + 14 - - expanded compressed + - - 15 (14-18) expanded script + 20 20 - expanded elite + 24 24 20 (19-30) expanded courier + + .UL Continuous underlining suppresses microspace justification. + In proportional fonts, continuous underlining may appear + broken between words. + + NOTES If you have an older LQ-1500 (firmware version 1.8), your + printer will have horizontal position registration problems. For + best results, contact your printer dealer about a ROM upgrade. + +EPSON LX-80 - Driver: LX80 + + ^PY Selects draft mode italics + ^PT/V Prints half height if .SR 0, else full height with roll + + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 - compressed + 10 - elite + 12 12 courier + 14 - expanded compressed + 20 - expanded elite + 24 24 expanded courier + + .LH Use even values. Driver operates at 2/48" resolution. + .PS N/A + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + +EPSON MX-80 AND MX-100 WITH GRAFTRAX+ +EPSON MX-80 III AND MX-100 III ----- Driver: MX80 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 12 pica + 14 expanded compressed + 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + + NOTES Older MX-80 and MX-100 printers don't have graphics mode (for + fine horizontal spacing), variable line height setting, printer + controlled underlining, or printer controlled super/subscripts. If + you have one of these printers, use the DRAFT driver, or adapt the + CUSTOM or SIMPLE driver to your needs. + +EPSON RX-80 AND RX-100 ----- Driver: RX80 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 10 elite + 12 pica + 14 expanded compressed + 20 expanded elite + 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + +HEWLETT-PACKARD LASERJET PRINTERS + + The following information applies to the LaserJet, the LaserJet+, + and the LaserJet 500+. For general information on laser printers, + see the "Laser Printers" section above. + +The LaserJet Fonts + + The LaserJet has three different types of fonts: + + - The "internal" fonts that came with the printer + - Plug-in cartridges + - Soft fonts that must be downloaded through your computer. + (Only the LaserJet+ and LaserJet 500+ can use downloaded fonts.) + + The fonts available in your LaserJet depend on which cartridge + you have installed and which fonts you have downloaded. + +Font Installation + + Internal Fonts: + + The fonts that came with your printer are already in memory and + ready to use. Different LaserJet models come with different sets + of internal fonts. + + Cartridges: + + Cartridges containing a variety of character fonts can be + inserted into any LaserJet model. See your printer manual for + instructions. + + The font selection guidelines in the sections below contain + information about specific cartridges. The letter that identifies + your cartridge is on the front label, directly following the + number 92286. For example, the Y cartridge is labeled 92286Y. + + Soft fonts: + + Soft, or downloadable, fonts are supplied on disk. These fonts + are not explicitly supported by WordStar. + +LaserJet Font Selection + + Each LaserJet font has several characteristics associated with + it. When a printer driver specifies font characteristics to the + LaserJet, the LaserJet searches its available fonts for the best + match to the characteristics requested. The following table + describes these characteristics, in the order in which the + LaserJet evaluates them when selecting a font. + + Characteristic WordStar Control + -------------- ----------------- + * Orientation (portrait or landscape) .PR OR=P/L + * Symbol Set (Roman-8, USASCII, Printer driver + Line Draw, etc.) + * Proportional or fixed spacing .PS ON/OFF + * Print pitch (fixed-width fonts) .CW + * Character height (point size) .CW + * Character style (upright or italic) ^PY + * Stroke weight (light, medium, bold) ^PB + + Note that symbol set is high in the list of characteristics: + make sure that the driver you select is compatible with the symbol + set of your cartridge or downloaded fonts. The symbol sets used by + each driver are listed in the table in the next section. For example, + if your cartridge has the USASCII Symbol Set, you can't use the + HPLJ:U driver because it uses only the Roman-8 Symbol Set. + +LaserJet Printer Drivers + + WordStar provides two printer drivers for use with different + LaserJet font cartridges. Each of these drivers + lets you print with several of the available fonts. You can + use any of these drivers with the LaserJet, LaserJet+, or + LaserJet 500+, depending on the cartridge. + Refer to the table below to see which driver works + best for you. + + The table lists the following information for each driver: + + o The symbol sets used for fixed and proportional spacing + + These must correspond to the symbol sets on the installed + fonts you want to use. The "Default" symbol set refers to the + one the LaserJet defaults to. + + o The proportional-spacing tables used by the driver + + These tables are part of the LaserJet's method of proportional + spacing. The tables determine the width of each character in a + proportionally spaced font. The fonts corresponding to these + tables are used if available. If the corresponding font is not + installed, the table is still used, and the closest available + font is used. This may cause the spacing to appear too tight or + too loose. In this column, the number is the point size, R stands + for regular, B stands for bold, and I stands for italics (the + LaserJet has separate tables for each of these). + + o The font cartridges that work best with + the symbol sets and tables used by the driver + + The cartridges listed are the only ones directly + supported for use with WordStar. If your cartridge is not + listed, you may still be able to use it. Look at + the font information below and try the most compatible driver. + You may need to try different dot command settings or another + driver. The HPLJET is the most "general purpose" driver, so if + you're not sure which driver to use, try it first. + + Fixed-width Proportional Proportional Downloaded + Driver Symbol Set Symbol Set Tables Fonts/Cartridges + ------ ----------- ------------ ------------- ---------------- + + HPLJET Default Default TmsRmn 8R, F, P, most fixed + 10R,10B,10I + Helv 14B + + HPLJ:B Default USASCII TmsRmn 8R, B + 10R,10B,10I + Helv 14B + + HPLJ:U Roman-8, Roman-8 Helv 6R,8R, U, V + Line Draw 10R,12R,14R + + HPLJ:Y PCSET1 USASCII TmsRmn Y, AC + PCSET2 6,8,10,12,14 + (all in R,B,I) + 18B,24B,30B + + HPL:AD Roman-8, Roman-8 TmsRmn AD + Line Draw 6,8,10,12,14 + (all in R,B,I) + 18B,24B,30B + + The printer driver charts below show the actual fonts that print + with each printer driver and the recommended font cartridges. + The charts show the fonts used for both fixed + and proportional spacing and for different character width (.CW) + settings. + + The recommended .CW settings are shown first. The settings in + parentheses select the same font, but the spacing of characters + within a line may appear tighter or looser. + + After the name of each font, the charts note whether regular (R), + bold (B), and italic (I) fonts are available. If a bold font is + not available, you can use the ^PD (double strike) command to get + a boldface effect. + + The last column shows whether you can print in landscape (chosen + in WordStar with .PR OR=L) as well as portrait orientation. + + To use a particular font, choose the settings listed. For example, + to use the Times Roman 8 font with the HPLJET printer driver, insert + the F cartridge, turn .PS on and set character width to .CW 7. + +HP LASERJET, LASERJET+ (F cartridge and others) ----- Driver: HPLJET + + ^PY Selects italics if appropriate font installed + ^PT/V Prints full-size characters with roll + + Cartridge/ + Soft font .PS .CW Font/Point Size R B I Landscape + --------- --- -------- --------------- - - - --------- + F on 7 (0-7) Times Roman 8 x + 9 (8-11) Times Roman 10 x x x + 13 (12-30) Helvetica 14 x + off 7 (0-11) Line Printer 8.5 x + 12 (12-30) Courier 12 x x + P on 9 (0-30) Times Roman 10 x x x x + off 7 (0-11) Line Printer 8.5 x + 12 (12-30) Courier 12 x x (0-30) + + The following fixed pitch fonts may be available depending + on your cartridge. (Note that these are measure by pitch, + not by point size.): + + .CW Font Name + --- --------- + 7 16.7 pitch + 10 12 pitch + 12 10 pitch + 15 8.1 pitch + 18 6.5 pitch + 21 5.8 pitch + 27 4.5 pitch + + .LQ N/A + .PL For 11 inch paper, a value of 62 is recommended. + Too large a value will cause text to be lost at page bottom. + .PR OR "=Landscape" or "=Portrait" to select orientation. + + NOTES Answer yes to the "Use form feeds" prompt. This driver has + proportional spacing tables for all fonts in the F and P cartridges. + It should also work with many fixed width cartridges. +.p + +HP LASERJET, LASERJET+ (B cartridge) ----- Driver: HPLJ:B + + ^PY Selects italics if appropriate font installed + ^PT/V Prints full-size characters with roll + + Cartridge/ + Soft font .PS .CW Font/Point Size R B I Landscape + --------- --- -------- --------------- - - - --------- + B on 7 (0-7) Times Roman 8 x + 9 (8-11) Times Roman 10 x x x + 13 (12-30) Helvetica 14 x + off 7 (0-11) Line Printer 8.5* x x + 12 (12-30) Courier 12 x x + * Line printer 8.5 is not available in portrait mode + unless the LaserJet+ is used. + + .LQ N/A + .PL For 11 inch paper, a value of 62 is recommended. + Too large a value will cause text to be lost at page bottom. + .PR OR "=Landscape" or "=Portrait" to select orientation. + + NOTES Answer yes to the "Use form feeds" prompt. This driver has + proportional spacing tables for all fonts in the B cartridge. +.p + +HP LASERJET, LASERJET+ (U and V cartridges) ----- Driver: HPLJ:U + + ^PY Selects italics if appropriate font installed + ^PT/V Prints full-size characters with roll + + Cartridge/ + Soft font .PS .CW Font/Point Size R B I Landscape + --------- --- -------- --------------- - - - --------- + U on 5 (0-5) Helvetica 6 x + 7 (6-7) Helvetica 8 x + 9 (8-9) Helvetica 10 x + 11 (10-11) Helvetica 12 x + 13 (12-30) Helvetica 14 x + off 7 (0-11) Letter Gothic 9.5 x + 12 (12-30) Courier 12 x x (0-30) + + V on 5 (0-5) Helvetica 6 x landscape only* + 7 (6-7) Helvetica 8 x "* + 9 (8-9) Helvetica 10 x "* + 11 (10-11) Helvetica 12 x "* + 13 (12-30) Helvetica 14 x "* + off 7 (0-11) Letter Gothic 9.5 x ** + 12 (12-30) Courier 12 x + * No proportional font is available in portrait orientation. + ** With fixed spacing, in portrait orientation, .CW7 (0-11) + produces Line Printer 8.5 on the LaserJet+ and Courier 12 + on the LaserJet. + + .LQ N/A + .PL For 11 inch paper, a value of 62 is recommended. + Too large a value will cause text to be lost at page bottom. + .PR OR "=Landscape" or "=Portrait" to select orientation. + + NOTES Answer yes to the "Use form feeds" prompt. This driver has + proportional spacing tables for all fonts in the U and V cartridges. +.p + +HP LASERJET, LASERJET+ (Y cartridge, AC TmsRmn) ----- Driver: HPLJ:Y + + ^PY Selects italics if appropriate font installed + ^PT/V Prints full-size characters with roll + + Cartridge/ + Soft font .PS .CW Font/Point Size R B I Landscape + --------- --- -------- --------------- - - - --------- + Y on none available + off 7 (0-11) Line Printer 8.5 x x + 12 (12-30) PC Courier 12 x x x + + AC* on 5 (0-5) Times Roman 6 x x x x + 7 (6-7) Times Roman 8 x x x x + 9 (8-9) Times Roman 10 x x x x + 11 (10-11) Times Roman 12 x x x x + 13 (12-14) Times Roman 14 x x x x + 16 (15-18) Times Roman 18 x x + 20 (19-24) Times Roman 24 x x + 25 (25-30) Times Roman 30 x x + off 7 (0-11) Line Printer 8.5 x x (0-30) + 12 (12-30) Courier 12 x + * Other .CW settings may access additional fonts if a + cartridge is also installed. + + .LQ N/A + .PL For 11 inch paper, a value of 62 is recommended. + Too large a value will cause text to be lost at page bottom. + .PR OR "=Landscape" or "=Portrait" to select orientation. + + NOTES Answer yes to the "Use form feeds" prompt. This driver is for + use with the Y cartridge, which provides an IBM PC compatible symbol + set. In addition, this driver has complete proportional spacing + tables for the AC set of downloadable TmsRmn fonts. +.p + +HP LASERJET, LASERJET+ (AD TmsRmn) ----- Driver: HPL:AD + + ^PY Selects italics if appropriate font installed + ^PT/V Prints full-size characters with roll + + Cartridge/ + Soft font .PS .CW Font/Point Size R B I Landscape + --------- --- -------- --------------- - - - --------- + AD* on 5 (0-5) Times Roman 6 x x x x + 7 (6-7) Times Roman 8 x x x x + 9 (8-9) Times Roman 10 x x x x + 11 (10-11) Times Roman 12 x x x x + 13 (12-14) Times Roman 14 x x x x + 16 (15-18) Times Roman 18 x x + 20 (19-24) Times Roman 24 x x + 25 (25-30) Times Roman 30 x x + off 7 (0-11) Line Printer 8.5 x + 12 (12-30) Courier 12 x x (0-30) + + The following fixed pitch fonts may be available depending + on your cartridge. (Note that these are measure by pitch, + not by point size.): + + .CW Font Name + --- --------- + 7 16.7 pitch + 10 12 pitch + 12 10 pitch + 15 8.1 pitch + 18 6.5 pitch + 21 5.8 pitch + 27 4.5 pitch + + .LQ N/A + .PL For 11 inch paper, a value of 62 is recommended. + Too large a value will cause text to be lost at page bottom. + .PR OR "=Landscape" or "=Portrait" to select orientation. + + NOTES Answer yes to the "Use form feeds" prompt. This driver is for + use with the AD TmsRmn downloaded fonts, and for a ROMAN8 or + ROMAN8+LINEDRAW fixed width font cartridge. The driver includes + complete proportional spacing tables for the AD set of downloadable + TmsRmn fonts. + +HP THINKJET, IBM mode ----- Driver: HPTJI + + ^PY N/A + ^PT/V Prints full-size characters with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 10 elite + 12 pica + 14 expanded compressed + 20 expanded elite + 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is ON. + + NOTES This printer does not have a true 10 pitch font, so character + widths are not exact, and ^P@ does not align exactly with text. + Because the printer has an automatic page offset, set the WordStar + page offset to zero. + +IBM COLOR PRINTER 5182 ----- Driver: IBMCLR + + ^PY Selects red/black ribbon color + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ .PS + .CW OFF ON ON Font Name + --- --- -------- --------- + 7 7 5 (0-6) compressed + 10 10 8 (7-8) elite + 12 12 10 (9-13) pica + 14 14 - expanded compressed + 20 20 15 (14-16) expanded elite + 24 24 20 (17-30) expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ Has same effect as ^PD + .UL Underlining may be irregular with microspace justification on + .UJ Microspace justification slows printing. Default is OFF. + +IBM GRAPHICS PRINTER 5152 ----- Driver: IBMGR + + ^PY N/A + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 12 pica + 14 expanded compressed + 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + +IBM PROPRINTER 4201 ----- Driver: IBMPRO + + ^PY N/A + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 7 compressed + 10 10 elite + 12 12 pica + 14 14 expanded compressed + 20 20 expanded elite + 24 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .PS N/A + .LQ Has same effect as ^PD + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + + NOTES If you have a Proprinter XL, you can use WSCHANGE to patch + in the extra features. + +IBM QUIETWRITER 5201 ----- Driver: IBMQUI + + ^PY Toggles between A and * font cartridge. Set character + width to match cartridge in use. (A cartridge uses current + ^PN character width; * cartridge uses ^PA character width.) + ^PT/V Prints full-size characters with roll + .CW Selects character width. Character width must correspond + to the cartridge being used. + .LQ N/A + .PS ON selects proportional spacing, OFF selects fixed pitch + spacing + +IBM WHEELPRINTER 5216 ----- Driver: IBMWP + + ^PY N/A + ^PT/V Printer determined roll if .SR 0 + .CW Selects character spacing. Any value from 0 to 30 is + supported. Usual fixed pitch values are 8 (15 characters + per inch), 10 (12 cpi) and 12 (10 cpi). + .LQ N/A + .UL Continuous underlining does not affect microjustification + .PS ON selects proportional spacing, OFF selects fixed pitch. + This driver sends codes to the printer to turn proportional + spacing on and off, and the printer controls character to + character spacing. + + NOTES The proportional spacing tables are set up for an IBM + BOLD PS wheel. + +IBM WHEELPRINTER 5223 E ----- Driver: IBMWPE + + ^PY N/A + ^PT/V Printer determined roll if .SR 0 + .CW Selects character spacing. Any value from 0 to 30 is + supported. Usual fixed pitch values are 8 (15 characters + per inch), 10 (12 cpi) and 12 (10 cpi). + .LQ N/A + .UL Continuous underlining does not affect microjustification. + Continuous underlining will be somewhat irregular. + .PS ON selects proportional spacing, OFF selects fixed pitch. + This driver will send codes to the printer to turn propor- + tional spacing on and off, and the printer will control + character to character spacing. + + NOTES The proportional spacing tables are set up for an IBM + BOLD PS wheel. + +MANNESMANN TALLY MT-160L ----- Driver: MT160L + + ^PY N/A + ^PT/V Prints full-size characters with specified even roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 6 - compressed elite + 7 - compressed + 10 10 elite + 12 12 pica + 14 - expanded compressed + 20 - expanded elite + 24 - expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .UJ N/A + + NOTES This printer is not capable of incremental horizontal + positioning. As a result, microspace justification is not possible. + In addition, when changing character widths, characters may not + align to closer than one full character width. Also, page offsets + smaller than a character will not work. + +MPI PRINTMATE 99 & 350 ----- Driver: MPI99 + + ^PY N/A + ^PT/V Even superscript roll + .LQ .LQ + .CW OFF ON Font name + --- --- --------- + 7 - 17.1 cpi + 10 - 12 cpi + 12 12 10 cpi + 14 - 8.5 cpi + 20 - 6 cpi + 24 24 5 cpi + + .LH 1/24" resolution, use even values + .PS N/A + .UJ N/A + +NEC PINWRITER P2-3, P2-6, P3-3, P6-6 ----- Driver: NECP2I + + ^PY N/A + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 - compressed + 10 10 elite + 12 12 pica + 14 - expanded compressed + 20 20 expanded elite + 24 24 expanded pica + + .PS N/A + .UL Continuous underline suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + + NOTES Page offsets smaller than the character width in effect are + not supported. Make sure switch 5 on the printer is off. + +NEC PINWRITER P5XL, P6, P7 ----- Driver: NECP5 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 6 6 - compressed elite + 7 7 6 (0-8) compressed + 8 8 - subscript 15 cpi + 10 10 - elite + 12 12 10 (9-17) pica + 14 14 - expanded compressed + 16 16 - expanded script + 20 20 - expanded elite + 24 24 20 (18-26) expanded courier + 30 30 30 (27-30) triple elite + + +NEC SPINWRITER 2000R, 3500R +NEC SPINWRITER 2010, 3510, 7710 +NEC SPINWRITER 2030, 3530, 7730 ----- Driver: SPINWR + + See Diablo 630, 1610, 1620 Daisy Wheel. + + .BP N/A + + NOTES The proportional spacing tables are set up for a NEC BOLD PS + wheel. Proportional spacing is not supported on the 2010 and 2030. + +NEC SPINWRITER 2015, 3515, 7715 ----- Driver: DIABLO + + See Diablo 630, 1610, 1620 Daisy Wheel. + + .BP N/A + + NOTES The proportional spacing tables are set up for a NEC BOLD PS + wheel. This printer does not respond correctly to the phantom blank + and phantom rubout characters, and may lose horizontal alignment if + they are included in your document. Proportional spacing is not + supported on the 2015. + +NEC SPINWRITER 2050, 3550, 8850 ----- Driver: SPIN50 + + See Diablo 630, 1610, 1620 Daisy Wheel. + + .BP N/A + + NOTES The proportional spacing tables are set up for a NEC BOLD PS + wheel. Proportional spacing is not supported on the 2050. + +OKIDATA MICROLINE 84 STEP 2, STANDARD ----- Driver: ML84 + + ^PY N/A + ^PT/V Printer controlled if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 7 compressed + 10 10 elite + 12 12 pica + 14 14 expanded compressed + 20 20 expanded elite + 24 24 expanded pica + + .PS N/A + .UJ In draft mode (.LQ OFF), this printer is not capable of + microspace justification. Different character widths may + not line up correctly. + + NOTES Page offsets smaller than the character width in effect are + not supported. + +OKIDATA MICROLINE 92 AND 93, STANDARD ----- Driver: ML92 + + ^PY N/A + ^PT/V Printer controlled if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 compressed + 10 10 elite + 12 12 pica + 14 expanded compressed + 20 20 expanded elite + 24 24 expanded pica + + .PS N/A + .UJ In draft mode (.LQ OFF), this printer is not capable of + microspace justification. Different character widths may + not line up correctly. + + NOTES Page offsets smaller than the character width in effect are + not supported. + +OKIDATA MICROLINE 84, 92, 93, IBM PLUG & PLAY ----- Driver: ML92I + + ^PY N/A + ^PT/V Printer controlled if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 compressed + 12 12 pica + 14 expanded compressed + 24 24 expanded pica + + .PS N/A + .UJ In draft mode (.LQ OFF), this printer is not capable of + microspace justification. Different character widths may + not line up correctly. + + NOTES Page offsets smaller than the character width in effect are + not supported. + +OKIDATA MICROLINE 182, STANDARD ----- Driver: ML182 +OKIDATA MICROLINE 182, IBM ML182I + + ^PY N/A + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 - compressed + 10 10 elite + 12 12 pica + 14 - expanded compressed + 20 20 expanded elite + 24 24 expanded pica + + NOTES This printer is not capable of incremental horizontal + positioning, so microspace justification is not possible. In + addition, when changing character widths, characters may not align + to closer than one full character width. Also, page offsets smaller + than a character do not work. + +OKIDATA MICROLINE 192, STANDARD ----- Driver: ML192 +OKIDATA MICROLINE 192, IBM ML192I + + ^PY Selects draft mode italics. No half height italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + 10 10 9 (9-10) elite + 12 12 11 (11-17) pica + 14 - - expanded compressed + 20 20 18 (18-20) expanded elite + 24 24 22 (21-30) expanded pica + + NOTES This printer does not have control strings to select + proportional and fixed pitch printing. This choice can only be + made through the printer's own menu functions. For reasonable + results, make sure that your document and printer are both fixed + pitch or both proportional. + +OKIDATA MICROLINE 292, STANDARD ----- Driver: ML292 +OKIDATA MICROLINE 292, IBM ML292I + + ^PY Selects italics. No half height italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 7 7 (6-8) compressed + 10 10 9 (9-10) elite + 12 12 11 (11-12) pica + 14 14 13 (13-17) expanded compressed + 20 20 18 (18-20) expanded elite + 24 24 22 (21-30) expanded pica + + NOTES This printer does not have control strings to select + proportional and fixed pitch printing. This choice can only be + made through the printer's own menu functions. For reasonable + results, make sure that your document and printer are both fixed + pitch or both proportional. + +OKIDATA PACEMARK 2410, STANDARD ----- Driver: PM2410 + + ^PY N/A + ^PT/V Prints full-size characters with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 7 - compressed + 10 10 elite + 12 12 pica + 14 - expanded compressed + 20 20 expanded elite + 24 24 expanded pica + + .UJ Compressed and expanded compressed characters will not be + microspace justified. Also, they may not align perfectly + with other character widths. + + NOTES If you have the IBM-compatible printer, do not use this + installation. Instead, choose the IBM Graphics Printer. + +PANASONIC KX-P1090 ----- Driver: P1090 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 10 elite + 12 pica + 14 expanded compressed + 20 expanded elite + 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification. + +QUME SPRINT SERIES ----- Driver: QUME + + See Diablo 630, 1610, 1620 Daisy Wheel. + + .PS N/A + + NOTES Make sure you use the appropriate switch settings for your + interface module. Set the switches on the module accordingly: + IBM Centronics module: 1, 2, 8, 9 ON. All others OFF. + RS-232-C module: 1, 2 ON. All others OFF. + +QUME SPRINT WITH WP OPTION ----- Driver: QUMEWP + + See Diablo 630, 1610, 1620 Daisy Wheel. + + .PS N/A + +RICOH LP4080R LASER PRINTER ----- Driver: LP4080 + + ^PY N/A + ^PT/V Prints full-size characters with roll + .PS .PS + .CW OFF ON Font Name + --- --- --------- + 8 - 15 cpi + 10 - 12 cpi elite + 12 - 10 cpi courier + - 11 (0-30) proportional + + .LQ N/A + .PL For 11 inch paper, a value of 62 is recommended + .PR OR "=Landscape" or "=Portrait" to select orientation + + NOTES Answer yes to the "Use form feeds" prompt. This driver is + configured to select all the built in fonts in the LP4080R, in both + portrait and landscape mode. For more information on laser printers, + see the "Laser Printers" section above. + +SILVER REED EXP-550/500 DAISY WHEEL ----- Driver: SR550 + + See Diablo 630, 1610, 1620 Daisy Wheel. + + NOTES Proportional spacing tables (Model 500 does not support + proportional printing) are set up for a Silver Reed PS wheel. + You need to change the switch settings for proportional + fonts. Set the SW-1 switches accordingly: + For proportional fonts: 1, 2 ON, 3-6 OFF + For nonproportional fonts: All OFF. + +STAR MICRONICS GEMINI 10X AND 15X ----- Driver: GEM10X + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + + .CW .CW Font Name + --- --------- + 7 compressed + 10 elite + 12 pica + 14 expanded compressed + 20 expanded elite + 24 expanded pica + + .LH Use even values. Driver operates at 2/48" resolution. + .LQ N/A + .PS N/A + .UL Continuous underlining suppresses microspace justification + .UJ Microspace justification slows printing. Default is OFF. + +STAR MICRONICS NX-10 ----- Driver: NX10 + + ^PY Selects draft quality italics + ^PT/V Prints half-size if .SR 0; otherwise full-size with roll + .LQ .LQ .PS + .CW OFF ON ON Font Name + --- --- --- --------- + 6 - 4 (0-5) compressed elite + 7 - 7 (6-7) compressed + 10 - 9 (8-9) elite + 12 12 11 (10-12) pica + 14 - - expanded compressed + 20 - - expanded elite + 24 24 - expanded pica + + .UL Continuous underlining suppresses microjustification + .UJ Microjustification slows printing + +STAR MICRONICS SG10 ---- Driver: SG10 +STAR MICRONICS SG10I ---- Driver: SG10I + + ^PY Selects draft mode italics + ^PT/V Prints full size characters with roll + + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + 10 - 10 (9-12) elite + 12 12 - pica + 14 - - expanded compressed + 20 - 20 (18-24) expanded elite + 24 24 - expanded pica + + .UL Continuous underlining suppresses microjustification + .UJ Microjustification slows printing + .PS Draft quality proportional + + NOTE: Because of printer firmware limitations, combinations of + print enhancements may cause poor printed output. + +TANDY DMP-130 MATRIX PRINTER ----- Driver: DMP13 + + ^PY Selects italics + ^PT/V Prints half-size characters (17 cpi, or 8.5 cpi for + expanded fonts) + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + - 10 - elite + 12 12 11 (11-13) pica + 14 - - expanded compressed + - 20 - expanded elite + 24 24 22 (21-30) expanded pica + + NOTES Printer must be in Tandy mode. + +TANDY DMP-2100P MATRIX PRINTER ----- Driver: D2100P + + ^PY N/A + ^PT/V Prints full-size characters with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + - 10 9 (9-10) elite + 12 12 11 (11-13) pica + 14 - - expanded compressed + - 20 18 (18-20) expanded elite + 24 24 22 (21-30) expanded pica + + NOTES Printer must be in Tandy mode. + +TANDY DMP-2110 MATRIX PRINTER ----- Driver: D2110 + + ^PY Selects italics + ^PT/V Prints half-size if .SR 0; otherwise, full-size with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + - 10 9 (9-10) elite + 12 12 11 (11-13) pica + 14 - - expanded compressed + - 20 18 (18-20) expanded elite + 24 24 22 (21-30) expanded pica + + NOTES Printer must be in Tandy mode. + +TANDY DWP-230 DAISY WHEEL ----- Driver: DWP230 +TANDY DWP-520 DAISY WHEEL ----- Driver: DWP520 + + ^PY N/A + ^PT/V Prints super/subscripts in separate pass with specified roll + .CW Supports any value from 0 to 30. Usual fixed pitch values are + 10 (12 cpi) and 12 (10 cpi). + .BP N/A + .LQ N/A + .PS ON selects proportional spacing. Spacing tables are set up for + a DIABLO BOLD PS wheel, #303029-01. + .UL Continuous underlining does not suppress microjustification + for DWP230; does suppress it for DWP520. + +TEXAS INSTRUMENTS 855 AND 865 ----- Driver: TI855 + + ^PY N/A + ^PT/V Prints full-size characters with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 6 6 6 (0-8) compressed + 10 10 10 (9-11) elite + 12 12 12 (12-17) pica + 14 14 - expanded compressed + 20 20 20 (18-22) expanded elite + 24 24 24 (23-30) expanded pica + +TOSHIBA P351, P351C, P341, P321 ----- Driver: P351 + + ^PY Selects italics + ^PT/V Prints full-size characters with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + - 10 9 (0-9) elite + 12 12 11 (10-14) pica + 14 - - expanded compressed + - 20 18 (15-19) expanded elite + 24 24 22 (20-30) expanded pica + +TOSHIBA P1340 ----- Driver: P1340 + + ^PY No effect + ^PT/V Prints full-size characters with roll + .LQ .LQ + .CW OFF ON Font Name + --- --- --------- + 10 10 elite + 12 12 pica + 14 - expanded compressed + 20 - expanded elite + 24 24 expanded pica + +TOSHIBA P1351 ----- Driver: P1351 + + ^PY N/A + ^PT/V Prints full-size characters with roll + .LQ .LQ + .CW OFF ON .PS ON Font Name + --- --- ------ --------- + 7 - - compressed + - 10 9 (0-9) elite + 12 12 11 (10-14) pica + 14 - - expanded compressed + - 20 18 (15-19) expanded elite + 24 24 22 (20-30) expanded pica + +ZENITH Z-125AA ----- Driver: Z125 + + ^PY N/A + ^PT/V No incremental vertical positioning + + .CW .CW Font name + --- --------- + 7 16.7 cpi + 9 13.3 cpi + 10 12 cpi + 12 10 cpi + 14 8.3 cpi + 18 6.7 cpi + 20 6 cpi + 24 5 cpi + + .LH Full lines only + .UJ N/A + .PS N/A + .LQ N/A + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/README b/Images/Source/hd0/s0/u2/README new file mode 100644 index 00000000..39793dad --- /dev/null +++ b/Images/Source/hd0/s0/u2/README @@ -0,0 +1,15 @@ +This disk contains an updated printer driver file for your +WordStar, CP/M Edition, Release 4. This file corrects problems +you may have experienced with form feeds, page length, and right- +justified proportional spacing. + +Follow the instructions on page xxii of the WordStar Reference +Guide for creating a new WSPRINT.OVR file. Substitute a copy of +this WSPRINT disk (make sure it is a boot disk) for the copy of +your original PRINT disk in step 2. + + + + + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/REVIEW.COM b/Images/Source/hd0/s0/u2/REVIEW.COM new file mode 100644 index 0000000000000000000000000000000000000000..ec90bc0310af71ff13f8f5d4de98a67858d20b97 GIT binary patch literal 5376 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/TABLE.DOC b/Images/Source/hd0/s0/u2/TABLE.DOC new file mode 100644 index 00000000..90748d1c --- /dev/null +++ b/Images/Source/hd0/s0/u2/TABLE.DOC @@ -0,0 +1,17 @@ + TABLÅ II + + CENTRIFUGAÌ FORCÅ CALIBRATIOÎ DATA + +__________________________________________________________________ + Elemenô No® | Maximuí ç ü Minimuí ç ü Averagå ç ü Spreaä iî ç | +______________|____________|___________|___________|_____________| + ± ü 2.2± ü 1.6µ ü 1.9³ | 0.5¶ | + ü 2.2° ü 1.6µ ü 1.9³ ü 0.5° | + ² ü 2.4¸ ü 2.2µ ü 2.3¶ ü 0.2³ | + ü 2.5° ü 2.2² ü 2.3¶ ü 0.2¸ | + ³ ü 3.0¸ ü 2.5¹ ü 2.8´ ü 0.4¹ | + ü 3.1² ü 2.5¸ ü 2.8µ ü 0.5´ | + ´ ü 3.0· ü 2.6° ü 2.8´ ü 0.4· | + ü 3.1° ü 2.6° ü 2.8µ ü 0.5° | + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/TEXT.DOC b/Images/Source/hd0/s0/u2/TEXT.DOC new file mode 100644 index 00000000..e0cfaabf --- /dev/null +++ b/Images/Source/hd0/s0/u2/TEXT.DOC @@ -0,0 +1,94 @@ + Gulliver'ó Travels + Parô I + + Á Voyagå tï Lilliput + + Chap® I + + +Mù fatheò haä á smalì estatå iî Nottinghamshire» É waó thå  thirä +oæ  fivå  sons®  Hå senô må tï Emanueì Collegå  iî  Cambridgå  aô +fourteeî  yearó  old¬ wherå É resideä threå  years¬  anä  applieä +myselæ  closå  tï mù studiesº buô thå chargå  oæ  maintaininç  må +(althougè  É haä á verù scantù allowance© beinç toï greaô  foò  á +narro÷  fortune¬  É waó bounä apprenticå tï Mr® Jameó  Bates¬  aî +eminenô surgeoî iî London¬ witè whoí É continueä fouò years»  anä +mù  fatheò  no÷ anä theî sendinç må smalì sumó oæ money¬  É  laiä +theí  ouô  iî  learninç  navigation¬  anä  otheò  partó  oæ   thå +mathematics¬  usefuì tï thoså whï intenä tï travel¬ aó  É  alwayó +believeä iô woulä bå somå timå oò otheò mù fortunå tï do® Wheî  É +lefô Mr® Bates¬ É wenô dowî tï mù father» wherå bù thå assistancå +oæ  hií anä mù unclå John¬ anä somå otheò relations¬ É goô  fortù +pounds¬  anä á promiså oæ thirtù poundó á yeaò tï maintaiî må  aô +Leydenº  therå  É  studieä physiã twï  yearó  anä  seveî  months¬ +knowinç iô woulä bå usefuì iî lonç voyages. + +Sooî  afteò mù returî froí Leyden¬ É waó recommended¬ bù mù  gooä +masteò Mr® Bates¬ tï bå surgeoî tï thå "Swallow,¢ Captaiî Abrahaí +Panneì  commander» witè whoí É continueä threå yearó anä á  half¬ +makinç  á  voyagå oò twï intï thå Levant¬ anä somå  otheò  parts® +Wheî  É  camå back¬ É resolveä tï settlå iî Londoî tï  whicè  Mr® +Bates¬ mù master¬ encourageä me¬ anä bù hií É waó recommendeä  tï +severaì  patients® É tooë parô oæ á smalì houså iî thå Olä  Jury» +anä  beinç  adviseä tï alteò maù condition¬ É marrieä  Mrs®  Marù +Burton¬ seconä daughteò tï Mr® Edmunä Burton¬ hosieò iî  Newgatå- +street¬ witè whoí É receiveä fouò hundreä poundó foò á portion. + +But¬ mù gooä masteò Bateó dyinç iî twï yearó after¬ anä É  havinç +fe÷  friends¬ mù businesó begaî tï fail» foò mù consciencå  woulä +noô  suffeò må tï imitatå thå baä practicå oæ toï manù  amonç  mù +brethren®   Havinç thereforå consulteä witè mù wife¬ anä somå  oæ +mù  acquaintance¬ É determineä tï gï agaiî tï sea® É waó  surgeoî +successivelù  iî  twï ships¬ anä madå severaì  voyages¬  foò  siø +years¬ tï thå Easô anä Wesô-Indies¬ bù whicè É goô somå  additioî +tï  mù fortune® Mù houró oæ leisurå É spenô iî readinç  thå  besô +authors¬  ancienô anä modern¬ beinç alwayó provideä witè  á  gooä +numbeò oæ books» anä wheî É waó ashore¬ iî observinç thå  manneró +anä  dispositionó  oæ  thå  people¬ aó  welì  aó  learninç  theiò +language¬  whereiî É haä á greaô facilitù bù thå strengtè  oæ  mù +memory. + +Thå  lasô  oæ theså voyageó noô provinç verù  fortunate¬  É  gre÷ +wearù  oæ thå sea¬ anä intendeä tï staù aô homå witè mù wifå  anä +family®   É  removeä froí thå Olä Jurù tï Fetteò-Lane¬  anä  froí +thencå tï Wapping¬ hopinç tï geô businesó amonç thå sailors»  buô +iô woulä noô turî tï account® Afteò threå yearó expectatioî  thaô Šthingó woulä mend¬ É accepteä aî advantageouó offeò froí  Captaiî +Williaí  Prichard¬  masteò oæ thå "Antelope,¢ whï  waó  makinç  á +voyagå  tï thå Soutè-Sea® Wå seô saiì froí Bristoì Maù  4¬  1699¬ +anä ouò voyagå waó verù prosperous. + +Iô  woulä noô bå proper¬ foò somå reasons¬ tï troublå thå  readeò +witè  thå  particularó oæ ouò adventureó iî thoså  seasº  leô  iô +sufficå  tï  inforí him¬ thaô iî ouò passagå froí thencå  tï  thå +Easô-Indies¬ wå werå driveî bù á violenô storí tï thå  nortè-wesô +oæ  Vaî Diemen'ó Land® Bù aî observation¬ wå founä  ourselveó  iî +thå  latitudå oæ 3° degreeó ² minuteó south® Twelvå oæ  ouò  cre÷ +werå  deaä bù immoderatå labouò anä ilì food¬ thå resô werå iî  á +verù  weaë  condition® Oî thå fiftè oæ November¬  whicè  waó  thå +beginninç oæ summeò iî thoså parts¬ thå weatheò beinç verù  hazy¬ +thå  seameî  spieä á rock¬ withiî halæ á cable'ó  lengtè  oæ  thå +ship»  buô thå winä waó sï strong¬ thaô wå werå  driveî  directlù +upoî  it¬ anä immediatelù split® Siø oæ thå crew¬ oæ whoí  É  waó +one¬  havinç leô dowî thå boaô intï thå sea¬ madå á shifô tï  geô +cleaò oæ thå ship¬ anä thå rock® Wå roweä bù mù computatioî abouô +threå leagues¬ tilì wå werå ablå tï worë nï longer¬ beinç alreadù +spenô  witè  labouò  whilå wå werå iî  thå  ship®   Wå  thereforå +trusteä ourselveó tï thå mercù oæ thå waves¬ anä iî abouô halæ aî +houò thå boaô waó overseô bù á suddeî flurrù froí thå north® Whaô +becamå mù companionó iî thå boat¬ aó welì aó oæ thoså whï escapeä +oî  thå  rock¬  oò werå lefô iî thå vessel¬ É  cannoô  tell»  buô +concludå  theù werå alì lost® Foò mù owî part¬ É swaí aó  fortunå +directeä  me¬ anä waó pusheä forwarä bù winä anä tide®   É  ofteî +leô mù legó droð anä coulä feeì nï bottomº buô wheî É waó  almosô +gone¬  anä ablå tï strugglå nï longer¬ É founä myselæ  withiî  mù +depth» anä bù thió timå thå storí waó mucè abated® Thå  declivitù +waó  sï  small¬  thaô É walkeä neaò á milå beforå É  goô  tï  thå +shore¬  whicè  É  conjectureä  waó abouô  eighô  o'clocë  iî  thå +evening® É theî advanceä forwarä neaò halæ á mile¬ buô coulä  noô +discoveò anù sigî oæ houseó oò inhabitants» aô leasô É waó iî  sï +weaë  á condition¬ thaô É diä noô observå them® É  waó  extremelù +tired¬ anä witè that¬ anä thå heaô oæ thå weather¬ anä abouô halæ +á pinô oæ brandù thaô É dranë aó É lefô thå ship¬ É founä  myselæ +mucè inclineä tï sleep. + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/TW.COM b/Images/Source/hd0/s0/u2/TW.COM new file mode 100644 index 0000000000000000000000000000000000000000..57747ef68f3a2bd23f41c3ff361c1e5e19a6fc49 GIT binary patch literal 3072 zcmd^B|8E;-8GrA5=X`1GEV{FsqxACN!dPf|IQ4$krY9C9&$9 zgMC@zrg2i(gqRRNOkxaa6=JOhzw8SFWCq%_+HIA)>Lgq#6+|FmkWr>cXdRRvhIHY1 z&(4~%lz)I%^6U3~-p}*>z2|+p9&al)GZoXvWCKoS6aGU^<{jfp3^sXpgUO>JLf$$C z>$}`2cWFpk{B7YdbMZGY>E6Buj6BTqtQl%BM;J_;=DR}iEQ5Jx@m;}ug$Y~|9}naUf``YMi5 z(IxodSz8H0?q)c&Hg&v=+CgT9NFNkiyKd>wUL(c;Y z_>VUJvkq!%EgfFOI`;&T#23aLG!d<}6nUx%0a(A3+YJf1U?1?$G;Kq2_%2={v{VhnKBStG(hDn8Fa zRzoP$Zxf{NZjrLo7<=I5L&X+e@ zrJNNq4)TX`^#1PS-SuVR>udr%jmhdbeJ=;r#{g_Pl3&hX=p1{IzoNdvpTGqiZkoR%i`Y^4e>>wQ&12{tmHD zfH>>xK+Wqfq<-hqz3r0kbB`Q2c&Ot@&-gRXE-YTmo!h@e4fc~WC!&#o$XAG;j7}vo zL`$WT1pedlv^=TAy~NcxmQjeTrnD&~O=78;Y^STy=W2Y|@O6w%Ddfyh^duQh&Sp9Y zc|u8N5-F8*bq2azjlCctotT``NY@v?&_z1PkemU1BiW3mOlNGlzFt|~uaSv_8n4>Z z?(6Iw8f*u>Bg1{CPy3>MPYm>(@eQ7cezkw#NnfKYB2OzMH32M11z1RIN{O96PD0d9 ze_u2@6!nt<^*K42h*vQxFnED+WJZZ4er?Z3}Rar;m=M?Z*)s%USB-Dx2 zadP%ZgdB(}+Ofz%Tl&DHno28VYv_Po78r2r4bTLuLSrFcY?%b(`iN3NJi19k&wdSw35k? zw4%+XRho^NbSkDO@xvsQCYc#IR!b4J&R6|-I>^ZE^fZlr2V|_5W{;X?r!z#rtg#H; zZ_AQR1!HXwwxtNLc1|dLTUJtPGFy$!cEAqdB^_a^?-Lo@6IMIh3Y?wk9YPK4Taf#) zrDCCcOS|TOUI;bl^m#u=>op!n^r^fe;-tN}gxpNfC)xG-kSEwHH3j>nrVuaO?3sgq zTDebof+Mh85GjGy?GaCK0G70B$34L>!!k$DvVmpf{idhA4yrJ;7=jxb6leg94?VP@ z0PUYBeU*YhM_?S97Y4s0KrMZc0lJRu=JG<#++`GWNYq~XKK$7eJS|nc%jmIka8QEx zVb1$uO?~K+2we)E5J7VFm4Yq_!Iw!3#mMNBqqG=(YUJ|9QE(jUc{oIiI+W&!fa_6P z&LS(}P9Q;1jtF`M_QunK1O!)MNPzyw?rgk>X@6btzb;hZ^=yM>$!>f~t9F-TA>+JI zszAG9zCwEyn9KSNXA``^LBba<3)ggn&bi%19=Tg`yQNlF;cY>O>*<3|>z>`|-KD)2 z?EDPEPSl3igw+rJwq(g4uM5_~N9)2J0szZlAVg93&be90fX#&LLI#%~>e{E=t`e$6 z?tdX__3z;_XtkZ5Nh+FBD|^0rhOwplQOPjBw%d52(OhpiW;hy;70S&OSeGj1SWBDv h(-!mJ&E>a#kP4$$C+W7htFC4Lx+9Jn_x_)c{{SU3%6|X= literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WC.COM b/Images/Source/hd0/s0/u2/WC.COM new file mode 100644 index 0000000000000000000000000000000000000000..857ca9b18728e83fbc1ad873a72b8d6b128d940e GIT binary patch literal 1280 zcmd^7-)mGy6rMSAchfGpH{NV5F~vGJHxO8V#0{0!AeT*(R#M4c6W4A+ly)(@$+nuc z*)829kj95T>4Q*OS`op&K>7ogK4|q`+~zKf5+NboHx={ZOB!&|5GFl0QTvkrpa1aQ`d4Qk z_4I2mvma9N8#PW5{cS}IGxS;mlH`Vyp?dXo2eAsWxpIZduC)x6!>bwUBVB9XVX#)D z!iGwb%KhjfmSVP8ii`Bx799~W3p!O^T}PiKS~H61Rr*qF&Og3|Q0cZYOY~t7>(nEO zqIGg6*3E?jY%$3QF!R9+aV_@(a0R$!!XVpMp;o z?mn|f$0N{Jmc&iao7T~HK7vx^I%xaEW6-Z|_;}6t7WE4^{Nq1&<{x@i`;lGMKf#s< zo%t=&-++|OvZ?mubo*!FT^{izhBUzOY?4GBlUJN|u=w(~GWA?euPky8YdVvxR5`@- zn6fopd`f?$k~sa$h$$^Y%$n^OWH&mJEHcFWq4Y5mQDcxDa{8E&WbgTR!eupk6bG)= z&or80)j7?)2v2qm#CzjMd4wm%vUy&}<<4^4M^fifqv;WYtD%$mG*6A^3S;RBekON* z@_-s@P1*xJyxTq*PweIV)AU3>n;YlR15q{9jTIBw(Xj%L9{wQ8_j5ay$9^X!^M&-e zyc!C%_Ku(by1+BpvuR%_ZYMZ$N3!`Zv2OxJPz_fr|0XvvlIPiRj>?gR@{I@hmfw@wUv59uz_5a%M4Yccb<&{SaYsSBD|S%vGx-Jc{x|r%3Zd*lN?=MX+SGqZo3z2v&BwQTz(Z`HmJlAG6T*t(0KFz-2MeD0eM0I literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WINSTALL.COM b/Images/Source/hd0/s0/u2/WINSTALL.COM new file mode 100644 index 0000000000000000000000000000000000000000..4ed26d075b703788beb967e5bde7ae61a190865f GIT binary patch literal 20480 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 btj3d*YV2{4XreOyRWZynk^X`Ii}wE)4(A#v literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WORDFREQ.COM b/Images/Source/hd0/s0/u2/WORDFREQ.COM new file mode 100644 index 0000000000000000000000000000000000000000..27e74c5224ef12b68438f20c19a6eaa7b9a697fe GIT binary patch literal 2560 zcmd@W?{5?5`OZFk_a6Aj*=vbYZM?ndNp#20Kc zCnRyhm+s3pRB2PCuA8>JOHoR&8^qK+n|`88D21Dp_r!wyrv0C8BA2+4G*= z1g1&*19l&t_xb%i@AJIx^WNr*9(^tS2eY0YZFJE~ur|5qGx_bbxM7um%vF?5QGS*d zFL45uI}w&27<*HDm^Q?xtI{WE|0K0bUbT3V&dFB2)=pQ^F0F@dJd5-QZMAAix^V{S zC+WH3%x&?dis{Y6f&=`EZ&t|ZLJ4%u-@5$2qQnVg-iHYCXJpnOAceJ{YAtE+(&Fir zyeLY#i2Rp4(nm-#k>aAnAC`R5739B$T$Fj5wd(RGoL1{%k+yz$t4L=VnJ`-yzXy8p zE86@8n+F(Y^FMW18?{acNX=JR%S~v$N>`+aurL7?Az(zab+OX{u5C;GD|${jhh*s- zDg|;2li88Rt4M*&&LhP{QUNI!(Zt*N1&4ATm6ZZI{_gB=9NL0o;+@$Ahi__pegDMz zc}tawNW6w}a-W);f4;qL{`tQze&*0FIO^sn^XD8nfS);(B6>zXSPmQvJmXEvDZNMo zA9Q4|{wE?79h48kwor|;NKe}w3kp*}Ep(N01vOno?ZLzMFL_D9AYxrs_O8;96SA8K z9v%;Ndm(FC_FdTFEE8;Jr{6)L<8S46IQeYgfz^7@sa%1LoJWuWY^@Ai^+6ZB-ZC@= zM1gHoU>gn2!FnR7jtBeYGGY5>i?mo+Zepb>CtOW4Xi9s50n$9mNRKfDwlYd9BefA| zjx%MYjqyp%jQ&rj(#)9cj1*!3DTCApRGBdMFLTODh$$1gYTInvg3kEVqGwslJW}xt zrbiebi2mk;C^Cr&DO6(u`!7!7=f{-BPiwC_^%odw`71soUh?=zQwqjhg(yH>O2&$S zbPJ@FMys$l<2KX;DkI-CVAoLJOCE3_&lSso+?4iLCXlmeSQG=!lz|GR)vHI|(0ga063XTpW(m124gBaG{*ifuL-s{J1{y;j8V@WkL z5KrMAb$E0W*mZ{^J9kCe_60CL7*C}WY7%eW)ad3zAWtRw2Qql`&mY~4H{x(C4c_*T zrZe#&NQ|%V7#xiEL#F9$BGWT~6a7gw74O9xTW~%2?MMzE%izAmV4Nh;6^=rpxHpl0 z4rFe=Bbh$d*O%x?#FH636dzJkqqt8^;l#3)o8OyK`%|$Y-1@AV%D@J|tUJ;XZNqJm zNH_v+n$E&;q{sjgykttjdcQq_@=qf|ka_f4hV^-YBn%7)nl0bus zc8B*yJHlO|&b`aW@E%0KE~@B-DFS0~J1fKFl30t+Z(^+;t(N_7{Kpq-S?kEHTK4ke z9xvn8N-ll7t;lQOpo+T*UKsHhbAHI@BwI4*26pYb^$o%8kNw*C^o#PpzWwg(#}_YO z`(*y>1xr#IoAfz9Z5(9jt-f*1nv+JE7KqBW_{)Y(gpe{_l zl$G7uFd`KQ@DyJ8?m4=56F;i#itM|a{lD?gYos+)bN&`<0wz$+T50X;`ZsLLn#LN+ QbW!?h*4*c*`#=Bw4J@%V8UO$Q literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WS.COM b/Images/Source/hd0/s0/u2/WS.COM new file mode 100644 index 0000000000000000000000000000000000000000..00f5114f630fe7526a991189d2bd567f1a9eeec9 GIT binary patch literal 6784 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WSCHANGE.COM b/Images/Source/hd0/s0/u2/WSCHANGE.COM new file mode 100644 index 0000000000000000000000000000000000000000..2bcc433b10da8cc8289f19c5db89ba22b4b56040 GIT binary patch literal 34944 zcmeFa30R!f-8Xz@?wMhR0AbN2Kw|D;APa;w2?-=XW@liA8D<6;vXKFX9fq(3NR-5; zrnRfKF0H23XzSBHwvDL^af@Nbq+!~zC5rl>R(X_Io!V-vb`{>=|DJ&)YM$|S+#mqVXbIyM||Fdtmet$-6be%(6uC6lb`As=_c|6Y-8QR8tD>Fr#C~N62j!RYf9l%ma;5?u%@TIr+>iR)#YjCou0n#c2tAdXohNZ^`AIZ zAYT;5^8hEp|G1RY^@|Avh~#j@sZMh0$+458XG}VOj3aOzVG*_RA{P@II4V~Dn)4qO zBSHKrR)qLJ`}dou-$eb6yTC564@CtK70J~9tkD1ObJz8`TLySrUpsXWpI0Ly^+RV@ z8=Q=fWa!8h_M4br2z)lT&1}PGBmW0tvPCif16==)u)Ml`{mYPAqt)pR#&T0drP)$t zwXt|s=dd`84xYEx+5wmA%{Bp^N5E92)4O<=)(kkzGK^%io2r}A(l8^s@BJSYfE_@*kVGsU4zuo7u$8Yk8iVFDD0R zQJ*HdDtvf;{tfyqL@tEqzx5A)*+=uw&4>TyJ{?}bXPjIkV)HA-;wbt2yqLwvW1=~^ zNX?eWmc(D1vO0Zz&c>~a$c)W@D4L(=(A*^}{QmFX|Bo#okEx5Y*=tSuI+keb^BidR4DkbA-q7CVK}Q

+ceni=^40!g-q?xnoMl9 zt;^ls!wUia^U%V5bNr{f@+fD$O8@s&7KzsiPU)SdG2$PB`y_R?M zw)aG27Ubn`&fT~f&Xz6tn_(JR;l{i=8(SHnMu;D3A86z2Y`nFXrl@2-#Ok#UmT(0U z!bp);*I4u{r5e_P6dJfbB|ll4!}HP~)?Rn+Xxl)~#WMAj(#NYC+ai88|5%u+vvw%KLQ zwH4;tu#8|*i)(8hTdVKw_xA7>SN7ICq6UzU6^CFaBTX0j+{0OfZ6NFwVQj+!HUMB# zvYnFS!pU|@rbzP@k>*IG%v`-SFOQ{!QO(sr6$AqUE5R7%>U>z1#V?{zFrvd|ro61f z<_$b)uoXU32UxI`G9P8qSgLDGED=6mJ=pFUxLhd^r8V1GG9_ufT_B6J0e*A-)&daA zkYcp6<%9qO^tQD(^)KK=c-!n&mO$xPYzcKzm`o8Ns@n=m5L!nhiQin1zo1o}4VC$G z5DGT(ddi^1ymb@1&f3}Dj9wzVpzET>x^)xZKj7)*NkJeL6|j`gA{7^MgVk(1k0cOFt6V73<)1>SqCSZXr8PM%4jYTpwhy!)^q`M(*uoO?it^aCHg}I3 zJzskhU+K!WU7E$-MO5Njb_6+CJZq0t4 zqSPpD@-?IhfP4+R_R~oDl!#$zYaVLrYMM;+_IaBJn+E!Mht0@SG`MWd+ahGgVl!br zn*=Xhju!WThc7B39d_myY-R~NJv}rS@61L>tw#KQrnTzyJTG6aQ#;i>pRpW^1e?`S zx;))R%Zh(4PdBTpbbQhZ7j~%ZeAWts$y}wjxR<9poNBvsXnDHMTBYajT%L|D*vUTx zIs<0nLHI`aZ!NE}Y1IyW%?hp6taj@ASETFgSZ#b`MY_2S znJAg?H3ZLx!Psf!8aJbovL>^5k4XK2E)^-Rpx4hrv=|&_-88V zQ)}l}k{-2o^-4*MuCJZuq)ixHHt;$tUuAXj;ca0iiJ|>mbWiO)t^GWDA$|apb5B1K z7UnZe-tJy+Kc=%yZEjk5fRlg&6rHEVJ=itCdj|)42M72TEMl%8LVZsS?q6e_j*1Rk5!eYr#X^I9+W-(UDU@3Ipx=F%`49~7|Pc}$(r6?vL!}k z7_G}?so$p1#qxO3F9?vj^gd{V8Yfv*qGZt2>kx0zV_aM1sOucgsWo&q#D%gK4JDRu(%>9Bs(tWF)ZV%hzLq!*a!;< zi@|WRAfH;FAi!}sC?uPN;_MG6E(V08t6E*SYw5>?SYY$7(geaP4`y>+o&oBN7HSdN z+`1fdHE*q=X8O4pEiDlggF(O<>}~`D)D+aQzOWhlg~E^2y{dnS(0qmEnbyu?8FodY zncksgsmy7w(PLB4pf)>juEBIBhs~^JN5l>%c3O?>sMw4xk{TyF2EdBh4!fCROjYb_ z@J$r)O^UDs_gi9%&0;Vc+3n(ac8A!3sgj=E3HUo=0|pdxJ-eF#r^d{_CoVTR^=vg) zXVNjAtFxEs7O*c#4JUQfUVPJd%zd|Gr?!OC+MQsn;k0JGT9?l{!axD@a$0Oonapf}(`q)E4MsM?X>05x z_aKKIs2V%Fo~zN?G5upVaMmh{IKm;BfTNt=4jel>#$ij@VbiiZDMoKKv*TgF!A@{y z+PpTi2M91#IoN{)Skx}|5a+a85XVjtPy^sG4nYj6>`4wm0?u%?Cd@*eY@E~B$wq1k zm|>%eX$Y{G984?Gxkz7~M2FGV$P5ylMXzJ!5}mLM&MG7|HnO%^qC;_3vMPzrpmsQ! zO;V$+q7t(MutIu`;9HqXVzJt7YA4$zf!PRnMPjp8!G61>*s}-7j!NMY)2~QvHgyf^ z%GabeVKTzLF11xzbyh9=2KGKkuWw4tdZ&xsA~kEv?G_iiRa#>fs?N6npf<7F;R{vg zJ3@qs-7Q7DPG8Huj|iG_vwHy4RN0*DKEj2rKNKQN?4-2ZK(>5b3M)DEHuj`cN6gq$ z(i)px>ol{c38)Txb?ik7>DeF2vopC2GZtvYlrjUROsH!z& zfF0XIE5m?^70Pw6l4B>^LNSoSisaM~Q7pw2Q*O4gZSoq3)U)mI(L(jCL|$tVfHJvW zCjdL-8iN3+<<5Em(8=eSo;VoLf0ziM+Gv$KoXCfn+2rN*RJ7Id`YNa$0r)Xaf#r%tqEOhaCy% zkeg8o06OK!JlY)VlB>(nSFmn5ZXu8!J#rm-A+?=(A?}NEyV{bEdUl%}lUlo)-65|* z4b-zcqS?>V&Zqr4?e}T#r+t|Am$W3+a#gB|SFKfLs|r+ws$!L1Wl~vG4pp6Mm#R_K zs_In@sD@S7t8P@?q`F!4b=9q^+f{d|?or*ZdQf#r^@Qpf)w8Mz)pM#BRIjLBSIw$I zs`phNtNx)9rN^fyr>CW_P0vX$N-s^ATXK)4S3K(hsJOrhh5@mh?N*?@qrr z{YUAi(od(KO}~)-T>6XYucco~e=q&x^naw!r*j!m8A~$aG7>UYWUR`_$jHgqnz19p zm|@MR&DfRU&S=f(%IM1&$~cs9W5$;5g2in^EdF<;Cidh-YmwUQ;#Y|6Ut^A00uun+2Jd@1H$zj3|$L^S0mGFERwFdh} zyt>ch=H1QBxT?`FW>|+a-p#XtHV+?R$OMiIvUsLJGA2jtGH=#{V0#Oqgt3$T|2s z^Nh|K5W<42#$H8;m;*Pt!OPu)*&#`TgCUyn&E&IA&j|A129{tc*4*CT$(s5+o*veN z^Ay(W#(bJxz5HMcQ?12#rf+T^V2vXKp8oYvrO(rZtN^sY7;LZ?Tc;k@>*>POsg?B; zz@U7OyW7Lsfji*s8)3p3NBcpBCDI^@hqZaJQesXRZQejCj2zX?Z!M3g^6ro z<_VTf?JXm0VI9PJgxLmb4lk-$H;RmAs3~;^gcMo>6rZ#UoCWZ^^BZjRd>U;nVr`y2khmLB6srwr7$-Rbh@!}!Mq#W z++@k7!M=WPA9;N^VS-QRIcxwkXA}mm4KX*ZxR@{j$9YauCljnb*w@2akW~~TOoh@z zHh9)H(%S}}E$;pShRV(Qv6IGzP=svA+t-P*L8lGC24o18&}a;i4C zZKqO{myn$o_~9Dm7g?}$XFBZc5d)@3a1I#*_}HiR_MH7t~Nt}Yb3YnO;)33o&{b_QkZ zK>raD4)6TH_sLr2Q7PgQep(k7HL5}$?pb>>F)7w}=UU~OC`vd{7Z)=+$9zw(ja3zY zQkR%Cs-pC#*DC)`=FEJ)Ht^TAA>}=FY4_BHM2A`MPfcTp8B(2-MFAdyQGd5~oT|vH zYfldO%hxH}BdSh?peE|beDdT(W9HDhPJdP~J36x}Q~7}*?diJAr|Uu~bEy}5)=f1mW1Wr3A!Xva zgdbi2a&EtLfy*r#00A%|5XbKLZI*UimO-?L6xoEJ=3 zujDD-Fg$n7^eKuTTZmUt{OIZF3+t2y0WqB-Vn-jpIK56a`uOx4>y&PaFYb212J4gw zTTm!LY5ina(Fx^7GHFPua*38uoj@H5zMSJ9Sck&wcKHi-CxuYYRmf8);Wjba4f2%m z-Dqk+J?lV;vYfb#ayc}6=;wj2uAiw=8C0REFy$nfBTPF9;!yNhz`TAoMB=%9?N*u4 z!u;m-GY}TxnS$7)k%wjjKU$wjl?F}lio_&qiqU`9`d~u6H7O-&Eb!~~kK>n=WKkE(o1!&OOsw9L2Gzmqhj{AF!$WtQ)*Ol3@d1o%}X z26dKV&SomrLIJ(xnpDbIGHE@k8VlT-IhPc8D05B}IGu@h@4qW^HYm=Tfj_DWF3A$Y zzsgNpSvNBqjBlQqUB+&>bhrV%VKSP)j8Ojt7Jnude-l`|nh6emxPNLQ4zFg0tA_t2 zS3~g`SKXl}UM}S!>X3g)*2yy$rbH;7(cH;EUY0_o@~_OQQnj>yJU@{{b+9JA4m6DM3vSkcvtoD=Rc}A^4Ad zB>{dzN#GAz!(+ZbKnLM0hgQc8pZj41RoDD<@rvsBHJT7%!poe2zY zn2tn*!(ZNT@oO9Qt9mD{QjS{Cf>MA1`XAY_s7=D(=c$rFo6Q^04ho*FvnI`{r@8DD zqh#dtMK1eAb(D7vZjdrXGN^@?_^n)OiS7GfQ?ysKoJjLX0WLBfQi!BX5h?~NYE0Ty*7Ih6ZsZOEg>cEr16YTlbw*6Ck?@%A(Y(N-U-}&VhcEtB0~f7CZ)6{QBw&{ z?hcpS%v7m31WN_(%PtuWd^bDzgY4=1vZL^4#Rw_{PKAcXeD`H5pXHFf*tKn$P)Y^MXN?w&*Ny$@?d)&|74pBEeMN~CkJq6w zMCZ(j;f#(2R^?EaoRLGL`>LE-D8Sdp`Vw;d={d9EhCP#%k~+r)@^a8g&MH+xL#3KJ ztK35HjK4YOYRT@L19E3uEz8B`^eb42nsI|eq{wDwm z%0HJg5gv{M6}iQM+OdEtSE+ObXLbhf-x;vwCj7H5bFwx>bDO(%B`94K2rSEuiw{1w z%lBc9-D)7_lRX!^E+49;I=l(C^4q-cIdB5ZV+GTFU(8 zxd{rEjCsk~kn&J2Y9)H~39KTgQqK6klB>cXemHk>;^1v(58Xa7eB0TP+b0g)-f-}E z-Nf*z3$s(_FzN&@j1Cf+#=C(&!^P=eMXb$wnOCM@jM(^7@- z=z3%h4oPwrr|aR+75C<`3~9pD-_wjUP4R#8$Lg_u$Jr#qjtyLF6v4&XsHfT8*UW2e zxfZ${QyV@q5HqfBi(K8ZN%PbuZC9bLaI;>&&5%@Rtln6@XQOFZNyT4_D<_N1ySG{z zwp1CnTYs|M)?8BkNU1$}v*V?0&Sk|lD~f8Tx7OXfxqfT$&aW3Mzg6lo8Oy}^?4Nnk zX075x9*$tE99ABOCv3`hU96&jddA*Ej+CTv3L=#cVnBD4vNCdnSShs zV@lr4V_8Q?v~t+M4`8t-reI|MRoF|1@!JP-c)HZk4|HKs($6of4XJDfabO~>HL;b9 z%D{GZudyoF5rWWd92a+elM0V{ovn(MHrcea^Z%Q0e-NT z$1;>;MsUd_VWBw3K=!OXIAiLER*R-3jD_VO5r+@la7f`D3I~VUaTrG?z;YQYP3-MA z=ZFmuE9em}s_qR!0n+lAlp&rARUW5i-qt>M_otL1Njc(mi&#YJ?&|lF6tKXN-(ntc zlHu(mlZ7QNs-Cl6oW!J~8^sz<^6wiJCL`b&4fn*xV_b0KW8Cb<^7A==>soH$b|B8fu zt1?9_p@3m({-H!BsY)3dLC=bnfn-9uB1uv+q7+LmoeI3b6{{sa@H zgoMLIbO4q3bs|T3JHQqE{$tZAF0|<}?gQ}r5cGcwn>In9uEot!;h+snq>|J;b&OcF z6rAGN>XA!N2c8#lS-LcEMC^YB`P7sy^&JsoHF!i!%BFFe5)GHRStzR|!p+9~JmFTD zkdxNUr0rweO`8{TaE$BU+`)M_-^q<^KF-~+`2=@km^iA|xtRzlBhaHfwE~bXk{g0I zg^hD&^Ml-ffZc0g{odwd+{|a#DY+dG`A(Q^%EFD3{32?1mxxB#NxsOV>1&@e7z;EP|TzReJSu~4F zGUW;aO1n{az&cO7ZIgK07HQ*FRMG3V;M`^FW1MU2-QsU=c|{V1yY#TcGIKjl)^N0I zKwsaC&7cC|;$=VEpOSk0w)|zusn?70qu`43W8rf7@yYO_^5f&-$@3H8D)KqF(fJ~{ zOY&uKN%52Aar4K;-25vNWIj^f;f8e6)??i9 ztq*Yzz!X2)I?nwR<`7!?XABX(=BkjVW~R2L8h2bL5~H|`c^j1Pa?}T1iupLtNM-a} zp^S#9`OZ=q4Wsp*k4FiJQ-$89gZsx;FE_t+fD;!TBU?`V>hZJVrx!^%ycq+uj?n-6E`T18g*&6Q#V0stxQWMKp+f#b z56E+a#o?AbRD6v4YVn<%t>idoFCnUh9`O{n6W!JBlFR)%%qp@bS#a+KJGH#?@{2j4 zgFtKf8JL}c=s@uU+^>rt#BZ^uS-L<*jUPt%bR$PMBYmkjT>TN@kW>8w*tQ;{8Ikg0vuf}9!(Bw#I_&f;`mwC zZ*T4C=Pf#CwjhiurG(x-{y!8VjJo4sKehcy?zdnKnMo1mV9FQbia%vS;7QE4gx}98 z|47}2tYGBQ!+}?XE+a6*`QM}-1KqqV58Zg+T~0D`N%Byn@33q~y;xg91s3V5KV6H2 z42bZ|Yw;I`(8ezRM=cXovZG|tI6bA*I*xH)FMUNahE{QF$u7w|B`!%vDODaAD{P8K z|BEr28fd%3L&5tclT%7LqwNu4i((I=>yY5m-19nXf1|e#HQf|G!YkN> zHw(N&SnCMombyL#)`IQthdoLoea`|>)u88qm)fo{L7^GMZ+G0lP4Bo{{O29x+>RZ0 za?kEK&i!Hsx{e(WaKGAtu4BhT+{GQoxEBPxQ{0&yk8!>o;m-Go9d=3Kjw9%VkK%Wm z{G}auS9^zi$?`H3)^#GQ{|gG|o>aeI9#Y=8Dfwlbe< zKOl!dsNw}P=N{1!rV#z+mm{}ZhmRX4!c@Xu0g;{tDM*&xi@nj@?dNUShVlPR9+yHI z32J#tV^EgfcbM{Kg`tp1q`rSslq!N>R2VNE2>?7?aI@lGUe2tT_Wl7CgCg?&MJwm&HU5{?s;Z*j?} zU{k=HU}qWUKcJwI4MU(vP9r#cu^4a0;iDj zNGgs!EJ_kDIV_ThV-91T6m?jfAQQ{sio}Y;!n0Ryz$RB4)f%f>Tcg%>sa>m#Wn0ut zt!9QweZ7NMT&Jc@gzMBx?-sLp_|cs=!R1nLlb}J(u2YM@CziCSDGF@>f#|tb1X47f zCU<0A+J~ihKkm`tYNH#C0yp;#xcl&kW`s5!hTK^G(!w)*5Gkx<4+s+h_W&-CWs4he zpen3HFYiXssq*5I6dMs(`i9R;g)3abBe4F}Bpb2W}aq}J% zfZq0|&Z`sQRh3{ix4*<+?rEwUA(d@xiK@#JBnJZWC)>5S~ zYgw%pJ4t4%omXtvQl;3gO;k(ZvI*{qJUQ#s%D4l0(N)ddH}hgOT&+c{%MLxh zS7AM@w^iw@YxMRez3aTGAf(-B(`|ZGS2m+%uLw%qtYyN(<$T4>TJD8>lJH)>TzyQh zxlOOVPp^AOuRo(V{7P?})|dZIZ~9nYAu&{bU2ncyZ~3vlYD{lEr?)+?ub$D{|EPC- zLPGLyUJzo?u^l?fX=qVMNXxxiKtet$kgJy%G>HZ+Z_wo!^xF-F3WL#QC~q;C1`HKn zFjU@bFee)ZYnC>)G{LoPOu)#cTu)KAdCG1l+r(=H=SU$SQ z@=;yfbxSgq+^mf&TvAG&bIES<9*KS`8s32=qZImX^a%?6C3=p$=b~REuQ%a90=)7> zTOzz$mVAdW|GeZMkIBJHnJD#U{a1C1sI!N9^&~kT!00 z!rBCQDRF!pysCs+3cVhCiPCP5KOPTH6sMrHJ#ilL0LFR6nbsxEQM}a^0OuIqT=J?;e9RUc}mNQ z-$7LI$ZJS!Nknm6pLmqK*qEdkc+Vu9OMq7%W24Yi!mAYe zZo&!j-b?t9yq=grN|PqW5?y9u9(ngCK1g0mQdiQWy68R4imzHYd|N}k%BZ=^q|LPG zzHigNV|I0E%VLdexsh4arYfFSd|;qz{egk|l31=b88z3bweJ~qPn7GInOq+j%8HCk zi+|y5<5fn&U1j7NI5cbS5GPlk$kPlOwYM0lWAGT6*T|fDyQRuZlR)5N<$1q=tJ)&3 zzsblD_H)-_8NyN0^I-6dQS%F<_SZ(;OGf?cM#I}i+Oj@rWRHhAId&>;5jfpqT)LW* z&mpvw=hg|niW3Qb1}7H$bdHgqsN~>s8B)1=S-D12t{o^Zd8C{al$Epia)zs=dVQ7R zJ%R0eM$Rt1M!&s$4Yz?S;I?q_a@TvtlEQM9S56sNRvvw-gIo+|%gVX;rPq}Alw;eA z8{kH`gWUDp4V*?o6m8|KQJ~NW6mUVIDd%Qo*I0j6evCW89p|)?2e=2hhqybrQ`}?R zliV3@oWq4Uf&NG3>^^~hK%j>U`Y;R~f1D^+UnOB>j_6n`HLN_P~u~e|S3R25#(kOB&$VNF8+^iz$L|t^R2XJ(to7}N3ivQ=5=*a|?&(tuRz$zl0heIy* zzaK7%0mAucx%%yjl2w(I-IprZOa;@~O|>x4vjWPq72J)n*HkR8d|LXV^p8@xEKT-9 z=}GB5()*;_WUgl`N)jsBl1gIsb_EpyTogeV2JNkJ=mjb@k5+2q%_O0ylHvY0-l|i5 zPziLZO74X?@%N?CuYZyI6VOL1HD9XK-cqUiZl(UdN|&m#tf!Iew z3D?6%1u2hKMmLNo9<5CLrj*=U$X$A?R5VZiQ&LP@AFYi4id3khk5+Qo@z>}J&EJyV zF8z-5ZZeOmvIH+IGtFe4cr%#?F3b~emTJtXf!y2ia`jitnp@1;JIuP{X8nC;!;j3y zQ|9t9v*~Gbh2LEHOSAcTv*i_Y)thG5&E~QZGdqe)x44{ab}BRiV~tss_%$g4iC-7o zZwPLpoMMv56<;Hlo~WhZwL)YAxd}=c+@&kz$PE1Ch@TqqQ{>1TC}Ieg+qXilPPAxN zShUw!O42RVmc$koV_~?2tu5yj?+A*#V~)OO1aS1m!{ny5kc&LOW9B}&My~#~WeRr=v7L%qPpWMK{q(^_mbPP-!0LWat;aKBr2P5Dihg-&gkWSi^``R!s?rlsVt zg^dVU^%i0c7v`+Da2KzYt3w9ODU0@T3-HQLSlELWIv}mYO5>{n#aAs$Ka{c62*p>0 zyA_OR+n0%N$3XQ*i$+wXEv?e+t0L;xE$kgoTj?t{3co<@w@BtK;ycBX?NwaD7CFnb zh?rzemH1myNnw@vNtt9_75AlOgiu^1ug|pL3kg6)W<_iK}-ZInyHFskPbZp*uIeT(15>mFC~8 zv=3G3&Q$3i6O_KKihaKdS+?V%zhbzGOgUVYSR^O6nB3?KN8qm56~&3*i@zAfJ+mVE zv;_1L!6DRurZ6?LY99+$nYE1_$~5EwqrHI@sCS6_B)QC z5`3N~el4J|hVXaDCBqa}%SD2(k#mBtjf8d7Ad%i9XF2dW?{)I}Q5$>18q*`c&8C*$ zVcR1Aj;%y~w+)+ZZ&*>YIB_KtH#06(DOW#h)4Wx!ecMSb_7NL9V`EkNx;l*U-?ve* zeBZ|D(&XxQZJLg1?W5JM@7v0zZR{-@+O^TFu2(!OU_EQ&z6h+eYE5RfwxC*9T&>qs z8!D=e_UiJT)uzU3*R!^=#A>#(n&|LoK=H0X_pWWJg0zPpMcoN}dBl&4_)8;xLd0Jw z#}o{BtK?z<|2jFQVDH+vZ>Z$zZ&z!+SFOFjTKAwJ@MtyrdNnK8*$wD9I;tr<9n}k_ z?x?1otD|~pEGdBaXt{{78vt?Abh-NFYRzv2CKsyN#cJkMYtYgaj|xm4t&aX}3*cyJ zD_m|f&{x_uNA23T?7H<1eUHQNu*10DS$?O}G~*_7gz>-km6p3IdMW z6Kmyw6YI#0x1kd}y@Vh$AQ%S_b&LYEVlGN9LJSvNBUi^dG)WF^szaxAknW$@@vfhA zx2f%lw*=O2*%NEzfS2w875v0{Ayh3FU4szUxmK>WJ2WnbcCSO%A~3;g7PG(vPdgOr z9b|y@j>KJZa(9!vqJWc#$lnt7xqpDkoes?jhxXqbx}OS6zT{xH3QTIM^okyVNsmKl zWO;)KCvKOM+b+1>=z?*oPhA zF&4fs#=;lISop#i3(_-D(MP^OJboJisLVl)GKbqNz#ekB@l3h;RzaZ~o$RYlDg(UA zQS5h;`Sv@bjV*9Fah6=|cWNe_+Fv_$Q%?OW0>#5l_Ow8OZ?h@x6e#X=Cbr4}C$;$+&a68GRNeZg++u*mXMq{ke-ddwOU!#}T8ggo>=F4hWd=0ZY%k|i~d0Sxlwv#h& z!2G{Pqpoqi?JQeg!#3712l`GkuUJ+?dM>M3Q5h8@f}iM$g3Emm1pPIdks9sc8r@Ab z`mYLy*Qd-f|F*HU)nwFys3;c{+ZHPvc5 zYqk4pb%$#8H`N-xS!=w#w)}2^)KSa!fYju`8yH27K$=s#;z=3S6*;wub~)U5LwMc- zsC*HsSb!2y!-3gCZnW`>aJld0%JWax7CcqE@ocSYtd>1OY-N)3wKB=G_+6-#;k*UY zVl?{8e+$=maBb~!l>o zuRmGFKK02mW(z-2!gNe{ocGyJmSMbMk*`<&>ra*u5?;do*Pko{l1=zb+W*l{mO=6? zJ@~+N(Xq4Vre<+!Fn%N|KJL|6W29bb7hXX8 zpg!2B_5YxLPV75TUwqbeN#wh$eipA}u75P}-TEy5E%h^TvBBr-gZMwY5S~l&{jxszOV?Zi0>}z7^uff)T&(Z4uux)rHgdXyjL`MiU4czIXA@#r zvg{hX7n1t^S)Xu(;V=l+m<`1xz@OX>loH&YUQd5?v?N=iN*Ya+`qu6&o%a{+EG5H@ zO@JY8|F`c9bKQRxSNl%lwv@PT5A5HWRXC4Zv>@)kia2m*g!uSQV8@5Cj{}?Po+N@P8WH1OYYmv9osE^X19#nvt;X@xRO0f+xNuZv?uY$d#-tT&$a*D zvn+M*a^>EnJNG2qw}+kHO{Iw!7dgAFv0{30g?!?#F$O-5({T7;)1+)Y|sJJ0t!E z!nX>X%XSM5#oxa>$zMj%AK@1)-TMK4;gqu7c$|Q=&=gW87pVk&evBLUP)H#3BDpnk zy&f?i%^kk@&)swU#rJlX?gi2Z=XbyrSWc9tQ3M4Em>^mHw@LUS4_rj&_k@&#dB{QT z9)H0e<&Amd4(1tCPWu2H5}I$>ZW;5J?UBu2L5q&z;JtN~8oX4nmP&8629Afb80*`! z=W0zuxDmc)5Ad_-eaC2M;tDRKq0*0$NIlYhdrC$A`}drLVXvkSu5E~mQ+B&>dH+{? zkP%eYr$~g5$ynd7J|zxMW%&BALs_TSE%+B^XKSrSICki&+doJT!?|r%Htn zXhR}wE=bJT3l1MG#b404_k&AI@jk(}_k7g(JU`gC?*-Z1{MiL!f6ZRhue3+%LYa@% z1yApr{=(kO(*p3=-jHx@J?$^G2~)M1Pt=8q%jEO~<*r=_gm1w=9C&hX<|B2&Y4>Az z+H<<@<9Yv6dryXI<1CUw5pJ*T#k0Ehy}sA>mZtdM-wR>5(s1y&5v&xWcyaSc9ns7N z6%AC^qZo0<*5 zN5lCYL#o1JRh&HNYDmE&Lq|hljw+5r=;RRkl9VLGxf`e>aWzoSvakK5wcuPsNEyF2 zc%mWrvj*kwxCqe9B0zKmICMS_qGLu#S(xJVzL$e%_TfrJ!|?e$<6NHasfOZn4PzIE z!H@7J82FQR#a(#p*1pe*2X!YCNAR@blLi%DKoA9-x9cwbn*qr<2xkJDC13xi#;oPi|9)eK!_~5>o@yJ_=$Sa9iJnTcFvOn)k z;KhB&GOTiDW@64Z{pP+>+qo%ar)!UM`w#|GjBeu*LrtK!XH41U!lNn`GEm{BccUq8 zlvs@0U*X0JSKckb+Z%w<7c1PMV0!bk)qRd$v5bcRsYYXgA@v#DsVDu_ZqySvVol}D zBxV$=8Uv|~1+Thcs4uwFUULTr8-ubY#EoPk;B7)w@vH7J-yZkJ^Tn^ZuOhe@AxOpZ z&#B<`2LeyHXEWP6gN4n>p_x$H>+aB`f80I!x%|H2##_#|&g4n#&Yfs7}n&R zHF&;p+!xgdK-M%4t)SG%6M)%Wd>GHO?ug8ybbel2FXaAsC^rF`?Tf%NoNgm6?gg&T`891#rs> zJlu%axo|Sc$tCA{a`wU*BVeuXhKM})N&XuejZ?E^imdA&otcD%1A~ndQwbd_Po4|m zrCw;<_ikh8q?Cf!-EiJ;lQk$Z@KIxu9|=iG0?IENCviQCokaVDK2}tRDe9FE zL1tc)N_8eH3qGtr_|KW)t#zXA|;!Ula2CcoXvbLKE`)X4AHcxZivIeXW%7 zaPVR8^*7`=2j@K*EVsx7{kn`fy1 zRrV8uNFv^iaUS8_nEy}BvvH!)OGkXMo>(Hv^&l`B$nsn|j9w(xx6V^a??!{29+f}V zqkNON%m@^LvM_~Ppz!TkpxAi@MVW{Ca1i5PDUYEM&w0ZZx{kp{$}Hg_XB@o+gmH{6 zygU#5#Dlv>Bj2_nxQt3E`~aAY_dyZaN?H$?_@t4guM_zXc@Vl{l&A4tSxTIPA9=u+ zSj2HDL-c^|T@Q%QO_g#aa%GE^IB?;fbyXmxCDtcxDdbhFd`T@Ii;xE8l~I+%>D)da zG`L;t+=BuPi6nA7VFN4PSXZO5S1JG91SF+Nj>I?_b)?NLkypXpE%Yc4q7k$3c92;8 zx&jn<{EY{r-L5#9apV?j;Cn5zlxJuV>$|;W2AqU$CPmPlhCJ=7I6QqB_Nu$7dnNuiKzsq)LF;D*-e=*)!Q*QG>a(UEfzlH4$wOnJwZ zXyMq)Xj9-D!n4D30eh>;dJf|T=6b5}*nq3GbVIm~_={V^*~U}JlLf!8D|oMNG1KEd zf2)!wJ0-kVhe3%EC_Lf~{Gt_)cYS|u#k<`7%xrYQ#j{ApOm9HBCqI%$Yy6_;KIujV_7j<#*;g1WXw29uI zSIma6$ASlt=#do3*JIjz1Aa5JvUpT$RJ_u?QeRmc-e9AipKC+bWm14rpQ}w4KQnu7 zHki^eGk$TT4GYt6wvE!P`(WFUNzF%p- zoNrtEmHFP^j(p$IF66tfJ(BNT?ZJz~GeLn0gtJrz@p!#^u5QNvF`3~3LQoEM;@c3I z$;f>#w8IzykX^RLEXoPF5W0wDs1BuJk}zlg`>?%Wm3P`X84WhCLm^XxP(XJp|*|ADo*Hq;(t|qsPq;Pf#eO!=KiH zTDSOaxin|X1W=W69gsGRa=f==?#RV^I}nFgwV`tVPzN&YPw7B0-qfMInI1itTEbms zaK?=W9(b+;hC@YAK23@KQyszU2Ld^r%97FqcUSP{{=n)^`uYY{ftNah>pGPWTxPPm z6C-O{OK0%Q?!dB6;`44>gwLNl!UceO1BSj$oys?h{Xg8V^prqKaLWN7zC*I`>4U2u zeJOF7JMv1)v-!$bTEd(R&VTtzYaBPz2~l{0hgVvR;b|JZ(i;EYex>!)=KnXZv^0fu z$C@D%{~NEg@UEG@VMkw*Eh}T>z{4aYGK0;m5Zc@H*SkV#jh&hGoyEI4lb>VOlamvn zOmpWHHO%DD#h-U&R&}CX60p0ocy9z}assoTnTgUJ1qV8nHO0ZN?hk%Epq!+^PPwux zcxfQ5qf^+|DV$do&d+4gH(7q)rQETN%8iNRSTJo^7N211L}Q`V%ip>nGX$Ne=iAT? znaS{qU7cgT4c$t6rz{F<-hyuIClqvtOJC|s>kjT1nl0|?L{C(@1hpr*#Ha7J=w@aW zdz@22>)_-JJ|z&s1?-arU7fSaPm0s3yJloqLQ3LfkQ4Y}cS_P3mGA4_vA&`1S!MJ# zO7|b{o=W%#UtlQ}71+9lgA;=@2}@Y=q`#{>R4R@{Wmb0~r!rYe5?Y7UH`a~5<79!+ zB%3SKio}u&oCR+0k5|x<}~{3^z@z7aOcU(9LJ#Ls;KVyhwpfg3UPtMJ%2yk zbMVQFhkI5EhBydATyyZr>Ek^ph%w*@43s0C3FR*QU$QWOC)ixY2RdKe0W*}QCnnK< zN<-wezwdWF%H-`R`(Vn@N$V`N^fp&PhYR!H;Il(Bqv(&uy}_CxtQp4wPk1pzF7pPD z4$0y}N>e9Bwikw^zLnn4Ih6{}B!Gm!hfapB?e$_0%sU%K>7DW0y;S)@n4BgMKgSB(oij)ug`mq$aYHA<#rp);O)jeCXUIs3 zf3Bx=9_h#($*b&L$cm;HS(%}%fIIqW$VA1P@m<%8uu5f^f$FCz^f?NJo1~TOGy6G$ z!>!SZ@7$<+2`8Lg|AaUA$q?BcA4E{>N5ARZlLWYUxYJl{be;B1_A0;FDZ3V1t5V_sVPG!rB%Mc{peosu_sYfWa3Iq4E1xMlNwQhx0A-6C-zUE z@1m3zaxtq#Czh4abQoPAAX{qEn(Tm?VhU>=Z;kIi22zWe=|5V2y~? z;l)e)mn7?FCNaJI+y3+M=V>1h`$=#y5yMQIRt>Q}MPIPZBf5tvN|zpOATAewi?-7+ zIg^C%BqyRf(6JJ#o4*B?^8UxH!U_w7Famj06k>MrF0vM_yK2iE?E z0BgDk{vN@y_;WJ(xngw}rjk&e07DK50Kp`S)-4QM5paeA$`=GB7Cs|Y?8SzN zx}U1NFhv8C@OBboFE%G#wD+f;Z+%5u@vdyD}nT`zv?;HRPqPK(BT+FmU2VCDL{peIJUBwk$V*zeJ znNmt()(dVnxtQr)dL5kRT!E2+Ig77&UqA@oEtP2cXys1o<27?@`vnzf3Q?EHa;iw?O|BphJL#kQ_9fxj(e4xu4bKx|CZjhs9)5$=(SO`UV|7s&97-O^|- zkbF@G@cllTBw=oZ8QbIxq|Ij9I&I4c~R1kqt$am|3iP>`@|Gfv`E;21JcPUZx%w0x&>FuEd zC;iKZHldPXBUYutgwlp>PDr1U$*9(2#b!-G9eMe{4ivIU|DO&>Q!c$e z>AUy9=%v@;VpTnNKv3#0LGO(io%Sd*xgyMS6~24XpdTFN3w8*C2W?6BviwKhXk)`myK*}5@x@1pPh!${WED&YTtL?z2}~D z&$;KGd(QRg8>~;5P2cYaG>f`y??)sO8wqTJeixn!`E`Lse_a=-r-~L-G(YI4fT~F@ zR8)mukqi3Xz{~vMK(;Li>FKv%DPg%3nhuufZa(NI?0y`|&Gm(d$!kCSn2bvzODA<C9_>)1~Oudk*;FwgVP)0B+bVRBW~=>6b}tdzWDZ*>RX^9yiV- zOQj{4HDj{`JNAN9bW@FqO=jaBtA1PeR}d*uc{vSJQyMAof7!nmQ6{LHMY=GqQ8t#N_$5X9v0LE+G*ghb}1*bM{F| zF5V2ylM5{Cc|vhc)*EEVKgq>7HQTiVoOA16lZ9ODk|7soWxK|fi~5#r-8l;(BIFQ) zT)>3_c>G-%S~&+s2;q>zd{TyRoRW*z;iD`NH}D_I!~BR$jDAEm&dUGE=swxZ_V!`r z0+7w=KH284 z*#U($bQ?>Q5#KQXbC_Pkg+39s+j!jBQ6+=@wyZ|hD|W0w?@(BckT9V=aN07EZx3FC zo}IV~qSQu_Zg&)6&ee*oUgn=asOIB)xldu{R#HI-5CAMH?KFE83Z{+ZAHq$!JjVdY zKqz3JA}&3^9(qL)XzmuDy*8%O=`jfxP=2X|ir>X2`!Nx1yr@Wc9l}3B2>~z$mF!z# zOvGDZ6pv~Q2FKd!V_6QnZyB2PxJT$BjpUFbJ` zPlU`_v_MK)oYi+kjHe6 zram3PWgR3v#F0M#PQ*lnVBdjz@4#cOF!c_N(}G~-sR)8dfv3DQU9gY&RnbPrw_Phk zAFh`4>Zm>60=ls<3Len)q6-ik`-QP1QgVW#aP60r&?wbl3domQRwDDr(04~|(#Wa$ zT2!d;GAZz!z}gaS>plMZmhNqZzzh6zbObshgP>R_u(DU6_}mvz{Ix(4R{qf_**Ze> zjc-OvI8uS4RLoCVed$`-`_YnTwivCg1W|OhHKX82F*+Bkc|Te(*?XnvR*tsgx4#7- zwF}s_+lV{_&st+6_Pz{nUS^TLG&Zyt5`d6#TYJn?)3!0jywsFEM&n}GU9q|Fk8v{A z=vY?cv`4SfABbf`al{t0{x}s}A4YI$szd}yJW*}K?xp->EHtd2i~&?%Y^BNeYzOoL zJT^vuY%Y)_0&y3IHQ8JAP_Tfo#qWt*WsFUBo?bLYA)f_)9_Sz`DFMXI7MzBbRr57* ziaXsNN8IW5c<@fAqjtga{IWR0_I2?pR7vjBgD#WZL!AhS=X1UxzHZRfu`%Z6n_{59 zqdhjPZ;Ba4%w%f?vc`E79~8yX-8wfW%Xk;HhgygAN8@$AR-CTS^MNa1E0g6;&9GR#KmQ= z!02WJMRIMd;#PdT@p8BaR_X7>bHodJ3eu(NnIlWji;GHs9(7eOj~CP5%(=7ISAmpkA7 zFm)F3;7v*7H+DLPs%NXKaq679C5hu{E53>y`CF0`tyF_;WohyX8lK%&M(m#nwvWo} zUXfJ0VOW14X|IDN#z0bBz*|Bots(5J;tn*V*;?3Kf$KMm>Cqnjx5;r_Q^GBv)~P&3 zoYIqUU!!zqKA%KRl6-Pvvlo%+N0YfAIR18W@rnQ~#);P6;Bw#c;n<+{6QR&W6s{=xoqCk4aH-%tgQtHCyx%CODDieI5Ntx}ziKwFclyu|CY+AdVp zRjbf#pQ=GfzR7kI%tH21+GP7L7H^<23ReV+x9VK&Xi_@?0fJYfp=X_DvWRGEvghqC zb#$c)=jpq(;(G2^i*5X_G~7Z6&3=dP)h4>8yqY&S(FF(4l%%nfcb5q8t8C{ElrQ>v z{3?7-t5vI6VBS=vvg>ykPihB-zK7biYk@jlxpP?{ixLP~)Iuk4b=Rn@#}RJ3T4m3r zjjtZ=xLPgt@Do~gSK9tVMJL{_FivO_)f25gR-k5hSE>+8x!O1L!r~=DCz$BqMhAE< z^b?xlOg&Vpu$rq>3uT|D=P@6RC#D+na$l-rwK~juQ}CMl(&NBLF48ZB>l%;ewuTr&6%lIgT zdJFfHu1`;Wkg~kWaDYFZav!t29WK>(Ii~nbil0fb&&spxO9ziaBnaie$oT9y?WZus z{rAt<_tPpXD=BNd1+8&?+B#;f>m*1~bh%`6a?`@Zh1ae?S0a#Q*jC-S42?jfvujk? z_#pb3b%G#Y8tg2QEbdR+bfeO=<-B0%s))afnHLdw7^m3rYM{8niC&arMb6ZMUumseThFyNuHDGB4P0yI+D5Kz;@VAI zyP0cUW7?K6ZR?oUJ*M3{ruB?zjzvXn!P{Evw6=a)Yn#??oYpo>Ywgq8#%XQSw06_9 zcJs8>HK}cx)V5A)-ILm_lUmQD=4e`@+P?&NmA4V_BAjL*2v>j7y*-&5wq1_D9%2dUBGWV~LQH(o%=bX1m#t z@<)4e`uTqEdv8XvAhf&ZwC5Dg0lj!Xzjx?RyuB;bdv^zIyLxX^b2Ab3 zn2uu%na;MWV`kbk95Y3BmVzx5Dh|=@w-H9R+qtp4H8fnHKzjqV?7waQt@tncdaPvL zj^=HOWD90KYZNRyYow{&&gYu8T^&lNNnUd(Z#rgv#7v=ecd(gu|6lv3$C!`&0PDQ; z4W)KYwA)$7PMftmdhD!Ku=CY{&SEx+-UH^CQ+;RrD-?a(bX4^YJP+7LJ|)l90g$^g zXe3SDtxiNAtKAWOjM|57D``5_0sP%<4djjdSoNLw+npr(~-R6jy1|{)tVVP#~D5mMPv)`p2J7rei8Of&1W6Rt< zZ08HZMmAL)=vl#J(J$jWmXkEoX(MaeMMtT{=-bP+JMK2KD>!OiS9KtU<1G-MxA(qI0VOf za9ODn?%6!!)ZTz?v@q*4Sk9~-{k)0hc+N~(SXJ@`r#jeP%sWeO=o#L?{`hAoL;cCB zgK=ZTB>x!%dgnqivaRTh5pRhzY#d$2yqamqDGubZ(O3so@rRl&mjr;qHus4-`iD8r8qzrTC(qCDQ%yWF|Io-e;^ib7q|MiJ3 zlZCW4u=StTP*)_;p-vpKQiWkOPz@c5gw<@9owpvevjyyt1JT8Sjk+Ultf6>&tgpLU zodJ9Ovg9x$%+Q}Zc>AL@6pqB=k$Z1xQH#=>wzETS=S^OxIww0mnm2M}6zDBl9WrYJ zn?8b1$3jurB2Wi$_&)aQ%KfR{=E?@;9;4LLLaLgGKE~UHmxLSC?3ytZbLwurU3lNy zs}2b2^0xN5)YE!Laq>z{RPYm4;WCsQ7#Qla`ncANnFx1uQ|fhc z3i;*QK+VnAn~v^yBBoBn?ZE>5bw%H;*zm3++&9~14$c3JGDiOB3SJ7s2obU=43CX4|JgyQXy2sQ6-z^l$tym{?riu6XpeeJjG=jAaod262NHjPxH zmBpz0YpA`uBNT1{8(OJU+9arbx6gL_f@(IAH>@Ti!l`{JsLNT|u!BWA|T7AR$=jWG;qtL0s8?~i*#Ln3fK6CHV2 zGjhIyA)l?Gju<|LgV3$hCbssp^gSVc9r(g*W#47Iw&-?&bZ;{MtL^gDo=99RcC#+R zYRm!{zUE6c)E()?iqtvju(Hky@59s59_fuUwLQi$D^tw4Z#jEp5M-_9SsB$6I?VL8 z{SYm4;D^wGc(h$bh$3I*Pkg0@60shfwfZzsf40$*)~`xyKUxo9;J+>FC%o~^8fJ}n zf1B#oZ>;V9Hg;Ke_YfVlQl_W{QVku9ghPph>LrR5(<^kDM%KQ- zWTZD!tUHF0st?07+YCcHrCCF>Rp|56b&qh-# z2CWVtvuSGp8Xvo!Eb!lKZD&}_p`r7p!RyW#X{^ufgCPi|QpCz2^)$u|zpUq@lurgQ1l!NBg^bf2tJ)i)+<S>U^c7JPcbia$f>KoxPGL70oiZEr;^i;pILLm?W>sA<^pBs-s zVPpnY2%b$rO$}Okr$7T^U=e$8@_8Cudg=}O37wpJg-&y;qb|ZcO*>E#p zo25q|mO(~V)px|(>nYIEM#JW@2H5v>+8$lSgp>8HXm4$m_R^_QyO>Uq{u+*Bh3cDw z^*How(o}^X$$AT;wk*V<`Kh0bgO)70ujv=^=Pr14i;F z$o+AXQtG;iGTXkfhG!vR;#jObl67n%+|k>Y==fxH-JxL%Rv`(WXJ}c(L+|6%T7D`e zhhN57)%p8wWiqQ41TQ@{-fn=%bb6Wo6tBX|IFHkVe{Iqf9FQRkK>}VJG15iT8IMZT zp=l}R=wW=t6KC)xyeAy*GAMLe7wlF0VJ2mC*h&sF-=Ca5`}``Lg!Npdhb3RoK8|Ls zS@07ZXOGuvKfJC%lL|IH6MmYE;`H+?GUVsa&ZtG!&#D_f=rD=5CLDaz~oHho` zG%c0cRULmg^N1rd2X=>V@t%h?0VVMU-2>J5@2{f%XzU)kFZTeb;?_fGU6$5EXdP9v z(%OO6|0b;+Xf;{gU~CMnn>Xy3sIWxek!KO8ZJiuTh=ex3RQ*;lGR?NYigRVY4gaeYWQVDu_@3PPVUM-ZW5_C(@{ z|1jGgOZX3Gx})WX#s2OVzlVK%{k8S$nvf6yilYEsf{-9rEYLLX?6otz4}I}ONS%nq zgRMb2+}FG3Fnl36#-F>2y7^BvtGhZ9hxdfq51{As=)n_|=nD=(4MEVg9QZ@FK8hjj zU9q0SaLCyWqMwp!KpepBfsA7&8{oEo>naL&N8$`c`Va2%^yU`?O4f-tK#_ubXyaMEU`BPSBG3;agaPR#MyvbY73n;{96kQY)8f0CDzF zUd}(@jx>wj8pY=1j3j^d_tBkmSo&Z(t)u!-lP}Z;uKLI(pgQry0k8+;{1{7MFUaJu zc-Y9h$}rFpY%UBt%qIVEGlpf^XAGqaD*$ms^=~ln1|Ddz11Wy(utb{_*n7J>(LZ83 zhZQ`?cyVBlQ_QU(#YXka2ZIi z=-xF=u8FIN;wL!R*ds9lr1H<`83+LEK6KE6qRxKdb01RBeL4`D=WW8UMQ<3Q-r28F z&m)CA{I@g??h?Ed3|Nu@i8e$BUo?ghL(yQm=nT^v=*w)TP#1zMPt8?A3LwYB5Y}sw z6J9hK+0$1cU%ulbipIwxDki!@yVTdPu3`0ZLMsSk5bQZf)NGeYBq0C zWvRt?C*E6FW3>p)dPTWyEUf)Jpbz$A_B~X>VLhNvok{#9B^j@|RQ@=2@egaLub1P) zMXw)GWyQW=$U_*?*~w$hxsa4^Yd%v;J$_{Sh}}88f&Fr zGc2Xixgw);7%n&-At14}=;O0Ua3*sffp#seElJ1k8mV@z!OQ2czlbg zmrVhsC(7jaMECSC>HdBsiunOMjL=%0k)3g;QYtb?LCTpnJZmZd#GGEW3N+;)e53C& z_Qam^6zrIdFde(B&a#oBX&`Q+VBo?qkhh^>!aD(W@!6nd0M0?fz3epH^{?S(xqCDL zzeQs)<(T<|_E&UsIcT0;=i-z@<}+71IOTwO@x9sZ+{QKvURK93D3h{RbZRqo90tb1 z+P=JbtVbSG)D!LL?7rJmBwz<&DdyzYXDIa|H0OSe`$T|lpnKj(=Z4{j7GPx3Wam== zaW;K&vp{(8*Jhs}@HgTm^H?%nOs&$-d5)T+bp-GKNVG$paaoWqvS*L87zN6+w}I470R4sEd;?tT!MvTB@iaE@Ai&W;dX1yz z43x6C*WecoA44|a?C24FZj|6QF!ADigvq?&UYbss zg_R7$G7=@sILhUzv#Hlt5o@Jh91p=(!(+29G44izyBe@@*)f$980wOhO|gx}HeGxw z$q@t=mwB5bH2onRN@jq5vk=d4{Dv(VTD`zfqEfKHce(#G;r~Q|rH?m#ya7?#6S96f znFUmac-+mt%+N_ZfL-j76?k*{G45gU`f-lh`+D@BUElGVD#r_mzv7?kD2`qaYeSe= z%+1KT%ZCzX2L3Uy0{Sl-w*Jg--3_IL1I4OMBM<*l6d|03PuBr+>tywDLaz%f60B3R za~=hF-d(58c-bX{_CI!J(D>_3;<^Dv;HR7G016733mhLpRdVZ{b?gsSlH*vH*nj8F z?R6|A$Y^{|W~i=XAE@g);PGvB)D`WFba&j+5@fH(|Moy}aBziw`E{)OuFZ6?2S|1Y z`#WJfSrjCZl~2W>e+F?3%OLnV%&ZceVh0_t6GC*y7-1Le^TPbV=Gf(_+~eB7^}k=o zpdI9i-JHtpM&AJXIz`lgjjii5>nNoAqLqC=1LfBbIDi2%yEI{wb|idyJ7r@U8E=BaoFTW8JP0t zJl!%u)C4Rd%qF-@mZsjkKnwT=hx#1f>(7BQ=D-s$b7BHCA1*V++%6z@rK!cs{<$;H z>2v*hZDYmJpV;`|8@HAZel}qqLx_@t+(X33$k@effoBPCro<89jWaIe`i#@KHM^OR zU1jjrvkJLl9va1@ua(yk+Kl6u89a~08`PIG0e{PU{HZo?ARJJJj5!~d`?3aP{6X#h zpdiad*e+hPFr`m0?65;2I|)E1Vn89K7$4Im$|0f;^e~DzvFP zSHYeH8dn$wP;;>W2~=)7hd(A6qlkEa4yj!pZyO`%d0xjdbh4Q#oqE!QN3f#c512GZ zzj}N!`I3M-lP(^dh=$y+l$M4JE32@0pN7FDp0%X0rTl6U4k5t;0w^p%@aHIl@Qn?R zntGOvfeZdEGrx;KIrJYrVh|+4EC`?omi91g(H1f zAYEz~I6b4khW5?eKA_IXN6XFI(L9`C{F4=&Kl&Op4`$RkU=KP)$@zt}iR>)$)pR;% zR zrU@2@%UF%xhV8yOW*GPiq-0j7OfO;0SUK{kTetD-Np;3^)V+@FS91rnj6MK;7!xsb zsF(&K^ctWz8(0z}1xbs6BELnC_qiL#y@tK4L7gi~2SRA}U5j$+frz9ro>W)(2zWeWQ0A{2?OQdx- z^+_KC7qea~(lnea6aX!{SpYP6l0bGOZ?CNm!tlVRe=hHKgcG;4pctZ}S6=;{8h*8} zGZBxfa~gGnbz`Nc}}$o#LLbq zA|D541223+UWj!^{KI91qb3f)`=@d(hR3Iy4*DNx;SY>rXCj=SW?h5n4*A_dbdNNs z*-ir%j}Z~BT^P30DTZJKRs%#31w_yp0>pf#JdBxc&*eS3KENN@4X7u|*zzI+79P~H zem);^I2S5H#-ZPmH1I>cwwm9-H||gLwZ%PBH)OgAEtupgJ(ja1qNjA#008DtpS+BJO(D$)M;O zcI+;C_7vw?_U{0ai0dZ?7!fcY#GV8;{SNzpeZ3vPjZo~ugB+R`1sXUHRr;S8^0we> zc62jrA%zpL4TA15@IV5UVoVt#)xun<6DHmVX+QB>k@ng5L)ro6Y=pBfz8}hd?zds= z5aADku|t+W7{(4WBK-MY7(3ka4}`HJ$Zh8%W+W$Pm}#B?|Ep50 zXMt((h9|7RwwSej{@;wYp`(3eV=HcBnL+Y;69uW z*ffk`p?C*|RY=Br3kH&v&JvPfV~7%5W!b{M2vjxKfo-}UkzMxzmZ8O78>kK=h7KRV zWnfMy?qG{cs8PVsqnoKa9u<^O%hDPj5Z1tV0%5VsULa@Ur0x@DP6refZlGH9+(6jt z4gJ81NulFV-ZGsp0vvJuP3--FIzrh}50W4!LeTkxOW&pGv*L^*8NKN+_cB}q*Ici< zVr3KfJ7p(lG~j~$!SrmpKPQ+A)Q@DwH%ijY-ZwxC_dQVLG{2Rjo_HIb*0wFN8ELT? zwh8G5xTCaSz{WI!ZzRJC(2dm-mi=fQ;2-2I!bm%y&Q6>odUV9dTM}2i2Iw@4zc`@| zcM$j|DxEwMybYa@KU^?w4SGe9!$LI9fs=AvB+7?CsF4~IsRNa9OdCENg8$*}%m&9Z z;kK>8%}`RPCy#41trFELgA=o1B;?@uarP6OG`Pg#SYtzHqy97G(^5WvlwL5q6_$Rg z(FY4P$t=O&yo%*Bl!$lu^_}ZD1zEVEY~!WxVg7G!;=M|sBX#%Zb!1O3 z;2;!6f$-R7I?{_Oy;;s!b3R=h4GK6si=8b2%xHo{ZtsNO(cRYz^U||w=`uPX0)Zbp z{)jG&=s_-bQMSpO2P~xnFn`>qF)rT4g$(D|KrVCC#e%u9se+!r4=kQT%mqI^u!Kxu zieeoJnr6vlT`?%Sq8CgCWiQ3tdl<+P+z{dcsH*3>E)-Kk6ClT-xDY{?>4m&9J$Taa=%qe$;4NB6SsARRTxC~& z_m9@sq(Ib6pwEoC_4U#;(rE~X-RI6uH1zT_iYiC*Tu1QBD%AyKU~L(3!A2pIHB_a- zk{}o40Gd%Z?hXMx=hO_ngGvTCRa~akq*RrL!QCS1htQxxFjS|!^p2m>k@Ya#@(i8I zA;r2%C(qAw+0z%FdWNPse`GL{gYp_w4pQck8(S)?o1_e6V%JBvRtI1=cWv9LPVBl9 z4=|3q{@_|QyX$xH03*1o=|k$wu5Vq9(sw+JT&EUy{Y&(~uI-BMQ0I0%fgV_~UAOFH zmwnf7@CdWD>-1JW>Rrotya)gPA6q$2+4Zv>D2wOjt%?s6(00T45m|<5rxHJbhpm}kd zCi7$0fo9sS$vk)+X#TJ0VKNu51G^B04<7|ZO#0k4*oSVH^#5=T_Tl7*H0f_$gMD}o4@~&>Yh@oU zf-m@VTd$RU_#t|k@ZY;u_ThhiNa(M=hLa4tZocM&Y{P~;^1pHVdpDqZ5L7cSKC}Z= z@5CDURQ`-lKZ*xl+mEjU)lXcfH|HJZ_#%3kFVZ_f^|l>CZSxMH^64G_$Ao+^W*09& zsRSwq0Ra5%1&2<(^Ef@6d}%zy#S1{?)L%#pd;xA6s%=nW$$7c6sD59iN3FugkjF^d zx!f2%t5STAMnkk*?sf9eaYjY4VEv!xK)>vYL#6S-xK@Fi9zQx+0V`0GNGs@g5_uD;guI3XpH zC$2+)HiPfTe)-g!Zjk|M5t@j#9OqL;e}rVonp{o;opc19eb>mMHmR_}adhD04N#=8 z!pMQa7D*K+{_d1*kSC=Mq3RWxVjHEU20ZI&>j!sHz=z%s#Q~#!acc0}$PoQPQxB4_ zd<#i0lb#YSUa)`r1c$^{z#LhZPX8%f4CIgIK2oJn82T}I9B_GPY7X8YbU)h+P;wG> zaR3@&j0TH1)TPlpybLy$1r%JZj!POYZ`&El4Cv-P3rjzG=lzAMl!|dogJGfIe0YKWJ;670*J$9b2O7w&i6l{hM%v}d9b5tT6 zQL+^yKGD4Awq`XOLV5)yUBJ%SwFn^ip@WG=VC4;>jryDcJCC$>gx(GAJ$8FD#lM0| zRT;D|C@RVu(Q(X7;&#%AsTRA82TfF{;I$S8@>z4;gTyDbGzU=y+SWs@EzK>W!Qyrv z9#Z5ULU|aA{sChQCqR+Np2)%KK!Q_}0NAA5e}7AG&wh-8?Q=&35AWG~cuxyH(7$G2 zaNnN&`w`LCO)NuQ<_`g;KrPH2;A!rAl`8fZo93@Q9&N{ z5qM(mhW8fD5xdd_yTXkUnTAC3kw4=+?(WLRkOGl}6e03?IR(z8Da00?k-I%dP%WWt zZajdJ7^pfj64$t*c{do_ zy;q@>&iPhe2avoo%|C1&Lk1u2?_;WbS7Ampw7!$!s^_$ApeTjwMik;*9e1GU;^MI3 zW~t@#r%~I)9;7-h)AKsfGQ*2(Lm{5q7+89f3&hV`*_j3?0j!h1k0uO@$!!JydH04F zALOE1geaw@yq*{_;3c1 zT2ImZn_hEM)$YD5tbf^JO+Dwnp`=W~V?9_EE*QJeK*H#l`GOSBl~_VTevw!dMtJR& z7|r;v&@{`8oTI;G*sR^|Rh8&t6n+|8+77X0PE(yar$*<;aP`9COCg-bTOE)7f}@ZM z6M{FH#rZCPT-n@>DH!&WyOx|P=F@_4hM|@Vn%txxJF*G+<)Dt z-WODk2`eUNBoEd$^)x#l(TYnEoQXjCe0A+;cP*>|!>rDYHg0$=cP|;;vH)b+5K~3cS8%TM{?Mu^VjZ|v2p-O?cmC0aZ3Ku{a-xDG!uz|yc zD)A~5=vSdGzY68}Rj9(R+ATF@sQY3ENeahc+YK1hspla*7f-#zI8A;PV9MkdzAJp< z=H~_CI4zlz%c#;44)SWWPzN3hg~PEsP$b&k)q%vqPOphhvX_-g{Q^)0m;CbaBE*Eg zKm~?(xU_&9K&W1B@&t_EpujB+C6uuOufxr>Kx0EG!}X9kY(KoU(o)J|14@BC4N{gc zKc&B5XPZ=qe2eP_*fBKO=P(MZ8k3xUYn;Pqo9~4)wuxApUrfV{n8{TW_idWEs- z0qjFInYOuzfG=}tTPj%zJFil9kvZ{!BD_SLg7U9xLBzp5k?Y>q)%b>A z)HP%7AtT~|)8kcz0`z`7X_l6tb63D>{Xo@#78&lHE2A*UcUw@_`MlCmq1Fc%!983l z;jml9lj$;%pVCFq&m;wGY>6@Dynk^Jr*O!~XP3c7VO$S|1ad}Rb0ixLc2Dqv4sYhb z5~})YBg?gHV0Pl`Hb@AZm5D&^=SgQ`cu&3W-OP6}xH=x>eBFnK@yki4aLA}t9X&UJ-B;^q|Wa7WnF>}|B?;^X^lxBf@=J4XrzeXrZwWiDt-Y0 z%FHPNBuTxl=u3?pOGELzDM}L6Xy{FS3O>yUU+1N130S-fEZ$Tflc`|GrlcEw-Msw3 zgHp|n`%9t5PQRboUYtJ>VPBImMFFjhmoS8F@bNJ2-d@?vAdbGpf==uS_D~}`x)Gn| z3G_F(1Giz3`6JFUO^SUaq1o!Pjgi{{-NgNxhLz9(-SKKCH;`)R( z!*W2iP9egXtY;^so|feQe(JlP{Sl-RQl*7c5-Bs&xIXqX8rBrJba1J@PbbOmsxP^f z-W)egy(;LOTK{G7ra7&CNuXCQ)HSkTvn_yTM&YU8rUh3F@J|D50sI4JlRZIBkgF{x z25)g&UjIoyZq)yz3gcnEYT-*|z|8^EaP^D8WCF%>Pp;*70v? zvflvv3$$1NyucVRT!6C+GMtyrlw#imBE(=&SSyY>?Dh8-Z3tUn~ zxHH7}T=@pg6R4Kp+XVc$g=;F2;kL7~Ex+!FClkU29Dz0b{GyguKpdEQTv+6G?Q`-s z1t#%#P=vQsA-Es$wHjzSgDoOH6=~#ZTTyXdh%>}BU)Q$-#A@vml&cM&%4!P~kMHUq= zzfTdwd+J{{5Wm3B6`;$jj5U_4Hm$B^)Z3V&FxR|0*4UK`?{0xX!5#jJ%Z zm3rf)=4xC#Tn@|O*`A()F9w?<=Rzj|TA3EGYB4QS{^z*^>aIzfu_;~t!_YB+Ys};D zFH2w@Mp@$*i_0=g!Dc@zo#*X?;m13_TBf&3FrO(P zb6B(7Ao3>14KfQG21}=0BljyfJ83S17}LVC21PE5o>+!4FHS#>#OX6|DeR-z4q!S= z-8}r>@%75DNp-;+_J%^Iv$`|0a&ww9sTx~wnn6lgN$4P=$ikqdE4`*26Hl#nHbx9}Ep;w)+ vR6-L;h#G$1$xT%0m%*QG#Fn9NaT5%mVRL|tGdE5?Cu5q_&Z-aigQouri~3?7 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WSCHHELP.OVR b/Images/Source/hd0/s0/u2/WSCHHELP.OVR new file mode 100644 index 0000000000000000000000000000000000000000..bad58e6ee0f7cff325f4bda0742cd2c27945503f GIT binary patch literal 29056 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 I_~HKf->^rhRR910 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WSHELP.OVR b/Images/Source/hd0/s0/u2/WSHELP.OVR new file mode 100644 index 0000000000000000000000000000000000000000..02634675fa7a32731b3ed77f5e70cea753a5f8ab GIT binary patch literal 25856 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 R%c&G&4dyTS-+$qs{|CUiWVQeR literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WSINDEX.XCL b/Images/Source/hd0/s0/u2/WSINDEX.XCL new file mode 100644 index 00000000..4b0e5c58 --- /dev/null +++ b/Images/Source/hd0/s0/u2/WSINDEX.XCL @@ -0,0 +1,232 @@ +A +ABOUT +ABOVE +ACROSS +AFTER +AFTERWARDS +AGAIN +AGAINST +AGO +AHEAD +ALIKE +ALL +ALMOST +ALONE +ALONG +ALREADY +ALSO +ALTHOUGH +ALTOGETHER +ALWAYS +AMONG +AN +AND +ANOTHER +ANY +ANYMORE +ANYONE +ANYTHING +ANYWAY +ANYWHERE +ARE +AREN'T +AROUND +AS +ASIDE +AT +AVAILABLE +AWAY +B +BE +BECAUSE +BEEN +BEFORE +BEFOREHAND +BELOW +BENEATH +BESIDES +BETWEEN +BEYOND +BUT +BY +C +D +DID +DIDN'T +DO +DOES +DOESN'T +DONE +DON'T +DOWN +DOWNRIGHT +E +EACH +EITHER +ELSE +EVEN +EVER +EXCEPT +F +FINALLY +FOR +FROM +G +H +HAD +HADN'T +HAPPEN +HAS +HASN'T +HAVE +HAVEN'T +HE +HER +HERE +HERE'S +HERS +HIM +HIS +HOW +HOWEVER +I +IF +IN +INTO +IS +ISN'T +IT +ITS +ITSELF +IT'LL +IT'S +I'D +I'LL +I'M +I'VE +J +JUST +K +KNOW +KNOWING +KNOWS +L +LIKE +M +MAYBE +ME +MY +N +NO +NONE +NOR +NOT +NOW +O +OF +OFF +OFTEN +OH +ON +ONLY +ONTO +OR +OTHER +OTHERWISE +OUR +OURS +OUT +OVER +P +Q +R +S +SHE +SINCE +SO +SOME +SOON +SOONER +SUCH +T +THAN +THAT +THAT'S +THE +THEIR +THEM +THEMSELVES +THEN +THERE +THEREFORE +THERE'LL +THERE'S +THESE +THEY +THEY'D +THEY'LL +THEY'RE +THEY'VE +THIS +THOSE +THOUGH +THROUGH +THROUGHOUT +THUS +TIL +TO +TOGETHER +TOO +U +UN +UNDER +UNTIL +UP +US +V +VALUE +VALUED +VERY +W +WAS +WASN'T +WE +WE'D +WE'LL +WE'RE +WE'VE +WHAT +WHATEVER +WHATEVER'S +WHAT'S +WHEN +WHENEVER +WHERE +WHEREAS +WHEREVER +WHERE'S +WHETHER +WHICH +WHICHEVER +WHILE +WHO +WHOSE +WHY +WILL +WITH +WITHIN +WITHOUT +WON'T +X +YES +YET +YOU +YOUR +YOURS +YOURSELF +YOU'D +YOU'LL +YOU'RE +YOU'VE +Z + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/WSMSGS.OVR b/Images/Source/hd0/s0/u2/WSMSGS.OVR new file mode 100644 index 0000000000000000000000000000000000000000..7f16fda88b52990a1f68cb5b3a818636ae6822ae GIT binary patch literal 13440 zcmc(Gdvp}%dH&2StN}Clf*m_nTHX`q#G*B8gY7!@Nea3F0^N`n1a6Pc8SRdwDYHA9 z-C2a%o|7GjjjYyk0hc(zPVIw(9rLr@#>Oc*iT_9(H-$yu8#a}k+z^&8&*^^ zsmhAS0_wa9(PAH^ThRpS1l1%$WLp%nqP7uD>VYyzo!Qx8#VM+9wJ8yb>w1*%*|wgC;1pYQ>e9^^ z4{Er+nOf!bO69CobC$1=S~bJQsl7jHZ4?``)uy8=K~PK$TyOI8}DPHMGfFR3#k zyrf!ZbuX#cBUZeJR3NNc9Ubb*hgz!}YU&!B>T82l8#gttS^cMF%Uc#nS7~qi6ST{U zZ`N%8HFM_9yLP_1;JWK?xN+f4H-F)lTfcZ)*_Xcc`=3d(7S8d@x6bz6c*||q-Ei&v zd1YThWA(l)Y8)zmkvynE@gd+xpOkM9541B;}JP2UQxU)Nl< zvbLqVX5*^Wtq;{VRj%DIMY4R6RM)(*v2{(&s+OwNwGF|Q)s>5+8`ZKo-�J_TO~P z7jL=k_pe{@nY3`0vgGE^qjnbrSQZyy3bSi(QScly57KD*ehXWsmY*;O= zeRF;Deb@PJ^p&lU$|RDC%tlgxNV*dZUzWa1QmZG3QU_Q?3Uz65Eo6^MG5qX|Yq2iL z9ML7_Vrf##N!^BdSqdfN2`eszEE8NOB|_OTNeGyfOpJ7rWJ4OHSlqb4vqd}ek`N@x z)H`g9xe&KZsok_fn=#oWNs~rF3dfBtx)e4(HMJg0qK73r8IKY+(Wy(_*q~IUMWrk= zcV3EW5na+^FSP2sP2 zUh1$eNn>H@ye>f!rKpv|aV8|YCnnj(c?thP6H1^lI!LO;|IjQFAhYnRk&{M9I!{tN zwv&_ECnT*P8BxiKN_rfqOL|m_+EOAWC2UEv@$DoA|vQoe_tE*j=L+cqh12?0xTjX&y*^`u5sz zfXWXaJ8w>SlpRL=B0*>7PH!2VFrkm~{fWS071mZv+hO-C49;@)p6`7?r z_rY+)NU$so4tP^Mky$vkF(#4_U@JwQi7 zT~;FRal~1e6?cj<1x``E`}`d_>4^Lo1Pr#~-yB+bi1lcV|WPsR^Xcigb^ zqj4+FXvsBfKEqZn8_Oof>_Rd|nPqq04e$Q(0+4ez<<44##YXJWcrwN!im|g*=$pi5 zBSsy`_~a;klVM8q#hy;H|NRD?15hz*#12rCr+8Fu5@eKNq{DiLmNau(G|@de4U4@3 zJpY$cP1GzbMbNbuSo2}%`IrW_@P9egw%&nN4(XTo4xqitfkGZh=6?~>zN@NonbH); zZs~&)!_X}~0jKHdD#{2Fs9CRjAg28QC&B)Tefgm#%J2etty4RD4lzRRc|QKO26kHL zv;ZW*`;(iPs$I9c^)Y(B02Lwo=W}pm4?HjW{R?WM;o|S}_)1Uj9Th#>OY$qUE3_bt z!uU%R6EReYiSNi^f!%vY0|=2qRy-TZ9iX8TV^*@Wiy|Tz5I2aEYTrF)gC9;mf5kC9 zX4p%~sHrCktu0N>@V^6%8=C3V$LT|2_#^8Rd4xj|>d^HtA7eTPSxGyV%=I(jHCIq8}~Q{l+*Y{>_H$~rc?><^^gn1PuZ+Yzx1Ngns(us zzgwFaLim?~OnHdb3%_B6anVlFDVFk)PIpdF3jS%Za?`G2;+?2|5td>kF?y2911oEV zg#()fEeo0>I`K;!Bz)J9dA^fer(}y3H#BID1TQ(~^M1iFyB~V^(O(~lJcA;qyE(e3or%S{0VJ57xAwKFrrvZ=8lX z6EftA+FKiCM@febeSt0IY&9iX0GMzWR2I~C3q?J3nnw-@3B_$(w6Y{tW*Dd%UOhpZ zw*#07p|tux%!kf*m`2DBsB=FD(mUN<2GrLEe| zF^@4gBphA#3JxFBO!Q}e4)zibr91Xy;iEIBqI!sfr}#uhjcA+mu9ul$bto*laMfKN zIO-YOQ^HR*C#Ebih_CECF{2lDe9ShobcptqEcxJZ?DoX4yP&W&vMbkTz+Y2}$Xm4N ztqj8)Ytb>=oEX&-gYZ_t1n@gfd@4Mn@qKi*=yV_GJM+Xa6REH7BOd{M*PsFev?jCk zx)s7n;se5{QaMc8di4zgx0!i1#{)m3bXBmqj{c6`faRa^rg_q$5qF*20|c9+jTA<< zXr>XS$A!4FiiPJ}1Z@frr~=Qoaw8FTivAA{mN5BKBN}7OE{UFtdW1@bz9LIU_-Ioa z-W>oZXoib4TXp>^aUVZ=jGpM!ON{i<5p@Qj2$rCsKRLpBy2xzoGESSpWr!Z(N-1ic z2o(xi*82t@bz4dJH%Clkb6z+(o>S-fhm1yp1?D)rkA@Iqhy_oKi;&~J0Ks;(BB@l- zu&M^eomIaM2+NdWNW$bL#2cy2)Ev0~ZobIRL9M;9c&bu20(G zY6;i<{k|a_TX4>aSJG;0%j%lCCgIog<5Y(pU5(TiojRdy(F~J~th@Q==(rU-shQ@) zjD^~;Qb29I4!!>N|4=El0ZGHH9N zrn#b}hMO9Lt838bzb;i@)3Ck;11Qy2<0NC>PPMh-$F@}4DkNUC_>NTD8W{Usel_(g z=lpkwy{vOgywUmDBdNBB(DyTp2|6!;ver51Uyypsd4|4931kSFuEqI2=&%+cT=@>6 zWs|cLv>TlL@V|00I-AhBm;SE6k|!-wh&} zXy~LERpGoq-|zj7e>S@>$tVKx=W?|PBL z2jF;Js(~7j>skUd8=(l+lbiDj_Wo}1br{{5sQu6AwsG#v#p<_1`%i%2O050|gn#8E z^xQ!xkMLyg6>$CU=<=<(fWmpKbU3zYKXWCtUl8G8BL$H}tP+1$7nv2=wj!&3yTq#g zg)WQw=S?vv)?p6a4i3e!k})J6+mNT*K7%nq1neI6IMaV4Z{!ueUz&k1$bcTmii`;% zx{|Fx1FXQGf*a{O{x8nJ1>FJ|C>IX^u+Ys&nlb~m;FQfcE7GUEE5S_7V5JHQ3c;+e zXkJy@0GY$B2RAjav=Tbk-BHnAuYGOD0|6`KBom%CT@`58_`prOxBgkk4u`OvO9zRm=3q+B9L!{m&x7b?pMj2w5hbkr zlq$igD%+5ncH!~g;B8M;6f{>lSDX>D9>nHk6@L_V=aE9;tP=Tl>?uG7V1yL4=E5j( zDu-o)%9r)s+xNA;rGKQr{4MQPX-N zq{Z^(P(zDhDL+cPCSVV|-0u<6(d<=mlq`HrH^1;Yf{kVO-PZ^Ej8UxYy;vUrr@v1x z)48Ec`bp%bpQM-FUQTJD!*w;9QO3Pue@In<0^~(!1YYe$n|ds!;O@;y5K)4ySB3cbwHiF)`0zGe93uMu|d`CktN zXyp(Bax?#0AG+1?rQ8s5XU9fio;e$s-C|hDL@$K%73hWa zMWfC}e4}Gp-J{@7N^O81F|~{I3Z*Js3k@-MA{s2yIwu>`*#Uw2rUV3a2ZXy_@1$oi zPPiWc z^sYp4nbi#|Ctq)4>|}WYMN^;Jiy6BSxa3~|+pKq>YY@MMG$fUM*rO;8@g?$&gJ8LX z`gu5nj{-)naxS7^^g7sMBswtkE=DvsFCsj$k~!ouM>>14!|X)}6yABT3O)f$gic|Z z^bvxRaW@lyNQ5O%cAtObF~#q2o4lVgh4C1Aae5A)Eetx4h@ z@g6L22zLP%{6SAW{P4ujGvh)mXm{5qCwlZ8M|{Znj<^*EBw9p)))Pm{{N!<-aTboi zc~()v%Lrdxl#M)UH^Ym($6WuSl<=8oby3@>By#W21Eha5shte?Z>j?$iAeztJx+hB7*|j6fT%G{ zyaQ}_;yLh*OZAxEDtK27aJt#cs-u<}3TA$)vIgEL0=62Vxfe}SE>Nt*qtG77Xm}LSUA5yHcpe1}jcdUaV%W}J2>o6Z za^YQI#0G{O@4Aeby#rdIo_4~fs>p@zSd|-yy(8cq%5}r3s;d$jj z*el@W1)8OkxX(&d|7}y~-Qc1&6@%iIL9J*KSs%o)57kA zEqrNifdR@N+T`#*up(w9JUIT0NV&dMNypz>%Su5IxLWBMvXFK@S@?Lo3-#zR0%_CJ zZ>^@|c6n5NG2(7dBepw`5}W+jb| zEte^^cxJPQp6N?}eeEBMD*Y&x@1b`WQv{X%;dUK9ARW(4>KI<8aCr0e%0FfbVZ%o{ zMWt@`)vBAt!UFT*NG9E{P9@6e*HMcL7Q#(N-M%mF<*lbzCWYg%fKP-BEKhQ(p)tsN z^%DQ(JINgDoGhRe*dunK9!4sclZz@X0eTJYsI;h$^cPzr-u{;Ws?|^KAMfM~=SP+YF;gk12w64?}oULz{?; zpq|Zk)6b=(x_7iv3fjv~@Ak9|-(l&=35tvd=tqc6;+qF?=b7P)R($Yd)NS|ygm@mp z1=Ox{{p3Cn;`&q~;52R-6@oHV$%u^#4Lc6a2TRAPRzRTh>m)9|oP9}Hx>+he^>~w> z6UXpsp-7Bp+)Or~M=o1YUE5q!6>Mxq(!}qp<|mHioBg>CpMQQ++~9}H33U2>ZLR#0 z*utY_-wyjuzB?O1H@`pNo+aqubc_y5 zqmyRyNdGlP0z?ojE85A_9e7(DHA1@CgKgk#A}{1$;Lh*Aq1&*#jHp-=H`HlFk!Ti+ za>htJ9rafA`>_*F`V`+=-wE`ici5Ozkg-f+xPNYGL;eLpek$sIi`UltZXA!W`CYUB z7EA|o$7K!d&D{vKHLe!*H=X#p@SqxzCeG3+QHP1iK_xS%|0QG+$iDi&k5#EAE2H$?V{6MoE0)LU>>9tfGax zk)U(C`2)-b7B@e?HSXk8wuxtPan0m;+A8oZSi)V09UAc|)?orZFEfR>EcTK_Hy*5r zj2-Ih{6u~ed+OAqC+=jF8pK!Ba)r9VvPq9lduPJTQoLNGIk*x8uZn_A72ZP>Dpgt@ zcwXI#l3%Xav51g56!9<&N zid$BMRS5J#3kqs{=emg@5v>R69HYS);8bqZD?eS`v$&nMFKV7Twe>iw-6aUW z0z%e%nvDlp|Fe_DiHs$1KJip#Y1uM zu*=kKO;`$$fGae_q9rmn+{FE33suDrW-9QE*n+6pLkpC<|9)heUg?Gk70TsK7A;mA z80Kmwek#iESXOYo3(?NnnoU$)gN#ZoYi~}*`zm{EaPKtX@cC!KU=UT8SbzgqG_>GB zIu0gKPCy%C6(JmUR8xH>e7fnq*BhZ|{ugMiKUy>j pZNlYluZA6v)Om=xVU(ghgva{4gSgJoC;!&!{lkWUblX+_{5Nc?QV;+D literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/WSPRINT.OVR b/Images/Source/hd0/s0/u2/WSPRINT.OVR new file mode 100644 index 0000000000000000000000000000000000000000..6f5aa6965bdaaab52dffab33433687b27b63de3a GIT binary patch literal 152704 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%0AiR9}0}niar_*KKIusbLTY1I0 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 gYMTf4n~G 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 bk5H5$hlbTiaDw7gPg(5kR7w5knkxKXQtb6U literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/CLRDIR.COM b/Images/Source/hd0/s1/u0/CLRDIR.COM new file mode 100644 index 0000000000000000000000000000000000000000..d1f2a7d638df0bd80130b95c717218e485636bbe GIT binary patch literal 1619 zcmaJ>PiP}m7=KBo@6l{CZV(D0ZeNq&YBaSwD++^Vtx30S%%3)il_0B3)0a9ln+Y?M zwvkpAi+T`mo;-M4dhjH8Qjn6_ElzPL>|q5@uFxXJUGY%x6#d>zvk`+1%=fIH%kQJRGe3$#@BAH6kQRu%i+XZLbRmJmBVRa3&Gd=5RvrSM0)kre4h`RDCsy`8t2BV9W_M5J@+l zBHLf@?|id=7FhH0|@6x{X07JG@i_higWtwKD+o{loygWHB&1)u2wRD{|%zB%aTFs`W zLo>UriqPo>>7M-O0kPi}{cx2n`Z!I7xSK&Bw(LjJ6)e4qrCBV^ zW9c<4<*~Gc`JHbldP8lj(F8T$Q4QKM)w*i7y{DpWFntqV4yYJBq<-@nXRV^uXbdd; zPg9lKO-3seD&5qzDuXDLMw_m)Hr2qS?sA}HTdFw)wmubl74FmPhO!3Dbv9UDTIF4v zq;DqD&(cKYS}2&}ujjv=;@%ofR#j^%+~}U3g6UImr-LDff{8SxvkhgX4pFg{)*97X zX0v4iC{dv_tdKlKZ~U-}hCe#6!e zI2jxkof{U74U0mVFH34W+K0C3TQwo|nF=KZN@Q;JQ$7 RFgWss^26~5s=npH`Zq8hC}98q literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/COPY.CFG b/Images/Source/hd0/s1/u0/COPY.CFG new file mode 100644 index 0000000000000000000000000000000000000000..3d5310acb996594e037f794e5af30d815268f1c0 GIT binary patch literal 3456 zcmbtW+iu%N5FOU3pa?MvG(gjPr+!IPC{CQ~Yi&yojK)?WB`#7RC|2YuT9{h0Bo&8! z?+5fh(r@TvKO+J9BR#WAU8p2z-7-MDq;_s+&YaypH-b(4`zyE-=*C8{5&U}Lx8RRU zms-0``kaCX?>%kwn)E3JzhHIPq$?Esj@40R{bV@M#1Hcr;S0AzM$X$t6`Hq zrl7>?q)8u9@Di(TlfHzP3r`!5oAeb0ukdaEJz}B<7l`%(+M?zMST$QW8}tp)Ypiz~ zbeHJz`$V@I^exc=R<|4U9Z`wZod%r{y~OHngA~y#tnM`^Ci<{JbiYAoL_MrFTdj*f zEgs(QfB%H{6FWA~W|=BXVtE*5T3g=X#jefP#oadVX5qv<*Su#6u_&@6=48x69qX`Q zWg~n|OZE>;dTs8#FnOVEsQHo33)y{OV$BHB#k;XS;L_x<&4)Hm#h+}^qPjqI+CGU<4ow<<4K3m_pc!$a3 zHb2f$xgIN^P=mE=G60!mC69ERoOvslFz>bh!Qfa;^&$$hGunTLQ3g)jKn~f8fivj> zvxyE*87<_lD)g{W(-iyM-@LY6UcgLw{yjr))fjqHx>`Z($g{ov)FYy(oi?xUS$luO z=jjHtEM(P(qHDiO%ksH<-hP5NV z*jkVj#iYnn##OP^XB>&1im+!o)v7AN<&t2Iop@Kki3s9Zrc^-RT}_gJE7U2aG|S}_ zt?2(Ut6DxIul*7aA_zT3+t<8xxCCShCj=lweFD2+sB8fYYu-?TD72u++_zOjbKqS} zI2UCSrPWrAVjVej{MTIE*F1%Q3Ev{$I?D=-h}fg&4#eG~UWfY+yS+h&f#q@Uhu(k< zI5bJlQ2knOjg3qQb#%3P-#`}BRnHt%<|XG2YT@Z-YtZ*cD*zvwsfkr4ZnxZVyT#Yk zD0!~i9R}A~rD?nzk_4?((RDX5ZdRPr>hxOeUo}VulyaL#+E1IqSW;STpo+z7SwqRU z8(2TW=B?u`PEvQf01lv)L)qmQp>*j20^vr0|3_~}+a+3^j;o1EF8hQ1t6-L=N1n_w z^jT;tzkxo&d_QX-N+?GXKCICrlq*m+Wu0Yc*%&vVN?lxBIbz+jBsi#MlNt)r;rXQb z@nTGxXZ!ppu0gceT^-P9p&KrbeUS)JQ9=eu@NPsDBY)D@97S{Y!ZO4JHND)dG|APm zr^3@&>IPNXGFKzPY3V~I$R^noa#H$)ris72;TK@zZa>IQh&aD@fQaI7%iC?$aB<`9 z`XRz2L={+opM;eZA|AQC-dU5qT0oU%HUc8uKF*Lw&IL#lg({2kul-c~*OO&M_YXvp zC8vC@q`+T$dfKEwqkJN4Dj8cKpN9%kV53?QU{$Vvo@rYMl*(2vJSSx~WFDs&R#-xN zimdE#?(fq8r{>DerX!#yw8lnRaSp{ox_K(PCaOIL)O&_5E#209c?YsvO-H!+Co@b> m#xoQ?e|7WX_~8brOc6&z_AssW5=SL6!D(QU2#lcr_xuh16pqgT literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/COPY.COM b/Images/Source/hd0/s1/u0/COPY.COM new file mode 100644 index 0000000000000000000000000000000000000000..87c0c2fba8bed0622684a78abd89ef27d3f4dcb3 GIT binary patch literal 6912 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 OD{d7&wMY1r#s2}xY8I;i literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/COPY.UPD b/Images/Source/hd0/s1/u0/COPY.UPD new file mode 100644 index 00000000..3725b0e8 --- /dev/null +++ b/Images/Source/hd0/s1/u0/COPY.UPD @@ -0,0 +1,43 @@ + 11 Dec 88 + +Some changes have been made to COPY since the manual was written. +Comparison of dates with Existence testing ON has been changed to +use the Creation date when no Modified date exists, and print +"Undated" when neither exists, yet both source and destination +disks support file date stamping. Additionally, the /X option +has been re-defined, and a new /R option has been added to +Version 1.4. Please replace Paragraph 4.1.2.9 on page 55 of your +ZSDOS manual with the following two paragraphs describing the new +options. + + +4.1.2.9.1 ERASE SOURCE FILE AFTER COPY. + +When you want to "move" a file from one area to another, the "X" +option may be used. This option causes a file or group of files +to be copied in the manner described by the default or specified +options, but after the copy and optional verify, the source file +or files are erased. You will be notified that the file has been +erased by the status "(X)" being printed on your console. To +minimize the possibility of deleting a good file when errors +exist in the copy, the Verify option should always be active, +either by default, or specified. When Verify is active, any +errors detected will disable the "X" option for that file so that +a good source file will not be deleted. The "X" option has no +configurable value, and is always assumed to be "Off" requiring +the option in the command line list to be effective. + + +4.1.2.9.2 COPY ONLY FILES WHICH EXIST (REPLACE). + +Occasionally, you may wish to update selected files to a destina- +tion in a simpler manner than naming each file, or using the +Inspect option. The "R" (Replace) option, when active, tells +COPY to transfer only files which exist on the destination direc- +tory. If the Archive option (A) is added in conjunction with the +Replace option, only files which have not been archived, AND +already exist on the destination will be archived. It should be +noted that the No Replacement (N) option is incompatible with +both the Replace and Archive options, and is disabled when either +"R" or "A" are active. + \ No newline at end of file diff --git a/Images/Source/hd0/s1/u0/CR.COM b/Images/Source/hd0/s1/u0/CR.COM new file mode 100644 index 0000000000000000000000000000000000000000..8a824bcc4108a87e72b8e2925f3402628e7f9e60 GIT binary patch literal 6144 zcmaJl3sf7|l`}{hAz7ap#AhB($rB>=fNY@J#-#Hm4H*Kz} z-&j`T=2|)9i+MOtmsZQ5qcDTkIGlJnV}u>gplWT#1$dsl-*JEBNUEc6K$bP`9DJZ zXKHf%Yj(j!FQXDi0io>3lxWX!G_R)NT=5kY5i-S>P-OftEk1}M+(OowMmCzK`(~gd zETs(hPg&7=o$|N=z|C3F@9NZhv29^GJY6n0$^}!oz|4EzK)h|9t1|+1p4&}22`eGi z32HsSadnz<$`+GzJCg9Q)F?Py!F2s?*IllS$=9rVJ^s>PlJVMuT%1 znveil`bjjPn~VM`P07>)8d@hs10WtpDlO;FwNfpqeZ{+A9GI|K_TU`eL-ns=kX0iN02N3 z2vSyAl{L2LVH${}by`X5wt=r~4#mT!5T2vRNfYIq6qV1Qd zV?t8WV?$t>coao{omL}W;Ul9z(8uG-`-aKQVRc~qb6siL?1dB9x&L%#Yu_+Nr0*HV z9O<`_<}UBVCq1!2**leJ`Y}TL)uK{8_oxF+Mvv)&WI~8E`w~rzwl;-Qc>S85m`sq4 zL<56F6FPBnVg+aQma>Ojv?8t4I&p+$8=Iy*+x5UK~RI zO1fX66T)B7aKew7{9mBxf9t=c>sq~L?xp`%z}b`l=>CR)Z?SzzUu1zzv!J41phUwj zQIBT`UFVc2t9QPRR#VP2dO>_0Mc(Z(C>srxg*m0>I%TV&7Y>m`v!BAf1Gm7Q&C8-0 z)s>v)Y6{t_aO&jQ1L`_#B}*^18Q_Axj^rU|dI4`eDGiWu{L1|XCC3nxfpcNb*@FhM z=8T3|XFac+un)@0uwiI{9Qs#v^W_+z0{~t7Kjb-vWG7X`(M8e#O=Wf`j;^NYWL@H@ z+|yhL-@gRhoT3vCjYZT@G7{z27TU_CP6LesJVXQ~h<9VsLj-MApC^9C|fOU2v z#ts38E`foIU6A9-O-xJ{-#~X<{Rjd^nL~X{$T=Y}5FhRvl&?DL89D2!^XCi9MQMJ&fF#O=3=F*>43Skl%Y-n1>|?8UEK~#R)(SYtw&5ra#YU zjI!ynmw@myerk<8#Zj*@2f`VSh+uV{YZlDxXB?ju9bhNrjIfHa!Nq>bCnh5@1j`vG zb$BLBsmZa3Q0)8;?Q*%o5urd`D;Q>mP54t+I0c&V>=L*P|4~Yt>855({HdA^n{jop z%iq%G3;ua*hq#TKaJARJq7%1hGjMTZVQIcdKbyQUAP%vj}G0_ z<@4Ql4PEaGb#-)Nf1neG_If)yKp@QjHg?sj2JgK-?Dh9{dwa2PXGv3SbKzQSEZ7?I zw)#Y?8PZNcDt`gA`1S275c|Em{a6EVUsI>Ar?a^q_mu?pbwaud^;^vizLtQ07vAR$ zdiVM|L411%@A8E@+x=cLrPylDPc6$Q6p)Vz6YTT1bOb_RM!O&H40>Dk_&P%{w=TsO z?+$cy1iIV(tvJ--4Yj58yB*ZJy{p~ViT4I}`EZ~>)B0Ax-s%tS^R+;_+~RF5{4?qn zpf-SJ*c-yPYV$V$reH(R8}eaaPdibxHRXPdS_#z3U`ty&IO}>T4P;eIM;FL#=nZxH z_NLYpKn8`#emc4KJa=+C1_kl}K$U&@@0s5t(wH^AYV}F}FWktsQSOsdoxS$q0=3 z|B>z_vf5Y~Y;gg|UXqpdW{6cf$jrmp(aY@Y1(~Q%QyfDfWvdw!mp>AX)VbqjdR1R) z;oi(5h95yNS6x?@Cav@Q6rCRQJdcV@bpLOJygBFlMsk0%oCOrR%eAfVxL}@haqk=H zba>>5*|g_DB<9ebgGl6Q&kvD^XwO4P%%eRIBQcBi9D)=|z2-TBJg*_;6}$K}@;rq+ zg~(G&B~DKce1`OoSVT8c@%V$R617a0-R*>DO?%D^=^n8F zO1urILIXFE2~oz`Ooi1Fn5!*tr`~5YOH^#9K%BUTij2Nv5ql{REcT@a9h9dIIR~g( zhLV~R$J{-~-hG1sb;Kfg+UUe*kmp%cBi1bqo>uiih+_!-YLr(BBN3m?N=KFy}BOjU>299y<;A+6K!WW z*fMzeU1pW1GsTA>t@%vK@8At~7#@6+!DMWN7Q2LW zORvhj$9^nVuBKc{g#{*r=VmW}xP0|?!KK~`@pX%U)oS4ebpzn)ggmuU$l@pxqn!^U zKEwGS;;qhy5TEWmgm|6vAR2m0(66TEed= zWL{Ptv5QZ_BRLQJ0lT6EZP>weBH9kS2(OwD;dbdJg|ro<;uWb|=s z9;F<&V#~_B0n+PNX0nNXSTi{?D8REdUtS~Ia)ECiYg-8&k(>#A1nVW1|GoG);?GWL z6P75D@017a+)NhXFX*^GX+aE5@B^H95YCm$mdk;q9@eJ4+QBGc1vi;Zp0}6nf&s4f z8kxj0!K6*s0b=RJYRiUY<#1>^$f1FJ407NxoALy>ag4ZT$zdsXp5z{-a+gPNIt*z8 zc$KVaBC!-!k}1755-p_Nyn%GBlVHpONSTjK)B2O=5+|W0%0_Q6JjIyju@p*It z+fIo;MH4G(l(%dn95pyUO;qWDouCFaub#6h>+FUxaOpaGW*)`Pr+m0Q1Y%cQsfYolMY+<+DUFWX@#K8q@L*dUa$wwn@7uOa~8nl7TC8sk1s zBDgQ`w&$K9ZqYVliugqnGC9USJKZ;3Qa*b?NUxD{AvLgHP0!KP;9#O^;--nr^2g2Q|N8M)CVEVhCwz2(^FG6oRC4l5zwtH?-e`arMqIwO8&b zsp&1L(@7kkmblwgrb|>sCL9wP6?k5rgD6gak>o#2Ur2|&n})xc_|^C{gq-|;M$=bg zGcgGL)9{x*pDu$ZPuWZ$VMK<`K*^GoBq}pBE9$h+U?&XjOme>xeXYvbp&aSn{jIWD3NvaS(7)W&&q2-j! zS$kA-S%#IN^ykc~x%Bcv&*@UY&ugvr2w+T#!lfPtdIDi9Va8uFjFB`AIqM7JZT?e| zcwazp|F4A%j%<1oZq8vPJ7bCjkqojCY7#<0b_SowD0%_ye^Wk0J}nuD55qk%#c4BT znh3{ELf)u>D0oyzlju)q#xlk0!*!`=&ZQU$k3xFy?7$}j#<#kGlMAFrXeupHb)Gvy zZp*@{IF#D1d%-+|kqngX|K{5mmmTMs%Q~vv$Ea zt2=WcgV!l(4pJIJ=mH|(wmXVc-j%QN&fF#DQ}9?@4tWs4R!SJaNqIqIXgn2%6Obj^X{{$&7IkeXpIUk>pdn9JSoEx1KO9W#>5rf=r@@^x)jlh2> zD`7MfgZnoV2NsE@G&Go~2TtS{h9*53%mH`cE85UgWlTR5`g~6L#TOh<7A`|%O@11g zoUcc4qb8xkqt^f9Okv{g8I<@3ttaqb8^p#e zZuT>I>J)d8*Z?w=tW54h0&9wcI6z2+#D+F@WK!mg6e3KP{)mNpfGR76Z2!XCw_8SM z```J9kY-DsE`1p$vKLdQRd!b9a94O*fK)II=?x+_O;OYGRGhKo*3M>m);s3WZ*m4-3H9OW1}Ai*c%e1ea-opcr+#3$zXTi_-A=dKr_76+Vy% zZO}{F7B9iH1i`cl`0(FoN%2p1pkT>8#K-VEF&yco&y;2YFqupeoRx4b#U-RIh`U!O zUCK#57FRCt%axb;@hX0b(G%b&IS#|#c2~|f`FcT zjj);@nOZa`cG5{f5usYg=H!tP_~A+>3s_h{8wrnAUNSxgm|V)#oeS(h)|iSNAKby~ z4Oi~qE!NQ|d9`T#IlkLvh{&tgx(pYeK`>!S-)^?tgan$s$-*XxEJ1c;4P+q;osfO&fD7rKad$>% zb6;>btygV)f=nD|%s9=ct&XU;jW+N1RNdR%0ezm|=kxyF&->4Vrf=P< zQ&p!h0SVp~H6Q=n&f>+aaYfT4{||Zi`kvh*o-{ zl^0@^OJkG>gCZJ~6;aCeD5X4F*$|zo{~Oq0*=X@e7e%DBTS}_jc=e4E!e6yidsq?+ zBii)=X z_mWj;Pt%jVO=-)T(+W;p9hu@!_bUyND8EPjZRD=9Znpur{BU<L;(SryrK>=bM2*m1p` zZE2;Bv?}Fvq#tkT%GY`$+*+A#F7 z?ISG7G4jHwZtACb=0<~L5R7kpoASL96(KbmzIP9p%MD^ntWO#fVJ$eI7VI&tu6%Oc7rwFAe9?FMpOM@d-aFN6m;vDjLs3tu4wmw z#XLtlAUZe_eFdB*CZN7Cmq#H!wtYL@RL-YJ3zWHAc6q)`-*5 zo}<6e2V;E6sbd1RJVE|8I#sT#;Vt`v9 zYff*#hQ9;&6WxKrQ-RjEPnz6gl2g%X55)xH@Z%0lI~A~@ZCwTO=@>(t@oz)KKN^x^ zQ%^@U%Y8tm&p1Iy@g^rHC&tKc#LVe-6EQ!GIT;H|r>C#qo}Qkb;zyR0WaVy<#YG9-+Ak>K8F*^xKo>YXib z3Y+{%QHoY;vJfE*6~+k`VUi#TR$;ba6Y_eTc z#wZ5y4LiU`J+?J2B}#}y0ZD?8A`BZg>~xxEw6N>}{4`}h5Ph)f#Asncw>wHO2noW- zpDki*sEEaD)Kv@DFTS*E-K9&{zd=7Ig!Bkyn4p~6uK2bqt9B???C4Q161v?|smmvo zx%^`GwGkGf)>32f$N4|Za6I#&Y!L>KYJNn(Td(wp(8a~mGrf*)BC5>y3KsMIf?v8< zXuY+n<@QqZVfK<@en?Os6TZA&kSGE#BO_Qyhx_4r;fTCLKzV-Ye!9lUM`>* zWkFcqMNGXmJ9E-9XA1A*jxP3jwSRn=T)sj^MV3PNQ?t$auV}lti7E4rAl=2rr(Cb;9>fa9` z$sTSq`oSnn6Xpnc!fIiyuu<44>=85iW7ccWOSI=&{!HMH3x3#K2Y!T+GbBOs21=3oBpJbLh zDG`s8X6p=>{9v3EAy|m`8A~%(XW*Y7^M-}yA2wMZFWY5)E>_GIQg$Sn6iD~ZIG@^( z_}b9;A#02G*O%24*P0fu$zEl$W?99d@q%qjTo+_&Z;$wzs}sU4AunGww;8tyoggE~!?%uC5zdyS{^x!R5{Aoe-Pj;xVJW5ZiuwXJCcA zD&9hYg$U#gRre&mH!cUkPV1OBt0gY4&6*LHH`O{LZu}C~M9dhj__n|jzvqs4G}94? z!ut|qTOg&KB^h5im$IWZaGzzPd_#Q8tA-cwfFM`yh;OE6WDdy>} zwj=Hyi5{M#@#d%F#bfcRAc!vlITQOQ^mJNhxvVo?nE#eq+GBngoe-EHtMM5$%i-A+ z*neVl0td19#e`V%Y*%Vvm;56d64)sZPl)l1PO!~#x?cG);f(qt8uRKjr1#n0j=c(9>a}@euf}u0ZOn*6Ii1$$ zV~ze;gp6OY-~X`RC`ywO;wA}hV*-Wq&RM6qjAM8fge(*?Cdb*HkIh99cqRpnDt61)Qzr6mz`aCG$=XT+iXQVFh@-}7YP_RjR zAk{N!Xn_x<3|QK_JYOZMF*6-q@~ELnBLSKtf03wKhIYF#dN5vd+&!#9aQ0sklZNw1 zFoGBbr6q2hS6nrWMy6N1oop$Im;{AAi%Hj3m-8fW8VR1d7I17vTI4pw4#0?K- z14}U=ODM`1t(CMOEG|Zi+Zh%IE@OGy!s3Q#aevg}#FuzLz12uaf)QDkzlUXs*W!K( zi%Zbrh8csH5}{e%3@r{r#3#mqK!*|-1$=6kQKy6+wgdxVp1*V#+l&7uRN* zOsf%EU4=lFsj9}5vv_SDBJ5SBJ$no7rNx=19gFb}nO-Nv$8X7AO=4~8R8v)TU0IbK zp?D#F;vPhqOojDzRZ|;^YsyNRO^tht?WR3d)y-x0(jWl6o2u-U&8D&v)KF)tubzr5 zMTK?6L72kI#=_=WWVM%+)$B7B*A&*)V>St<*H+cknRYjuO3EsWr`9!BhjJD-?WwFU zDmJa#vTpq)s~A8io1VD#l7&kOR?QF03)t?x`sT*+ACf&1H3zI?Y-{l&ve=ZK^G6p-Q!wy;U`3Em@SKsCBd{L*;aQL@QFsHw4(m22 zdl@RPP0rf_7-^dmlSu^!+2W~4R^OeB-okQ#5f&;_15wesY{6ycK! zSYz=f#*Xx`0%OhE$qkKvt5tgf05c0ek^H2~|Q%nz99| zqAqu`P3sFwON)z4*`^J4^d}Flu1XhHSDE$|*6rB~al$(p1#Va^EY`(D;hw#kz$!9L ztX;ow*|JNPFhHS444fn0=gmvGNa}JLA3K-QHu^;QND9A%@DcgUNEB%Phtt2S3=1K@ z`R)$sA82W*%d37GapKfSOx`{XcGx1~ogMoM>g zSWu4g=Ez-T(4>=VGHOw#1(hf*BQa~9J5~nizA|Ql!X?RDvabyRx=OLa^8Cd!;$mf0U4~;`wNwDurIJ`JcpBn?}J%6$dG@-t*l>T5tn`N+>~29VPvf(K`&w)KMXb z4RX$f5QqbW)&Uv38^4M;v3?X#>2@ogi%=$UpUxYYVSS=54>${;5eBB;(4dq`ojx&H z8t3MJear0lI)VJ zM=PGujDvV}NJOO!eBv(1Ihrc~V4xoB@^p@-bf#7Pb+k|Y-6XFU*;yXmwjb+|!GjE6 zAsI3Pm{@?2vS76Ii4(lq?Ouv0+*I6DR$Es~Ga@F^8q>rgVNLz+%CbFd@M@_dXn4)V zTtaKAl=)L&PFmBaPUFj1iGAusNEgHMf{UdiB+L$64C#1;C8=B6r~y}8EZ&Ba2%k@# z=3kW6x}b*4X0jSna^v1I$QUNDg++x$JOs>$=%3Tb!#FTzv*AfE5FmGV1O{$lBKBA)u``q20y48CRyFTelC;FCzae>kGPyIz!VYkX;;xzo0h3 zSe(61t@nB@p!aJjSi57Tj&V*c!dO4&`79;)Nw$@rA!yEZ!75lnSI+kV{E84|ujfSkma{qm-+;ygRdr2SW`c zK=U^w&kW}8=n-rFfzg?Du7=FHROtsN5YCrhNR_?=^}lga^~wkQ4QVV2GsZzp&Z50- zPn9~Jt|BaX$0CyjH6gzRHK9NYYEpim8tUXAPifUIAEOBZABr#G z#y7*pK%j7*G=9No*mPljh!hRHV9X$iXuh|DNHJJujUFrxpB^J7j^(`t4GFRdJXY#7 z4i{2%!9}lFj?5OYb-_ePbR9I=?zrd3!8Mw3xe{N*!h7 z^R#(*2g8>#)Q%_Z6e=N?F|@S7Aj5pa7V)%39mEH0KHzIt)dCYm4_at`%_)t5yy0l~ zmyAQ44>3%#uNp_(!z)BwhIvGXh0&d@f7SFvX=Deml3oMZb$oafp-5^^sD7?K-Z@U4 z37fQZJ(jVH<)_Ed5NSICeN%aM94q3+3Dh0t*PYVqASU4v6WK3}CpPjSDyXy&yD}WV z8HZ@#$jf~l^m^T?bZdx{gmW`ehwyWA$wb14ng%(9#{1M`?Orc6FeHjYZ6Z>!mZ~cg z8EOA9nKO;v=s{wY+Qg{@GYaRnJI0G?X?z*-?qn=W4yO^2S#?TksFkBBGMcPEJ>wCt zc*nDzQMnRFC7R!IN^c><@D6%o3x}a;)G`+Pmecs{xs*W^@~Md%X{DipEGY58@#@?( zMkuJo#rC?IGU(7j^|-dWcn_1&X0KE7hVZ&OO^iVmUOwcw>4TDob0(=uBQ4&Gu35_U zNuPKx+RAK1VPLnVfp`G3pmZfat=m0uMv*=kpTw)qG1M*ZIHh+&^?#X$H`Xl1*Q_UL zOhF1-YLH|Byz+8d*ih_q4jOzubRJX3MU&JA@II$o%ygBnbMSFfoL|*Lv^XM^Hg&A8xe6#jzggd z%5khE5FJuyI`i zwqRZHKQTDa`)CaKU=;`NI zp_M;K;ur%=S@;rjDqCQYF$kgtS^4A%O=Q$Wyje(U?41~rOwgONCQ>Kzc-WA+tvg)! z02<1emgMa$Wn6xq`oX)e%hNPbT_-B76WQ#dOBD<*4Z+_`1cEeMa^$#<)Bhx)mO&_t zofJY1Leou{YVmC1B}|znKNz2g6A_aJ%R5bZ@0+OOJxQPni0<^qR3;tg%t?fE_M|~L zQ%&zXrT4*f8YAB{iKJt=6^ALzc2Hy!AH>1;wns`GkHWGecT58FL#Disq4PfGyGbaP z8xFJqJOsF48H$n(nm}H=&g*4uDFpNU6$ZjkM~fk7-~qs2fP=Y{qY8srSZ-=JG?s89 zAk_3_KbEN{tTCaTLY1sbDh z%YtE;o){j9b%YiRJSZPB5CPANU7(r*IN67Kobc^&%N@uzg0L zN6+uppCdJ!7Ab=zG`3mY+;|JauW=zz7hj#iwI;7P9vpx!p}k;ieU!njSyyGkKM-N! zo{82X8>8y~RNkm`y}UY?US7Suc7J_waSJaptUNSCn^?kmC4;ol4e8=TD2jUNY5pXN zp#NIa#p9s}Bil-PVawpY6ulY*>r-$TtqEZ$z8Bk9G$3eSWh&cP5r%}>b%ab)Wnpa{ zHb{!fN{9eL0d^-EYs%`1P1sQCQBxAd6m(;(-i-?r#m$ngh7e`Q5XPu19*s4(bx3U; z*mndgP%}(OqAi1Fo`aP{)_!6Wv0aNyMHyHe@W?xPB=yMDsgi_!ER$&owx8BD78h3| z9E=niW@gP0rtC>KO`kV+=G3`!OlvCZr8UJhCB=K{OzWC!>x%c)3X7_mOw(u1o0(}^ zUesJ!*;rOtWLms1(=^XIW9Gb|orJjB{G$`5sN+uQNALvWLD1d{-5=IvV*f_Ulh?6rJc@Uj} zYDsDMfXyx&GsFy@#85$5?8%qo*p0l07nvouXcZ&p+my5aHcG+UtL*Kb3|)|Mbb=L} z)iM8)aI&ECjPXNh3rWq+^ybA=3(s#p=C6-}wfP86ImavG<~^+#AL@sSrMxYn1lTEp zEr$J>*e});E6|@lV~IO7*5GroaRJE`unLI{z8ygG1Gmx9C}3-S$5aZ!*9C*+sZ5%9 zXiJ)e$Gw@bjIj9MXCk9=JH1=Xw|6L=6vAErn^WG+M6i`1m*Qib*B|0 zhMSf#Xt)j8^Jyl9BSF<8a_m&<2yVW)otbZTm5m~=tUh(Y4B8e8OCuJdJ>gL9X@q;? z>vIl4+SL; zL#yN~v#`Ms=lAmg$)-)l$yOwc`zs>ZTf%3$O*^JGVsaZjGyk{zDPp~in z+NaVECfm-zHXbJ)kqsKO>Wd6FH|fccDwKXs)3Ax(#%61^!C0zeaCerNu2p?y7IGvo zJbb{ zfFsI}cC%d`o%<#H6DCfZi3K^VuKGMM*dzv{tfw{`mH?)s4z_}k!L~UYS(Ta7qzNvt zZ`QPMrnxm+%$=tEK3lwO8kaB_BIL=dQBZ!mcu(+CLrc z4@;d0itoTq_5e&xGVUi6K5lfX9eg^Zo}C&Zrj53>@sS-&4EzKRw=0}~es<}T;po$U3V z`=>GX-5@_l0d4b|g#fH{PeU#yan#3mbh~Sd>r9Ph_M)mrXaF{ClQUc2;>=!DRkznP zMcV|0swJw^`2=_F+yylcl}*!iaw)G)Kd)}%TTDW447DlTc!urdj2#$u+DS;^uR*TJ%L1Befk-_Ns|VurK)e<} z75bRu=6|j=n@TFNM;}xHxgZ8%sl(!GTLU?sSZg5HGt3&u^Ng}WAdIsD56P-bw}Opw zlpK2G@<$#X7&wO65urFr((6_JF@0AVEyI|GplJ#$M%ic$6Kv-pLDGo}t{bg{m7OGr zF0vFJ1zW%8F)M@?eoXW;)bo^8IckN?T$wS0{^ilaye1mie8ctD;qL(G9+5fmX*60A=NHEz&^$PEMeo*gr^mAWLC z%@7;40_u4zA(T{)SrT%jN6M!ywCiU;Nyv9f3$P4Q*C#lvPeV6}lAoTzY`<&d!!zKF zHfS9qJsn(cXv!#`gv|?_&|&gvfv!m>q72B}3Mzg*L+h;og@=wkWxjbSuQjhPD> z`rJ%Vka<(MXNrqaIytE<8Y$i1fy9BCV(c8&ZP1^)-JtFcwx^^mi|>bt6RZ81vzdzo zymT(|nn%&5!{pi6(eg>7pg;a<94vy^4P!eD{nKW_KM(-ZW+});7Wp-vowEXqJqKrD zWZyq4aEa%US%IaVKhFxR@;o~W1O0_rfz=*)mU3zqN&!lZv((2D*;5pO8g>BHmASx9 z=_df6dM=;s<=xCGVC}kR76{C&0Dw^!+UWPQJo?=?pML*+3H^SUOTR1Ua9Z?*=K+D3 zyNWzvHkw5I9<~w6;;5+VMRz+;q}kMR&1CTDOuj4OS;~pATK>aq z*a&Gy7fUp@*Kp-*(Fn$&9iUTKQgJVyN1Zf3Nsr-??jpugN9>@Hz}kD;Y{qI7%j~I! zIjoW;^0C>XVZTrP@fzA(#>)&&KSc-dyuqR{Y$*41U(ZJ#sw9$J`OHzZ6-lqC3EX;@?19l zIpsZz=7OjHFc<9n=egkc&*p;9@w3?T?OgEr#(7}z`gzKo^Ozzd7x28QbSZEvovVvW z;K<4pADIVzF_}8CS%W;*!1h4@tD5yLrQ9}Gd=g+79?E_5)K8Wp>M#cuU*Opxa$ZLW zdy#xt--f~Z+Y}l+o>Ozh4}x{PueF4DOa5do#Nt*b$`t>p7eh4v2rm%s(1}RF@{F7( zM%uVqKx_!bmgvuoY=;=-pMxF@J^~O7cc6u22yU5C|j53TN{IBn5nnyXRbA0+r)LKn7Au-K2?EY znXOZt#{~?7N}Vt6;!xdgK3;VH1z0gmpg2a&^18{jrpfjyGHguFGMP9W^$u(<`2z1K z(A#PllNp}EWR@_eQXuaS?;2P-oOTJb5r znJ?{vF2Egg5vt_@ri%hEX}BP#JRI1Wg_j%-N3C zytng}_kYbtXPNyj4Ydog`Z|Xx$C^r9rM)o|#tHq6RAN@YYN+=rpAZZw#&_mGqCA{~ z>GPQ!2$+|1pcs2{pcwb%Kv(%7Cyr$R{J#uX$L#gL*E{*wTQ5Q)Z=8PJ&XTE~iUy}03$2P)|`E{OI9l-7(N2i*m zrjQh8GZp+dG34P=jsd)<(7va*64MgIB-u)N^VIrOTFK#Ed?hc)hlzQZio?-&SjQ1- zQ4_?mXx7*iuaw4OFqR#}gpBoA8nGTSlVy`}E`!)k?fz{ZBl5{mMfJQQW(6hnLtm>C z=V|1Ywo^SC#y&M-4DbctLyZge5%YiHBVVUR4fkH5^`C%4Qp}ZQkT<%Cbr8v_-{l9} z9i4w(yY+7S+2)kwv*z57{9GfJm*wlS?!RpjwQL8Q{(WlxMP7BnIH{9$NNDf&-)*!- z+sR$ecn6bnelc2e3431981k;;UUz*Qudjg@@$!G`Bi-!|_pU>Gm>q+BYtCa4Vi%^X zP;t;nm}*zN0Nm??p5k>pFBdOhk8VS9M*;Go!P9+`7V@Uaae0z(nP9Y>OyHDf2z4P%Cv=Ot@%c$bR#Vn zQWtRx4xW52p?L={n1txK51DN6hU|d|3IJw2pPSkjYA?zm7NXe=*0vj&!xI}qDCoh3 zVG+s``WsDs%OIy{DkP&F{7uxCw_dIm}(+Q~-6`2$*NgL)bqu?}mSE96(tnksn876l?am5TzAo;w!>qCCeJ z1)@E@i~uB(|9%mdcspiNjti2zwB*wxR0biM zfHmfHDIXo4jWF>)n!xc7_w)2&t;sB$3m1bA(a~JTUZZiIzOP4|B~M$-SeZ6qv8P^a$$xAYM?? zIUDsZ<}8ON4QtdGA}uX~DHka$>O1?n<7e+;Hui1+I0Rn^z*DK_y}( zqYgqNi}x1qsW7p9(W%unRduwP-sV%}zT&9~=&+}!a#5|s;u3o0k7?_HP4Ju&0J16g01}Z2;%kWBm z6)T)lC5vxb##*GbE~5x^8nUq3X{&uu?RW7CjIC^4psi8mqsu_443`pn>3E^ly2#av z7fr9tK(9i%?()Q5DlMW(>)U0T?HcO{<0EVf?Au^=riYv4m`hRKB9|gBV^|Dw*`;Pq zyp+)Z%_KyxU#^S3;Au+|+}LaiTY7E2G;c8wVHGU)*e``r-*_nu1_v)yesw8oF_$@& zn=Zx7r3GNp<}rdmJKaAsjx^EtGfP16W{iEzg`5Ggc-rY4>>vTpTZ|Nam+|XM#iy4m z-(D(qqal3dukVJCKUeZ{@vY^`sO4fGPZr5AuqczC zFv;XAkTP0i$c`<%3SYiHk zhnTR!d_#vgeuep#4sqWK^Ka>xllid@Y}cBf=zx{c{O1nwV!`}WhnOaqpXm@M3Fc=z z#HoV$XoqMO%*Q&!xq|tH4l!3SztllHO~*ULmsgl?>%fKVhG6|F$sRGx{O~O*zdcpg$Do7_`#qQ=h_zVjx zs}L!yBB3R06OdlNx^{mHUJBUpUO=!_8;W0BOq*DOwr~;F;cOFRlz{VkD1hx`;kglq zT1~~xs~I>IUp*;~IiKWKOq$y`syD{|1-RfZ2iG)lLy&0Nf5g7FjDyE>7(lD*JL zk0WyON_eO1M?$6FGFVNZ=<;OxN==T?rgHMi;8{E6Un|1$iUp|ldiacxBqOzy`H19d zkyozdY^MRKhgJrSlJW64@2ZYpPkVx0E2SG?4ksm)I|D&Blfx5@BUT=5rlS%PM&a?2 zi|3Ml&7WMV(z=G`Z({;B6^2Ec?}W$jW7<(ZI1t>v5|$1&>+=&I>cj8>q>oc6DXT;> zpi+&RFIWg-?kZ4JnZF9O@-b_QPr4H}6=?7@MMLaXtO^Qb5{?kQOhPJ`tzKRocdM8HBPX{*D~U>c7aKc#5$FPuJnF_B z@^TN2wAC<-W77z2nztGd0wW4+_Hd&xAMQ|lR!E0Izv@+9^__LhX1rKlM|sraYuIa+ z=d0DQ=HMsO6IFn{HT>jxk_)h%ho2nJ_yT;*2tNxw=>;$=+X`R~T2TNi^R@z5p7#|5 zmU-F>0xLW>7QkY3cLC;*Ckq1GJaPdn&+ilj3OxTTfEDR%L12W(um)D7(Q9Bunz9Cm z9p|kHZ17yRCa}@7bxmNCr*chTv&XRp%aI$_DEF+PcCb;xb{cY42jAhn?N#`@T5e)N z8ce|;TJ2NcUFlW-V^p481Fj54JTa5si>Vey zY+mh=%LxLT!C_?p0-{il*m*f+!AT@Ng5!}GikLf;Aclq_I7Ct?qId*B3=2hY2z-A` zFSK|q;Q`sJM>L5PF(MQ(*-R11p@{3&QK2J45p~lD;-XN*#SC?9f*M7|q z5S~^!D1=sBIjcikmufccR*t$H3o=bBxxRzN$sepyMqRFP;+LEyP4Z8y`)QL&N#==} zvhi}p+US17;rMFz8Vn7LR?;1CeuS;%XI;)%1}9aN%UDpP^I1$N>0gX!0+O_DYrzwX z0(H(I8ew-|&Xgv~%?uOaTAt^I%bC{qS{&Q|yX|uE89+lH)`uEA8|rr#;cGv8>Z)p* zO*wmN@?hNx%6ll8ngh}-y3p#xCqBhdInCr_mYsJ6w zcky#PX}^VJl;@GPx`)2D-9loNtdKZVrq0P`lsdjv{EB0)em#wOfS`U_5@hS!8vHvO z0<9uxBSd>84I@N8on<%;$BY@%^0b_`jwB?LgydUHlu#zE3pTR{9|ABx=`=n_vnP~B z&+2s&Ucb^_2e~fO3>9?MO`XE05`(tRB!e$lOxt58w_{=!^4OunP!}#Hp#)!GT4o%H zt-nDSQ!$#)1tfYlaL{K@$naRpY}UCT^N96)3P^M zhVQP)Eof7Yqq7te`{eaWZS6ESuBFfjPldKzGG zN1DA_`Q3UfM4ol(5nF;<#uz{Jkmu-ZsDQvRr}E-@TKXJwwjx%14n(>63fc^O-l=@J zUV4`5es4XhRsObKPYrb*8-zq-Hf~?pz}C2Ga-y`}g%u|mWc8iblROQEHA>zL`wI^E zi~rPP5gAmP3Tct+Y1lw^8{}t02yc6khnyR9JJT0>Ua!)=fwsrhJD}!-m9x&N`5Qd4 zfgMwZNkR zoL#iSBxnixo0JQv6;tSk{Gvj-33S7>jacWCDhDqhO&dappPdUHVN2Si8493ioo7}l z*@%-dv`zKvjVOYphMj1+W~0=hrQ#S3*PpoR2UvCzHrN>>wL190er+EdP(F3{R?REch6{g_orZ&=7|@hVy>ENG<9gx*-HxCf17&Z{_UmlfI-4w;DlLG9 zuV`Mxi}Dkj@`M*WpKZ#Ed{I8e!ryJmi+WLhm4%}==f%A!pJ3sn&3W-J%70_w{LOg@ zFUp^=@MW8o4V%SVI9kf?&Eg+J!Fxl&M|hCNp|+KpvzgIV`>qApB4@MsOen((q2MdQ zAUVm3Dqcy-p(XTvJLGKLED}9*BI$mxjhnjNB({axy283zfv+L4Fyfynz&l%NVP#ZU zR6yT068M~G68K8eBxp-XbR3pNIuoPwG&+CB=p4U={Iay~gg~m$tP;J|t0VFE&AO*< zDC18oEKuE8a&!_ziPufBUi^~IBfD<#Qgc(34TtPHoAZWfG z);=?)rSMNqR9(S44=UHjpU*@DJg!vl;@*R}7k;r`O66|D$8q?ap96yc4ZWHmW#CN5VR+ z%Jo~NX|Sw5Lo;CJR+{&CdJqGjI{W}%-AN4S@~xN&m0eqdoZ@G>YtH;K1QagC$_?8PkC~ySOczQrJ76=XBMph>U`Gai+xmqbO>qY;`aPD z1Y@DS=F9%A${)7DW=lSfIi8{00*mM;&$DzJ7Fqbo^&Hp+2nJ6D#Ir+N>}8~8~1 z&jm>_ktY^!L$@O7XEGwS@E0Fb*q*@Y73ME z_>BHrZ(?pJxF{4{CZE+R=1mIe1!{M^xFXK{xRXw}kgKA(sl$vJWdw-F!`l_{Z($jt4G+AUs;YhPr-9K77PmrE?LJrq;e*6<`rsOap>r?gbuUxtlY@ir-g$AJZ{g95G#H}Q2X+R11XbOK?$Q_1G7X%qxS-n#m znoH!@cVf$c7&DF?O%d6rkUX#Nq!1M7jz{W;)nENhaLub32-|RDvG04#PCjjiTsU^(=w51Uw0TqJHIAAv-t*lpVaege&&2F>%s1|CU0uDSWFOi2tdOR4DpdCqc9_2r?y* z*1=Rf4T8SiNf3t#BD8G}qz@M|q)|WBMhDkC&lFM@brni4IDu2h1cF%YEDFAT7XDc^ z^KMWDYI5kiYQYn@zjz||;@$W_5+s54B{eVA8NRHg5=oicwOc>7P6vRo_kOL{pU%$P z^>5#;9d=i)CZLQAe4v2=&|y48g}_-7KxmkRR}ywue(-mmJ`C2%zw_j?GbO~1OA02P z3mr73twZfoJNNB|lnE=Zz)8%eIfH8_m;Y3xw?+GU)NrRXob3`vguVuFa}nb7^~K^n z+KX}-3y~8CToi+!zAN4n6hHEJ1c9D6nnH!04W)Z}SeQPUcSL?bhYf8{%RK#2mi~{Q zNoR5Fg8=wsUeJTP03O^0P6ZVW=U)r>DeP+jXiGXdT_6qaP-GY)Lub%)2gysx1&j99 znCKqlXM)r&C#`uKi6Zc)!Yf9)#@aZAhf{M%EuuQ0I@J}icNx&^y|GAPq+}SIFThxL zGyfj_rlcn-mPBP?q5{2YV{z=p=h>^#xTE%Ys|G$L!`m+Z781`~X49 zD~Nr@j@FkI`=w_o2BEwtrLzd7Ck^kz2Zg;ka$9j;B%*AO+Pi?H{JY{L3o4Tw0&P|L zEjR&Te#-9VSW(%1NvX(4C0vAOS6+nNS%mtG2jMU9XH@-|UG+x{yp1z=Da!rDoz@<^ z^;Nrcmp$vC`C)oaFh6KF#zv=@8NxoP$HhKU)#d%+z>XuH13Tzk4F08<(YimC7#q$3 zZ#lCBVe>O~HLK*5x~QZx$KB~>l)Ry2z%##Oj=RwU%TS4%pzgC9BO=u2>Q4Ek2kn0I z1E7HUS$l6E(!759@VyTq3`+V0zVv`SLs?(a)2AvW^0g(P5^ils0XTF3>0!INu^gYw ze%Su9TfLz~eyrpyf0Ul7q7LK=RZumUvV#JEz61s6%A zV4i3>ebDn`Nwc-r-VzAprFv|ot=TWT2fFYD@Tj;hPeG|Ifj^Sttk>Gl2EUqKTFSqg z?%7+~XEKsP`4AcNCpDEB4#vt4hUxgEe6iJtJmT$v2mZ3!yFCQN(t@4i|M= zZ?s#7Tx)wH)_RlOcD-G^&VHNqW_zyn7CX2e)R<@fymvetcGjeINWR^7QV-ZqMs`vAy%|UTokP%53ZQ zBJ;n>uvrAq1VAbODmytHF$FzMrz7NJd)3VH?*7;JDlhF-&+Y9VDnGneO)HcCRfa}s z^%!E5f9~_yHpUf*H`?2uJK@{Ay8Y%x3;qVw@Ask<&qd|RXJu5JrQCM2Jx3`oC-AcX z?`X7~>1Z5KKBH2PE5cq!*Kr@lW!sSfx9v`QS1+Qdgv*dU(zB#Y%}!KSm8lOG(Qi?O z?RV&$-`RVKZUF05FD}c-i&V?YdkMX3(G|j8#8F9@-0!r@uTyFApUTwIa&@*{ou5em zkF!&;_m`;>iy3D(L_yE`on6^drk5cR`ks?zpazIRIe1o-fvkTo(_+}GAyPTaz(3D442^Do3^G7()b6?v-yVK@8;~R9glZ0K77*9G7Uslw(9vN)8L$5(?z@EbCGK zQ0`eH`+HfA3NbIZ|(AU%f}@uayc;S1>4Q72*k;1xjMf>d86ERlRcN3Vx~Jp>M3Lpi2QN z6ls;{A&OY1i_9|8oa!78wxyLTOZa2SXm)_DLB-M`j!!3DP;yWzy-C$xLOT-*#H@of9 zYj*SNcFa0v)ebV7-?9(5DaFfD-eGa?vh+T?dnj}5&`#G5G4X>qCFF}yRwweEE*f`e zMTXvrJBlFmeZ~<&A86XgeajqOZmP;5&;t6peF&gon51*ue(6@b1+!@XUHce|L)akR z=f~{dR6&B;^U^*j1nMVxvTPHQL?m_%^fEy%?1i8~=@t~JH0?tuLwR=}iY3~; zzc1-vUaI=zzQ&B%@fL`{mn^+Q73{=3DK+rVp2J3DyGwE?sD<@aA|ri*(fn>3mAU>>EMz z;2lNKCfd7ted@Lf-2QODE<}wM{xAMBvCr+VTVsN|REDXt%w7!3iYbr2g}rz!z7a#Q z)rF-jc6wIUJd-ISdn${mHJO&-ll-OR$%C)+bH5*4vSPwF{MkR`of<4Lhe}+(a1oWr z^AikSO}mRrvrLyDPz)YfiDzYTNu6me0ySl&d+P+auG76O$LVT{pbFYK0<^=m6Cjox zUG1~Mld`bQ6IG4lnWT&O%?Z^579UuEYpl52i@y1ppJb#=fXl@lQ%e9Nn*Il>o79IJJa<wos)55x@{QFF6iOTF?WYgsMR*+5Io7wUrO7U{x7s$zWqqewxw{(1tkVbO z?rLMbD;0rPfub_5I!my<3A}r&C2zHPvdi{PHBN@v-mb1vdaJXd=qK9tR&{ANuBoGc z)|mZ_uGU1CHHpzlaDk|ox8?NOV)o&^SkH}ZO@4Wg^lYH^_mj7O;G^7Z@G%>6Infu>Q1 zAn&0n+s*sCj{Bt>_Zx84gaZJLNoHh09h89-Y+&D`rbHRl{e6ZQz<8PFkGo-Lal-EM zL8RYsF>dqmCY7S5+_UJjGuTdBIKS_c=9r=hXkI_RJyhPIcaXgjBS0@ohBz>*qc zb4_rOQW7k&TWqfBRqAV~lsYPH-u~|6J>4il>ne^hev!q$Z1kzNE_O{HI=Sh@T{W*p zqn}C5X6rMo$U5qBJh#+w=0}fShu2Yc;@@iNNcsQ?q32yZk-~}#^2z+NOM2PGWGEUt z5?KbiWwS`M$0lpk)(*DL5vkxcpchK?cho)^u9Gs%0m?Wwn-Lpp~bPpYqPy z45}emwq6XDXdQK3o*A`y5m>C+zN&?0QiDtDfVx~)i*+AXus2R&_4n3F&%4Yo(qU*I z&c_~(si0v5d`~Ubjic&-Gs=^nt_24HTjd_gZkn*e4;%)%!Q9`}y3dA{bVgi^ z_ROyn3+i&|v7J9E>M*tS(OQg8gmfZR6gIIhPq8lu!^pOnosrhxHu9TGAT9ThH+F43 z-9Ca(4FeF|jZ3aDf6!G|N9%mz9d%SP9X=?t^KS}-ykJV|D=S5TUuM}upW`!J1n!QJ zU#lZ~@>i}T!4GOQ_ZVUyD@{M)uge?$SZSX4cvX!2_quL>&4k*CmPEM^z+_1{eGqrz zQK%imp5062peyjwRI&aH{<__#hrN2!gE>Ii^G_sP}&{|m!0^?KLm(^Qvn!S0% zn5Gf9cCXX=P(!ZuaD(;12HO>J1wPzCW%IPwKPTJkk)pKLV+r(ieL(F0x?b5{KhUn; z(Ex?&*7}nR1H=1os?R&;b>|?vg)+Az>)HC}@CP02@%n%yAFt2LN6D5@igI0j=Q38w zNA<{)@lw0R^HKfDY5mvL2jWj$S5FrX9&}#0Op)uGppsr!kL=1>RE)Bt2*sD$I2DpmY;19s5cCsNn_t0YHgqglkV+qd2tDkcj*1AaZYYK>Njr%59_g z2;4|XGD$zqkJJ3PS1ik=Ha7MzXjE6zFU*!0_VXLnlTGx|fG?Z*kjrxA;Kb9IM(_iq zZMRF!Zad|V5Cq7Is6G-cUPzM@+Zq#^Pk&dn>lt&8YYwiZL|!xQ|EqAB_qpiyLpY#V z(&?hW6myx&TI}0ON~-7F4=;_Dt2|c*}VK<glwz z$;qjw^D#D(a4n_d%%Q5bH-*xqAqXd@@)!R=jiuH?6Rl@c(;3>zPDzSVA8_~wls`22 z2O@@HFQCgJS2jfq7vgYr>TjBo1lu}Smwc$nFr01~ZEwO#q_GJJhS+w?vlh>d6ya<# z2x_W>S&jUdSy=#+Xrsl~iD}c^Hb7PSUfI(;K$mTR41V;C1=PfMMp8h15W{Vo;OgpS zI)I42ez}fxC8h&l8kfIs0$EuPeA;oHn7WS}1c+Ln^m#MXEf_aH zZEn3)&S-AAeZVWPZf-w{pS~WX`uw<=+SL=yjTw-E&2CuJaNpbCnnx;q z&A9Ka1-Fn6*>vWq;DifmnICNdtATXHhWnwpJkkOVFhAZRJ=&6i#I_@NmBp4EWm1bz z{ib!`tnHDOuCp*QSzB_@gp3hqa*&6<`$sydv>#V^?spBGkvF%%QKs0XBvE-pKB@zU z-PAv{_@#Y-+UM$%9&bSk#d^6ta6ju~{T@)NT@Ey#e-G#b4yG!Q@TChqpKIawc)s0& zdpzH6(eCkly9M8OWgxh)^SPED^&c(JZL!_(3%787(ZX)wY;0w>a5lCMzJ;@@)neY? z>X)iowOcrA*-MJKzEy2*{ql-di6Zbaz(YFR4_CAvkuzGQMx^d<<+pH-Z$&Z6(AJ>7 z6TBUB@GYDlwCcBT9&N=foDa1gw|&rh!7ZE*wGO(4b9@v4`7NA!1`KSvh4XN0upV~( zrhW@2bq&~2O>R3rK4Q=XpHXdY+z0CGu|%Qzs5V$CXlgaLxp5_|a(NrwQaKU-=xWh? zcj^5|rSX>w{7E;DXsI_fvM{qwP_0Td} z)m+=wbXJ}2IHO+Q1`*ut-r1Lwgv{QgH2hjD#w9Mp5C|k(3EP)622p-#nacv%+Lt;$ zc69$sZBd)hah|u@TE@xGwRw}3BW+%Y4)Y2Z!Qpz+@x#+keAJdOPX2ov#jkP^PW~R- z64%KnRM_Q-air(Ug2Q$xE^>^OhdG>h9p+G9kAzXGY!`#;MU>gWxC*FtyREl43VM<* z1~%s3IJzP4V2Jyb!*+|qAV|M)IF!u}T*u5}izxP}Tbo3xXo|6N*rD&wizx|g@5`qyIY1x5 zCFMuk2-N*pvaTk_qpuvg;|e}gsr;b7afck7wqZNleE%9AZgI0CEbIyoe42}Po$>Xk zIM0lB3Sy_yBrj~oB1zvpRYvOxQ{`RlEcZFf>~modVL>=u@e)Jd>AI&K+lhj9#*tN_ zA9CbwqslGogc$U_ zl_7Ay2z1aI!eZuy%|HvN7W!@pj&e8-;tAo>7N38#{tJ4h`Kl4Ul1Sn~nucLo4o0=9cZhysS(ATWO7X2&bugDfyy55y7( z6mPg)Py!)DWT%3|y2VG8`PA#Krla%xgWarr<=B5E+wQ~YJikWn=%F(QDnp@qlS8dnsww~Ns4ARU(D{VPl&iup zOon1gpO~FO)P9^O+UX;%AS7b05~m4D>{X%(R2p>^IS0%m(tQl7kacq6RkVzpc(rnp z)kaw=!;1;;F-GYtE-a%=F9TR{{5(g04!@(}1rt7pFD&bbURJ|Z%4b)BbAel^Rh<3A zzg?IQu)G~(F9aWY^##oyd$k5$dw|#B7atrfbBOoRVB=l7Fxhgo9(9OC{j4ydi?q1x zaRtF27z7@4vl+ttS=cvU`w8b5ePs0EWr*>cb1D6=QT!0&G{~d3cyJCjkHIkHYpG1U z2C2+hM=y##tA~O#uGgGz20^3`f?(vdu%g0TP0n*SG!VP6QO{*dD^;rtbOa4L-u~e6 zbxpG8Fi7R9YiMLJfsXsKrS*okBfULvKEs{a(i(&Meq{f#Yw{vB} z8bKFyOPf*AM#GX-wzUTF;zK@E>H`*TtbCXTv)@vUYojr*vUP~JkE9<~ii#=X|IYb? T|5c6uS2g}$)%gEE)%gDb`|RXN literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/DDT.COM b/Images/Source/hd0/s1/u0/DDT.COM new file mode 100644 index 0000000000000000000000000000000000000000..83f8603f93e61057d63c994de083a1fd83e29781 GIT binary patch literal 4864 zcmcInYj7Lab-ue;EOvo?0HF0Cr<8U9)V4sIkvR?}u_8r0C;>8GCMk)MBQv%usdgI6 ziZc;Ki4ZB%ku=GSAt=tH<4J5Kc3mqi?aDTqsA0%mgXHeal}ozRICSkPq5(1rrWvy` z*|<)YJ$FIMlbQbLpDwv~?|IzsoO{l>4^aOs>y1>bqjP^(a#x~9xjVK=xo_Ln&G#tr z28U1#S)7B#N$26-j=RzrLMLvbRVK~Ip1bV;;|D=s4kRhOz+!(=2S%Y zzhNGtJSl%gQ17K?CJK)N<1FPlS#)Uw)Qwc|#?irbM`xd*sz&@3`s370ExIXr0i~{Q zgP|VY@KnvQ@SzPQ$+yDtAtd=%#eZdskAS!WScdw9O+OCw9X9>fHvJW#*Vy!vHvLtg z*RDc5WwVZMDCy6z2qC@0p@*E|r$J={s4Skq&#?=JrA%A=v~|z4B~DwX&5+ZOM7#z` zZfFerZPpUa^-la}$lQh`Mjc@5m7u7#BFPE;;~*!ZCs2@R>Ak37fVC9k`ew`h{^X~Y z_kA74exGgB);mk>!JQ|ZjDZIcP{z7->xx@RyRNv|D1`^u(#bJx6a@#yrfX_yMD1lH z8Z0yC8(^!(G!q3YoZ2tYj1hDK;rsn^@{33xCPfXnAI@PbS zIJ?Tl3&>(X*&rPUbS!4P(SUjQPO=hRbvy`|e@<0d3ZNWUJ6VZaMZ^~&7S+@uIKQwo zZd8SR=y)*TTMbaN)2cO_op`(LicfvT>1%NkyD3WVq$Ia`&89LG?xgUyk^Uehv1-xg zy=LK1NBj>bJR{P=X+o z2fa~7T5I#YbeXxtf{okOYi(IQeZpeqgY=|x7j{wj2k3RsDZXn_stefPZ3T zu2vVs8KSy04kN-6nk$6`bn^Lu7iP0`xB`7@%%p+=0U6tiE{mO?rY9YibN*d=lAero z=xflf;>R*Plj*yzHQ&_%)!JWNB|yqD?ZAR^S)?Te=z-!^P&Tl`akfK^vb-%Njif*W z3Lq)67ORcXQa53D5?(C=mrmh1dJtY)6GVoJ(6&GYYVe}0dCZ|MF9#&FT|4I3UgstH z`u808hpg7@RJ|ybHJ@>O5o!bY_$3wqS5fd^IPj0@eQJx7@}V*Fj|?oUmmHFN%)Cju zKXpj#n0bwKvyS4p)oi}WSVQK^%s_GKI%9s9X*ARDo&tK@+zqYE+`(L@&HG8SiMj4D ztANRA9w&%88r5wqk8ja1Ntoh~7`2`SN(bj5!!{e{2c#5(`C+$1{}m(c{=D0@(gpo0 zmY5=_a-;bqV>#v@VXiyRp6#&VLk<8TfFXx;4-5hv6{@go0U~SjK4G9@^&c>*^tl9v zkqmXHzjG2GJ;#uB@F(NIE*>LJo&amGqHKddrWZ*R7y9t??5gOMRT0kI<~>@5g$aCv z7#%2!NIG_ao21%Sl8U!FU|r+$EIvTNDu?>hYn*m9BA2{w<6U3avf~@Zjhm%gpMExZ z?Y-+Cd{q41k`)NoHR!k{sVLo@iPkuLdt-@Rov}n~Z%?ANtEERtwDu^mwwTi06N7I= ziAN$zSELJGID5KcN>^)4Y47M%Vx38)qbsTO!W(H%D&5hfl57XuJ;2}7qeNoB2LrK4 zYwPZ|PNg*-0nCWf3TC_EZR^+z@;JO;Yflu$M*$}ScoD#jfbCAe>r&#eE~Ra6Qfci4 z8$FTUWP3086eoDS@mR0Y)!n0XcJEU16pjvbB4hBg+dE&3%^e~s1O74^40`iCBU%A-34{a!&&3;JO}-zXS2 z0=wlKIznL<1zu&NnZIHq>wsS&C_~08r5Xp1*HY#uxc{(WMTt0EpKJP50s{4}RN&KlH%yX0g{J z^OrqV)$CS@6&5XJd97sR4?y0J_WRsCaE_@F#k{P?Kvm#8w(C&Mi9MnSV!UB{nC^P|rnZ9*>`AtVHQwC)tDgPeTmk$CkW9N(e|PD26Ins@S+ zs8#TyxtWLCjeaLDF;=bi0Iwb*>QEsM@MU$q0hIRGN)Pb$c1|K(dE#!z@t}T?3`rGF zTZ!=?`LvWjy>P)f3z0qbHzflP^Zx=>Y!sk4p%2xO7NBeXlwYZi0{)82S|+|d!JBzL z??Y5&0g4H(eV5pLR@>?J4Iyc$ssdcn-sADNczvA5Ux)IAF&{N(d46BMfbVqo!Mh0W zLT=h6NPV+u@QZz|_hChvbz*ExOxVdV63Kh#{EW%Dh0cu#%Wm0qPKH zuDk;C5a6qBNQ1=|@WoYiyQT*75Y!R(sGf5-E!VZmE3x{>y@EOTCd|187C(-Q`m>y! zEN#(ED2t^$NWCJCnVcuch}vgvy_{|lCYvJ#S|zTykQTCFdj)c$-*V3G_ms_BG+DSe zgd>qA3wL{d5;-ympEv!0?woe%-5%}n6;1U``8aS3m=b58K1p{j*YFT3o;JVZS&RDA zAyk=y6ush6A42zM^}qEZT zBRoYJFL@SmKbNgr=doy)yg&(%%s9R|Wj6V2jA`|CNFy`u56I)-V)6Mb<^ulP>nIMV0O9 z6**M`6E_6d*@cbzl2D|K>#RB^!ror_@Y-eds$6M6p2!w&q#y<)<253_B|vD5#imAJ zEohA*q?GKJ2KI|kw+7UbeRkvuP&xStCfILzW)F*SC2b{zq}wfiR$83Pk$wG}A}j~k z>ERAozfAV;QLzTLWnkXkgh$0i7`Sl7ylneI*3PI%q!Tj>M(jXaOEMCTC%QYAKKa9c zTa=4)I3co7?8YrP^YS&YoEPB;+_pf@!o}Pifwq| zEU@x2n--hG5G1nRVWy8tc!w#&>WWTsMfwN9axJDP~RCW z;3p+DDL<{gAgvs-|0MmpMBXv!KP5)K6aIqmR|(%cWPDB1Hp%!`lDQcYWe0AJ2m+(^_#%d_+;nN zzb4;bS5uc9__u4Q_p9+0j0lOeb@j)X?M8Qz;oBzfgboC&4VBNw;? zv?K9QNJ(%E#~}tOBMKMwW*9XT4>9KgFgTRX#JLEk(q5l8!bLeQok@m9(iwk3iBcd; z@}W$E%OtrFcYzu9Cw!svsuId174Y@{@_=e+gbEEa8IJaPX(kilRW5>Fv!54HbA~9K z52#=zlte)IluSV7L+J}%+8+s>8-huteKf}?h)awlP?|yMkqFI20$fsQMu=mgQSJh- zpb->Gk3dv1kwD0g(kK*4hBAoDg!~EBr_!o&p36iN0bccki6~DqO8VS6FO9rjAH#$~ zX$qlXZ(8MOE=r@g$_*iimzP(#5Ti0_h%(R6G!thij`262_XWH|YA6lyPn`D-2OtuR siiRnGJ9j2YdC!CK5tx|QJItJO?%A^^l<}f;h>LjrkQoKk|39Dq0ndrudjJ3c literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/DDTZ.COM b/Images/Source/hd0/s1/u0/DDTZ.COM new file mode 100644 index 0000000000000000000000000000000000000000..e30a34c0c31b568fb7d3e9ece2d375524b8905b6 GIT binary patch literal 7424 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 VA`-*10cn8gmj)aQKKRAX{|4B&cRm0B literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/DDTZ.DOC b/Images/Source/hd0/s1/u0/DDTZ.DOC new file mode 100644 index 00000000..e4470528 --- /dev/null +++ b/Images/Source/hd0/s1/u0/DDTZ.DOC @@ -0,0 +1,564 @@ + + DDTZ v2.7 + by C.B. Falconer + edited by George A. Havach + +Introduction: +============ +DDTZ v2.7 is a complete replacement for DDT, Digital Research's +famous Dynamic Debugging Tool, with improved functionality, bug +extermination, and full Z80 support. In general, DDTZ is fully +compatible with the original utility, but it has extra and +extended commands and many fewer quirks. All Z80-specific +instructions can be (dis)assembled, though in Intel rather then +Zilog format. Furthermore, DDTZ will correctly trace ('T' and 'U' +commands) both 8080 and Z80 instructions, depending on which CPU +is operating. On startup, the program announces which CPU it is +running on. + +DDTZ v2.7 now handles the 64180 added opcodes. It does NOT test +for a 64180 CPU, since this cannot be done without executing +illegal Z80 instructions, which in turn will crash some +simulators. However v2.7 does not execute any 64180 instructions +internally, only in the subject program. + +This issue supplies the "M" version assembled, to avoid errors +when switching between MSDOS and CPM systems. The command table +is updated accordingly. Most CPM users are also MSDOS users, but +not vice-versa. + +The program is invoked by typing + + ddtz +or + ddtz [d:]filespec + +In the second form, DDTZ will load the specified file into +memory starting at 0100H, unless it's a .HEX file that sets its +own load address. Besides reporting the NEXT free address and +the PC (program counter) after a successful load, DDTZ also shows +the number of memory pages needed for a SAVE. Instead of having +to write all this down, just use the 'X' command at any time to +redisplay these three values for the current application. + +NOTE: loading more code above the NEXT pointer revises these + values. + +As in DDT, when a program is loaded above the area holding the +'A' and 'U' (and now 'W') command code, these commands are +disabled, and the extra memory is released to the user. Thus, +DDTZ can occupy as little as 3K total memory space. Unlike DDT, +however, DDTZ will not overwrite itself or the system on program +loads (except .HEX files). + +At initialization, the stack pointer (SP) points to a return to +DDTZ, just like for the CCP. Thus, programs that normally return +to the CCP will be returned to DDTZ. The 'B' command +reinitializes this condition. + + +The intercept vector copies the BDOS version number, etc., so +an object program does not know that DDTZ is running (except +for BIOS-BDOS vector size). Thus, programs that check the version +number should execute correctly under DDTZ. + +All input parameters can now be entered in any of three formats: + + (1) hexadecimal (as in DDT), + (2) decimal, by adding a leading '#' character, + (3) ASCII, by enclosing between either single or double + quotes; either one or two characters are allowed. + +Leading blanks in command lines and parameters are absorbed. +Either a comma or a (single) space is a valid delimiter. +Either uppercase or lowercase input is accepted. + +The default command (for anything not otherwise recognizable) +is 'H'. This allows convenient calculation, along with the other +features described below. So, to convert a number, just enter +it! + +As in DDT, the prompt character is '-', and the only error +message is the query ('?'), which generally kicks you back to +command mode. + +New Commands (Over DDT): +======================= + +NOTE: letters in parenthesis, e.g. "(U)", show the equivalent + command for DDTZM version (compatible with MSDOS debug). + + @ Sets or shows (with no parameter) the internally stored + "base" value. Also used with the 'S' and 'D' commands as + an optional parameter (though without the '@') to display + memory from an arbitrary base marker (offset). When set to + zero (the default), it does not affect any screen displays. + + B B)egin: resets the USER stack pointer to its initial value, + such that any program that exits by an RET will return to + DDTZ. DDTZ provides a default stack space of + approximately 24 bytes for user programs. + + C C)ompare first_address,last_address,against_address: shows + all the byte differences between two memory areas, in the + format + + XXXX aa YYYY bb + + where XXXX and YYYY are the comparative memory addresses, + and aa and bb are the corresponding byte values. Can be + used to verify the identity of two files by first + loading them into different memory areas with the 'R' + command (see below). + + + W Write: stores the modified memory area to disk under the + (K) filename specified by the 'I' command, overwriting the + original file from which it was loaded (the user is queried + before doing so). By default, the image of memory from + 0100H through the "NEXT" value -1 is saved. "K first_addr, + last_address" overrides this and allows writing ANY memory + area to a file. Almost a necessity for CPM 3.0 (no SAVE!). + K)eep on DDTZ + + X eXamine: redisplays the "NEXT PC SAVE" report at any time. + (Q) Q)uery size on DDTZ. + + S S)earch first_address, last_addr, value: searches the + (W) specified memory area for the value (a 16-bit word, not a + byte) and shows the locations of all such. Very useful for + finding CALL's or JMP's to a particular address, etc. + W)here on DDTZ + + Y Y)our_option parm1,parm2,address: executes an arbitrary + routine at the specified address, with the BC and DE + registers set to parm1 and parm2, respectively. + + Z Displays (but does not alter) the Z80's alternate register + set, including the index registers (disabled if running on + an 8080). On Z80's, automatically included as the last + part of the display by the 'X' command. + + +Based (Offset) Displays: +======================= + +The 'D' and 'E' commands can use a stored base value (offset), +as set by the '@' command. The current @ value may be +overridden for a single execution of these commands by adding the +base as an extra parameter in the command line. The effect is +to add this value to the first/last address and display +accordingly. The address listing on the left becomes XXXX:YYYY, +where XXXX is the offset address and YYYY is the actual memory +address being displayed. For example, if you have a data area +located at 42B7H and wish to preserve easy access, just enter +"@42b7". Now, "d0,3f" will dump memory starting at 4237H. + + +Further Changes from DDT: +======================== + + A A)ssemble now accepts the full Z80 as well as 8080 + instruction set, although it expects them in Intel rather + than Zilog format (see notes below under the 'L' + command). When in doubt, see the mnemnonic list below. + + D D)isplay or D)ump will accept an optional third parameter + to set the base value for a single execution only. Format + has been cleaned up. + + H H)ex_arithmetic on two values also shows their + difference in decimal. With only one value, converts to + hexadecimal, decimal, and ASCII (low-order byte only). + + + N N)ame now allows drive specification (d:...) and sets up + (I) the complete command line, including both FCB's (at + addresses 005CH and 006CH). The tail (stored at 0081H up) + is NOT upshifted. + I)nput on DDTZ + + U U)nassemble now displays the raw hexcode, especially handy + (L) when examining non-code areas. Intel (8080 style) mnemonics + are used, so some disassembled instructions may look + strange. E.g., the Z80's 'IN B,(C)' and 'OUT (C),B' become + 'INP B' and 'OUTP B', respectively; 'LD (nnnn),BC' becomes + 'SBCD nnnn', 'ADD IX, BC' becomes 'DADX B', and 'JP (IX)' + becomes 'PCIX'. + L)ist on DDTZ + + L L)oad now permits loading a file into memory with an + (R) offset, which is added to the default load address of + 0100H. When reading in a .HEX file with a preset bias, + the 'R' command will not transfer control to an invalid + execution point. Another execution of the 'R' command will + reread the input file, e.g.: + + n blah + l + ...modify the code and generally mess about... + l + + The original file is reloaded, and the modifications are + removed. + R)ead on DDTZ + + E E)nter, like D)isplay, now accepts an optional second + (S) parameter to set the base value for a single execution + only. + S)ubstitute or S)et on DDTZ + + T T)rap/trace on termination now shows the complete CPU + state. Traps and traces no longer lock up when a user RST + 7 instruction is executed. Tracing of BDOS/BIOS calls is + heavily trun cated, avoiding clutter and preventing system + crashes. + +NOTE: Most of the UNDOCUMENTED Z80 op-codes are handled. Others + can crash the system. + + R R)egisters also shows what two-byte values the HL and SP + (X) registers are actually pointing to. On Z80's, displays the + alternate register set. + eX)amine on DDTZ + +NOTE: Any use of the 'W' or 'L' command resets the system DMA + transfer address to the standard default value of 0080H. + + +; This is the output of DDTZ when disassembling OPTYPE.TRY +NOP LDA 06A4 MOV M,H +LXI B,06A4 DCX SP MOV M,L +STAX B INR A HLT +INX B DCR A MOV M,A +INR B MVI A,20 MOV A,B +DCR B CMC MOV A,C +MVI B,20 MOV B,B MOV A,D +RLC MOV B,C MOV A,E +EXAF MOV B,D MOV A,H +DAD B MOV B,E MOV A,L +LDAX B MOV B,H MOV A,M +DCX B MOV B,L MOV A,A +INR C MOV B,M ADD B +DCR C MOV B,A ADD C +MVI C,20 MOV C,B ADD D +RRC MOV C,C ADD E +DJNZ 0134 MOV C,D ADD H +LXI D,06A4 MOV C,E ADD L +STAX D MOV C,H ADD M +INX D MOV C,L ADD A +INR D MOV C,M ADC B +DCR D MOV C,A ADC C +MVI D,20 MOV D,B ADC D +RAL MOV D,C ADC E +JR 0134 MOV D,D ADC H +DAD D MOV D,E ADC L +LDAX D MOV D,H ADC M +DCX D MOV D,L ADC A +INR E MOV D,M SUB B +DCR E MOV D,A SUB C +MVI E,20 MOV E,B SUB D +RAR MOV E,C SUB E +JRNZ 0134 MOV E,D SUB H +LXI H,06A4 MOV E,E SUB L +SHLD 06A4 MOV E,H SUB M +INX H MOV E,L SUB A +INR H MOV E,M SBB B +DCR H MOV E,A SBB C +MVI H,20 MOV H,B SBB D +DAA MOV H,C SBB E +JRZ 0134 MOV H,D SBB H +DAD H MOV H,E SBB L +LHLD 06A4 MOV H,H SBB M +DCX H MOV H,L SBB A +INR L MOV H,M ANA B +DCR L MOV H,A ANA C +MVI L,20 MOV L,B ANA D +CMA MOV L,C ANA E +JRNC 0134 MOV L,D ANA H +LXI SP,06A4 MOV L,E ANA L +STA 06A4 MOV L,H ANA M +INX SP MOV L,L ANA A +INR M MOV L,M XRA B +DCR M MOV L,A XRA C +MVI M,20 MOV M,B XRA D +STC MOV M,C XRA E +JRC 0134 MOV M,D XRA H +DAD SP MOV M,E XRA L + + +XRA M JPE 06A4 SLAR M +XRA A XCHG SLAR A +ORA B CPE 06A4 SRAR B +ORA C XRI 20 SRAR C +ORA D RST 5 SRAR D +ORA E RP SRAR E +ORA H POP PSW SRAR H +ORA L JP 06A4 SRAR L +ORA M DI SRAR M +ORA A CP 06A4 SRAR A +CMP B PUSH PSW SLLR B +CMP C ORI 20 SLLR C +CMP D RST 6 SLLR D +CMP E RM SLLR E +CMP H SPHL SLLR H +CMP L JM 06A4 SLLR L +CMP M EI SLLR M +CMP A CM 06A4 SLLR A +RNZ CPI 20 SRLR B +POP B RST 7 SRLR C +JNZ 06A4 RLCR B SRLR D +JMP 06A4 RLCR C SRLR E +CNZ 06A4 RLCR D SRLR H +PUSH B RLCR E SRLR L +ADI 20 RLCR H SRLR M +RST 0 RLCR L SRLR A +RZ RLCR M BIT 0,B +RET RLCR A BIT 0,C +JZ 06A4 RRCR B BIT 0,D +CZ 06A4 RRCR C BIT 0,E +CALL 06A4 RRCR D BIT 0,H +ACI 20 RRCR E BIT 0,L +RST 1 RRCR H BIT 0,M +RNC RRCR L BIT 0,A +POP D RRCR M BIT 1,B +JNC 06A4 RRCR A BIT 1,C +OUT 20 RALR B BIT 1,D +CNC 06A4 RALR C BIT 1,E +PUSH D RALR D BIT 1,H +SUI 20 RALR E BIT 1,L +RST 2 RALR H BIT 1,M +RC RALR L BIT 1,A +EXX RALR M BIT 2,B +JC 06A4 RALR A BIT 2,C +IN 20 RARR B BIT 2,D +CC 06A4 RARR C BIT 2,E +SBI 20 RARR D BIT 2,H +RST 3 RARR E BIT 2,L +RPO RARR H BIT 2,M +POP H RARR L BIT 2,A +JPO 06A4 RARR M BIT 3,B +XTHL RARR A BIT 3,C +CPO 06A4 SLAR B BIT 3,D +PUSH H SLAR C BIT 3,E +ANI 20 SLAR D BIT 3,H +RST 4 SLAR E BIT 3,L +RPE SLAR H BIT 3,M +PCHL SLAR L BIT 3,A + + +BIT 4,B RES 3,D SET 2,H +BIT 4,C RES 3,E SET 2,L +BIT 4,D RES 3,H SET 2,M +BIT 4,E RES 3,L SET 2,A +BIT 4,H RES 3,M SET 3,B +BIT 4,L RES 3,A SET 3,C +BIT 4,M RES 4,B SET 3,D +BIT 4,A RES 4,C SET 3,E +BIT 5,B RES 4,D SET 3,H +BIT 5,C RES 4,E SET 3,L +BIT 5,D RES 4,H SET 3,M +BIT 5,E RES 4,L SET 3,A +BIT 5,H RES 4,M SET 4,B +BIT 5,L RES 4,A SET 4,C +BIT 5,M RES 5,B SET 4,D +BIT 5,A RES 5,C SET 4,E +BIT 6,B RES 5,D SET 4,H +BIT 6,C RES 5,E SET 4,L +BIT 6,D RES 5,H SET 4,M +BIT 6,E RES 5,L SET 4,A +BIT 6,H RES 5,M SET 5,B +BIT 6,L RES 5,A SET 5,C +BIT 6,M RES 6,B SET 5,D +BIT 6,A RES 6,C SET 5,E +BIT 7,B RES 6,D SET 5,H +BIT 7,C RES 6,E SET 5,L +BIT 7,D RES 6,H SET 5,M +BIT 7,E RES 6,L SET 5,A +BIT 7,H RES 6,M SET 6,B +BIT 7,L RES 6,A SET 6,C +BIT 7,M RES 7,B SET 6,D +BIT 7,A RES 7,C SET 6,E +RES 0,B RES 7,D SET 6,H +RES 0,C RES 7,E SET 6,L +RES 0,D RES 7,H SET 6,M +RES 0,E RES 7,L SET 6,A +RES 0,H RES 7,M SET 7,B +RES 0,L RES 7,A SET 7,C +RES 0,M SET 0,B SET 7,D +RES 0,A SET 0,C SET 7,E +RES 1,B SET 0,D SET 7,H +RES 1,C SET 0,E SET 7,L +RES 1,D SET 0,H SET 7,M +RES 1,E SET 0,L SET 7,A +RES 1,H SET 0,M DADX B +RES 1,L SET 0,A DADX D +RES 1,M SET 1,B LXI X,06A4 +RES 1,A SET 1,C SIXD 06A4 +RES 2,B SET 1,D INX X +RES 2,C SET 1,E DADX X +RES 2,D SET 1,H LIXD 06A4 +RES 2,E SET 1,L DCX X +RES 2,H SET 1,M INR [X+05] +RES 2,L SET 1,A DCR [X+05] +RES 2,M SET 2,B MVI [X+05],20 +RES 2,A SET 2,C DADX SP +RES 3,B SET 2,D MOV B,[X+05] +RES 3,C SET 2,E MOV C,[X+05] + + +MOV D,[X+05] DSBC B DADY B +MOV E,[X+05] SBCD 06A4 DADY D +MOV H,[X+05] NEG LXI Y,06A4 +MOV L,[X+05] RETN SIYD 06A4 +MOV [X+05],B IM0 INX Y +MOV [X+05],C LDIA DADY Y +MOV [X+05],D INP C LIYD 06A4 +MOV [X+05],E OUTP C DCX Y +MOV [X+05],H DADC B INR [Y+05] +MOV [X+05],L LBCD 06A4 DCR [Y+05] +MOV [X+05],A RETI MVI [Y+05],2 +MOV A,[X+05] LDRA DADY SP +ADD [X+05] INP D MOV B,[Y+05] +ADC [X+05] OUTP D MOV C,[Y+05] +SUB [X+05] DSBC D MOV D,[Y+05] +SBB [X+05] SDED 06A4 MOV E,[Y+05] +ANA [X+05] IM1 MOV H,[Y+05] +XRA [X+05] LDAI MOV L,[Y+05] +ORA [X+05] INP E MOV [Y+05],B +CMP [X+05] OUTP E MOV [Y+05],C +POP X DADC D MOV [Y+05],D +XTIX LDED 06A4 MOV [Y+05],E +PUSH X IM2 MOV [Y+05],H +PCIX LDAR MOV [Y+05],L +SPIX INP H MOV [Y+05],A +RLCR [X+05] OUTP H MOV A,[Y+05] +RRCR [X+05] DSBC H ADD [Y+05] +RALR [X+05] shld 06A4 ADC [Y+05] +RARR [X+05] RRD SUB [Y+05] +SLAR [X+05] INP L SBB [Y+05] +SRAR [X+05] OUTP L ANA [Y+05] +SRLR [X+05] DADC H XRA [Y+05] +BIT 0,[X+05] lhld 06A4 ORA [Y+05] +BIT 1,[X+05] RLD CMP [Y+05] +BIT 2,[X+05] INP M POP Y +BIT 3,[X+05] OUTP M XTIY +BIT 4,[X+05] DSBC SP PUSH Y +BIT 5,[X+05] SSPD 06A4 PCIY +BIT 6,[X+05] INP A SPIY +BIT 7,[X+05] OUTP A RLCR [Y+05] +RES 0,[X+05] DADC SP RRCR [Y+05] +RES 1,[X+05] LSPD 06A4 RALR [Y+05] +RES 2,[X+05] LDI RARR [Y+05] +RES 3,[X+05] CCI SLAR [Y+05] +RES 4,[X+05] INI SRAR [Y+05] +RES 5,[X+05] OTI SRLR [Y+05] +RES 6,[X+05] LDD BIT 0,[Y+05] +RES 7,[X+05] CCD BIT 1,[Y+05] +SET 0,[X+05] IND BIT 2,[Y+05] +SET 1,[X+05] OTD BIT 3,[Y+05] +SET 2,[X+05] LDIR BIT 4,[Y+05] +SET 3,[X+05] CCIR BIT 5,[Y+05] +SET 4,[X+05] INIR BIT 6,[Y+05] +SET 5,[X+05] OTIR BIT 7,[Y+05] +SET 6,[X+05] LDDR RES 0,[Y+05] +SET 7,[X+05] CCDR RES 1,[Y+05] +INP B INDR RES 2,[Y+05] +OUTP B OTDR RES 3,[Y+05] + + +RES 4,[Y+05] SET 0,[Y+05] SET 4,[Y+05] +RES 5,[Y+05] SET 1,[Y+05] SET 5,[Y+05] +RES 6,[Y+05] SET 2,[Y+05] SET 6,[Y+05] +RES 7,[Y+05] SET 3,[Y+05] SET 7,[Y+05] + +; These are the result of disassembling 64180OPS.TRY +; These opcodes are available ONLY on the 64180 CPU +; DDTZ will both assemble and disassemble these. +IN0 B,20 TST E MLT B +OUT0 20,B IN0 H,20 MLT D +TST B OUT0 20,H TSTI 20 +IN0 C,20 TST H MLT H +OUT0 20,C IN0 L,20 TSIO 20 +TST C OUT0 20,L SLP +IN0 D,20 TST L MLT SP +OUT0 20,D TST M OTIM +TST D IN0 A,20 OTDM +IN0 E,20 OUT0 20,A OIMR +OUT0 20,E TST A ODMR + +; The following are UNDOCUMENTED z80 opcodes from XTDOPS.TRY. +; DDTZ will disassemble these, but will not assemble them. +; They use xh/xl (or yh/yl) as separate byte registers. +; Use these at your own risk. +INRX H ACXR H MOVY H,B +DCRX H ACXR L MOVY H,C +MVIX H,20 SUXR H MOVY H,D +INRX L SUXR L MOVY H,E +DCRX L SBXR H MOVY H,A +MVIX L,20 SBXR L MOVY L,B +MOVX B,H NDXR H MOVY L,C +MOVX B,L NDXR L MOVY L,D +MOVX C,H XRXR H MOVY L,E +MOVX C,L XRXR L MOVY L,A +MOVX D,H ORXR H MOVY A,H +MOVX D,L ORXR L MOVY A,L +MOVX E,H CPXR H ADYR H +MOVX E,L CPXR L ADYR L +MOVX H,B INRY H ACYR H +MOVX H,C DCRY H ACYR L +MOVX H,D MVIY H,20 SUYR H +MOVX H,E INRY L SUYR L +MOVX H,A DCRY L SBYR H +MOVX L,B MVIY L,20 SBYR L +MOVX L,C MOVY B,H NDYR H +MOVX L,D MOVY B,L NDYR L +MOVX L,E MOVY C,H XRYR H +MOVX L,A MOVY C,L XRYR L +MOVX A,H MOVY D,H ORYR H +MOVX A,L MOVY D,L ORYR L +ADXR H MOVY E,H CPYR H +ADXR L MOVY E,L CPYR L + + +Command Summary: +=============== + +DDTZM command DDTZ command +============= ============ +@ (base) +A)ssemble first_address A +B)egin {i.e., initialize stack and return} B +C)ompare first_address,last_address,against_address C +D)ump first_address[,last_address[,base]] D +E)nter_in_memory first_address[,base] S)ubstitute +F)ill first_address,last_address,value F +G)o_to [address][,trap1[,trap2]] G +H)ex_arithmetic value1(,value2) H +L)oad_file (offset) R)ead +M)ove first_address,last_address,destination M +N)nput FCBs_command_line I)nput +Q)uit (not avail) +R)egister examine/change [register|flag] X)amine +S)earch first_address,last_address,word W)hereis +T)race_execution [count] T + Untrace_execution [count] (i.e. do count instr) U)ntrace +U)nassemble_code first_address[,last_address] L)ist code +W)rite [first_address,last_address] K)eep +X)amine {i.e. display memory parameters for application} Q)uery +Y)our_option BC:=parm1,DE:=parm2,call_address Y +Z)80_register_display Z + + +If you find this program useful, contributions will be gratefully +accepted and will encourage further development and release of +useful CPM programs. My practice is to include source. + +C.B. Falconer +680 Hartford Turnpike, +Hamden, Conn. 06517 (203) 281-1438 + +DDTZ and its associated documentation and other files are +copyright (c) 1980-1988 by C.B. Falconer. They may be freely +copied and used for non-commercial purposes ONLY. + diff --git a/Images/Source/hd0/s1/u0/DIF.COM b/Images/Source/hd0/s1/u0/DIF.COM new file mode 100644 index 0000000000000000000000000000000000000000..87b89d75568272353e76a85046282781b8a406bd GIT binary patch literal 2944 zcmcImU2GIp6rSbI>~?1;IDudbMDMMI%GB1~p|qu;+t3zLBgn5stcc6*bh=P>aCZ?T zAYdZpN1%oPX?W0(_@FPNM%2Va#Er^o=E34mvdKgn924BEjfsg?BlX<7v%7`VC*wZs zoO{0SoO^!mxw+}I(EZ42yrMrgs0BlXuNuOAT?Yf(Dn*Q=T1rdoj>WYkP7P={8td=Z z5?VY0>m6EZpQgo2w&8fRXiqKsVtU+2#Ns-Rgp=CA(khSy$F-Fr-L|(O*cfQV4+feW zR_@gs)IgwV34rqzMZu3uHE+bA0^|-LkSwZM_)mmz)PT6+Mha{DW64w_7~mBl44d_a z2V+qj83-rB5lASB!wId8M!BMEV+gn5aP+w_B!!JQ-eIH$FfB)t;wv%y%J|-RDmI8$ zL8j~a@oFGZPVi0+_;AZfL3Mgi4NyI2m zP0B0iftpuPh75sx4&-wvW8Fkm<5p54e$KJuyxlK2)-PguNTRwKOsBgV4pg$p*>SJk z@3S70vO9ToF>gQ3+r5IanAfcyDZ7;?i}@ykImepISKTB5&VJf!_xh^oI(>mJ+t*0$ ze)W!3H$`73$pNlFe_09y)um0#np;|zuk7sVUbUJ=a1TTPo7G722wxqC;O6pFp&$Bb zwqcfag%s?#0E{;ngMQt_9%k{mW`_;a-pd#==B%w!_Fh3g%+UlF36#P@e@GyW%*gf7 zSM)$DMg&;Z@nqY-GOX{Wpv3k#7RP6ZhjR>Y|F?KZeF>S$OGvjCO4(NhTKKyFIm|+P zN01M2)^;iTi6H+lNiC|GZN|zmp65GSD!;4J(j_L|bT0Dl3$;1-o(Ij$Q5n_{`@X01z-o z`PC(ZaUWf~#PK2#1R$Pd#8V~D!v)W<2Ow}<=x$(456-*_>o1hvB`PCuMT{U81gL`* z?pUW=D@YeR=?e7%(3%posRBlx4vg&Kl+%DhN3T?n7ok!d5BHB_JuHy+f-!9D5Cn1^ zPlIr*JWqaLy`zzoASzSHwK~Uqq$exL;j+^WcQ}PPpUxpwPvdNZpqweB(I8s;1a}Hs zf3plhuH@Jfn$hHktBZC81a@Sz?S5J&MU;a@Qg*!`u2ZT~OR9+98fU7;qH6T8UtYjm zfq>Z99rwezpmse)QueZ+PR|IchYnDryM%n?C#T_nO~F={uy6h33}9|xFh}%Cffh{o z^L=O07PxTC{Ki8tqozxNIdUlr#eCmznKE3Y5U0=*H7fB+t(3hak|aANx*N@kL_=_c9YD=$`bV}<=^{v;DNz5A#=g3_)^;p`v&W2Q%*@!en~uI^+Y*=~ z4_9qF&sz&5d+gde^Mj9Ldgj)lcU!KT8LLjpWjY_tnT8&c^E>mM0gt~Um*1Id$G>Jw zC%@j<}J#i~nCEqtAS0&xY=c>H9ZhiU0fDU0SpU8ch@zmDV(w7R}^mymAuLMYE6oNK0 zv;1=XOh`?BO`0_)EpP6 zbC8qo%aQ+(Bah|CFXqZu<;o_rEScqNvgMnyl{hvT$BBTV}CG) zY;vAp%&MgULlH}Zp32wjq?QUiBbkIV)iFsB&NyO7pJVBBEd3tRCgG#%m<>E-F&lV_ zDSeKm&$0A-NQ0*=HuSRA zL*>S-6#HM5_5R3v$LkLa)dw9hK{)>0nen9ZwXB44OO{Ga*ki-4gJ!h`=7x)yA)G39X9Xl&DV^k?9yGXv#Y2g`S!y)Db0s!GX6vLJs<`Nyoi{?V8jx_t6L zRuwFtl^QS!!iUQ5v(ArXWse`Nzy4VLo??4q_-Og{$IAD--*V=|!TCD}=5LiB&NAqd zf}-;Ftm8jB$GW;;;hEv%W-dB0+fkewU7tNl-|RFCwqO0#{;`~Ga`u})j!je?GD}A- zNoSdE!m_0GqUbCyytawbruCUn^F?-5gA+smj zb;K+Qzp7|8OS6QEO=hW8sMr8XPQ?~;QGt>xj0o{qc997w=~lt^ao!fkz)19W*%)@& zox@f8UH0&7>Ek?*Ovf$5F2DJNBQ3@+Wsk(&Iq8aMehx^oHK%$gEBkm>cJT=Z6^w0l z`^_T*qwzZ8vE@*`>V8y2y1H3#$d|Im&1KRXc}V9*TXU54P&{CEtus3hncqfNQ*e9b zlPo)iwXAx0w!Ak-ns8J!2$JLN3YQR*E?vn<|=x&W=tfO{QiceHk`?r8;)~>y~rr{B`HX z_skQZlihAValy1QarDeOINgtOlf|WFX}3p+{xzpm`Cjhpt;NOt4zopBn5#79mZs~X zmfT`eR3_Y{ff!25{_UheKS%k#{_|Chf#kUD1`7hOCL zlO2CRGl9|P^Y7yMQ|Kisy@b;2YiuL{1?AQ z3I7Lo3Z228-j0iZC-n7pbwqsr5AG5=yMy86-!qAKgB%F@IuE}4b)h4C3-Nq#4@CM> z-w^sk{z&p(A>`|L>mO7p-$avLm%gpGd78dE`!0S*m;GHX`+nZ`_k^x+us3q)`=}M} zdh0>8+7H!g52-3YjFwYBQak#HF6&V)>&INyV?wyAi-bL{Cc;lYAsqB|bom4S^%HRV zIzoGV?+&w0J*n|Nt#LfV=+Dw8+4wnCgP(E@FkXeXbPV=}g5t7OjcoKvb_$m-i=t50 z!m^jyr{SYiO~a|!ADoE&m2FnPck%B6{w0)cXeisTToB4OHk56|_qa;GOZ}eu)xLxM zwV&K!vF5@9$A(=^r(BJvfXrJQCvrb|DnGqAdLX}=@E6|$>BDEA%I7SOlvH4;Xg*b% z-W$Cy-!mhP;+-aCbKnrY-idU{Y8G!3}wEx$chil zQ)N6~5`>Y_Gc~a>R2%VJj{Y&{f^cBZEYZEz>SIKG(=s7j3U1%y{&&kr{Fv2!*7BJAnf2J1S$N%g z{;Sp;`K0w#>xTm)zqrr(zH%Qr^J)Xi$K9`4PAQ*R6YhlNHhfRSY}NUYGwgc7VoO<& zvRz`IpR&(vDsvW~r!iXrr9GEj4X12nyb4kdO4*9@-7i>LAOe}Ood{{>TPFbZ$#G>? zL1Ka#_ryrFtN^57Qh6pnG2xKs6u=HcBWG+Y^3nfV*{S9|BGjst-34P(d11w2uT))F z5%x-}3M=}&(&oa7ey_Bvuwu|F*|ET_btNk9^j3V;D_s_nlE^8Eio3khiG zoOgPYQjuD!JY#j{BY$IIQo6Y?sdP0Z5(#M#DJU!D&0yckPv;N00^XtYruaJr>9+XA zg7midM+NEjc)B3HJ)TpTz9DWcl;;;J!wcwh*FyRfis-Y|PM@h_d^!VOT8GhNWmk#( zwE}#O#@aUT-n4%A=DLkLw+l$L?Owm#o5^hVt}G&Kb>fn+DDDr2L?i^Ob@xGkSi}TA5bEd=JA;A!{sVm>Uswcoikkp?ZIOlY)ZBx*$(6q{Q<2dQLH3MnteW} zxhkr?9ksXndV--rv8SU~?DB_uyE_I+)_+r*DsMw&QWwb^ko4W)k65iOEuM82VGL7$ z^~amGEBBakl2QteL9QZwgv7JU6HA5B*l5gZy_PK}Gz>y8K#kvmil1Djik@w*9qrQC912dk3Sa`i{!ppQWl(55R%S8xZx=jAD9OhOgK>9O69hvy{U?z*BSHzXDXib zI-m490`MbzQuqUMxvoz0r0V(Kn{JD6|OzHQ?z>VR)slEQNBP6|i*?xTf`4@}O z3Bfi@nX@kzK~RzrP@0+uQ<6EU{L3OKPfeaGk_v5nPPEvPq_Pq&LHBn+chbKAB6{kf zHgA}+Cz=u|MDY1&_vrldb7zv_Y=2-1h%f_LTH-I5^V*7px*Ra*-&p z)ndSuhl>-EmD`qReHtwQK0bWwXGt^;_smX6Cw1a=%v%`I;5AP2n%enjC&7}>yI^@U zyfsBGxtk{Y`m49K*TJ*J{eH}Fph9O~DC7%7x(CHue7!U+#Z4jq5udoEvqroYa3C(} zssn;-JlGL9;A4P+Fb(CH-Gmlmps#12FCO@s{ ze*|@}Kj;gHgTX$U-C`%8?*IWrgIHP79Xucg_wTQ$s<9F*?hkf%2mAej1Hj9k9s(T- zL?>I!H{k2+i}@lwtyZR|K1M2v z5ptvNk^W#U(<NC%$7pMNolZHosd63W{ZXez%a@frUnNcL8$n$*ZE}* zG704q)7h29)BuihibK`mvT>Bz3cU6J0l=5N4sgrnVzjN+v;B+#Rp+Eisb*2*^%N7% zFmK=Q4}~KLW3kqC=~joUFk=`jPD|vz?vB7MRTx9&V`Ea9S!J((7<*G{Ty6G0i!qgS zT~ma-w1V&TtLn?oqWLV|ye7o6ouK|<^jL@bf;n>GTxsrH4Un~X!ZjzoD(;z+zA^rV zIq5IPubU%ZH^&+Fa=ez?=Q#Te>HbWbq~*fcFghull#Zjd%*t_;nzJRem4gZ^F)(8N%O}=133Em0y`7JvuijJprv5{{9-7 z-yoynZ_ZpSN=f`j4fqH_u2Cf?sieXZB^fNKmI5sGg#v(`ddxirFFn)O?0%ZG-9g&T z91ttRdH{hz!xYy;h}~+$#E7e~Y^&i1i<}to#te}~P>lG+TJdn7y1t9T&K<(eEnDC- zSBf1BSmUP1Y8t}OtTKiN+vahLsevP`&sW}c^H>b1F1>1w`4gvu3*l=fI+edLPhTnj zHg`0()fXY;+aC({sF+L8x{jb#Q$Sl*;1%Yia$#-)2?Q*(Vl&DMSdTDLj!^N@XQEHd zV?=4je078`UuLIl#A~6C96GN{DvlLcTM&`NFHr?6d5fVmK&6zoCX}QpZk~^%IVmli zB9tPeJnP1ez_JK{8psMuYI$s@SzhY}lc4-^Mq+3rx_SN-oecV%q_#5pV6V|QNtb(6 zT~4dI$lsbTJ%%)*qKq=MrN_z#1n1#fSDjTDQ)IBMY6cs2ekwRf*|6fjHYWJ&EGsL6 z2{)8Dd)UsvRDzvBQ3+;pSqU};l_l6CG?mC3N~o4}Hw^YJbYq!+G-gg4GlUsB8^wy0 zK^F!2>JkIY^p>zL&`w72FHbn{!uOY!CzP2@wBqX!p8+#ApbUE-Dv|a~g|IJ`Fe{Q( zrc`00npC=*6A3%3{#FT&ZKon2R8s-ixVZ2jY8ArM9MoXpB2YiM*PoQ!2!S4jOhj?f zN_(bFxgKkeD(Wg>$pE4dy)&L02~^2iI;ifo%a4^w&z3RgRSKL#u47*3VHG4LLd7e? zV?1TIJ+EP7Qc9F1*(~c?z%@eYb9$-sn3sUfD9iwCG$&GaMgY7?{}Zb4fLp`&8KuB? zdnvqPNvXWNGz0C8r5R{PT8H+=QtFctM<+vjd~YfFLy{&3tk+5G{~gf(U8!`BAm3do z&6))CNwsgZaN|Ggg+9}NQ_7UUL}zq1uWX-U4S6p9AEomBWqb)qmP(rh`H!WNN6>-> z)v~JTv!;kWUB*nQiDl41QOM~sT1zC)g2_X1x@`JT@G+e#`0JAeGkr<$*UPlgp&iw| zWl&w(vVaW}EXPbKwINRnobG#Cz@~h2e7MH}FlifDH^ZGF;q zxW?t_N~_bA7N?sxs*97}m?(-FaMDmy2QCdZF?T3bDMMHVc#l7_U~=q|#N0K6GKrxV z;twsrc#Ov6?gbdINm#deA%{87CYpDIU;4Z&SV*HQ&4m}1TY+h`7ny|&`K9v&IQgni zlf$x*5imLAwF@UPO2n9nSZWr6!S728Nf zLRDSGrHjy5K7}%0St#GM$eHK0rPx78Ix8M*nLeWpFdoY*7VJ=d;csiI@7;Y*MZ%X9+>McWDZ=if)EbeXs0tD**)|VnMqzPPL&H^kj|Z%# zIOE&P6VhcEjV-biYcXkVI@xK#du7h$#r7KFvOI6*{7&6^P%&a=`CH{|(9H&)atU_YDo8_U zn4pF9-N9(p{K)2hwLp5Bt40j_!N5Z4Xp1Pd3v#Q-4p@F`ka0j~*~?fuIZMvsOfv^{ zmfIN1?VP37z~a|g9%d|$a+d21EZsUwjIsQRvz#=r1ay{n7|Xky%y`1$LaA-E}&{=L}EVpr%h=FCF&hj8* zd6=`@Z(!-vSzcuN;7FVc; zK-egN!}fCqQ8!f>cL~Vd4p+vWQ}rRL>Yxn;#U&+6nRPsZtJ^EB2gYzWN-B$%0+=^) z0-Q!AY~lpCh)TeQovOegRKhk+!0@XCFDGEIRl+V#z|g9MHcr4ms)PkxDH>`Lj$u;^ zR00NRG66#}nScS{1doY2rq+YaIaU6Pq%RHX5w$4R*3t>GdVEbeQ52RmxCW45i!{(n zI}Pp#iyOAB-*Js#UDAoYAx?@1{5^f@o(c;)hpP40?%uh5{qCzbuHUw;9nva;fXh(7 zKkTD3Fn5(!JB$#Z^PmX%kW_D3W2^s57b( zJG#61HV>!znZL@#n{-AV0d)C8I9sO^E$F~b_!xKP;w?I(*7I)vzEB4kiA$GSxpjrX=PgRmM3BK}TTXfR_LN>whtYFf+QYd3WJJ16%UjMq$K zq`TnB;+VwU(-=uDT#{%9Z@fObzu)ic5~+b@X!?3E(rF!*H1*s- zyJBjOZdwYYWD_1SMNYFI-?|idFqGaA^)02Dz%G#3rXB}VbZ7IiZ^ApQ~_aCfdPS zOn`zMHiGOBhgkxyz@kRu-OGPePGQn-VoV5L=LzG|A5;@dAkd)l8=0po^>d~#RKl4o z*rrqIE7}k-c9{D3(+7s03Bu`g{3V@rHSW)n>;vF zrMmdeDuau2KDd+CDEJ`VOtlS8c8Kc8J$egtV8dsXwB&Qt`KiuK@|Zd=8`Lp5RdwE& zu1>2#9g|a22UKlte9YAOo8E$9;%V_KF679dG$2Z%nf4iLoXo;B%tXX$FZ(!YC|wu- zqL!Qyz0rx6UGlh-inZIhVkcekO_BI0ucMz=lhF{z;$>1*lC{P232t0SWW=GgCH}IO zJQdCpyt-g5{>ebgQ)!kuu9;NB6G~P+l%|In ztjcz^m}pj&cE~_0P-({vv_h5kEtSULi$+SdNK#o`PnID|XlVraoQPXPJ*6k9ryALY z9_nfIOi!anES;Hi@vqdVUi>sAR7aqe2^U#WJ6-KOS|gnlgC?2|jX#ma*rcaOhH zjQD#p%~EMku)eFKelR3f27-v8I_i3Yb%P-uJW$8OeZ9TtL|8oN7x(!ibiQ=N@9UqT zH!&%aL>xjd6;KE$rs{adA%^`&sZEt~Fc|V5t)tKr_nTA7D3Y37q{HVGmYC@8>on(( zKdxg~&u;wax_^SLFrTW9KN_1s%_GK9eJ(JRK1mK&T2B$m!g>wqGk9%q-VODt^Il)i z8bOZBXV}=uh%`qjt0_c+KGQBY^Z2;{Dzh~pkJhDpI>mm+batWv$NT)il1@;d*o^2C z_3}i6nzO{^dNp}6`d`!*myu8|na;jdFPWAzuw$2ibl4`p(I6EtIaft*(uCASg$7L| zDT>PkLz5hR@fu?n=STikw)@+l=lPvcru<*{?yy0}eZAEk(H~@5Jz{8;5Fc&ar_1DR zfLmKTAcHJ`=2;|g_GM#{{I6Omv$KBbSvJlp(aL?2S*KYr*a(l3<&PTZyo{Ylu_Z#g zbf$F*?eWXyEZdKu-gEGYc++wS$g*8h^O>>3+W3X#(!S;L_T|!kZgy%)ZeOmS*0yhM z!xI5L20<|{yoz9PJP4yV##)HY=;Aaw0W_<_W0sfbsUOx@^|250n_P93Smxr3oO%z$ z#}rF8f~BE!d-Q|ld;QJr@<;TwgVV_0tuCp_CC_k4t9f<3L|){gRhwB!tQ@Ql@MAQ* zHd4E!tjr#Bd(AtYyUZyCkFx3U++jyA9y21oNx_JY#5g{Yi-Fa-+e~l#H*F_&r`Jqx z`tNgjvey3TPS>BG9F5Uy^@4$?qIbGRV+HxC{8ToTJ?#4P^Hf${Mr9A9jQ@N=c9QxGp*fnOmgRVMc?^T@pHxOqj( zyj=S96h=!|%*zA+seT9Dt%D7Zr182uhW~iZ4#8?S(Ud3e?CKRDj)I!BNrD}x+31aX zw|OMKZ$(SAZG~Olw*pGwS>bFtu}7i(O=3*I4tVbZQ7{6F( zg|<{sW1=4mU=z`8X6ABso1>4efF`3cvRY9oI)n%IsUm3{sl-V9JgJj5#ecIRor4bw zzJ9m@wdixVxw>Mv8TAm2+ADUML3WVfLuQjCIVxr};bm*;;|b@CCOVr^L`BfeOCs>EIDK0&ePq&TvNkv#mQ=euszboK( zjO^6jg7p<0(Sy_ajK{&&%o(OEF~q{&;W4H^~$&nZB9iz+-p z79CEKSCA5;tEC1({>5r~NiLmTorEy<^R>5O6}n5FSWSz;gj>FswMJDcY0xw=#u1|l zEX{LIld;6D%79i}zj(xb1^psM!KBZ=>9P)MvRrQYQ8zpnx@FYC1R@b02c zjcWk_Eo%V)oog}U-(8Ejf2u|Pc?)Z3mfX3PB`lQC6t?}EBI771q!n9)GRk8AlTV=) zRb!*9)k-SgL|@5S?_HbesgW(CFo6?s^K+zQ>C5qnwQwIiu2R=6wuZspYz<3Mn}i7v z%oSn#pffGH#;99p1bKsT*-EL7+};*uBbs{V0A3_STU!idjIN|aQdZe@?NfZQ3ok_+kn!KJ`0 zu2h@s1o4&xjKr`~(`Gg)Khu*DGf8F&+Y}c4Pu+0fCnDIUhCPs(s}0dOGI?}meSR;| z^K1=*T|UT@EAeQTy;6cJ|C~s0bFk0{M13ub64=BrNTOH=0!UTVnt(+Ty9mq;AhC9w8x8D}l(rGZonB zaEx8I%75ibWqN%v!$MIVJQ6JI6(u1a;XTdBYQme`th4i4S(#kksy54eGDVYJ)VT7X zDY`>rODZh*1MLbG_}fy#*&&VJ_K*Q*>DO$@q=euu+5FWaD{Ul;vKCqKHGx1qF)$K; eqLuxSS$?2(c=iO_Lt%%7ja)x|mHz+y_kRGJr>Hyt literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/DUMP.COM b/Images/Source/hd0/s1/u0/DUMP.COM new file mode 100644 index 0000000000000000000000000000000000000000..03a77c3ca8b8bebcda6664c086872b01db043691 GIT binary patch literal 512 zcmXX@L2DC16n<~bu4H9*8)6LA%cPr&iAY)`)lveLL@18>AyNbnIV6HP70IEO(YK`!-p4oZ`##yTvE#b4CQAW{9MI{t&zjaD7R5=qCS|aj0YqPpO3+r-)ccYO2i- zP=3S1@Brt<)-_m+Zq|nB{X_9(ZVwVq!FD1qEsglqi&YP*k1DLZ{g!E*Zm6$S8kJg;kzB4ema~5{lcWA{)7GRhH8}2`3dI5y57ezdS%G>R zF6zRzWD0DPK*;!IWraCiW+7YxJC^Z`B6BU?1Y0Nmiu6d@1~+o~&tSnb6caxR$~@_v zsi_m6vP(c(0ssLh6W>=X{0edhUOvA`MGu}HUwW-#{3G07-qmA5z5|}qMMj6BU-apZ xW(*MNbb53*!t|&h#yQUz?{@faaNl%-d_HgSUtkF%)=zlG^$yq2P3n9C{{b^Cz8e4l literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/ED.COM b/Images/Source/hd0/s1/u0/ED.COM new file mode 100644 index 0000000000000000000000000000000000000000..a0f0f5410f0542e3e6d05bfcd0fb361d84c73f26 GIT binary patch literal 6656 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/FA16.CFG b/Images/Source/hd0/s1/u0/FA16.CFG new file mode 100644 index 0000000000000000000000000000000000000000..b7974d36f9365eafc8c00f30228a4a87dade2d77 GIT binary patch literal 3072 zcmcgu%Wfk@6s>lQI%&y*4Gaq&7qiJop3Gz>AApriq>*M4#|esuUB|9=muOct-PQ5< zJNN-Ug&kWyfi*t?=T?)*kMQu82->x^9baMfAS)w!NPm$Kq2F|Ir$>2eJ4}#GmX9 z+GnwNBI56GI*G;SA}(>djl~xt{spIDEWQ-+?>Jq@;wur0_MqL5#n&Q!fm0_rI5>z1 z&-t6TulqMQLpn7&Q`4qOtungh3=R$l=~U7&nT%dO?Ia1`y27=~Qo>HsPmPkcSR93? zH5!dz1)~v++}(OyNvX*+wrs33TN@2w)Gy}gqNX}GbE;(B6t-rowb3<<&SaM28w$<} zr6pShBhCwt_)j&x+^UIzKrYr+>aIauAzrGYDC`NnB1AI<^x11`V0 zE7W+$ogMaPu)i>L#+W_|vcvv_^Er8J>QdTae+&EDT*`t5m9cVcH?Qun=gtgeI-yHl zEH-U9zz%zE()FUYa`w=8w|yV>{c4=6`+u$1cUQcZwE#roBk`AbD^uL-*U#SIGdwp< zrI9J0{V~fxhUl_nCeu}mo;{;C8QEOY52u5nXDv}yq*GGhp0vI77|c~sQ0iGZ3B0qW zlQ^o=%uM7F!Wf#RKL-B051sd=eF}Wx#j2UCdnE5M0P`GgRim}i(@xUpiLB^!@cdnm z!{ajY7;g?B8K1p1L|qi$Mbz6I{J6(OpLKyg%1I~5WhH5xYPyqT&2(DG3C)$wT}op! zo27a}JTuh2>IT0@fOQGb$N|*%VQ>?f!(CI$4RJskB}>89IMdyNLdoz42N$O6?=OMC zHB@DlZcI}X-!=s@nKFdv290x51DB;2j>~0qlC3&iA#k)=$!JvxnCCSH3BomF6WV9N z3kJw!87Upw?mDMVG=> zF!JPs#e)_vd(0_&^n2{PlLR58xb16r%OC{ToP*P3!niF=Q_;Pe zNW+MhMY;%Bq37Q-?K_DZ!dFMHT#mV#g21lur9Zd}@OrPAshEACx#rHMAoGN>%FMtN z`FdA+e-I52%R*Rn*%?iplABDcW06b8f%ky*ZK8$vc zg4TGFrDa(ekcb!9Hr};lodO&zIp=UCKcus=kmz_2(N!X>gibgg5E_PInXUz=*GU3q zOn~mgW!q(0h3>d{?S=)x8hXPzyo%_=4wjxqbt%UxQ%o&4Nb9)10gm&}F9s`oov3b3 zF;A!NB!}}{jdPltrU1KwmU5oKvFjP8&PhLttJFP!dy4d~l^#RIouq@G8jEMyOz+dm zq5!2<6|gRGD>f;#!JQuAhZXOPpe*Rp6#Vzp)A-G$bPe6(!DS9Oz>w!dI7woku-Iri z3K{S)4_0Z;(X{LVPFg%`cPr2dm44h-gs@jLld2{RF4F{e+&HTdHDy%USveDKp gCUuhKR!O(S8mrZT&3mi6@zbEYgG!u|_}`zu0V!{R{{R30 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/FA16.DOC b/Images/Source/hd0/s1/u0/FA16.DOC new file mode 100644 index 00000000..08b46875 --- /dev/null +++ b/Images/Source/hd0/s1/u0/FA16.DOC @@ -0,0 +1,264 @@ + + FILEATTR + Version 1.6 + + Gene Pizzetta + January 18, 1992 + A ZSDOS utility, copyright (c) 1988 by Carson Wilson. + + +FILEATTR (FA) is a utility that allows rapid settin, resetting, +or displaying of file attributes under ZSDOS, ZRDOS, and CP/M +2.2. Several additional features are available under ZCPR3, +including error flag setting, error handler invocation, an +enhanced display, and better error detection. + +FA will not run under CP/M 3.0 or Z3PLUS. + +USAGE: + + FILEATTR {dir:}{afn} {{/}options} + +If a DIR or DU specification is not given, the current directory +is assumed (under vanilla CP/M only the drive is significant). +If no ambiguous or unambiguous filename is given, all files +("*.*") are matched. + +If no attribute options are given, FILEATTR merely displays the +current state of each file's attributes. Files are displayed in +the order that they appear in the directory. + +Once operation begins, FA cannot be aborted by the user. If a ^C +is entered at the keyboard, all screen output stops, but file +attribute operations continue to completion. If that was not the +case, attributes might be set on some entries for a file and not +on others. Nevertheless, suppressing screen output speeds things +up a bit. + +OPTIONS: A leading slash is required unless the option list is +the second parameter on the command line. Options may be +separated by spaces, commas, or nothing at all. + +ATTRIBUTE OPTIONS: These options set (turn on) corresponding +attributes on files matching the file specification. Attributes +not specified by an attribute option remain unchanged. + +If the option is preceded by a minus ("-") or by an "N", the +corresponding attribute is reset (turned off). + + 1 F1. This is a user attribute which has no predefined + meaning. + + P Public (f2). Under ZSDOS, when this attribute is set, + a file is available from any user area of the disk on + which it resides. A file cannot be made public if + another file with the same name exists in any other + user area on that drive. In that case FA will issue an + error message and leave the attribute off. + + D Inhibit access datestamp (f3). Under ZSDOS, when this + attribute is set, the file's access datestamp will not + be updated, which may speed file access slightly. If + the attribute is turned off, normal access datestamping + resumes. + + 4 F4. This is a user attribute which has no predefined + meaning. + + W Wheel protect (f8). Under ZSDOS, when this attribute + is set, the file becomes read-only when the wheel byte + is off and cannot be erased. If the wheel byte is on, + the file can be erased normally. + + R Read only (t1). When this attribute is set, the file + cannot be erased or modified by most programs. + + S System (t2). When this attribute is set, the file + becomes a "hidden" file that will not be found by most + directory programs or by most well-behaved utilities + that accept ambiguous filenames. (FA must find system + files, of course.) + + A Archive (t3). When this attribute is set, it signals + some archival programs that the file has not been + modified since it was last backed up. If a file is + modified, ZSDOS and ZRDOS turn this attribute off. + CP/M does not fully support this attribute, however. + +OTHER OPTIONS: These options affect only the screen display. + + Q Quiet mode. Console output is suppressed unless there + is an error. All other operations are performed + normally. + + X Screen paging off. With this option, screen paging is + turned off. The screen can still be paused by pressing + any key except ^C. + +ERRORS: Under ZCPR3, errors will cause FA to set the program +error flag and to invoke the error handler. The error flag will +be set to the following values: + 2 invalid directory specification + 4 miscellaneous (conflicting file, no files on disk) + 10 no matching files found (no error handler) + 18 Disk read-only + 19 Invalid option + +For error code 10 (no matching files found), the error flag is +set, but the error handler is not called. + +In addition, under ZCPR 3.3 and above, an invalid directory +specification will abort FA to the error handler, but no message +is printed. + +The following error messages may be seen: + +Conflicting entry, can't set public attribute + If there are files with the same name in other user areas of + the disk, the public attribute cannot be set. + +No files on disk + The disk directory is empty. + +Bad Option: /o + The command line option shown is unknown to FILEATTR. + +Drive R/O + The drive is set to read-only by the operating system and + attributes cannot be changed. + +CP/M version 2.x required + FILEATTR will not run on this system. + +BIOS write error near directory sector n + An error occurred at or near the given directory sector, + which is expressed as a decimal offset from the beginning of + the directory. + +BIOS set track detected - FA aborting + A background program is attempting to modify the current + track setting. The background program must be removeed + before running FA again. + +Not Wheel + Under ZCPR3 the wheel byte must be set before FILEATTR can + be run. + +CONFIGURATION: While no installation is necessary, all options +can be set as defaults, if you prefer, using ZCNFG. The +configuration options are fully explained on the ZCNFG help +screens. + +It is best not to change the name of the configuration file. Its +special name assures that ZCNFG will always find the correct CFG +file, even if the name of FA has been changed or if more than one +version of FA is online. + +HISTORY: + +Version 1.6 -- April 14, 1991 -- Gene Pizzetta + Now displays target DU and directory name in summary. Fixed + bug that caused "GO" to be displayed as program name, if it + was re-invoked with the GO command. + +Version 1.5 -- March 27, 1991 -- Gene Pizzetta + Now calls CP/M version checking routine (it was there, but + it wasn't called). Changed error codes: 10, no matching + files found. "No files on disk" error now gets + miscellaneous error code (4). Error 10 does not invoke + error handler. Not released. + +Version 1.4 -- March 20, 1991 -- Gene Pizzetta, Howard Goldstein + Code to check module data byte (S2) was replaced by Howard + Goldstein's elegant solution which uses a "true" extent + number: ((data_mod * 32) + extent). Entering a ^C no + longer really aborts FILEATTR; instead FA immediately prints + "Wait..." on the screen, turns off paging, turns on quiet + mode, sets the results flag, and finishes what it was doing. + All this is to prevent unexpected results when only some of + a file's directory entries are changed. All errors + including a conflicting file found during a PUBLIC request, + now set the program error flag and invoke the error handler + so an active SUBMIT or ZEX script can be aborted. The error + flag will have the following values: 2, invalid directory; + 10, no files on disk; 18, disk is read-only; 19, invalid + option; 4, all other errors. If no matching files are + found, the program error flag will be set to FFh, but the + error handler will not be invoked. A few other code changes + were made, including a check for CP/M-Plus, under which + FILEATTR will not work. Not released. + +Version 1.3 -- February 22, 1991 -- Gene Pizzetta + Corrected bug that caused faulty operation on large files: + The module data byte (S2) byte was not being checked, so + such files appeared 2 or more times in the directory display + and the public routine was often not finding conflicting + files. Added configuration byte and command line option (X) + for screen paging (paging is suppressed in quiet mode). + Made quiet mode responsive to ZCPR quiet flag and changed Q + command line option to toggle. Usage screen reflects + current effect of X and Q toggles. Attribute configuration + area changed to be compatible with ZCNFG TOGL3 routine. + Actions of D and ND options reversed so they work the same + as the others. Added configuration byte for printing + summary line even in quiet mode, as suggested by Howard + Goldstein. Removed blank lines from screen display, + allowing three more filenames to be shown. Removed tabs + from usage screen so PRINT and PSTR are not needed. + Eliminated leading zero from user number display. Now + prints "file" instead of "files" in summary when only 1 + matching file is found. Ditto for attribute(s) altered. + +Version 1.2 -- November 30, 1988 -- Carson Wilson + Fixed bug of no program name display when FILEATTR's name + was 8 characters long. + +Version 1.1 -- October 30, 1988 -- Carson Wilson + Now wildcards the command forms "FA d: /options" and "FA d: + options." + +Version 1.0 -- September 26, 1988 -- Carson Wilson + If a filespec is given, no leading slash is required before + the options. Link with version 4 libraries. Removed /X + option--ZSDOS 10T always closes the first extent when a file + is written to. Changed summary to read "files matched". + +Version 0.9 -- July 7, 1988 -- Carson Wilson + Increased length of search FCB (AMBFIL) by one byte. Set up + AMBFIL as '?' + 35 binary 0's. ZRDOS and CP/M zero the + drive byte (FCB+0) during search next calls, so reinitialize + it to '?' before rescanning the directory. PROGID now + prints stored name on GO/JUMP. + +Version 0.8 -- June 26, 1988 -- Carson Wilson + Use SYSLIB PRINT for help display. VPRINT does not expand + tabs. Now traps disk track changes at the BIOS level. + Allows '-' as well as 'N' for "negate option." Auto- + wildcards FCB1 for attribute set as well as display. + +Version 0.7 -- May 24, 1988 -- Carson Wilson + Cosmetic changes to help, display. Made public routines + faster by 1/2 directory scan average. Consolidated file + attribute setting/resetting routines for efficiency and + clarity. + +Version 0.6 -- May 14, 1988 -- Carson Wilson + Changed "Publ" to "Publc" and "Priv" to "Privt". Added Q + and X options, made options installable. Added test for bad + ZCPR directory & chain to error handler. + +Version 0.5 -- May 4, 1988 -- Carson Wilson + Fixed bug at CHKRO inherited from MAKE.ASM. Uses Bridger + Mitchell's FRESET to reset disks. Uses ZCPR invocation name + in signon, help, etc. Added F4 attribute. Now includes all + valid ZSDOS attributes. Help now fully "smart" under ZCPR. + Reworked VID3.Z80 and VID4.Z80 from VLIB11 and moved them + into FA.Z80 (see end of file). Put STNDOUT mode ON by + default at beginning of each attribute display sequence for + faster ZCPR displays. + +Version 0.4 -- April 27, 1988 -- Carson Wilson + Tests for matching files at other user areas before setting + the public attribit. + +Version 0.3 -- April 26, 1988 -- Carson Wilson diff --git a/Images/Source/hd0/s1/u0/FA16A.FOR b/Images/Source/hd0/s1/u0/FA16A.FOR new file mode 100644 index 00000000..e9ed3d43 --- /dev/null +++ b/Images/Source/hd0/s1/u0/FA16A.FOR @@ -0,0 +1,6 @@ +An update and bug-fix of FILEATTR (FA), a ZSDOS utility that +allows rapid setting, resetting, or displaying of file attributes +under ZSDOS, ZRDOS, and CP/M 2.2. Several additional features +are available under ZCPR3, including error flag setting, error +handler invocation, and an enhanced display. Version 1.6A adds +documentation; otherwise, same as 1.6. diff --git a/Images/Source/hd0/s1/u0/FA16CFG.TXT b/Images/Source/hd0/s1/u0/FA16CFG.TXT new file mode 100644 index 00000000..4067b9ba --- /dev/null +++ b/Images/Source/hd0/s1/u0/FA16CFG.TXT @@ -0,0 +1,39 @@ + +Option Q -- If the ZCPR quiet flag is set, FILEATTR will always default to +quiet mode. To make quiet mode the default at all times, even when running +under CP/M, set this configuration option to "Yes". Whatever is selected +here can be toggled with the command line "Q" option. + +Option X -- A "Yes" will cause FILEATTR to page screen output by default. +A "No" will default to continuous scrolling. The chosen default can be +toggled with the command line "X" option. Screen paging is always turned +off in quiet mode. + +Option R -- As distributed, FILEATTR prints nothing to the screen when it +is operating in quiet mode. If this configuration option is "Yes", the +results summary line that gives the number of matching files found and the +number of attributes changed will be printed even in quiet mode. + +Option S -- Enter the number of lines on your video display screen. Under +ZCPR 3.3 and higher, the number of screen lines for paging is obtained from +the environment descriptor. This configuration parameter is used only if +running under CP/M. + + + Attribute Configuration Options + +As distributed, FILEATTR will not change any file attribute unless +explicitly commanded to do so by a command line option. To configure +FILEATTR to turn a file attribute ON or OFF by default, toggle the +appropriate configuration selection. + +For example, to make FILEATTR set all matching files to Public by default, +change the "Public attribute" setting to "Turn On". Then FILEATTR will set +the specified files to Public unless the /NP command line option is given +(which would cause the files to be set to Private). Since there is no +command which tells FILEATTR not to change an attribute, however, the +program will now insist on turning the Public attribute either on (default) +or off (through the /NP option). + +Most users will have neither need nor desire to change the configuration +default as distributed which will "Leave As-Is" all matching files. diff --git a/Images/Source/hd0/s1/u0/FILEATTR.COM b/Images/Source/hd0/s1/u0/FILEATTR.COM new file mode 100644 index 0000000000000000000000000000000000000000..4527d090a1a012fe5c9c4921aa301b86ecd061b2 GIT binary patch literal 4096 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 AU;qFB literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/FILEDATE.COM b/Images/Source/hd0/s1/u0/FILEDATE.COM new file mode 100644 index 0000000000000000000000000000000000000000..11b836168de7354b0c5c4f6635fd70a198f5f3e0 GIT binary patch literal 4352 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/INITDIR.CFG b/Images/Source/hd0/s1/u0/INITDIR.CFG new file mode 100644 index 0000000000000000000000000000000000000000..96baa98657a97513b17249dd40b51c8a43ffbf81 GIT binary patch literal 384 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 b`43^#`GY1WKoi9u)NE=3j)P6?`O)|fx%@N! literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/LDP2D.COM b/Images/Source/hd0/s1/u0/LDP2D.COM new file mode 100644 index 0000000000000000000000000000000000000000..40220f1733ff886d939c04b823edb5b71ef3d585 GIT binary patch literal 3456 zcmds3eQXow8Gqh8`y6}ChvS0IfzkJJv@teuoFInDz)fR5f&eFrLn@LDVv-~An%Ks6 z2q}phCRN)XR7GWM+SW29)*vcZoHW9KQ4tA@IlxWekNp5DO;vRyv>#EW@dtTdW zvsL?Zn%39xUGDMo`FnrwbI)8Q0r-e(0Vp#I)}WpUnHobTpV|aOdrK&{^aOXc2WeM$ zM4`cCXe34tL_-5gd^7D<;wA4Y`eiG?JD16PmKeZ#NvP4^q)*!Jf0tN4 zTCwM(bzo0jqr9BDnwh0(J-Eg6;x8PcR0j4tDMyv$2m2mZz~$<89q9{;wq_0%D+cxb zX7aonX7tva8)~`-f;aLSw_Be#Kod3o6MXQsKxT9Z`})(E<7l^$$n;U!ckH zm_og$VnB!?7Q3fv!!Btzkd zGEfM|^l8I^l1V{7oJdlpAC4rFq2Xa=pk%p9zjKv-r!o>fsr&~E3m`JIYbczc;Y2e9 z$!yZD3ff&kG~^G^o+50RXcxxY_iypgf})A`cfn!Nj3&n#?YDwhjwbbV_ed-`PU~UL zV<#EVGc8eE>-YqJ-T(mVb zK%=o_I2vKOyWQ^4v1mMr)*ybh!lN0Xxt#o(3e6SdSB@BJm=G5<+ZXAN#^XwVk}|?a z6lQJo`t{V8{I<_1 ziC_=Ndn6#{gS&FFe4Np{(_1~CbDD_0-$=}}ITYOerg7o3lo+r|Bsw}cL=!ROC?jj2 z$KQSsNr&h1xwsO-@{8<@DX}y-uLFHx)rfo%kYVf?Af|OcPZ$?Eikp}H)YgRoaT}R{7U`}GY^I$`;ZV^q zHkHE-y@79RdX{Z}1wqj79nBxk+`#a6+2-r}c_K|&mKcV3x1av`lH<#h_e|8V6p)ve z?pT*RW^4{Qb1osr<)wAvpHWNiQ3LVsHRRUPBf)uer%|(ZS2IoW%r7CkAUnbp{2V$54_2V?qh! z4Q<*V*_mPh6r&VRj>MG}4;$lwzMnt^s9Saix|dP9tfu6nGq=!C{4i@ZfgNkep**8z zH1^tJo#Q!nwQ9x|rujbl+K-MaN9p76IA#bJpL_V0NlJo(jF4CH< z+F_8^0***O0rCXsm+-A%eGRb7rDxUmr8Lx@V}n-hD=ra>HIHq(=A z`UC5$;Jg5}1mu)_{(9;)Rl5#Ua2A3!{}`n2!Ee03Y&JkUc3=ta+uxmE@WG6uX1eJE ztPreEgMG|3#)daRaK&ATs*ll@`B?M5^OZuzn6BRYI;-mOwu))2%nc&vHfUG5{buVs zTy~*Nd&s3TJE=!|iHH))wT+x$thOP2H*(?{CU}X^Y8zYZzcLNLN7P4;K3q|=HG6F} zmmFU|rTu`*2Rz)(0Wxel)9!=s?5(k(Y_P_*fVb$x&ioUe?b)MiL0aVO-I+Z3-Fc3Z zCntAa_0(pcfn2zcTs7giX?D=8G=eXVjCP*mscsYR+ibpcMlei|$yJ}&Y&+FVE{je! zkQc8x)~1$Uj{4y2;ORV9a40X!>&1Js=?w0RoYUXX-^fj?3)tJ`+{6`HmJy8FeUeib zFqn0OUzCP&CWmoZ-XY$%FK4uiT;JZwFy7j&18jcq zJho5bQ#vz-0Z(Y_xSV?Dx$AfKsWaFEz_3W_=*OpK)p=pXuxRl-zG-Pc^=({dW>wuk zN^+zR%Bea?URl{*S$U@2EKjRXt$%6*ehQa=Jzu%;83!*KU@p(it>?2+BQMam zsRQq6Vnhnp@JM6VS~!Y3WNqY$fHI~ey-j%(O|Nb@Qncwn}@mpHbT|6 zS^%m5%!aBdeBi2y8BjujGe8x}p$xxMg)3BHyECAyWr{-)E(24=wXvlII1ZjIJp4B= F{{%7;Rh0k$ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/LIB.COM b/Images/Source/hd0/s1/u0/LIB.COM new file mode 100644 index 0000000000000000000000000000000000000000..45d7fb2174c2338bacf03402a9acccc94ee11086 GIT binary patch literal 7168 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 Xjkg6C+_HFa8FqO=E#G7E9sd3YUd-_( literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/LINK.COM b/Images/Source/hd0/s1/u0/LINK.COM new file mode 100644 index 0000000000000000000000000000000000000000..e188fb92b474883e1fdd1cc2013d3ac735dadf0d GIT binary patch literal 15744 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/LOAD.COM b/Images/Source/hd0/s1/u0/LOAD.COM new file mode 100644 index 0000000000000000000000000000000000000000..b9601e002cc09df45e29331795412a0f0be8e217 GIT binary patch literal 1792 zcmbtUUu+ab7@xV@Kkaq)%2KFuYT3OzE8PR3=jAMGuXKC6&A<>jV zVhvbnVw6ba!3WR>A@RXzeA7rmeZaJv5~j&SX(A+j!3QZZ_h4c|l&G!W%w1D`c5^p7 zzu)ise)HYTHx~{@jG}*FG$`#Gt{K~kJx1^D=lixBZfRes=9G=Vt9njQ95%cl@B`aO zZ#T-m;~I|Zf>brqZmGH-q8v9}svPoyn&Aj_(T3gR9JAl^Vx|sn_I`E2q;8qP@N6o7kX)s1b zr&952hJOHvs(&yjdg-D+Qt^!uKk#5#NUHh4s8K!OaH$bpEc;c@*jp-lY3qUdh?)rP zPCii0DDK8|?oQN+HF@^Mv+Yq4KPupWWfkVe?gBI-)hg+_1>SJ+Px_Ckc38kw*((v9lz z2zynfagF^DiN|1|W}Hk6w8D5}QHk1da?`mJ^FavP1=_{u)NCgcb~{=AV=Fv9t4BC! z=M!q`T+Cbj&*@h^*r}&$i9fICS>hV^-qPdx4D974F+z~be5nDKedoT;4*5eHl z_hOK&PL48BQTda?=Lzs>XD8Hbf>5(dP)`B1VU02bwG}A6N$Cj1H?GM^A)6p~h+@(L zrvPt)5NdV{{50Ur0&f%e8Ni)u7M7rTfO?Ef%P=Dt3EQ~+eJ4qqC6V7kph-78R zeQO7qjZMNVmCO(TspJk4_Da-hgJ~PlSEKB*x^zkcjAJdWZ}X06@Marf*VUyZDf~#% zrx65f0b%h?DO{3x=iG~Ccaaq|_pOAd(R?%C9qF2eJ_+wiHi&rPmV_PNL`^xLFju4C z5}ubD>)5dtv0|Pi`$*CzQ`vrvH)@U~3z`{g$tT#Tv|=x4au|`#EXgBQP_w;!T|*8( zmF-@l+k~A`>zUK3Q=mPB@3GloR#v%3CmBF`p0F>~Yjaf@jxz}W44xy9Sl~XZ3vbB4 z`0Q^krywI7mGwS?I|;j@F22v%4AjP+Rblz}R?xy#8GpfBg-t6^6Zgy!oFjTc;|X(e z9R17da~aQwzREW`3EvW^uZivoWH-^WK>gYX^er?fHTP%}xS;8cQaTj8pKqnUimZaR zrEUU!U0pn>n1fm#4V;75jinYAA@N1caJ8j1= zl#h--AkQpztN5}gU|JF6%@}2WDd*vN2=Ce9uPB^Zc1YvLHfaxO)O5Ae@CQ+ZJ&Cul zi>mEv?3_wNghH8rn2ac;^<$l=o_Ke>Bk{o)h56ZQ<7d7Zqc5fo)qAwLi>lx*ji32s mjGlO@lG>a25JEp5qvPEuaS5it^Q_Cq&ZMp$uG7T-d;S66tN&L3 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/MAC.COM b/Images/Source/hd0/s1/u0/MAC.COM new file mode 100644 index 0000000000000000000000000000000000000000..f49e835a181bb857bfa4f40c77063233894174dd GIT binary patch literal 11776 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 LleoA4|BnA}sttr@ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/MBASIC.COM b/Images/Source/hd0/s1/u0/MBASIC.COM new file mode 100644 index 0000000000000000000000000000000000000000..c9ec3cd39f6cf66c899bd0eca759de3275045991 GIT binary patch literal 24320 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 OZ_b|!NSK7;-~R&C%=L`` literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/NULU.COM b/Images/Source/hd0/s1/u0/NULU.COM new file mode 100644 index 0000000000000000000000000000000000000000..fc5594b1e2c4eddb679645296eaeeb9d32991990 GIT binary patch literal 15616 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 E1<9OScK`qY literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/PIP.COM b/Images/Source/hd0/s1/u0/PIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..4b2ce4b689b9be798eec94cd4275aee957c8bd07 GIT binary patch literal 7424 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/PUTDS.COM b/Images/Source/hd0/s1/u0/PUTDS.COM new file mode 100644 index 0000000000000000000000000000000000000000..c0ceba64c60b85f2ad07b98694b6f5158529ce22 GIT binary patch literal 13056 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 vohFDw_uM@gql}Dk2Kn zyj(%9KK||sVTO7}yj&{IIjM<7nR)378Hq(H3MrYz*$O%N>6v*7WvR&}`9*p_CA?g& zK|%gO3c3ourNt#cg=MJ*X85!S3Fk z-jQTqa40pLN)B~x4XPb8Z`A~q2zk44tSl#e$kJ3_3% z5b`r2o(Z{Q%1xn($Q^A7Lu7v&?}~-qZBv@6lS39X|Arq=$LQE`F84G!1 zA%83sh=od+kPTSfOvKJ4@*=^Qa-k|d6IJtNTfS-%{!4y*E~?fD`A+4WOXzpT>thy! z+9Y@7Ta0Q0JqlDF@L3F-MkCu8Q~Tv>^4YeSItci!fQz+uH4k;=H}&#An3QjF%6?Ax zulb6hMk8*iTs&-20<~&TIBX(1>llK|Pvk3!+8oct4nJ_{(ZyfnD^{bjGpHnu!fqp9 z$Q=5?%%97tqi{Z7sW&R+91x;6mMJC+s8Yu$=V>nat$ZE*kWqXje+|cwk*{NNe1K7w zUBZxYZImOH4b{fj)6sz>mzm8f->Y4kwh86NrCURen8Z6`1A6nPIW#_w#!;KlW|W9w z<|(XiO7%{Ssa8qBqVk;}BCGtnE8ZBJJhRWe6yjpa&e});1NmepWs6Dtd!xE>PPNUc zMRTfmPGzNd0YeR-kx-h1MI+d+95l**HmbG4&yC7Gj!=k6T!^rY-r+oTSe=NRjw-xE z*=Jf2b4Ilhth+^vqsrR-qis^|GqHow_6DUsoNz|OsH6eU zmB;tDsm2%7yg6kmB|E3=d(5+2xUAA! zx->0X&BTL7vr_Ki3uDS7juha^A6&|94z*EUF+swFYo8lZ$t@_iMCLuPE+rFD{!qNu zw&=Lj|0?qb{pXA0+oI5SAh^e&SHEnADZ;go83rTUqG0&s%(?PQ{DA4f5Q|_&qRU0o z-dF^?nx)zfo%0%}&n}p!m7mmz&s+F++p_#!ZR7}kQbQ73Q7yvr7V2dYEEY6f$L&1$ zwEVoqcU!~l;;+{rUeyNBq}-(SGzxKx*Nt|VM0*}LDn=~{Tj`n*#V0N7<h0WZE0OxxO62k=-Z&Vcu0bFh%88|hTrntEygmv~7Jsu1 zeJ5ug_d#_uW#pe|1JVgV0a*plmD}7a?DpuW1g|FdI}@9gw=EE0mgEfifvJJo<@ed5 z*t2l+O8~9O?xM8zTMt(!^3LwJD#Jz8M82^=d4r5z^If-+16uPg@{I-L4(=#`I|~IE zR1!g8ornZAKX)cwyC&p3;X4I1`ph-8Y>^;B2SSE!Wm8HTv2XhBTQ7M3(hnixrU2G#4s^|@lQg`|$!Cgpm z!58HT?-#(Kpto8kZG38`| z@XHd%plLF+6m9j}_{BQk;jczn@-|SgrWALf+4yLf*iy@n;GYLLHzO zsI=QAFw?{)>5|>#JJ)PZw?y6YG@(L-lk#hY%kL}oc?sIC6C6qToQs4UtJP;0oAcO~ zSg4U9nd?k2!p7q3u&?wx`9>zgJu8e@wWW_(X=BJ@7s#OjDw%7*;^)UFrP>^dEikrHO{NKwKFt^I)gd4jPREDjYh#9b(x z>RkMGQNnr3M3Tp!a?M49F`=tw8hFx{c{(~NyjVnhI#;AL*yVFYB(M){h!oEQUQJ)*SSzA**>0 zjDB$Mfup;YJfSD37j3qGFe~%L346{XFODtl@Mn*JQbvY388cOti@6t|{7bZ`KPyiTajlx8$({}qOOD<{LlOmj<74WB8AoOI3?gOtZfuv~a5SbTz#o-fz*+xDD51Jjs319#QsfS)&kbJO9{T2Hg_P6b;c9WynK~WTJw8EjxI+QmZ%A!NB zQ~8`j-5@_~UoMA8CiscPy z=`Yp;;vaN~C=sv#iAlJnRQz7)>a4B;|K`xO?t&xHr7VP}S0pS|Z_>j|o8WVjh!A;i z6uPu1_oDi6dK^lpL$B;|VUx1ui=0z?Y7o*P&Ux^`eFu)-DA_xqN<2?idXtmgW60VK zne#z4C?9r~aN`IHKIL2*hk_v*sb^q&``eU<+{$ZCX!D^T$bvI#PXWPFmX1z14B8EF zR?y6)?3!XOK^8gjK_`aTuS8F~f%nJAquKlEEsytVZxX3`GXt!LPsl|sV9U}#7z*Fa zp7tf9V?K+~P^s*5HoeRB%hOYa~5nGqC+M zHxOfA5R9=sHeqN_d*~a2&ZR( zZF*~KT<*tMOZQC~5b~vO`SM#+yTjY${ve8_sPs}&_3nN7R8qYn;GGNjBuE|XO=Asm<4#BnfJ@#!+Wh7MgkiN#y7>t0tz!CL;} zb!BjL8TASPxRW#;cK5s7Y^IGdcs!v4bnMJwVX(xnml4La>vYuH!?`){$;Gdi2@jW< z(O?rkPg97Wq%y}JYQqRJ(;R<*4ud)|r_9)OJZKS*x)WtEsENpETf~7(1%v7A8zx3M zoAA$Na4C4j%n5&FybTCI0f$$j0*FA!cgl&7$XHvChM3Nm@loV7E-O!1l^>V0qivbx zcTW|LE;|TRc-N=~MwcU}%P*?KGf?qE zB=Ey1a1hk7pE8fe$1vg1a)|EnS{)i)5x+pY_Zq{*_sZDuwwUl%8Ei^NEd8aP%_fF) zcfOiU>_ly8MOsaCi}}oIVo)plv@)%gomx4pl>_L!BKaEQDlB7tCYM9yPLzKfr_Q4HbV5EI@ zhV`ysg`R8rVa0UCT*c2S7AxMac)wzxa!=(aD)(3ZZRI_cU#UD+IZ^ps<>|^_R4!I- z^C^WD2PTD`6$e$<%OE1*lqMeBmoQ)_L`yF8Xa#$;qTQ8eFw9OItk`>?VpnWwE@AkY zVSV@K`9~`rOphJynLYbJh4ppxyF$F90&ME;r=^Tl_l#Gk7oVy)J|{k1;mNJfiH}zR zr}Fg*@zqM@V--35LFJVdlk%&T>o<$@6>Ig?i9^*l9>lBu zhqQ50-tLL*twMMQJIV15dQG(-fa#FfhJ@aPfO+e$_O^@23q|(oa`4 zK8n7K!asWG40~pqPc^={&8J0-*KwQWZ+Z~qn0#u!@U(}YjiO4KnTNfq=j<1~YNha= zhmzXwSIX~rbUd$Xc!bwI6p7e9fa@IqAx^G(z*U9!i7g(rEFBLs0)hz4io9}|85j3@ zCxx55v+>U$mW_M0rNO!~KU|D^vEbV;u5(%}_fC(i<-%S9gAcpCn@8ywKzvZkkL?=9+3)O3RY|6 zx4-^5nP8S zutbr1e#WoX$&3CT^-lRM{{)sbhC%2n_vk(4dB3Lpcvo8dD8)Z(sOscN0$Av&gD&-; z^fjh1RVD7kUae(s5F@qc>nR-NUu(3iaXhLo5_5^bePtE#_VOsQ$>4vYC^GE3bm>8v z@yLiz!ig`Vb}W9R3fokSrEQAyAWf9k2ppg3t{;^$YR%Nds08RsVYR4YIZsj!L45Tw zrMn)XpoJimS-L`gs!HuZp~JldpOloZRZXG4qy}H0{O`ppByl6FborI%sz4m&Fy(iu zD7};?{6Wu*;1v^Sxmt+^X_rn|(L`h>N|RaT#{xL=9SkHa1R)If1#}F}0quNnUqDf+ z(B(@3z6pU@ZLFc;;PXOn;J`o0dji;+g^@r*gSaQ4vS;@M8pJCC6icm(;ff0BW~E9w zUnP7zKq)o6i{A>+q`dHOAU+K3##8Sie=8u~7odZp@GSy~`2nI3imF5-vsvd!BGxwQ@(5{7yi5rb>7xAia+h|t%VZ*T5ZM1=_Q+RwpvpKFBh>exZ44{e}pY8AQKr_=<6n}a0Bj|7#L zpm0x66N1RG7((W=CWAR;V^H`9?dsEbriG1P4GFcd;(Asy8{t%tW>_b1tfI?}-sA&8 zQVsE*wZ@l%IA7zPW8q6yXi^$vmGK@ti;)`%AHqvq_whFD?3r*N*Jym*_6L}ApQU2gzO+|If4_|C}$R~ z(LPncHo@*_vpCm)w}vG44&3xP&N{g$TqHbi27&w&ZOUYby-O=kY2}+59QT-jS4OE% zJ(bb`x5eYRwc*nmnn~HoWpymdg%DvebA$yYu%Lu@2OL;Xuf*kA2v|@q#iXn!vowm* z1B6ST=5Cb|og#vW)6tMr%S*LeCb+xILXca&Gcp*W&5zEC5>h8~xjch`_VYaXdJapW z!^ZwLEAE4?<1!ksxIrA?HsvHtYqcJH=m7WF;(m_Il#5Lero$(2DH029$EO>EA@TdL z2bxpyaq+>>vI8*i3$5bQ96oOVLs7p(Rz`I#KF_r~*})K&&2JCsxmTbj(kOi^)t(g2 zb3Gj8g*p7Z@ErtkLn3c*G`|+KoZ*0zP-xd79+$=7$zcPej6?41pK6em*JoB*Y9=7f zQ5u-TtXM8)wOT{NAutYi#5wSe&hj8^XHCM{vl+eH4V>FMY8Lj?NR-0DOt;h-ta^43 zq#_Rz)2>Js|5TI1&4`qjXHagaS?fB$ftOFz*fOPV@oO~`r4q7!Xw{hla=<0zhIGX5 zwrO}?phG=kJBmYhw0W=+E`~TK<1SU|YBQ6Z@MaCB5phFaha13Jx zD(99Rt5`OP>*m^aXJ+%-eG*_FzM2|GdhPLAI{ZWID_T;d6ff>loA3yhhy)H$XQVXM zE{X@z$pJbJxsK9(5;>mb+Viz#bw8@Ju4`P^z3$3&H?8}^y7TJ-^^Ntm`t^K6V^d4A zv#UF`wXeUsv%9x@xO-QsH?_Sd)ict&rFWn&)i*MbN)HVWCcAo*-CfDoO*xEPJJ22Ecu)B9?@XG$dzV0O0 z*tfg4Ki%D*-r2vicOX4DkRBP>(U%@driXgcL%r!8BZKL|!Qov)$-bfF&`@e*sIO~i zsB36=WVo|)xU+XSH8Q-lZ+I&J$>EW%;T@gBJ9>AghjtGocMtU@hf_UW$-cfWJiGCi z>Kjghmj12ykPAd~frQz;K=Kjc*Zx`1_^xxUzI@)r2_uQSyf zz4oA38+Qk)^704Sj*!J~uy3j~)E)O0ap(D8R8M;>{tAD!U-B3D9qUimJ;J@>EjA9C z25Te!%j&+uz2vH|JI1~3bp;h~sTVibUQ21f>!>NJ<-KLza{uqDXT8qakpIs$`Tm^$ zb+6gWcq_b>UaQydE%8=)JzlTZH*odU!GW%>AjFp%4E6`r>t9w6zOekN6u4lrBVX~^ z>gVLI*6+r}ZNjbf)ALIQB@~PI*KZSt>bvlV zLk13gc|k$Fa?UcNcFpDar_>>d@{6Xki}k8e{z*MTsKt6#Mp&0uXmCaASt;s0=@!n` zd%2TyZj()ztuLX|3I?S&!)g~)%h~4jZ1+0P7WPc7$Fq~W;im0Mf4xw#KJwGrd3F&n z*fAx3JQL{*w?&#){=R-{RykHbHa#_oTbAQJ<3F+IN%KHT#%p6!>n3b+_xigyapQXS zr?q#TKO!yP$$nxz`3T_3=y~6s%(7z_d%o5)CK-bHK~vBYEDRO}OM>>GGguld3o^mV zpf~6b2EuH(CcG}phnvFTa9g-Ne0g|N_=<36I2GO+-WDDRZx4@zcZIJG?+Je-{L%0Y z;ZKBb4(|)!7QQ1q7Csoxgg+bpT=?$rz2W=AUkN`DeklC4@X_!$!jFf)9X=NRUig26 zp9-G{PlkUSem*=E7CTON{Iuie9lz-KWyh~NUhR0jJ+yt@_Qvh4+uN_-bbaUbTd)5=L>$TC{{MZe=|kYbp@9#*{Rh>dRNsHl zVlddfqS@d&Vh~U8>_-0N+~{7rT`?P^_$FTb2_N6Al?ko9LMuC{%qU|mh>dLm?qrHk zmt5BxELJZLS+6xA$M9Mc?orHwp+RD=HMASF&CI&UH6#jq(#TKaW4~I|zmhKDZ1Sdt z_MjMPXz%0Nd%5;b4qwV0GAO_0fl+*;0SOO2#vU<*I(hmyDw5=J)>D4OvqxL$K4?Rv zou7zY##1cN65}lfY)b5jSm@)t%V6?^?#ILE2|cYn$g_von0Rd?LhIS=UVA>)xil?t z8Rb}mO?b9J%I4x5`BO=}CgLdUh03!HiDs%9sn&$rlK6Yx?pVM`^}_rVd%RVdY7oIi z=Os{Egf>Hf++eJoxdcDG))g#OJ#%UWeP*Ouh3-Zque%%L-8`-++Z(0Ty>>IOudv-b z&R@G4+YLCIz8pnjpqmFPB9U06H5S>x$FDWu`tP+Sy9d1^8~I2Fp9T!)%*M^)7aPaf zO+3Yn^dF8;4Y5dLEdD72zCcYhv7a?ScDM*_L{cHq!~xG!jjm0+nv|=X-0GlK4r}F* zR`yXzAE?UjG-{u#;(?D>g~ldV1HLI5mOU8OkJ1&1seSZpjj7w|xq(+((QT}h6Q63# z(9O)*#wP8B!=2s=$q>}&3}aKg@*eN{8-rI3vID%uIAdr~e%i#|#Ag9tQfeFJ+nTaj zWCG6e^NOu;UMX!PW;*1*ZHg!G6h7ai$dULJ;IDkFiTyI4rGd&T{5-NaeB^SzbZwNx zw(;#@PX8Yo))piExsRuV`J94JGBB&b6uJSbwVjXr4X>QxT_ElasPiI`4C(4Q+1Z7x z_SscWGvCR>h?HED;BO{mojg?7UIrzGcqWBr>c9cofL_Szd4+E^)5#hVm3x|XZD+Sc zbYn_JLU#jiDda!S&t`MV2|^2Mpu2=?8Xpujn}zF}#lLG-jc32xY?lA7 z*?y$miz}P^nqeszmIKBt2P8{~(C4R@@03{6nwHM?X!>Cdq~6^ThUkPYtd#qj@h2pXG3*uHj8Bz@}vom z^JsN_nV%NTG=n{VuZ~t?W4zs%*)*!g7r)lh9)@M#+X8t5raaROraaan#oPJGxp*6d zohSj290;xi51*KWSHUN8@_Y+*6=zy-J@rg8K6iVjS^2#Ff_^ZXck~X+E%*!y9g4I< ze5Uy@+!1>j|IiEKv6eJ|T2^`vYNh7S5uYpO#>rX6H}JR%e^%%XWLYxE**qL3A_+biRU7CPUqIs(`!?#^qbf&jbU{qd#@J?nUCxWQXF>Vyu$vX5 zw}YZ=hHd8`dhuAxQWSYlpr4d~9PY^|wlFugS^QoY>#&8f4jb;+wD!bUdyv~KC}F8b zCuZta2^Kg9CBQx3xp2aZ<%zF{A$~|*`L_lMH}0V8Sc~#%n7y5EALiPx;@bP+&e?nU zQP^i>^O~ZNAs=g*0IT%D3lo>@5@U7qy|XnQ=O^W>TPKw7N5sBX`(uGZTov=jY4$r? z4=>*-kG6t_&KB|d*25KtDteTUwP26aM?cUCC4p{$EcTi;MeiDH=?@Me(hMethg1E* z*5+2*Ksq>_-Z9jLtNvb`SO)1IC=84cxVv{KMVJ3q1u240**@Hjg5Y3kXb7JM^bYJy z_VsoL2a`hpj--a-f6;R&mF!;YNdfwf5q+LrL%kyxF?1yd5XuL;`qK2l0jL>oR207PfoQP0Dg0{&yS4*2x(x$lD6i?gaOrQ;o1Q%Y5xKh+2*-L1@yPJx8sjyOUKkn%0SxiM9 z3i|c$?)${;p9uzcC3|tu=?QL04}tf+1K^*nsAjE(e=U;iz6$T!kpC?HlLP;6IDj+Q I|Fz%$1St4NTL1t6 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/SETTERM.COM b/Images/Source/hd0/s1/u0/SETTERM.COM new file mode 100644 index 0000000000000000000000000000000000000000..eca19bf92d4eaecca331c64bae8faafc0336ab45 GIT binary patch literal 19840 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/SETUPZST.COM b/Images/Source/hd0/s1/u0/SETUPZST.COM new file mode 100644 index 0000000000000000000000000000000000000000..35e4b5893b722ae52ead1900011c8b40d0d0d70e GIT binary patch literal 7936 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/STAMPS.DAT b/Images/Source/hd0/s1/u0/STAMPS.DAT new file mode 100644 index 0000000000000000000000000000000000000000..23cd9bd71c1b894ef50a2586e531e643e136ade0 GIT binary patch literal 11392 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/STAT.COM b/Images/Source/hd0/s1/u0/STAT.COM new file mode 100644 index 0000000000000000000000000000000000000000..1de359f27a749da7d3127749f3720426be6fea56 GIT binary patch literal 5248 zcmc&%e{fXQy+4QSX0yB5O*XryHCWkucNMueNMxmXa%<9wiH@{{&?G={LS;$TuoAMc zyO3f_z|m@dsBOn-#c3_J0z#>+)B!Zr6!zNaja+^1o5!0;$9coEFt*!Hbvk*kzUhR1 zzUS^Hsh#)t+ktz&-|zXJ@ArGYKTphCT#BM}WOnV#riZrYm1P5(vU2smtX{5kriaq` z@9Qx(^sL1HL>XUiY*-I`y@M0~+V$XHyVB@s?q)sBn^^DWUe>v$ z2XMCnTmh~CS9D!z-GUIrLu}q!R|~Cr*a0v{S>BjW{II=dor6G z$fvUDTs}RJV=bTl^eruh!d513Rc_yxPvN!$ne3p_k=&IWNay#l&!>ko+i1f%KfiHH zLUB%Xrn9Mmd?ve3xnm@sO{a3KV|!{~2ke3iKfdLN&owJ|d^w*Q$+J29_TkLH4%RCr zVY?4j?!YeYvlo&inqx{jr?9@%&Ry_CH>Brw7|Nj0O0Mcn<&`xfgXw`JOd;yMxco?R zXKF=$-!A2P;>Tx`ay|L)dU7ZoS9q|5yy1H4Qg&cVeylj)K4$dJ-Kq9CqpxzY=7 zr@&AVLXn%l4nwT_G8v^SIkHcYL8XvOo^_eLa%X1G$RJaC)Ay$kXLuC%aWs*amG*%F zC(KOA!AbcH>FkDd$6o1%1x9bmW?)&z`sOZWV=9|VXGWA|J*nM$5XzjASaGw)RK`}v z5<=}0AK8C$%__xi7Z17YqRaf2OWh(`xY5rpvWxuijIo7XQ~;d6>&MYz)@9!k01I|! z+0;Roy(j|Ae#F-tEn*!H=n3(WrN+c=Jtmg2QgD&IHev+>_IF%CA3j!4p|5(q*wwUK zkBc!#dB+7{9mrVXvA8hLf?+8!*w4818$@T9eadBp7z_IC?uZ0x2~d|o%QC4YNLo}~ z3e`j@Scm<@jlxowOHva^p)!f&G%SD{rKlB>?Mmy7pT>)T*osoFeHjmwrGNZlsBf4F&O?Ba5nD5n4!bC5m< zt(b$_=Ahf=pjHQp7XNczX$v>sbIj_Ki=__0JxQ_}H!=pqD2!cYsY4>$lxre4Y)9_4 zvCzH3{zK&SRMw*pijofOKtxT89AWkYk=USEzghJ$P)o6UMH{pKEpmGD>S3Hd7M~e= zLRx}!PkQW=E;HjHsmw@=$(y^8r)Is!Qg>D~>cb+`hj`o_DP79Nvp`Fnx$OUnOrP=0 zBc&$VyHBi(-&xhPJHE?&6f#D{Zq#8cBVxP7{=^=US;}HL!QBk0;Vto;u-}bL2WyNG z5iNe`(Q{M^zjcGr*dwCTye70;@Qko?o)Bl)ZN%Z?TOK_lEdDY_EnEC`TI_GSyQ^6U z*X17m??h4eQnEy`OiX{FM&C>R92MRcwl&?fs?buy-`4DQH`lq{=r(Q?vsb5{sKI)r z>Jj=unEJNn9ZT#LvzMnHt1gEvMOatG9`LOy9ICPS zd(zTd-IML);-G;Kf1jiB7nVuv$%=Q#kNT4c<};DlQ{@06YU-0>#{R2}rR-NXc==Tl zY~JM6pCb32^K#E3NDVUktjEC>!nsE}ox~E)YDx1;+Lz)ROPc2J_DQ-+(#LK?yqv;y zHZ!ydqa5sj#FkLRN#f)3WT2vjNKX?9JJhOD3DWK}jv^)Z`;22~ zSjP~-n|#z)ehN|c>gpvmd^Ix1mv~Ohvchqn@l$b;p}L4+l>wr=aE;%nVu=$%J&q$y z(tzh+fbe76NwC%23qPi7`Sau@_K;Wv-?{CcABGpX;p{6Y?Y_*YroxCgBDyS)D&#L{jS%+TH!e=G{}ZK zjm=`Vb?VQ4{u#0sM?lk$%ixe3mbl>RRd)j9JBhh%OnswPKk3Zv zlbG8lg_)_9No%P;mjkK(#@H#LzCg}pp;J!Y{;gJj9{m{Dfyh@9zYv5`KYo5eKR&gf zoL>-Un$VAtJm>E^6)k>LOY*q!i%KVcrZ%_(oq~$U{(?KE2)oij_U!$VB}?Lb?8coSs8ajGY0p(Rnt#9KhPzjjFXU;_VXw^*R`!UeH>u+QZ>! z@pl2^f`-bO4p;zM6Bjh|g8-gk2+aopduhO;q45$XMn6-xvzE`Q_u<3)*<7>ksGo1v zlLu+4jBDzf8g$^`gl4>{HS?E5XhNI8fN>snhl2K&usW$>c>1wSOg|pfCpCIQjBDrx z4)}`Jc-}WLwJ%7Fe)FNAF{xejqwOZ%)BxU=nA8egL487tLyOrQgraEi1QD8uu(eKq zNdSn$cxVf;MJj;5Mh=JSnGV?{wVF})KHMyW{ih&5N)dC6#yiP525Ed;Xx_^JZE{1&D+LC<1I{L*J<84SX}_$umHvhnhxOq4Ic+`9#dQ%1{1Gi zm*FVy*gJMA!fPFbyRc%Ak6k)8Hz>|av-vpA(0TQBIJ`XX+pgL(kz%oqXp87h^%&3; ziPn1a!#d-24amcz#s8=?TkGd9IhJ@s!`|$o!lxW6=gcdEX1t-Dq0KjtN>fI?G!=Iv zxAAdYxO5&52lKr;n%BM{N))j``WL=f&&SE_W`CH{@M__S20ZYv3F`(!6ozwJ8&l6| zWdc&_oJKKvO+$E_no8||}|{VF^uz#QzM$5k`6Eicuacgzzlu4!-@+PVhW z(7-m=MV)t;ugr>cf)5&k%c$j^3nR6n#RnUL8ql&^%?CqhP)Hq02)JR+EB#^ncdlsh zg$BE!#sagG5AX}*=od7+2h~r8y)q?!UpB4n;2E-T)QpBJlmo}+D2`1FdCHV|p0^t= zHTNZIsHO!BN<-NEMq72;n6VO zJ1bnF&4Q0GC!7bu7?~G)(G6#eyT$yU%+H0Xz4NwNYl(}WknbYd-Cqs!$0?UEYgOAx ze;d`#Bf2g7E*fInfn$lcv{_~9f5L{X&3X$Tgo7){*>7oGSU|fiVQYoogy~68c_|c{ zBLMkKl|Ac@7MDgaU+e+5xje!@lBs(aQ7TWg*_y%~5xgBuP{#w7$(ZS;f3}-hmX+R$ zq+0wyCcOCTLssdYPq5PBuK{_qf*b{MWXS65LbTiJXSC9jTIsRxX1;o8C|o=g@m~93 zYvJKYWm_w0rQ-7uZ)@Rb#2WJi3NJ=1`LqrcUUi_ao{bLek7fde*CQ5`edT+Z`+qo8 hHsZTbb!f;!BVGJGfS?n{_wTts{-aGLYw`c@@9!f(#y9`~ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/SUBMIT.COM b/Images/Source/hd0/s1/u0/SUBMIT.COM new file mode 100644 index 0000000000000000000000000000000000000000..2e788827b2a45aea667092573f2263b67f9243f2 GIT binary patch literal 1280 zcmbVMOK2Nc6n#%KPeBGx|AC4&ej`ttbd*wOk|=nPRj|^KLR^KUpG_Mxk;ayYJmZYV z`uHQu-INBhDqXa+gl2a29xys?v)EWAUQ*uqpOO&iVF=1E*Iy^l#W`aV+ zbjHed^&kF4+os2CYg{>QIL3tOLQc2vd8=ZSO9h&>E!VNjG+Ts(Jj9`gW9D7ksna9V z<+74BEX#Ijwro$Cd+7<&C_Iz1%JpXz8KJ?%Z6d!V-3>mA1m}dHBL;5}U;c(nCeNy0 zlMN{roCEwV$2S1q7n~>B8c^SJ>N}wB-===#)DJ*C#H-dhz6tnYNb%*LIsOUoBOL$A z@h^aPZcA*EsU);ce!c?VFZ4|^q-~PU*6PKGxbx`(Tot|jEZ80ZgONFMt4nPP@jE&=2%MFpANPIv5gYPA2KyQGuiOr8c|71<5`B4A zI;&Qsez>^@wsr*XkZ?`J1vUz>xDt)&vr<*BNolPHH!!~({w3l$e&_5Jo{q?05!e!N zU%R&%j}v^E#e*55H6(Z>ljsdeYa+G)iwJf~ZLq0d2Up1;xglK%M+sziX;_gea0k6% z64V3_)Id9aPrFX=b>16hOTxr#zJ~810k;jZ#dZ(5F5W`jDqWTLddb7C}nft);VcKm$t1i_JrduzeEjk1dm)J8M#_v~Q*R zaQEJG&OPTl-}&wYC~8j-@w@Ny_RI88J}2u#!~5{a?&jTIA#}^fN5?1!S3mLC9?CxD zu_tMJFKz!s+xHk7u@#C6$W##mhG~Bz-@w{!T=^yFVJEzfr^n7a`3!ZnWBqg={v~s5$*8cguq4nGQC*&h&Wn_XAV5D>?m0);W(;= zM^Ld;zRMY+E(S-?^6kb33PP(t&=3m?56i|zu2Q9I!8lsZ)gVi!6`-i#F%*@N(^73< z{G*ibIcTfBdX)awF$V6x1%5`SxbEYFQi|$`!VqPoOWQBnbQ2Z@&)G?_($FT&O|r!kuYx&(xeRGnk(m$;<`4ve3YNP7cU zNwanju{BVYYp(ly*8uAS_Rg-OQ?s)(v*!+0zGSC59xiY;Cb0)OPc_XJ#T7`f?5Qle z2wx;bmp|aFz$hwqwEkKMj}b!05J+Q&dL5=29!CWckXzAF!e6n|a)gDuoc0Q}-9Ldg zL-VJXt?O3I3!9h#8X5O7fCe;RInttY=H`#%mi?M%zha!k6ZuRgPx|YGoNw}UQIpM1S(EY=8-GM~xKF-d%3Tp%hd=#*(>zaWbkM|6aGgA$*ax?C=J0uu-xaA0*c_#O(}=ix2IX5fW@>@ELik18Pk zH_Iy=(h2|<=M5PT4G;7T!gng_6}-aQp}l)B#`Dpfu4GMYPAUdI)YCVBRoO74wER~b zZg~`$)-Z&+i%eQm-jT7YrT!k8R8wvfMvRZvOZWG84ZihcVEcjIzMdFvALttFAA(TH zfZW(HrEE&lQvi5he{a0G`)EHw+kchUp~(GE!;qMrKwd;b(QL)G8j|JOf24uwK6P)r2% JR0IE+;ZFpd#_0e6 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/TD.CFG b/Images/Source/hd0/s1/u0/TD.CFG new file mode 100644 index 0000000000000000000000000000000000000000..ab44bab9d44838b1af78092d43cc2d2e46a36243 GIT binary patch literal 384 zcmaivF;BxV6ohTD5KB?#ZZ{?pO8)>GuWX)3hm0<9QcI~FC9Y5hejg)$iRV-uP*pg4 z@}1v(@9ROPvzEF1mQvB9SPA(oKV_~|mSteogqPqu*PkX6UGR%TWwQPiXYXG@ZXO47 z2AODQIFIdV3Zpe11yQAS)ig`ZZE*L7*DxJTM4|PDXmd#lE~^g~!4GG=U!nH{zl;ez zb?`cFhCvK{&qfR|L$s4;2JCJ8u$DJ$FJ#X5h&(R=roUWUXdXlKgoahZ`1ThylD$~D L>X@*~mH10PTKHJ_ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/TD.COM b/Images/Source/hd0/s1/u0/TD.COM new file mode 100644 index 0000000000000000000000000000000000000000..552aba678865288f446c7e45d8aac620858940a8 GIT binary patch literal 2048 zcmcgsO>7fa5MIaFyLJ|L`z zkOgWbk+@X7^Z=9}^@gloN_(hG4{ae92sc_3s!~NoIark~Arz@rWy%39owu7NK+{8e z=(GGhZ)U!kdE@zBdA)6POaIV58$tBHHykCF_@@c|3TcFATh`H^+4MX`f7`-(Z6(G|Z?VI1>C_@sq0=_s?_@GD zJbb{9Mw78b5{VKTjbR}pBZ)tzW+Xn16cI_PfRqVP<|T1l;&T2rcZYi=V$`QQam7n1oG!UF=ra9MF2 z<;3)Iw$zv?C>cQ&Re2@EYPRRfL#Y+ltOo7Dcg*F&>2z4r(AdNTo6E5>L|H2}?$Yo` zpH=TFDD*xoGw(lvBtFY2&@zciEbm;{wc=p8{;xNMeB`~7%q==;z3T8?QE{_~;42uiB?yeKIs**{`A7nwaqAG22v zQAUzEsh3FoC&w?eLqF>L5%&8e40(~+pnIHH3GyuboH1>6lK#d4ldgY4>32x_5+(u0 zf8{KX+AM)RM-^vBZJw8aK_#?-y-YR1&=>&W8uK99rq58m1;8%@?vR*4^q2$L>1}3c zm7>q%pzJhpYsTW;4CY;tc?Ih1eHV*p4-^~O1+_+>0&j6n`ji8Bcz!v=T40Z}_f-?@ zf!jn}dYyzjl=rTq5eBhmsnQQ0t@C|B;&%5-5=;*aFYu0oX6ID}y4)`)(0WBobJ|AP z;t>;%hhwqufdfGnt!ay_Oh4Y^0&rR#m(smCtD!6qhvSR;jZT#y* zp>#Wd6a0Z4Dp#FTiGu|rwDo$R0NNe%b#LuZCRhswZ@3ap!WE0pJ+AtGoix_>w*2he zZnVzV{8yZ3#3=FcxVHVfs+G2N(&(7ij6?IMj6;>$+%>;l-AAa2@1-3xbE?%%^8th)D%`0!+D>vi9Q zf`J&j;kq91HI2xE!S1NkfEAv@K&tJtpWC6d`qbugRJDS&DXhI+zGtubFHpxq`H)<# z)chBzeBf9B#OBR=wP*-ZgQ_t1eLxteeNS{m(U+g%{Sn?jG;6Egz0s(6!maJSPnL!? z-~OAmPM2-q^w*P&#}*`91BJj5u~3?1?A03;I!@u&36mwR$_hHnqZ1Q6pZ#kv&9@Uj jO&(X-LC{k~wD7XW4V6aSxS)fc7LcukHs2!g|E)g(%`&K( literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/TERMBASE.DAT b/Images/Source/hd0/s1/u0/TERMBASE.DAT new file mode 100644 index 0000000000000000000000000000000000000000..358d61c0adb85b8e8e8681526ec91950f03b953f GIT binary patch literal 6400 zcmd^D>rd1`5MLC<2T_pM$@th0en1V-o+1$AhvOZQaPr2BiG?Hle@Vf#wh^WIO?6`s0t}9%y+>&wKGEZB>=@I$n)FM;-6~ANr zX+5y376S8#?+_Oh5`QJt??4 zo=d-tnvjzqPz3jv(RBVHr)Co4r_?xmGQvh(-I-D;@9}}< zAPlxetTy>SJX0%4>i;l+`j`hy{B{3t6mNQOf2LA#ws$;|P5f);Uzwko;y!JAmP**_taZJCF zznD9^DE~c>QsZuI)1`7yc6=B z2eU7w@nBYNFVpQ0TgtW|VsCVj-;w>v-_+Ck9qy_&+^P4SrPW9LM=Tbt)NFsX!o=~f z$@#a>Ip4f|#V>l|{0kQl{N+{cJb5>(cp$5NsE2l_qGMFMus_Cdy8Ta{g|R9+K(!-I z<6`=6&UsE{huh=BW8={qMg03?{a^EQL;MFUsi36R311LrKEbSL!i=MEKPwLi93al2 zp3MG2FDCoLepVK(Vw}RyIBr*A;`_XFPzr;Zy2=0P{G<6<3P;xVMXUc|!h#90LYTB* zQs7V2|3TxThvJeC1tvcK6Qei|apD!q3Z;fAB#$mCpa7{(q3mn(`m%ofo@h;m?}3 z{y8r{)A+8Hp|v4CZd=3Sq5?4Ie~N#){o~@FKEEmdC5?ajd(SF&uXuUytM7V&*n|eu zfBL$bjepN?{G(rhrucW-`oG!vr&gAh`IyBQ0@us)be+H9|K}AX)`HlINZ*Cz$5ftU znRu-J*Z1c-c3_#w;=V8Sac7l#*AL1bU*8m;fARyxWdDEd{P%8nVX)7~(vrQ||B3%S Z-0)7sZp8bDE{Q?0~8L0pO literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/TESTCLOK.COM b/Images/Source/hd0/s1/u0/TESTCLOK.COM new file mode 100644 index 0000000000000000000000000000000000000000..d547e2b820b2d59591a532f0f7079576ccaa8100 GIT binary patch literal 6400 zcmeHLeQ+B^mLJLbvc9bGXht*2ZRpX2Wg^FlFu@32qL8(d0FLbthX4tXHMWv9IF^xZ z9Fs(t-Q}pOJC?xRvULk}wN&j^?d?{fP>k4RBIolewI zc#8J@6^Cb?;%glJ6HfOj)k>8Qh?7)8l2WrKy;?VI(kCQ!Ir(TUUgmIEt-8%?dp5Ui z=)w=$95smuC1dd(7tA~!%Fe@C0Bj&fF6`LJFHDjO*L)NzzB*B4Nf2sfwqQ% zXmnyYiuz)^hQ~&u@exrJshKZLxWF#){WG`uDW;XuQNi*7osAOjx6(i7$_Ma!Ou6lA z4*$S`AF0>rz6Hycy8}UDaa(M7B0jM52ct-CTZ-mMa`ct+TGJ8CFBJX55B>XX3r_2_$cO;;H3bOHmk6_)Cl0 zh5GTTdRSzzcJ=OxqSy}f=twl)JTf*sJU9Tz1OPbHN4%pg>2%;jmU7!AF8mawBKf%Z z6a{91edPo6-*NZ}H#WMFIby~gEdLJ+YRxdli}OUadutnQi1qc34#bAYX16g%+bG;# z4|s>4y1kPau+nyqCSKH;@LxD+n`dDY6E<21*3o)d2K_x&b8|CV8;^ry28ISk2YLqw zUK|+OiNKv`$G~88!7-if^i@ujtk}+cYh7n_R}8?3K_u-MjE$4f`5)^_PMxU^-)X=< zb9+zbD08k$zHV}^?=yV%g|E7pEC6p8m6Ht`ZtsR0` zS@2DJEqZ&RgV8<>6XKUnhxj|L)he}8O-VfD78MTnv56F#dNG9#b(nMzUnOr!ZU6@u zcORC62C@VH1wq01Z4?l=4Uh&9YDc98!&U<@a>hVlL#(%-Op+~YS_cAPL5Un|;!yD? z9Dc5zxV2IrzQU!Dx!iGy#97VL`8+6REtFEz%PhV$SHJI^S+0}#%f1mM78YTN%WJDo0fWH>);QMyePixC}cpG!?Y zZUMl%JK)UT+!h;~o10g!UftZhxpQLyv`scLw?gz911gBtItV8J2CF3Dt7h;i{DU67 zm=bRF#c@xUv`%_j+9H*9zb`+O$&)GYt=t~n(K|Lcx{AtqnUri|yg1A*A`Q$wc!=!EeKhhK>K5HuapS6A_>dYn@|He|@mf^$%jD6qwS?CTB z5cK|$O!5knn2G*C(vjNJwG-u3IIY5rSMl~Y&3^k zJaaE0$!WtzDuuZ43QrX#D(itbB!3ohkRy7^se@V2Ow@S*kOctCd&WFU1OY=aAGYaI zs5u<;sIHLyq-i@xiTllhAS5K1t~Eg93L3k{EQIg&02YLfAf%5hgL!S@NO-xYs&0&+ zkUk;+M+N?C%Ls#}>?$%6Cf$38h#I-VGZSVX?j2eeeWtTFzGgVy**o#@*wDjcgKNfi z_C$xf`$oHBFSJMds+oK-(gdr;7EfaCLuqIy&0ojo%=A0+q`gSmeaC~qP{^e#igUSL z2wg94nwaTe{TZ$(F83%2DU~e}2ELjn$H{6YslTmv=&n&nB18S!S*c|yMCF*7!|rdf z)soLhE$zUe$}tNG4bInLH{_~(^|nkB{|o5~SP2v)v>@-0LrS*ckKJajNrsH6O~!_! zLzE)w^d>e_1g}B9C@e|4zE()qSWL1;WFFE6{UimM16q7XLwJDd4nIk)FK_!A&awV` z2IIs^r0XcRRk@kB8T?B(PO)m;?3X453Vq9Koa)G8Z+*~K4Zp?#92Fd>hibtWPX@0x z)vMN1C(WugRHwR>W0sI%V#X^A1e8-W`m~37c zVO&?zIR(=2%v2*u-=t=FNW9<7-kSM-+}0=u{&=bzEMLf2C4h7RF$zjV4PZz(CJI07 z2H6JeZbT+}5)$Ki+adCk&{&6tgpnLDc&e%&J@aRWmdevn%-%pB-gca&kgp5SkK)Ury`RrR<1m9jV*60 zvAEuWU2e=crUz|{Dbjn|4n5v=V~$#f%+MyLH`?%4JCvv2+WF52<%LFGfq!m4?Z3j- z?>mj(v!C938vokP&ys2D!i>OwxJp%a``P?G#r$mZp3`vkb?xbUwWz(TW>kic&N1LSYz&gNvxxX`j&fEt`t@04xo zlSuDnhyrE!Kt5}i`_&ft3H2WN5j7w`s5Z$#H6kxkH_0ybA=yYcXCgX~z)!(vT;LDl zHO_7?b2w=9zKkDtGW;*S%z7A`1lI7laB-3_?S}#Wyi>>50|6halLErjkDqm#tk4_} z^1laW2usTyK}&eI@QQLr@G^XVtaR7Ljdui%12A~4SIKk1{h>NHe|56@q8dc{xiud_ zw#_L3gBX%&|L^2M3AoT+RzQ|$I16ZRgQklnf_s=gcUg!+hKeFjfC(++gG096f7 zJ6+clCv*0!16>2~t3I+oHjw<~n-DTUFHWdpNT5BGK<^Pu*3yU+mrB^(;Hsu80KLgd zI~&A30vUE)gz%fdS(6c&hxIT7qDY~F7U-!4kk#_0P!w%6 z{f?lkgS%)UoDy1I7kpDfQIiT6%}c&RLIKy&S+a7fL8At#WMd0(9u-=S2vCA1T0Ru= zCJWx+$|YLf5Y#Ygg=s0gUr0d!jJjke{+&y%Cw){0{qRwtG0)(g#IPgZUKxHvDCsOz zeaTd(29Qb06OkpI5k|rv3XS0pKwtyG)kl~Sp_$x*6h_Ipnp2B-wfIfbSmPbkwewAKtNT_Q<^vMSf1)l+fq=bsHcq@IX zNFLTmb^sj`B-hu_L39DXPIue!a{6%aUa&c-6!>Nkc|sHUGg?L^2@aB%VTu5U_b4(* zjO%i)Alphh7udjm0)>2$7gj=Z6qdsa9?4gml(z0pVwG22l~uQA)j(DaXVqm{b!AqK zWFaE{TuCY!9YrU=8rdrmo%qKl%pt}ca=jdKm_ybdhRofrk0;V8C4HZAGI&b0u2$ea z4j7wkaQl0aCLQopBV(!q(si9=i~u$B_cVN$Eqt5FHxCJ5=C`zV0%V<#$Q4owbV#a~ z5~W;9flycW9?a5pln~ikeixaG_$#^~FZP?Li1DZ0k@i`Afj=n-<{DB9Pv-_g@iK!rh8+HRLn+&Bk<2c1pJ0 z@1rjY7w5HgzK;aj4z~=30d>j;{2vLD_G(G;9~VKA(*VbvElTBW(}KyCDdA~0jSPhf z_?kwP;6NXPAOJ73u&bUDOa|>9p(#L~%`P{R@CrBbg(u-jfat%b;4LdK(72gW`4{D1 zBsE1MI{s2b&wm}M<1dh%!G;3J4V$Tx)|OepcU&m9Wd%*@ZL4_Tz>hK@Kz3+$eeTZ+ ztrV|cu_Yez?g9YAmFR82Lx}yj|EPj;(?(nQI6>{Y>Oi4!r0Og*nkmmKb?3)Jj zs`+B(2`9p@yB~Ktp-uA)3^@fLtBdEgiSEk!Law3|Gx?HEr0Pi;Yo&5dk#K`|;DT4o zI63I0(s1lDP8X2sysS$u^cjtj%+MOOQppsZ4M46$Tyho9-0E30DJ$jAlZ7;4cLUFY z4E81o<SuoA&g8>-YA1cro&PKc)@1TkNOmXOkpS?(pDRwdE3giL zhA!i}q-0DKUzaiIiq-G-<8R#GwL*ihxGSJP_OU^|_Bh%LY&8y!1rCnIi$KvDhjD=; zFu&|?gV%q&b6*Ns<{pp@5tLF))O|{|ivPe8{qQO618Ul59%12S)~zY}G)ok%fTnN= z6KXKToeZkhpsV=Ib4!;BONs5Jg2Wg1fVD*^f@Y}W<4|%6U@(4{1%KgRLz@|wT-Sjm zlYcC(#o86}po4hoJ*DpX{kiQ*LW?a^H<*6-7=+gar2&5D8jkP3>t7$ZOA${9%bK%G a0+d27lJuy;QZDyWGy?!xQS4NC7+N#8tM;fLueqx2z#-Gg=8cd z*~EzS?&f-T6K>L*`{>-YolGa!>9mt`CwZ9Xn81JaFW8AP4clg5CvD0Mm z?%m#jJ>kAV|0xl-`U4_v8I6X0ebG?ZWH9WH_y$BL#>An1=V4#C?-(!~s*8>dAI8d) zL%w4{=yi_o9rqpv_LfoKiQ#}4aheRf-Gs;4<9Vi~4m`rPIvd8jaJxSe#lAoQD|#Z> zAH)UoptxXOVaK5$?hh-@cpg>a{bD5@J&!kc_24g5<8c!O)p-5dg?oG_MC^-T(H|WY z!#H#d`;LZAi6+Aux8if>io`m1fd>o05RUYPMKOqneIpSuQvI-4a~I@UxmE){J_1qK zDNhSwud{Zyc$(`vT2@&1jSY*Tkthal3Ve8#`ajvhsa^Ps*#A%8JTR53*RHjBerP_T zq4m_SWns6|R&X7})K8S2xMu~kbrgbUry42q8&bnsLKD<}4v^VSz zK9q|!nv(cqq3{V`H0loyJd$-AevozVpx8HrPx%7=et&eVFtrb_xz%+7>(v_?9t-;i z2BTQ;R^uH{IqbE{eJ4IThPy*Y#c&jR>ToMebU!NpJ4(;IW&TiuvJp}v@6_zL&hpn; z0+q;D&2ms9|47TLP>Z}k=F0^=eZSDbt9^GOn zIwfB)F)1_L?joA*L!;Mwf-bwA`g*FfE*$<8=&$ z<=>blVy=dHmVXX8HN<5`qTfBD$xvqbTO=;wZ?cz|Mp~G&BYptcz1&YAAm&pgMyHxc z+=!5vb()9-Hc=H2pVexOH=51nhWA)WjzD?@wUZMfHuVX8y}6@;lJxgw6a9 z2vQC6#iv!|X=t5V;CrWtJPBl`ow#yLleQU%cq)O58l?$|c@DXee2#=r-6%oPS2d_n zf&mz9l&ErOC?nhwGZX>M;@Lb)5jP4Qm7vNSC$IEr=BJZsm}*iTe=>p1R{9fCT@#~! zx09oQV4G)aZ~U69oM+>yxhaXVFfXFywEP_s3{Qc^RAPqNPhUBrv5sGyiOb~*2`2~1xS zo?{+kT`^geTL6+rBWUjZ+y4j~H>Pg+$54&_fqJML8Ypkjk-;vH=ZP(2(W`a+%q^dk2(BK+znHALZ zXI#cgXC)U{l^`-$sqUuic}ekVrp>9h^&-)f0I$n((0<*azFbelobNz5ZG0jl6j4Rb%LKKmR0gM^q`;% z{?7|EsXqPk0qB-k=ubDB@Le#Mo}UQiW}C1fEngw$9h*}-E0(sE))!S(#j9G?Si5~5 zT;SfNRSEn~YW~Xabv!B^*>{+QRl-LN_Wr!Cek1d3BeC4YZ!_je_kO|Uc#{9Bk+TbW zdw^K(bz=^SBI(fOiM9?zFcSv;oWZRZ$ORq(Rxj}H8y6}i zW91n`wx`t4P;D8#scQJd0C8l!Hj8n3VrqIx9ya6}@jY;VUPfr@-9Of++1VzcV|MfG7W&?7uX{) z@kOm*X`6_Bo&J4AMa81IZCaU&Df$y0l@rUg@?YqAf&f2KxB2De+iC9A>B3~Crf$uC z4XbxnaNi3IjNa6>;Sad)G6;o^>Sy1Zt)1P{ekOa+VJ3@}jiSnwWvc0=Om*qXFTj<; zLf3=4)n&?`@>8y|@kR51lFhkzVunC%=~O0Nt$*J7%;^jGH59TS+ac^DhgZc9pyq8sE0zpQ?_9Hcwid+bsVwnFjHRP$t_g zlutKz*mz5JcO`GB*V?R>no6rBDc2XzO{FB~OK{kJ>FAK2Q`^g}sxymc@%`5Y!?fH} z41ZJfz4J40$d#p)-MRtx;+$)S`D3QocyZ8A{${W?EV9OCXg!be)y|(9B4zB9=WQv+@p#Gy(Gz12+08(gOYL zp|@GN#?1V>#E!Uac`erP6!HC;WUoumQbkJXmEZs@&toC0gv>2Lj8MniCK$O5aN~c* zJ~;`e;0zoyJ4@C|+!Etf`nkDZ;mJmLGmt>6JTddJqT+s%Q7gnb?h-s@UMWeI=Us4~ zV8uXr0)I4DU>5!Xj25|F1+#a_VmM~pb%LgxeM2aUS?Rk{8s^(+wJ^)7vVTJrvzy^> zu_-X%e2;bY!u!hhf9&07li9LLnN2|+>_b*bo-}9p;S#8@ON0*PRSrfkQ2M-D(ChPh zhgvTX`t0kO9I3kUWiy<&?dG}LNhqsF{K*_O!Gh5( zy0YE3v%7EC-%q9FR;LJd#J*a zw!ICJzYURZH}{0IA=z#|eedpL`6KUF028U9Fjq#Z;Z74+pPWy@u7(PAEW_y_bugYd z&`TM1F3EpxzE?j_lQC02%n~=Y0&LpsA{0)a@ zf}}Z(Scgbmb?F<9qHosH_a#Mjr?pig)rs=Ij9KCBLL!SOd=eB$dEc%43;%KL=aTlI zqaKIFlOz7H*w0sK2>?{#D0EQ)37!(e5kDZn1{@0GL3lFUxm0a-Zl zZr`I~cu@59i{V;;22p^nks<%^u-K1XxL&!yHw>TzU~F)pfZl{iwE}Nfp~nAivjB4+ zkO2D)1N>Wg=y@2ByKw8%?Jb?24h2hlQP&D%a{(l~u*ZoCct^3kYOb!XZY_Lq12I*cUo6?2G!30s`y{j|BS$!Ht5_6)cC=z-+)D6mh_R z!VeQY+6T@8?pmLc)ejSEvV#EL{h&Imc!7}@QWFq^1JOZr2o{HU7@1a~uHJ;2nws|b zg013F`0U{s4tMy*_KXDgj08L*13lt!S6{R-6$q`XJE%tj? zorbY50?zLb4h2K8Am0fK&9!=A>}oHV$GDIp?CKDsgQ0#Geg@L*>VZUo;vU~AxPwTu zFAAdAwa*VKFb3~kXw_eZ43F0J7KUrYLi;f75yI*~p_>f*LQ!7;_CC<#vZZg7A)Mi>XMK(b>S ze=yq*ZL?=fyG^%elkRR$n$ULBb)X^2hfpkG*U#o{B3cpb#7Pt)H$hPo2MmFhr@ixJ zlizMnPe*$5xpU{5`1!p$EIsx^h(S^LW}G^!QqI8O8tl&Ow?f z&Iwf*68;nTHtGrSYg&kTow&>}=>9o&zm1tjEdEe$Dti(42auM|qO|x$%wCd`W4|@b za?j#GglWh*Q(_1^=u9f{3{;9QWb*^=DLf;kp>*!|I1oIn5F?qDYUVjp=m`ZgAQR*f z@UR2%mBv9g^_V!5S*c>4GO=dqVPt@kBst5a8_p6b=`@M4Oy*zIVu@jnTIdnly%GbG z7rqw!CT10+rw6e*3jhJ<=II0C18S+?< z3e^VYNkXXl@qn{fN+P-fT71YSVeIT{QX~33Lp{c-0b$aXmTd~4S;%s4;{Y;3MnaR9 zR8Au^tPcHBLCQvSDRha@cTW)4Iu@X>JY!Kc03k$DxnYpkLeI+r&-cBS=@a04LTu)yzRP=@`zJKk zo+e!ieM>PL6T4L5vMNmYac|&bodn5GqM1$rJ7CNXj>9KTjhDbsxy86f(m9ndbb*&Z z5CTI{0IcVx@Oa6YZ!5=5xb3U#8CGzfQF2p2>fBWQrw~w59tLij030a9?UO2 zd5SBdI|bM^Q+CQR)lW&u(SS2&sy{>8?9@s3JGIh%P8FXv)k#fh*|+S}V`^uAU{u~4 zkirg;wv0NAmj&i6HFPSJtrYK5$r2s3CzG*RSSd5n8gxai9JVJ93_@|pI7`GV*r_^( zuA?dAqJhLSizqr-lz7HY`5D?zQ%(Zo54b76P%pl&x|>XiO8lXUolP`WVPEe^PK#ei zG@iufUddmnWF9e@1;7Ke(HP8JPD>k^>G3wFI!apoF`Q_u#iqo%TAXN<7jQk$n46-# z!j@79PkVc&4I};*M~vy{Hsg~xN`#%-Ca~M;Fxe|)f1detznocUn6OhzChX<-_Oc4> z!WEdWbg#xRG0?r}uDz*w7is{=j@{l)0@={! z>DudQZU>qx8}5`L{-zcWr^^7g#VLhOdO$+Y_F}HDX-8WsgL*2wd)qpacg zw(V$dldoxyryZEK`q6fezrD4siJ$=8h7>N^;oS|aTiaTYe|M9AXNu8%K>fasR!=+H z1rj+ThI=W zi9bbd9jR{K-2n{Nb^F^rd*&+PoPeD&l3aS8dDH~TJ#`o`Em(X~59h`C)IlNMrGd3k zsRFH2CGf@W6`1H!SQ})ss$j>lS8nR9BZB<_`54ITpFWW7Fu~4bw&Z{sA)4_OSU8SY z*(;zhUcu4zTlxdnuWDw8BLpOVCz~&a-6n6mXn4q>)`$gK8KhQ_90!#%PBUKysrVJG zv;o<9&3uDFR!?B-kxs7X>1=VKf&G!R99<>EU4841q4X#d$q7B6aS`Usdr31vInVr- z^bQ&`=W?VqV-ILRC8YD|K$yMA-%ofgGzc&j2V{*`1+iK?eLzycLBi&SP8g=&5=i%H zicwQ$ag`Q2F1*jBQ|JD>S}7?jvlv4T88~R~69#EnbsE3SJ&s47aG$|tTDtF9r!8*J zN$-~s%C#3$=Bbc)x_Xu`x#_j`zcJFbtQoNR7rw|^1`Jl+mhH_(5B=u!-4`2z6-D?p4 zD>GdEkR8l{Q0^2-e3<~^4nnPSU25yvw^0331>njJTq#?GHj>V@QoxSeMFoOSW^&yW zFy?wvh24~U0NV$sHEN1)OdNG}9X-8K4c*}yL0u@gQS27rG#HpKjA8La<}ci50k#=8 za0l=&pK*slcf(R57R^y7J?Q>D40jlF&*2L9X{^r@RTN+Ga&_(?DOEzLS6b&(N-K~8 zu$Tvlr6O+9i=vWr_&<#>Utsy1Fo+*za{(MUeZNM06Ao(!*h&I7Km|tYM+UrKp?Gu> zDP6|vf}VE4s8Kq^$l=svbxZ13jUNbiETSA@c_twA$KjA&=d{7$Q6#N$B5A#|K&o@H z(n_aUYH;Q;bTl?8ouob57+VDlRNa#)Vk#lQqtgss1EbJ!+W0 zsm^3s0lnbmN*x?i#V4ZYnWcotTr4ZnRKEAPQ_~NokxJaCt`Zza1lU7x#MY{f=jd_E zxYhVcV%;BbcxXld8Gr!v1~I9xIdTe)*HqaEWnrRkyd-euMrOZbLg31At-Bl_Iit@y zFD_(`z^VpRwT7XVlvCVkFxu*}Y?RoXg|Zgd21u%0kYh~rL7VW<5hsXpiBKizEkM_1 z)GvU9u+4!qfRwzEeT@rY_H0B(n6C*31o2)yQ5w0|H$6;wW^cH4- z0up+L=ph(^vxITwl9?UR!)dwDP$dvWGwYoB?$~k z^E-7!4e&cy6-ipcFwj}(!AvyV07>nTFfp55&@*0wETWyM&duS@;1`j8m>UOss9yYr zZiu0tn3*8m>h#uLJkazzM>&=kXxJO|v31AL4sKLWofQ5)j zoyjBc2L7UE2T2kZBJAaqeaw7MKCk4}LS|!b;$h$SjPNPt8|39_5UXTaG&_TV;s8q~@AuEfCbG%Qs{kxmxutwyFm&X|o1n$MJy45;|P z>8pk_9~+qO$Yt}*@>6m-AIeDs6C?%ZH5p{117}pm(*`3GC1tjR&`BN1;4HvN%6yk> z6Ue*zp5^_gml>Gv%ll@PKGAama~3)fq@eR{AvkY$K<6Q4Hs*v%4E!o6rQj<`t_y19 zlZx*cgJLUz`2aR|YANi7bTz0VMC@dT@rvNO)6wrpsrZp)0MqNbq>Sopotjdf%aAfE zug!LiR04cPj^#65trZU&Q|G*r41+r~gE& zvm&grzaeF_T#Z6Y2XG6}R9a&Bc_vBr#O!da>^1=3hVA!Zabb28^ee#hnZPvQ%$;9( zS+Gc8C#LKJ+3C#ZDsXK*w*o&io$gGZrq6tXVHM(23|Q0-u&C{;=cz@&xVjrNcVd`4 za53)2VL|rqQTlKU@Cn1nR4i2w%snWzlQ|83i?F5xgoE1=?G(}Aak(fHm zvL>Fr4~)>OFiI$AI!u<6NMZb>3d)JqB2Ltu$FO`J+%+t|o&ASbv&r4cP-fTB;En8_ zk*sa||A*R?SbZL661=XX=rtkTVGGYqo<6(%kO#b$_`k z>+8z7F#2+1uWYwiFY` z2epBRw8Pucw!J)6ZuWU(-(${`0v`any`t5>3*FhVdp9rvvgySQ9qoHN+UIfBd%b8+ zQ(Je+Gbk@6UYDoM+tIQU?eXk^v6O=gvH8~ON>q362INcmS-=q8dMgjzg18vf)i}@agI-@d@$WplLFU9KLk+8u^Ztr8rAtw9x-Nq_ zmQ8If;98}|yPe3PsSP|f;!u8uGq`c!H+6WB69_jEvi{O?lyaazWHKZ06beOf)Hqu4l2(hn;#LZ0v((Hqw)j~l3PYffGMN~X59uLSEZXjVv&j)Rq z7P84?lE8F?Y9*>5adFJGDCrO_`O%oTINvJ%IdAOoyog#!GVkY_RKdyIaA;?q#D#-9 z^Pn+-SLd0|RZbqulQPa0RK!ci=jAxJKx%wS7!DD%$k8_o(vEn?}KF2wR zppv@V7eY-m z^7!<_0I^WoP79C&UZWB+O&-lts;(c+%hCn^lqZ#qUCQfpr~<;Gr4H4{m+}Nl%zkJ7 z$+67*+ZQ^5RDK{j3Kteq&)NL^>21>oguza@SVf{cpH@;N*2wuRYOg~Vbmt2e6Szi; z^Cc}rf=-Ld7jR1&x760~y%dwA%;gl0V*8_TF%reH-&6+aM~1{R;=L?fw5F3J=~Pw; z#7t%3uSO8T6_xP{dvUz_jFPQZ@NigD0!%m5G{9GXF751rd>}-$D3d{nWBKqmgXTh) z+2zA?Sb^)8^2hC;{_DAS@Id|WqR@h&eGB$37!u%uSJPdwpmPD_X$Q-`OGsCZv%&-1o@ zso(LPY?FM>M=kand8B%-iQI;=+Dmi}Tg2KVK=p5LP4Gv71L&p!C2-aD7 z>Sc(<>sGsxS`18}7g{YzmuR%w+qXJ`TdlWmbU6B5FHU-`!ML^mrL%GCa7^Jy!S-2$ z-vHR;K5P7f)n(}~SKRYi)HkiccVyIeK1Bt(Lx3Z95M;L23L~+1q{V;^1CpYs$W{lRc5>2E z5UefW+h00cThJ3HOgbIVtysTfhu6^?C~D~|ip0qPJE5Nng(GY-U2ydtzYx?EMC}|+ zKb!_4jYR;%Oa=gQ-{CdK$vkQ^GhO>nx+Yr-g8K`4PC}|sL}QWRd++c2K|}9P>W_{+ zS3vO0+VxvZuKsM7mCWsr3x>iG=*H)vPZtakieVTO>EaN{L|rD6LeYCXxUPWiNXsN} z?Po;Dr@c6Ny&!mnj14kGgh2jW!H_V^Cqo&93|!v7hi7mMi$AqZUS_X}@7f04f5hB- za0${-2-VW0RPMfZfE+Pu%Se>#0rBs5SMe5$ZdqQ>4X zWYUu6759j_Hb*$p^Qd?K4*!o_AG!A!7 z(QuVO7gKgsQPF2C+{pXH zQlisYZ_zoehU^7aht6$fvR7M|Xx3Q|&LaqG?I^XYjQ__XikW06)Y;XC<(FqKhBd z!QwEHL~>er6|3i!YzD7j)qENYZg5qiX9f#{>?eQ`K-VFLe?4zJTzw&x7whatH1f-7 z0*e>Xq!vZQt;qgi>g65yI@H8)a88JW)Ded_#kcyyLT4~Y1fHuMB{s@nAMK}N3*i2Hhjr#~s z8#e9#4LpqqpEY=NIA!qY=bs-%9X9@1HhG|G$}YjJvwd(DWDatesX?}6>S_UXWH;Pua~Div{aywo@w xFU?Q=c264!bGY+LSz~i18eDO~Mc3p^k!+~ltevyfQnfR}h7Et!R{DD@{}-JkC7J*L literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/UNZIP.COM b/Images/Source/hd0/s1/u0/UNZIP.COM new file mode 100644 index 0000000000000000000000000000000000000000..afde72047347290bcc1fcee1b9977a3c2572b545 GIT binary patch literal 3328 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/XSUB.COM b/Images/Source/hd0/s1/u0/XSUB.COM new file mode 100644 index 0000000000000000000000000000000000000000..15e86abfc94ac7ae15b0db899aec96d711d56e58 GIT binary patch literal 768 zcmaJ-Ur19?82`SZbGy2mb7AblcK>F2M6D4sMuW6^oJmsllHu|`jC9jEbE6uwq?cZL z2z=-{=%I+BkU|FA#fN+0K1^AGK_H?ad+MRr*>|<)&cpe>^EWg|hr`^;SmQvJ9SI37E$JA6N z?XaaxR+^p8=~-q}kFc|QHe;7%{=PB@kp=OJhH|(riuHkN33wm z)TxRl(m_>vMB^N1$^gn(n0*c<>?w~u?3MdO@_84cTHYyhY%JVhpF+WF3H!Mh*F(19 zi7>GV)_X2S6|FT6U%BiLULq>vC)}t&^N~K$Sm*pDpo<_mkX{L-lIFTn8XeI(0X(wb Y+cM%=k)A5D2B>txs!Q>=Q276^zh*|>DF6Tf literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/ZAP.COM b/Images/Source/hd0/s1/u0/ZAP.COM new file mode 100644 index 0000000000000000000000000000000000000000..47ffcbb8372e3560e5564daa0b2ea165d31a0930 GIT binary patch literal 9856 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 F{~uk{?9TuI literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/ZCAL.COM b/Images/Source/hd0/s1/u0/ZCAL.COM new file mode 100644 index 0000000000000000000000000000000000000000..a5add2413e79d8c8c8accd826b6685a1f3046e77 GIT binary patch literal 1280 zcmb7ET}&fY6u#4$xn;&qX{|zACAp=^W(o_oXkch)H{H?&$+q2;zl0b|?bf9cDJc*a zS-R*N*XV<5qQ=L4@j*?*2Tk1v)TVaR5hkIA8c2Mwscm8ih9+B0#I>$&I)40=Lm(L^k{5Kqh@ zN4K40y@~ndWcb~hA4M(9$D;99lD;STdR_8TwK^`h1%w-m!@;2qmt^@ecr$#g=iHny(UwXF0N zd1SAzev9ta^0;H;1MTH?sIz@|M^Jra)!i2f04li)MeReY#%z!yJ38uX{@&kfNUt#~ z!)FVnQtH;gP`Xb{S#R1;I-fBY6uYLpydl6dfLBe&%etR3rK{<@5+_!#%S>KIq8!UUE3~$pK5au0%q4>tQgEP!~Y{A{zz0*oSC;DiL!lHcAgW< z(h^k`f7nj*P1em6f8s*NR@jP-jm^_N5L0QZ(iDBuUKiaQ*4%8Rn5$Q>hqWqv_-dI# zNo+$TYJfwUB)L#-w8~qG*Y>#p`5fzXE=0RDr9P+bc5ENh+0Fr%%Ky!QRzIUIkp<>mG%*c zzY0pf22Ab4uq0ND#~s7i)R#}m77=^JO1CEaqf#g6RDmn{ExPy@rYwp0KlXpFe*v3Q B$G!jn literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/ZCNFG.COM b/Images/Source/hd0/s1/u0/ZCNFG.COM new file mode 100644 index 0000000000000000000000000000000000000000..ae423dc59d53e7def68c3b0c74ea91027ec46b18 GIT binary patch literal 8064 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/ZCNFG24.CFG b/Images/Source/hd0/s1/u0/ZCNFG24.CFG new file mode 100644 index 0000000000000000000000000000000000000000..1bfe49bfa7213e2c60ceddfbcee0cfc53b214406 GIT binary patch literal 4608 zcmbVP+in}l5gkeavKZ`qz#>3UNgiSWv>aIuVEDzL$)Q&OO)BKjfn*qqCfOuAo(p$+ zMiM_F-<6l$f7(;kJ=9Qk@({|fAWm0x)u~gbYW{QD;h%XY>fE3HK1@2nAA-|gJ3%n% z1b+-pqmv-G{Vw=((D`uk>9lte{19~hjqgUk3;q;zemSwH{Z8t|ntPdTN-QQHK&$ZgfT0Ww9w$MgzT8bz0HT zq`KPgH2vg$PUyTp`EY#kgzYDHx=huc)-d?5*7OtG58of#-?IJfWjy{!s;-LXCbyMJ zQ(6}#-S)4im(<+O_B5W*v3-y2dugT1TvfRI#av9=5!uEA?BBh9Vn1U0Ws%zgp^r?i zE$wtkvt_Au-nyH8!2ac{b#1=;3l30KqTnTr_*?x1W9lDK29k3KDZ8|5T#Z5icq2FG>C`2`6!{` z)hMRq<~p7+5fWUo^2L_gNwxJurE_b53Ds7wXt75nm`Z8mkOD%?YbXPiWf9bbuSP_=3xrdx?lj>Wj>?kZ1HGK|!w!y2C6`EK2mq&W zMV2vMDM&!J1`C#Y1v((RN0_<p~^*N43A$r1fL~ouo7+pip4%SijZs>T z)L2>-04WO1+Ck?S*^~s&!2;L553rkY#9Mreut8UEbQ}dcLy>Y&Z-sktvOop6r4hEG z{`HFw-aQ;%RU8A~k!#clkU}k-zbMoXdRYstYPj+$a{1zw4+NEW=t&$$NLXQbYQE@n zk3&%i_?$Offi6&B^`hQv;FJ&1U^XCJJQyUXx>;_4iUidbvhyf>6NONz-YAKu<6aUI zI{evSdi61WF`vcLGcN2Llo5msQyTGEoocXMM}d6X zdj78tR@?wl$hDF-U@bFi1G}aXf%P{!5W%#<sBDLchMs5- zQq&d##L#jvWv`KPe-nnb;q#-97#@9d^heu}=@9xzPotxQ(qM2f<f%*%3IFbUxfI*3+(H*m77G}?Zrgm*=(UIoRv5I(Y=X%?x*Eqb zx{jwb>rdlYHoms{azj_(W=eT2)k7EYyt8hSV2jF3j;Ejl1Z3Zq1a#hEsNboy2HQpR zK(|th+N=mnepKJeU;~0`3c+RO@$I*lQ5ffUrYxk?poC*NxC4P=`SFo~V;IM3qltSF z3`9M)I^B_#)r>m{0}L}FWj!3Clq;QKXQ}*7v8&4+Cb8|3MB8Y4hNhPBq6n#)tj?kk zAY8nZ3o`Y`IHU0P=yu za@9TH2V~QGfQ|2MjxC#*r3eLvR* z>7s{Vd*#OY4h_m1wJc4IOp9I$+=nQ6pJ5%sq5>Foi5_^ADtIgnDg>n#KVB~qWYk2L z@fLx|(*mLaj7|P@fbb1lUdmjn%NePzQ`#P4mJR2r?#Z-m6vI9IG`O0+`8*tdIv*yV zi9R8(;rO%v>lwh-&|u<2JQx`Gm*5Ykea!-M2J%R7?hy~dMu8v4nkkWwEEceCaBE7! zOIv{)nTBhHMHKr7);m9XcuBGvORcn$o7#*Xduu#d&y4;-9yGv|m?JXCiq0Hxt2k+oMUsf7UHV7~$+t~d7knl}dllWEkkTJg~@b`Xw zcdv~iSq&jjSzqTzz*^Y}WMl47nGA?-f%l5GPcCs&A*b8Ehrg-{zvm$sP|GFHEdgjC zvuz>lVVmuGX0#emXxbtQeDTuJT04=3zgf1CM+{7bWpT|l1{EK1H+V5m^_^n*#p}8I F{04;9o2LK( literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/ZDE.COM b/Images/Source/hd0/s1/u0/ZDE.COM new file mode 100644 index 0000000000000000000000000000000000000000..9bc493c310e79d8d50a32177d10bcdbcb4b18694 GIT binary patch literal 16896 zcmeHue_Rw-mTwhJH{JYbx^Q$SyR(DYWTrKlC18u&1y&+P449DENm>(0Cm|7IlCgN-Q;nJI zzBhlq_j#Ys+eWMF-h0lu=bn4+JwNX4pu>FUvYTtZ#xhKh!N=n0iSrzZYq;GKvbYkq zCG;lTx#nhmX>nN*zq)OAdojPXqQb+kF5cSQ($Ut+Ff%Lf^m%HwZsxbHUcaX1wsos& zX7FKV*p+e2iWT(g@FiH192rDBhlz_%&vs^+)2L*8R@Q7@$9Hr#w(e|f-^ug*h8d0s z%rK_hx@tgJa_er%t-JNh@A%xh^7|QT#gkzUt~98icpF~uwcaTI<;Rw$mZr|G-A(Aq z_{^03W!V2GTdsgBi{;AapEJxA{QdcJ#VA;Ad_D(M@@yfQ-k8tv2Mi1TJ|_y6E6I4b zFjPvW$}4F9@6Z3=68QUfm#+2;FU!u;GP^pijENqxCu?TLYhA2+Jc8YW_XqUNV!XbF zPe-MFCn^fQZ=D?ew!I0jTEb%c;(YzAnXzXR+9g@>-o@DY{23~}D|_FQr6*Z0t7vkG z#Kw95Bp3b_TX0>LT3PSUiXwC7jdG zQvG)%?dSsOq8#8|+B>P*%mVG$Qf+&tHpeDyV{~3D*6J2$-<}T$o#h2T6X55t1&o%y zL`>e^T$b!|xytOp7OVD4t9E}0_ebfpEUaLE?R{D9^^VApfc9Lu_EBl!O-ez5A}v(B z3l!-rI!i8`s}$U%NV$r4p`taGX`fYS1sT)mR$E*#r48G(C64@`&SMf1da8tnp3ZuB zDC?2OxJS#mTx&x9>Vl|Sj2CHd*RlqBAMKc8Bi z;MhOU`ICe+HG9tL>(cpfI!LFyXn80t=iyJYA8F5d^pTu8Hqq9Tzdn18 z>p#+jC+AegXLMUL-2LhD-40dw`x_ixAUS}khyEdly|~bH!5!bV&~m|TePp5S_xXuV zF?pkCzipnQaiO!wo2H2ACl=1R>djn{pEbRV`=*$)CNuZP3H*=2)Zg8pXh=4FuC3<{ z;UQDj!?{_HOl3Ygk;!h!i>oOx?a8$KEXVn`nYOYlM>H#Kd*+;JA!DJCtqM7R%*=f^ zfqyqajW};*w7gR7Hzi?v48{_VChd6c`&a+o1dZQhIF34s`?qOz|V5|{x~kjZ{jlj@m!kU%-Q`3T%zB~ zS^PFG&Y$SLD654#*agfYd|VOjL0j0(bJFW_gY=sG>~p{8-(TW=UDoQ#u}HWJXbuUr zN~x=R%QhFA2Web9sA~Uc6Vp*!QlH6W?>(UB`^`U2I8-?QWV0Vk z?h_Ly)B8lT%W>scZB^GT>OnIXpAKs0Rt`O#RXH?-|BrE%L*-m>uFb#7yDSmg&v-Zj z5k@zsE91T14CTRdJv!sLP0COLd~<|28McM>9#PUC70dKT#M|{0u}jY&o*d%-E}awS z>uKWhy)K=Pcv4TUnAUzUu>7%N_+FD0A zcu(S>-=gItGRz2XURAyC8P(atMDD)N!gOPqr|6Q$=8E5^TRb;&AMAq@7!VabPQ1xi zsK<+T-yGe{7YUAq+NLDmO~Sh-`kpK7WaxX2kZ61-3#{=S9|rMoxtf!%dqR~F+nV*^ zG44vOh0)$h#8{^j$9j+OanGpb>V$AIX>?*OJ5j@QK@As2S9ua_6RrstciF!*ExO8Q zo-CQHJ5@=vJM5yJo!k4xnpw_@X-ehB|ys?Y?-NZyx?Y9bU`d z4LIMnfOseP9KJfNE73Jo(zJYZY#+uz04oVV35XR{(iOSK=e<$Ci0W?&hyun-aM{Bz zMK^yYTfCTz0x{lkjZ5%*4?!MkI9O!UeqAKQ$E|f~r&9}ylmd@ZC@R`9hjbMd&IH23 z75OO;f;5I(#Wd~f1;e#NN%r(ebW=Fwp5#)rBaZWSJ5Zx_#Y(}4a&+^Qtoc$2zFUkN zzS`^k1ZMvoS^AS)6_`HNn>uwO*Y0a8{7|+t+9{{@nq5!fD>Q%VU_`sursswS#G51_ zH;5_Pi>aWrFCd!CqHSM5N>D_H!>$3{W0?M^%+1kKQ-RxijDI#-HzgnV{{A0(o(2+N zYtdssjI$?q0YKp6oDRkk51yREeS@PBr$X4i4 z+}de}_M7tHbLE2(=@U8NPd?#KCGK{KPSgwkLM92j&WN4F_=#MCw;Bko0TWgE$oUcb zG5kll7RbjS5?{jbAF!$Qrb?fJH%pcF$5h7`B&r(mX6Xz0q@_yIE$7wqswQHS8!l>P1rlvp6{_6#8tv5A1V2E1{50tB|^kJ|S zIrUx9wIe1$wng5n12LPog;>M*K6VRCWHeo)Xd%Ly%6D-29mf*Xk*!Upo_W27hmEx zefNnco@mHqgza&$dEgeu>WoT0E_=9}x2zr3UEJHleKc9zc*C^zX6lrXp!7kDFl{O$ zU6TW$D#*q0g&Ldmpdb1Y>IPpf$5j=t^-!xfArF`1W7TdBni=7DtE2{)cayNqUmz-l z7N+=5^9zcVUT?Odc(W8Qr+5vI4m(*vzEZ#|1%{i4W#KL;RLW8cixpQv5nj~rS{KZL ztIx%o@y)R=m*bPk(f4S_STUw=KYekYs^@x4Cs(L?cwOS*k{fmgf;Log3X;i0Yp^Jn_BfSXHYl z!s1KtvoG**<(S3jvA2?)dHgk(t5}T$KfTrA;NKqQ?PI6RdP90<(jP;7c!N;anYi1 zCLloggj*_QDV1W8wsDb=tvuy(aW_##h|8m|abYL>hjD_>QpSZtY~T24DjZ_1@Wd59 z4!VqKRIw%4x?OsY$EK&KDbUUo_2R)~JTZFTf-T!}yW!rX<>Q-)#`mO#1_(wZ_8OU`DTX2gJP52z;?J#x~7Y@ClN`^u6<(t;1DqVIo4RdCN8c4n$%q8$Ak&u1WMX8a)!0 z40ck%PKvu*k8}CrUBkM2SO-OHvX(^Q3Y*DHfE9nwL?7duH&M?-H~F}U>{&7EEf^Z%EN0z+IKQAPTg}JQ!kzI*rwq!lcPMvSqy;w zbDk<-hzaCqx*VT%y8=T+Huxrku=~X1aQASZnD3&m6Wtm9rJP%MY1TJ*vN9mUUteD}Z_LVVqA^MvqLE%^+r&vdq9)NU|{JD40t0uvPoK79}wBXa>Ym z5U*gnJu3^F*lus4GTeRQ;6fEOPgX)A#(v?kc`wKyEnJYx7`;w(>)XU)-7l8vil{Vz zgrx_XJ~M>z=89&=Cqa+xKp+3U3zXGZ2P%!f0fGr4dVs-(*?)}VY|uA)E$0g3vB|jI zgy0{-UVhv=H)FPI^xL3qDtck)$vMIK8NFzn@xCS-jeeV9u@MNzEA_(q44`w1@ZL>5 z>oej_4c!W#D_wvmks(-=ZbdYeiq;rMu&|G29DoB)oDpMwn_w+1Q&l{B`$Btz7b~Ph z1v2R)aiFrhO!Zn7RkBhvU@eVRFKWLbrkt5Fe0BEMkrt@)G=1&;Pz(c4jJ~6 z_U>q%NDBo{qjRfKC&G2XS})EVob_Vx8n!uarbdeC{CDti{u*zEEG&_Uq!BbBNP>e* z{>E6h%LMBhulM*qGI3Gq3?j4XWx^B>+Q zcGBrV?dhxm$7htw2nMsTISZWf)QzU0uQUnACBxN9AQu8$3L#n=ECPYI5}{t;&S(&` z3@B$N)9}}KV~Z8zvy-@Mt~Kiik*gWm|E#z$xA)&f`zQk4Y$rKhBN_b1z0ZmXvqf#a zA)Eaq8*QrM#Kp4wIE<)2qBU1&TbyBXS~0Y%Ss@x&41gtEkF_83-mRwqG*qGO0_bT6 z_ex=bqIG6T3ozco*X78xcI%?+LaxH`B*_BEM9kA|eDd{frjjgzl&W=?CRI+QQ#wxULIb+rVER1Qr6<~t5Mq*gKly^v~6jDX;97v zWwZ7>Cvp;?yo)r;nBplF7Lgc#O2|^4dL6WXMlhJ^$2hI2NKCfOXlynj{*;j8s`1|M z_*@;t@O%kqKhaqFTj7<{MW>gsv*gdsZ=%ycd}3U;*jk;c`e>cKvUh8A6O5V2DtY{;->TjB5>qAE zE4!Ym-S-AlryNI{PW_v7sR#P0_uC{ zCL8jhw0@BKyqXmh$(Hyc*ncR3EL6D7AaYJht&Bc%`OaMa)L;bB-em-L{3SaROq`1r z??bs;w%I1_Omy{SnIb{-$cTv#{4@W-ga5)`=6--+f>1^V_{nJXWtqE=kcM-~7mkdC zT`oJ*<-JS-fOp5)-0p4{RtTGX@nDQn5-7a^O6P+MawDUIAT=-&<}VwhzE0x`RXH7% zv5qJECPiybM7W>r3-_lxE~{N`+JP_}$Snz8QTN4zWjxj#Z9<; z$HgSL1TOf`&rr<<)C|q9_)1l9enpoX8u!1ahwb23w5bVyH|u1iRyysKX`%F9@2KoO zCwpI&{Xy@gxs?Cbm+*^Sa9Be667ePqG**j=$W5f^RiYgpyb3Vx0&uw3V5VP{xwA;^ zxFC-}ni!uR&waAbYp+y;cQ|5mP8uU7LG7^$p;wNp;2nNnM%AEeFw(8vnid{_L+ki> zfV668{@mG>e~tJR=c0#ES@_W`(;F+N$Hq>Mj>)cP+nAgUPAqj^#o^M6*=`ixw7c|U1z zh_Z~A@_cqNh1f=?r!FlDsQudIxkjdQxk^~&A^0C(W`TuY$jI|RY_;@$KyZSs9 zd?`N$H_`o#VUI=-tt`z=?yCa|;5bk50Eo@TsXj(vpx8Q7IE!JM`+m6X}&D;q*@1n!O`_8lh16~n#w40_TR&R3sXz!z`Ga{=+*Jg$W7>xTx^u(j zfCn`sR0J1Q%vMukj%8SCMerXz*6$+61YE;07&APW4+YI&7MrMD`v%eJHXN9}Dnf)J zMNc^;!1*C^usP)+Y)YQ!aVW7d0&31Y$d;)p% zD1$>X!0Rf`LtruM8v{w4_4`~r>y99>j*-y5CxpQk5V4Dl$g1$WSP~B>2qAB(0#O>g zQ!X+D$q14hVzqFH7M@wATx?I2TSVgFm0AyoJ=!)Z3c}L=$Gx=!GLoj#;40Kv*=nXK8RYqt%#8NCxuxP#|aL>jf7d*5i;$ z*MhE)cE;sNrEu=+1t_9~jKeHGi8F>IRJhY4uIMI^Cr2+=jSND&z(aX-Ran)&D(OABc1m1PMcXF~>t2`RnlAAscNv`qXamLk{2ZhdkUEik zwsR|VClV-C>4VrC2Rvrra%P=JRqfy%#wp%_(5mcql`VJfR@fx$ab*mfjxPkL&Qw;~ zjAhBr!2u+E^mBG^jsmr<^u{SD3MOT5Z**5p%Am7Vu{&`xIH1q)c{sAG`EYG>OH&FH z6z3alX|cAUx$}`pjpb5%kk6PDYz&g8qD87hFQbzYOVV(k%khOXp2;p_+OCVF(TtT3K0|wMDJ}&-+^;7uwx??^6e*`LyIl+52@~Z0 zFCpE?r^jMZmrM>nqN_<4`SD!~kc*G$jB()4TeTk>_W}Be zCq7lko;{K^Jd}Qr#_IXIPWx<0jD9?w{Lkk9gP;xGdcNeX_`eb$)fbb} zqnjpIRTGK-e0UHWo^Tg~31ySX-g#RX$Sy4%n+YB-%V{dK#d#O=WotKXMl`s(y%8CY zmt{MTyfyLAd4q=&7;@~I16B%T2UX67Dti@dHdTXPQQ-l@8-Va!eQrK^A8t=Tg?m9$ zb#?1oap=1eAz%%b82UmIk}a5#V}>rj*E=Rxde6(!7S{W=jAMyP-V(c>;g`8|0=D*@`4ygw|0*~g9vhiIiQRj>0T4Yv;ej*lDu0CPhI687ugXxZVe2b=;hf*T){ z7{LJG{k|=CFWIXKx3h4egnyr9!y?^oy!@zO#+vNa-EPoaMnVI?6*TUkoi z3tuyOWt7U80T6A{*Vurd&Vp7EsJ2V2m9ERjaB9tZughItUFIC96m+@IQ;3>Mumsl- zqm4;8Qv$sc-<gP2d|avy;;%IX|a@iL8wZ3?N5r^ax2 zGQVOF?#jRzTqOkJXhmGay-z;FrlKkwbEm=4H2i~j%7%;|9p@7;ms2o@fEk}s10kc` zh6ET7-w%#RB_CChx<{TVmOt>bRUsq!ghhsM3uLVOB9u}ISK+W(7n6{xzcdJIG~l@q zzfUDq3sEM9vMs&hX$uoiamV#iX29@|hDvPuVtx)O2D}P`H9H_~N#kNA{xoGV2>CTp z%=gXJR`4{MxJ3hSczVuHEkcw$O+%>Ut_}oCY({?sftdMrHwfbFAI?1~1D~!v==Ry+ zHce~)>Yma{7J&?bJ`Lvp5&gZk;5zqg-pIe)>!bsNSsI@gVx0D`CXcxJP@~ckF<&?o z_gI^s`I}vmQ+Zt9=CSGp9^1)$&U*4KaE*UN2w9q5(bIdw-9$F(E(jqefLh`bGRQS# zkU_9W-vQhV5bhL-!ipRYe|)y(HF2oceI8hl1PIwMQHhu+I4XGDf+2CMWBn|j?c#=m zt1lL-hz4AuklQ~)<3~oyaDL|yDE@U9K@I@9B`r9=kX}M=Z8aZ@(&$-YL~K5r!RoVg zc?HqgM|snb@RTQB{DAxEsVYJ1%I5mXF~wGFhJ4FaqGWXSbQZ!b9!ZXgOgMwF+7I!~ zU8Z@sA(7*5z)T@LLJd7hE6AC}%QUK{`Z0uHwU9qgxA1ZK>H%*}5vE;dLqr53xrM}K z1Fffw@gs_=^W<~aq)6tCWXo2Z8Lw4T7UCp)T+XKz_Ok(GdbQ*i$)7shK?qqo1;a}_lw%y z9V56l6N%PEi>Rf;)gD%Hd^G#+XK*WzuDO*ghHVY@TKtUeQ3K+9;VyRg4`6{F)5aCP z0p+M@N9Nirnig@NPuk~marP7#r)g;=3kwp#{kia#ZBv1vmlq=i;FsXR?uQ2j_o+-0 z(_Q<}Q5V@ZJ0AfKpvkP7f%+R^E4QRbQDt0dA7o(dHCT+8Zfb*2M+*e7G?NB zaUOhcG3VS$UsHoW^#xyp8+B$n&AZ)ofG!x~h?#oktbTsd?dlW%WU)H8G2>3Jf}1WW z6w{9PKJF6t;W&IQC~X--QYF5R-{R8#N3rNkOCR6s8h1=^$q3B8?ZBpTe@VHD9M3I! zF)z9-rg48U0Ej{vurp_|GY#xlX0gM>j>*Mcql8VI3&D1xcC?s(4l?3$g(k+iiq(Ev z>|AR+Z#AAZ^o-qC{M!KhR^ji95vkLOyUG_s0hSk5Ml7ZreYt4rm8U+UKBFXNRVicrH%B3mLKWgvs!2<*O0S=<|59fAPd# zM$Z@9^uxSWdJ9>PCT>YDNK*UX@)Xas}5BBO^bL#5m8V0?uc}LW&>ONgZ4UkqMXi`1U1{(co=MM#5KFj6)ra z*dkv#rouL6)@O#h>Rhg1IJkg!4~FBdQQ)ox#1iu6dKd^RdW5wxDB;`02&d%e5$7QW zo^2ll693%s-z+6@WTD74fWEH=_xf(dJ)*U^&o_fw8Z8O*0mhyQ`qL4*FN^x{)O0|+ zW$FRkVq0k6(d&JX@pd!bgA8B-AZkc_np+rip<^BWS5i`qQpua`yMSWPp%BK*OpSyG zl%ZcO-S^DUPnOylOApNpEb{n`iyGr%3#KGCOA5^bkHE5fMi+eI#PE#H72vQTQBM?k z>Ws@l6NJz6Q;0Wp1k84~} zsqloXeX~Tn)hj#~^C5W~ojdV1;ThRE4`T3Y|FlqBm#=+mp*FKndubuLVZupy$R#=r zN6w%X`ReV^;2%qzOe|`%%;8LU52Bw&@(Gbe!v#;|_bFb*%Qk21q>lnU8?j?ar<F@Ow6u4=E=L>!CZGGJO1N3B{&v%K`Z#plKk7a zOZl6)xATj+H}eJVwfuG5t1$`E8BOma$PYu5&@(%(ZY*jLa+K2J;gS+n%E5WhHJ|id zgae8BDRdt)5f3n?Ab!Tx4uq^Y26$<6rFRGR!bSvMr7K8y->o3Lqk;GBVi?tMIw^t8< z$skqZ*a;>|tcU@jZZtw@o5a-pkAsQui0c4-b1B9bibl0Gh*9D`RPZr}FjBf7zICZ^ zw)BAU{Zc7i|DP!H=!rga$+<-CQ`bq)UR66;+8qduT3Dp=M^tNWoyQ}4JhzZ&`eRbu zn!k7yg9Llmp!pCBX&rpdbx!2fIpuq}fCO(3w}>n{hF`nyyB@Z;0ZZTopY5nGd0*wl ze$H~>>O7pK;kwwN=o%c-;iM0j#Eh5@8x0TmOvb(HRva3caCOCG;y%lE0U)|MAMwzG z2nw|KD~`hnehO}41>%?qq--mPqGgps7w~^&c@VlbA?v2|7s_T!w7F@&&2ZvEfN^KN zFhADai8E!+LZ*;cG_B0(rR+a02I3uB68u93ZDHZBToVl9c;oxF;}H>1#O^*I{3g8-=T#~I%)c#OD5RY`2 za)|##c%AN0s9*ZKxa!zN8x}1^@jcq1jyslFSjk!%=pTe=2aEyqY|Uo|!TJE0J0wcJ zw1&BuV`Bwj5LKBo+^x|ygLHU2Fpb)+N&~t(iXlw-;zUz$%12NSZ{=>v2RA@O36ibc z8e4;2-{y>|KaY8TAk;fvRogIL+ap%Mlnzb#5Omwe=Z8R!J?`w3Zv;*wvHLxv-zqT)dp;AaAXtSADDnT*Q|0U{6AsIj9}LX_GP%2GCPXZN;fDaYG02&Exy0$W zp{aj-+haBkA8_Sh2QDzOSg<&V#J+W);_QkFzZ0)&?1bF+0yls+TtdYylm6IIxbHVO zH0S<#_Lc*tRyfQ48e8cf!o1Vi48h=-be0XANLq&L;sz$oM?d!>MQ(|7a)aY?F_)TX zVup5-hR?pKm_D4x%!i7-F4I}$8^-fZB)i^}Ig{{)-1~SLZgAL3L9CyIiQ~hfeEtPo zJ3*Q~4uU<6oA<$R3B!0KMXHiE;O|!a-61tewR^6#U0mOEe_MMOv##|UjV;aZR5#&u z$;&slx3{%3HEmbcw(V)%$!zXw?QFajt6bgK+S+zyQ`0?d?e{l!GBu6&H$Bg6YHHm1 zJhQdExf6w(+Z#LZbz2+Nt!-|_bM?KAt-B(fZO=1nn%kdeYIk=wx3zWvrm1yT=e=le zYuR&u>+{Tp#$ANj+=}P=#vScI*wnPUsqxAV@Nq?~+qkXBv$$eO;iBi6>ZZ?H_uPMX z)5l_6&5~F>YFFNkUthL;u!H(*>UdGSV@VBaZ*PrN?0li4@f%GyYEupyY&GqCeq&Dp zlGBln=KW32*U+cOY>4HvJsoJBty$aNG~1fO^yJj7Z))B1$e2TT&PvpZbk_eJx+Vfv>N=dGqSk_wHK0wXwN#)6TB?jazCr@EdmV z>uNTCqm#e4i(k2pU$dECzlq5?r*Oo?Ps|d?tEeB`(ed$~ z-G}Q>?rm#-r@gbsRR3yAb8BSJZoK`+PWl~lQ%`*T=pLXrS5mo((_U2vp5|2T`+1ZM> zmw?lLW%Z`R_2bkbHmJk(w~6(4J>9#JX-mq}yKL9<`I|ed1uLc_sTI2??S2kl~>#@~WtLs|tX){oN(b3t~ z9=Wfn3#g;Fw?Z0|cemU}U7f*p{mwl&jibI!(3a?K!DdZlPj6^%ZpF~iwWqlF*q)Ba zeS{yx@8v&>^$q-!v{|+^cXSf|n1SE)SIrP8uoiDwdAzgnt-Bj{K=#$=?r-~Aj7REs zkSs&Q=onp%Y}^AJ8{w>kx!LTZMGGgXng&~qeS|&JS;{y^UJH56uAH&Ubzon|d1OMr9{q+}%ceZd}v!{?9=zhB46Iw7X^H zjwS=?40W@mc5ROZC@p<0AK)kahI(uy{pkD%iZS4kTkT7qa z#cT&=Q|nHmV(77^Q$SyR(DYWTrKlC18u&1y&+P449DENm>(0Cm|7IlCgN-Q;nJI zzBhlq_j#Ys+eWMF-h0lu=bn4+JwNX4pu>FUvYTtZ#xhKh!N=n0iSrzZYq;GKvbYkq zCG;lTx#nhmX>nN*zq)OAdojPXqQb+kF5cSQ($Ut+Ff%Lf^m%HwZsxbHUcaX1wsos& zX7FKVSXUggVgqa)5Vf@1$xo3$$ZPwe6YO9GkR_(Rs00t6QLbdp;m^mKXd?fSu!8-y_hq@)J0e2@+H>XFN2P@~DFp?Jv{3Ob zP^7cyEV*#5QgD+Z9xdl`tqJ+77tVb;k9B6pO)oP2G}{v95~>B;rFn@}{-k4;^ZBmGaN$Z&lhG@=Vbqbkh3_4hJ50e)?kiB_=&8&m!Pe6pv#Q8wzy>l zrti4oms!o5=36eitW|zne@4>sg5=8i_8%{BoKAB3t!WR;Pd`3CqpBeDO;;ATfLmnE zmR-3C34B6=DjYV*VFY(LbdS%hOXtJsAf57}<)O5khd<4Jq&?@+M{?@eL|ae(`s_Kb z|40*_oKqQ}(QVCe_ovHuJ5=HCZ*X*hxnj)s3SUBgZH*-aP*7P#&n_|wI%-kO*@IMAqe|LkTA=&h~ww^bH zhfG-y=Vm=JmHFsICc7msuBO1WC)4t?9OvI=+RCyV(X6!XnRBLvjDy5hk8PifD8{i!=7)v~wv_FWSp zuyjdou-mo1BI#Yc@Uca6K8c-ORaSeGlVMPcbwppmBvyMg1L{Qzc;Y)5z237jsdeI+ zyb7tF4df@Bu+pfs9IrOHtY=eukbK(s}->>SwqDKg;F&xItQPKI7ch(PaYeKTZDBXhNw3Qd(rfaw&;6c%e~I^XS*t6@BH=EeIV997 zrLOKR+gxlOq;c_}s{Nx)Oh;`=eI}E=_kf=7Gy7HVPi<1I66nXb+RNn6*e#GkKqUgw z28FQZXONQK5z;fnI6Zf0jzzEGF9%fJ%BR?SgzvF^qF{gYMQ*Oe%*9#aP~rTO&3-Vs zPfVOl?-R`~$CYEXRb98J2hCi3I;fpnIrMZ^<CEYlwmZ`V`AE zJ&A*UipjB9J)@SZ6T-=)(TTO}L=DpgHC!BBwjxF%fOW&hH&=qjIi zvSgC`)RsYgb;+Knw(`fU))7IBqcC>HAV;yQhWxIuS`_v@8I!DPK)=#}Jw!0{rR zRF_=Ui@uKVM}k+98SUPr^B*OnTXpvBn(^j4fUecyi|X(j>hL+W`{HrFdH4f$crAZ7 z;C$Nx;+^1g`0B8(MAuYF)AG@=eHa4)tRw&>AXZdKSL7a__eT99s=p~93K%cJWe>j; z-Taws@nSLx#CXRwF2V0T1bL|8V3AGxb&(Jsx7MYdPAx1_3Oq`osA$I=(p6YE69@}e zePu`yRWVAL)p$~r<~erc0Gl!(EO=`5$#@^o*NzzZ<2uA zAf{+9rh?MGfM_y{wtWF9K@lAey9RWRVfv#oH%CiN1#a&#{@G~Vlzia(`+w|t8c2Yx zMUMe7&Ys)_0D+HlIv7hlcybQ+4UR^fRwmmRba-SS+wratl}nFTrwCk35>U}1TcJmB zYo{IBZ_0zul@CUwPvn3<`Gh}}xZ5Qyu5~5}qjrm#n*KQZuNSnn-qi4bA#OE1P_DMphrw3l z)Qd&VD!n7?GofD0h*j0zwp+0j=+!DkWPK|?iROS9@z0=A)%nwUN=Q!(MFxeR6_M3? zW*{7zrtxp(Xz(PVMs4b$42sZ&CN(g!WVw5g1A zO%8;rAQ#6MYHZSje&|c68+^GOS5>^$L#^I~JY0^CRl7N8W`y6Zk{V#%O~N*Rfv6N( znBqUpFDO=ez1fQ5%~HIa;x#-v>|_P`N&&AF7;YYxg}b0oDN89VR$K)|cu~V^T`&i( zJ{NDsH^;hMj!z~>-=iI4#hAYR^u>9qp6fB4T%qcXWBP&97aLTv+e0uYCN80h-uw4G z@x-)t&_Oe;N_VqWb|z`xGyE57TDs#;YP7mg!OC*GBZ26uHS0}b6!T9 zDpsP^MG6e+uN-61x*{bPEzzT3Gd;SwNKv(CsTw6(o=3oRZgg`Ys(eW$>mU$Yqn}!$W;2qMT^3j zfB@kWZmE=|REkB~#zjK5@|4fT-9!~3E|0#(g`Mml#tA-485a(*edDL8aEP_S6Ib{+ z=rX2J#g<^}cIiDHo1UVkKs!^^iwBeO#OQqswrtDohI^Biqw{{=my|Pn(9iSnIahmf z)6-lu17VUBhCPO%ZP}I%I6m1wug{YJy)+H$>ABH=O23?wW{9~hq8)O)9&yr>vxOg2 z{k&G5Hm2u@NkS_e5VJ5Mm(5^mTzfG!@LtdutHRvw#k2%eQntAYSmP3~?YL+@;rKz= zn9pN;eEQ|@r$K1hfKiQY2@@M@r^%r9-&1=ax``l!sA0(r&&d0}tk)ny+sIqAFG|S2 z@tiNR!C@@2ZS~I}v|=B^y7c#aw?RlV?GK378Vh5C8NJpW5c5VO@Wsj)*JL)7PH>nF zEeuDGAOZ`I90-W(B&R9BCrA#{_s(;+4p+5>i3q9YE!zM%5Q(X5^e8C0CehPq^hj7T z*hvLDDei7P&gF}D4eRb<9Tc(2S`vjTY$h`SR{T8^eT;A3L_HJT!N7n}*9wj`9>|F#!6{ zd8&XRCXl1)a(ve93Jew5;F}D>?h}*4-NSuizKgz2bZ7XNa&FNEv%7D0oK!wpi z%NV1vk#M`I-+}3_0Oq}iaXwiYJu+D~gP38;G6QEJ$-ujM=WyZ-cg}=!Kyt=LF|x^rCUb`;712~GT4Nl+!akaD01iBHMvVDwg0-|vRq^cY3+)YFtdJ5F z$fS?Nfy(YO)oWE$$x6|HwKP`6cx|Y%DY|OZQRK70h3+y~gDD??S- zNv8+3r?UnepHVI&7|g=vEO5$GH=2gN(j*+03|A|GTnKO}glK872n60rgnEHHqe09v zpq!aZ!(ZQxEmn-rPU5b))~p{yu4ZKav*N^`{tPKZm@>v|rF0|lF4jY}p#30QOpc*U zYxiYO^#kw++5HA`wJ-o*%%}hwm8R9d0RLt4UlT*Bh9pO(QrRHf$v)+aQyOS;&+o}R zz9*9waCEcBSVE7babgUzq0)dfos4UMqMYBJd3-w{VKE63OW;>&P?+FV((U2p!^@Sb zL2a88c5)~S-vf>*DB4$=c2m>SS=#Q|rmw&X8mk?sI1jyCK^RrRKa|57N9#BxlfhOK z0?rLw;pCq|vA<(-y3Yw?%3e4+-6wf&4m9B;PkM10P7GC^ec^11eIaQQ*dr`y=K`m*(n0@vlI$Qrr}+ORe>AD^9kj-h0=Syqq6s$ z?0r@C2fdf(QvO?C!Y_8gVF~F=#G5G4SS=fbX z(yF2Pb7xonHR4yCiylU0;YYJfZ>*dqPsh1|ILFw*ZS+WQ8hJ8dIi|PN-Oyjq-Lvwv zR-88#I8l_Z9nJG`hG!w#dNBx;Js(k$GX4}&>%Yi=sA5Eq=1F19|5;V*GjieO{iMMm z$}(Qc^V!7|VjG>Fy0j>u_G_2t8kx@JDq)p};D3CX1r~lGBhR~?^1PJA_uHmpO_T^e z^_!9}bHI8oZwi#FdLbOXAHt~&%jN3D2FgCx@c#xc{=BRmT!;*@bY2b!&&#ld-<6#* z6Eu6V-CL|e6Wa%m7aMJNhoCe z9h}JQ<`Sfx>=N@~Wm=oaoC;nNh398yfMKwmiD`zKtPuT3N!3jv6(laz-pKbAarZVz zEo`8?pS3dJ1Ji7KA>^^TQur(Gj(~bVxQ}(Vuu0LQX#o}9g0qRWSbMc^J0{aXBOn&m zDn?aW`a`~a$7fv5e*qXh@kaiL?_^GZ{|IUjOj;IWi!Ac?B;W7E-^NBy3D?iLpO!IZ zaSXZNTP%i>aHoVH%_jHtgQ5lbwli~W6gnYPhK>80o-$O;b0(c1o7P?vJr?a9QJY^e z)u10-?u*m;*B4cco;_VMGI{_iJ2EzkJ#^Nx!Z2#z6hpzs7LkOH*X6@~ zy)|tNgaAS)JK4u)(Skp7O5m}Cl>dETs53EUM@75EBs$nrkM z1qXPonkT%Fc1v0>&N5K%PoX~GR8g3F>dp#Hm^ISe7HxkF7{TJMG{EfwFR^%>Y{a^X z(?OwvbmRCU!>iD9h89&AGC>(`UP@ocZ|gfXze1Y8(y11vyc4o2jiGm9p`RGD5V|Np zPYmw_wkvVbAcg{F2lnYUiB4M-QoBtUlW5Xy{b=E)0wFBr59UpAR}s*TX&(yc&JC9X z9@LOf5nNO;TTO{MmSL$C!GH8vzl$6ba1F;`%`@D=ZDC_=9Gu9DY^EYv-;vK)<<_iJEBL>_zhvqpOU5mH-dqLfd)r5+v&0J3FOVA z3=YWvud6r@fyJzE3?y;Z?{o32JA%MEMne0Z5C&U7#4a)-tHSSMNj#h&guJN=L}~C& zxyTSCBcv*b;Jproi@<|4v>+rnAPm00EQK47;A83jXi#UTDlQ2N!ST6Zez-fFZ#?HX+y*if74q-UK3ushjBrI6nGu%ZKUUGAk=@>JBE?+44bDO}I{ z&aKd$NT5`u4`Oc|@R)(inROmjwS#vUr+5QGtFqfww%oZ}VUw`Ol`(8Oz7U`~Q(0*< zmL)p}2axd5&)K~>3e>jJ8>gTsn3TP}(OoqugU(jP?!?L9fIh?L;mEG$!?n#VO({%J zoNu(H#oC7E&POISmP_qHK4Vg_F-V?@7O4)sj7~-@NyB|E#~03cCcBJr`}w_Y`rES2 z-Nl-i=+Vit;&AOC;@W`}{x?FLQYt24Gy2vt$)wbBPodx9;^GvBOYQ<^SO`WNnaNj6 zG3wbP%e;ypjuHQt<4>H4;^bX;;>+Xt4DGq4xD)_!zn;9OpyD( zgmfdH9*f<5Rw$C@T7nhC*|>C%S>tV7GCBN+t|ndN$9FA2EX`xt{d?Xx8@`tfw~Kb!v#f;M>T`I5Kd|4M*VUrb7m zZkk+GO(g#F;X!P8!d(m|luagk=WSsiyR>v{CV0For>W2u=UvQ~t=+g8(ctR#Mr1r* zmhC+9*2F{S4IWNl$gyh{YPYR1JPbg$E380K#+ix%uRMxIFz0Q*~+&cU_K5qB}%ncbx*sp)1Wrw>Sa0UQ7U5wK(t9;V*`RZ3tB~>+AgtHx-K8XsWt1pE_Zo#nRB30(B(c)A!;hY5?n)! zHYVXr3G_~UbJl;0IZ7gX+BlQ@5urI5MLR5N(@V*lx-L6s$;wKKTrrimGtTod!qK@DJiC8!~=$oKL`9PQe@kW_(Hwgp76@ z5@0-hKR6jf<7|)0D*^c3Ac(VnIQOIse7g3a+h>Q{ zG_C!sdrB)=1TqBrG@JuO^!M6=>)f+>BmZ)*lMW1KX?$LYaoWF{JmTg&dskHU1GHWNCUuPwx$P6WOS{AcU9zYKcq8AlHyV z2EihI2XHe$xKktwD{?se@!6Kw#GzXEd0;^jAY{WtC1RrBsNiu6hQzIo^|O4oiyIEE zzF4dx8gPk1ZvPC89~mjb`JF?c_}5(oIRNCAwBYt55us#p>L~j61ywZn~sU zOgrBDxJ%rJi%a_-#iBDUeSEKL+%dr=BQX261DneICFLq|Jh$k@ zyy&u+#{I0G_YTp#SRlYCKq>&5;k!z1lx()(PI8N$cW1oni%IQR{LqO zbFJ~b)p*v>Gj?C`Zv*gKg}*OGq)sR9Dqjo*SYB8ev6yo7<)W#Nx2EIXQVvLl`^j+Y zE0KT*>08yv=%k-F#=K>l#nuadjlyjon_=8`^h|EJBPSp(N>7iBTC8-W8DCP$B_PM( zN_TuT5*DqKtb?&la_1-AHSV=nXGX$mq|nAb@O#l>Gmad>IIg*u@isHw2N>^Z+@^U; zjttsU$&uqN0|Qsta=KAu&w*=dpMzSR9hzF=xi|qYWW>@FCd0RtuSPhd&*RPh#S?oO zJzs3o5A#;(Eo42KxFx+HN$r2jXV5gy8`eF!MlyYG?*3;(Tq@41;m?wI>6_fx8wEOURq+VIZvN5!S|_gl`igoRXtQoQD{A zwtWyt{By^Dvy{Y$?^Ah}Pmh-wbMLv?S067<(q@PePyxOry?1^T>Y)TpZZWLk8EL0S1u6r9AadmU63Nok}yz#9l&9@h6IZ z^T0nJzv6lDU+{Pa|Br}Pgv2?(zh)rMVp{DEP{QF~xf%|KZw!f>>V-C{l&9;bo055@ z!V|Lg%@XZaukc*VhvaQ^?!?=KXJqF*h{3D<(?V@szV@w!+RQ@jrG?~%2`A+tm*_Mc zIfGW@tG7dge=Kn_v8c^5hcn?lh<+N$Cqxzv7d(;Qr+5`F+nlkJJ___~#EvDMZkFOK z48h)A%*hqF=0}mHW!brWPqM|^b#9KwY+2fME^&I_S-oV+!*-qY0A_Z@y0$ z)LqO`7oSiA)MKK>>BM!IOa3K*vsmHB^C$EY$ESV?Wzt=1_wb8YIu;ahA;n)z)lH1W z)NNFJrhQgopkkU)fw2jjjgbuPT^1X`sk{o#Off3FuF>$_cA#CI^F}w1ZC+~U(bKRBf_>b$9;8@@Vt>8CH@^9lV z%#w18*G`)`?KMYYq&+NFmv8X}FQA&@8OG;EJ2j@N4eA0Ij z4kYHM(0#~6JiwTO_!(C_5VGPJ;HB9L0yom+J-of!RfS7HFD?rYI6mbrMgSP*-VAHO zW$%R%_P!^vicZJi0`BV4gf0O)sJqCXNTE{~==CeIc2Bu+CpbB#W7_MbP_SM!#HJlj zV1U5zT3mTs?tPMlcHrh64&XMkk9#w58|CrxP!&uv7_pXuk?DYHNrF}K^SJ1PbGLjR z_25s9;OcHT0`(yVxk4(UK%=7JBk&G$uS?r8H^LEC>O*vLXNkYZn}kzvqcU)#ve&4K zB|@>g#uAVroP$U&vM>0Oq$K58Euj=AB5M9}ZVK09__5LH21s;jL~UT~78rHpL>uy; z2NzkK{64-F0{FSeW=OAK12p5_{=-}Mdy^HZpGEFl5C&MSzZCaJ5=SvF)>53^UOfON zgH(-UCzvR)A_j!I(Fmb!5>xj-4kp4Qt^@SVr5Il*8r9MuMv41S!N(lJNa=p~)}_MP z(gVi#OQm%Ef1=EzC;H4K=MuS3T_-(zRqbSHcOW!sVUfxoQLVXk9*^wt+(M%1k4bTB z{^CB{@r=0hx`b?`aYIgwZAl<(mJ61+X!BC_Zhe(k>Rdf46uEP)q%wxhn}eU%sc zIm>~o^Kh1i>tctZYj8-1lRjJ$Gh#YyG(6xl8TYDNacE@1)fJP8`z+f9favOc#6u4v zDA3-oI1VTHDY%Ihh+`&@vaKA7mQ@a2!2gxyLFn3qteehXD4Q+O=BE8N!-)$4#+~)T z{8)D<&XhR|nL=LCv@)lcvj4akh<9j7@DCZZg@wOzO)!Y#jqlrzU#P%1>4Y*?AjjW^ zo>95gnCpkPV&IhxsLBHYBW{b}loB#{ymBkNUufb}4Rgbq*Ee@_2Cyix&9fPBbc0?W z(Y#m@yZeCfoAgGUTjf~9W#I=D^s9`g$~encfe;YmfjPl!kSO`m z8s=h-jTMAJRAtU^w?@|t(&6#IG-|gh4e0JDhA`!e6HUP>A3;65mAfe)+yD_JNValo zYz=ySn=_{VJm&p@Q15tEZNqqNk5~ayIyB`&&}|=|JD%bANPFKmCnLlO;|H)w{`z;y z^dk*ZQwPBBmZcCkPW`2YFrfIuGmLu6^`U(gbv`wTO=|#3WDDMd|BL& z+VQS&Z1QQ++gOgt`HG>`d7}sPxU*Bf5jc&+?)Qv-tHdPi`Jgz8%R$rhIuPc5N*$`g z4@ttO^FmUxq6jQzGA=I!h&)`Q#*S7AQEE#lOWDAk_0MprxVM;u9|GXUAZP035~tsW zrvCA5kJ&hUz?Fj?xWLF_!Qvni`__Sqvnwk6PQ0qI6LQ}R+yLHi2^F_Y`eR4ozTe=` zocrh5TMn37;Vk=WY^8q)^G;(k1cPJJSvGJYX&J7I8<;d7{oIQbxh2xc4UWsjTxz0; z8QMu2KKrI(`fwgIA1d~`OlOgA7|%D6?0Qq?Ou`#-@8e~-!C@~2v3?RJjt`6S`4@2Q z1Znm-2=+8?-Uq`a4C9d$sY=>_zgzKlhtwq1?zz%-aedSMZS7smy4G(rwlu#}-GtXA zFW=nW-qz04v|U--wx@L`v$?Cav+-K2a&=>CYulAgP4~35-{08D)HL4T^gOevsd4A? z%+~hiP84o#Z|uO=ZEaMywz(D0)%P~G?uvA_Jrq*4Z_oBV6 zWzYSs&odhucM)cDE1v5cceDdxQ`7FI#w$C(#}%<|NoQBwS4^szP|eA&8t`6yKDK@#^%mVJG<&PZmHeCZ`j4J ztJ(aGPX695e&srT&1Qc6CVs37UcJ@NIUx7WEXl;n{M9xN`3VbEc4&i*Z#JCWNq!4 z&9|>we{;?4n-`@p_0`8$HSKEt;O>^T9rqosuYQ$YCXGE49aNvfe)&#o(_Zjj{Sxh} zJ@Gep?9gZz{BUQ}Jt_6o!%eO47|7tf8f-vlksHKb*^G^?$5vmhu4}!g%|QJ{M`v4m zCR=y`jCi6+=hYp5o$TdpaWb z5q=QAm;Wr*H}Fr=X4%r*(MkAY27c3DHAA4lTD)cD@y^D#?rz)x*;k*tzwK)=9;x3! zvJ4TUV{|pLaSw28gtHRnX748*_cq^irDF%S*;Z_#@%0;z?`rG(a21J*O3I$TjvXI& zw(Ul*8)+6gKfJm2HfjMsGy`}$-}zx|>S>%Cm7RofcN_7!aZS_vKL@oK#z1@1?v|B1 znhc~f)XkRKwLKP~wDh%nfS>Ri>amgZqw_=9j&>qNsw$_v$v3}zS74KZV;mp_fH0^;HTX85_Uwd288O+e7 zj;79@xcXWZBBa;&`r6a5iIEn=PEre`aDU@{P}PrGTB$s+a!+U5;%1OWVT?$$H?`3F zOCYhMrJYE;vh(iuH}7uT(cHR=imz^kxZ3viB-Gc^95i(rxWUy;t({E<{JF0+w!hce zcy|ZU3Ek4Q``)J3MzYw1J+!;MZFgHc6&qU&%#&+d_H?`pi2?d-`<@mMvDDX|Skv5r Zx%h1LrVc_oe`n)IvvbR*{2$uV{wMiPr_}%e literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s1/u0/ZDENST.COM b/Images/Source/hd0/s1/u0/ZDENST.COM new file mode 100644 index 0000000000000000000000000000000000000000..8ccc976739f96507289890bf7df565aba040127e GIT binary patch literal 10624 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd1/s0/u0/TEST.TXT b/Images/Source/hd1/s0/u0/TEST.TXT new file mode 100644 index 00000000..8318c86b --- /dev/null +++ b/Images/Source/hd1/s0/u0/TEST.TXT @@ -0,0 +1 @@ +Test \ No newline at end of file diff --git a/Images/cpmtools.cmd b/Images/cpmtools.cmd new file mode 100644 index 00000000..cfa4d321 --- /dev/null +++ b/Images/cpmtools.cmd @@ -0,0 +1,5 @@ +@echo off +setlocal +set PATH=%CD%\Tools\cpmtools;%PATH% +set PROMPT=[CPM Tools] %PROMPT% +%ComSpec% /K diff --git a/Images/diskdefs b/Images/diskdefs new file mode 100644 index 00000000..937bfcf2 --- /dev/null +++ b/Images/diskdefs @@ -0,0 +1,417 @@ +diskdef ibm-3740 + seclen 128 + tracks 77 + sectrk 26 + blocksize 1024 + maxdir 64 + skew 6 + boottrk 2 + os p2dos +end + +diskdef 4mb-hd + seclen 128 + tracks 1024 + sectrk 32 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 0 + os p2dos +end + +diskdef pcw + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 1 + os 3 +end + +diskdef pc1.2m + seclen 512 + tracks 80 + # this format uses 15 sectors per track, but 30 per cylinder + sectrk 30 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 0 + os 3 +end + +# CP/M 86 on 1.44MB floppies +diskdef cpm86-144feat + seclen 512 + tracks 160 + sectrk 18 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 2 + os 3 +end + +diskdef cf2dd + seclen 512 + tracks 160 + sectrk 9 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 1 + os 3 +end + +#amstrad: values are read from super block (special name hardcoded) + +# Royal alphatronic +# setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2 +diskdef alpha + seclen 256 + tracks 40 + sectrk 32 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Apple II CP/M skew o Apple II DOS 3.3 skew +diskdef apple-do + seclen 256 + tracks 35 + sectrk 16 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 3 + os 2.2 +end + +# Apple II CP/M skew o Apple II PRODOS skew +diskdef apple-po + seclen 256 + tracks 35 + sectrk 16 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 3 + os 2.2 +end + +# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header) +diskdef myz80 + seclen 1024 + tracks 64 + sectrk 128 + blocksize 4096 + maxdir 1024 + skew 1 + boottrk 0 + os 3 +end + +# Despite being Amstrad formats, CPC System and CPC Data don't have an Amstrad +# superblock. You'll need to use libdsk to access them because the Linux +# and Windows kernel drivers won't touch them. +diskdef cpcsys + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 2 + os 3 +end +diskdef cpcdata + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 0 + os 3 +end + +# after being read in with no sector skew. +diskdef nigdos + seclen 512 + # NigDos double sided disk format, 42 tracks * 2 sides + tracks 84 + sectrk 10 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 0 + # this format wastes half of the directory entry + logicalextents 1 + os 3 +end + +diskdef epsqx10 + seclen 512 + tracks 40 + sectrk 20 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef ibm-8ss + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef ibm-8ds + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef electroglas + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 1 + os 3 +end + +# IBM CP/M-86 +# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 head=1 +diskdef ibmpc-514ss + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 1 + os 2.2 +end + +# IBM CP/M-86 +# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 +diskdef ibmpc-514ds + seclen 512 + tracks 80 + sectrk 8 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef p112 + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 2 + os 3 +end + +diskdef p112-old + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 1 + os 3 +end + +diskdef kpii + seclen 512 + tracks 40 + sectrk 10 + blocksize 1024 + maxdir 32 + skew 0 + boottrk 1 + os 2.2 +end + +# setfdprm /dev/fd0 dd sect=10 +diskdef interak + seclen 512 + tracks 80 + sectrk 20 + blocksize 4096 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end + +# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) + +diskdef wbw_rom512 + seclen 512 + tracks 12 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk) + +diskdef wbw_rom1024 + seclen 512 + tracks 28 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# UNA 512KB ROM (128KB reserved, 384KB ROM Disk) + +diskdef una_rom512 + seclen 512 + tracks 12 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# UNA 512KB ROM (128KB reserved, 896KB ROM Disk) + +diskdef una_rom1024 + seclen 512 + tracks 28 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# RomWBW 8MB Hard Disk, LU 0-3 +diskdef wbw_hd0 + seclen 512 + tracks 65 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef wbw_hd1 + seclen 512 + tracks 130 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 66 + os 2.2 +end + +diskdef wbw_hd2 + seclen 512 + tracks 195 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 131 + os 2.2 +end + +diskdef wbw_hd3 + seclen 512 + tracks 260 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 196 + os 2.2 +end + +# RomWBW 720K floppy media +diskdef wbw_fd720 + seclen 512 + tracks 160 + sectrk 9 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 4 + os 2.2 +end + +# RomWBW 1.44M floppy media +diskdef wbw_fd144 + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end + +# RomWBW 360K floppy media +diskdef wbw_fd360 + seclen 512 + tracks 80 + sectrk 9 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 4 + os 2.2 +end + +# RomWBW 1.20M floppy media +diskdef wbw_fd120 + seclen 512 + tracks 160 + sectrk 15 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end diff --git a/ReadMe.txt b/ReadMe.txt index 321c220f..6255542b 100644 --- a/ReadMe.txt +++ b/ReadMe.txt @@ -8,8 +8,8 @@ Builders: Wayne Warthen (wwarthen@gmail.com) Douglas Goodall (douglas_goodall@mac.com) David Giles (vk5dg@internode.on.net) -Updated: 2015-03-14 -Version: 2.7.0 +Updated: 2015-03-22 +Version: 2.7.1 This is an adaptation of CP/M-80 2.2 and ZSDOS/ZCPR targeting ROMs for all N8VEM Z80 hardware variations diff --git a/Sim.cfg b/Sim.cfg index 4bbcaae4..7d4d24f1 100644 --- a/Sim.cfg +++ b/Sim.cfg @@ -1,10 +1,3 @@ -; $Id: n8vem 1969 2008-06-26 05:57:30Z hharte $ -; -; SIMH/AltairZ80 Configuration file for the N8VEM SBC -; http://groups.google.com/group/n8vem/web/n8vem-single-board-computer-home-page -; -; Copyright (c) 2008 Howard M. Harte - set cpu z80 ;set throttle 4K set cpu noaltairrom @@ -29,8 +22,8 @@ attach n8vem0 %1 ; hard disks set hdsk debug=read;write;verbose -attach hdsk0 hd0.img -attach hdsk1 hd1.img +attach hdsk0 Output\hd0.img +attach hdsk1 Output\hd1.img set hdsk0 format=HDSK set hdsk1 format=HDSK set hdsk0 geom=T:520/N:256/S:512 diff --git a/Source/Apps/OSLdr.asm b/Source/Apps/OSLdr.asm index 21b18d22..af094cc0 100644 --- a/Source/Apps/OSLdr.asm +++ b/Source/Apps/OSLdr.asm @@ -97,7 +97,7 @@ hbver .equ hbimg + $102 ; HBIOS version hbplt .equ hbimg + $104 ; HBIOS platform bidusr .equ hbimg + $10B ; User bank id bidbios .equ hbimg + $10C ; BIOS bank id -pxyimg .equ hbimg + $7E00 ; Proxy image location +pxyimg .equ hbimg + $200 ; Proxy image offset within HBIOS image pxyloc .equ $FE00 ; Proxy run location pxysiz .equ $0200 ; Proxy size srcbnk .equ $FFE4 ; Address of bank copy source bank id diff --git a/Source/BIOS/Build.ps1 b/Source/BIOS/Build.ps1 index 51b5e36e..ff3f9688 100644 --- a/Source/BIOS/Build.ps1 +++ b/Source/BIOS/Build.ps1 @@ -46,6 +46,8 @@ $RomFmt = "wbw_rom${RomSize}" $BlankROM = "Blank${RomSize}KB.dat" $RomDiskFile = "RomDisk.tmp" $RomFile = "${OutDir}/${RomName}.rom" +$ComFile = "${OutDir}/${RomName}.com" +$ImgFile = "${OutDir}/${RomName}.img" "" "Building ${RomName}: ${ROMSize}KB ROM configuration ${Config} for Z${CPUType}..." @@ -101,8 +103,12 @@ Asm 'prefix' Asm 'romldr' if ($Platform -ne "UNA") { - Asm 'setup' Asm 'hbios' + Asm 'hbfill' + Asm 'loader' "-dMODE=LM_ROM" -Output "ldr_rom.bin" + Asm 'setup' # uses exported values from loader compilation above!!! + Asm 'loader' "-dMODE=LM_COM" -Output "ldr_com.bin" + Asm 'loader' "-dMODE=LM_IMG" -Output "ldr_img.bin" } # Generate result files using components above @@ -136,7 +142,9 @@ if ($Platform -eq "UNA") } else { - Concat 'setup.bin', 'hbios.bin','osimg.bin','hbios.bin',$RomDiskFile $RomFile + Concat 'ldr_rom.bin','setup.bin','hbios.bin','hbfill.bin','osimg.bin','osimg.bin',$RomDiskFile $RomFile + Concat 'ldr_com.bin','hbios.bin','osimg.bin' $ComFile + Concat 'ldr_img.bin','hbios.bin','osimg.bin' $ImgFile } # Cleanup diff --git a/Source/BIOS/bioshdr.inc b/Source/BIOS/Old/bioshdr.inc similarity index 100% rename from Source/BIOS/bioshdr.inc rename to Source/BIOS/Old/bioshdr.inc diff --git a/Source/BIOS/hbfill.asm b/Source/BIOS/hbfill.asm new file mode 100644 index 00000000..1bb34c26 --- /dev/null +++ b/Source/BIOS/hbfill.asm @@ -0,0 +1,12 @@ +; +;================================================================================================== +; HBIOS FILLER +;================================================================================================== +; +; CREATES A CORRECTLY SIZED FILLER TO FILL SPACE BETWEEN END OF HBIOS +; IMAGE AND END OF BANK ($8000) +; +#INCLUDE "hbios.exp" +; + .FILL $8000 - HB_END,$FF + .END diff --git a/Source/BIOS/hbios.asm b/Source/BIOS/hbios.asm index 8be87f68..a2419930 100644 --- a/Source/BIOS/hbios.asm +++ b/Source/BIOS/hbios.asm @@ -44,7 +44,7 @@ ROM_SIG: ; NAME .DB "ROMWBW v", BIOSVER, ", ", BIOSBLD, ", ", TIMESTAMP, 0 AUTH .DB "WBW",0 -DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2014, Wayne Warthen, GNU GPL v3", 0 +DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2015, Wayne Warthen, GNU GPL v3", 0 ; .FILL ($100 - $),$FF ; PAD REMAINDER OF PAGE ZERO ; @@ -73,6 +73,382 @@ DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2014, Wayne Warthen, GNU GPL v3", 0 .FILL ($200 - $),$FF ; PAD REMAINDER OF PAGE ONE ; ;================================================================================================== +; HBIOS UPPER MEMORY PROXY +;================================================================================================== +; +; THE FOLLOWING CODE IS RELOCATED TO THE TOP OF MEMORY TO HANDLE INVOCATION DISPATCHING +; AFTER RELOCATION THIS AREA (1K) IS REUSED AS THE HBIOS PHYSICAL DISK READ/WRITE BUFFER +; + .FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START + .ORG HBX_LOC ; ADJUST FOR RELOCATION +; +; MEMORY LAYOUT: +; HBIOS PROXY CODE $FE00 (256 BYTES) +; INTERRUPT VECTORS $FF00 (32 BYTES, 16 ENTRIES) +; HBIOS PROXY COPY BUFFER $FF20 (128 BYTES) +; HBIOS PROXY PRIVATE STACK $FFA0 (64 BYTES, 32 ENTRIES) +; HBIOS PROXY MGMT BLOCK $FFE0 (32 BYTES) +; +; DEFINITIONS +; +HBX_CODSIZ .EQU $100 ; 256 BYTE CODE SPACE +HBX_IVTSIZ .EQU $20 ; VECTOR TABLE SIZE (16 ENTRIES) +HBX_BUFSIZ .EQU $80 ; INTERBANK COPY BUFFER +HBX_STKSIZ .EQU $40 ; PRIVATE STACK SIZE +; +; HBIOS IDENTIFICATION DATA BLOCK +; +HBX_IDENT: + .DB 'W',~'W' ; MARKER + .DB RMJ << 4 | RMN ; FIRST BYTE OF VERSION INFO + .DB RUP << 4 | RTP ; SECOND BYTE OF VERSION INFO +; +;================================================================================================== +; HBIOS ENTRY FOR RST 08 PROCESSING +;================================================================================================== +; +HBX_INVOKE: + LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME + LD SP,HBX_STACK ; SETUP NEW STACK FRAME + + LD A,(HB_CURBNK) ; GET CURRENT BANK + LD (HBX_INVBNK),A ; SETUP TO RESTORE AT EXIT + + LD A,BID_BIOS ; HBIOS BANK + CALL HBX_BNKSEL ; SELECT IT + + CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER + + PUSH AF ; SAVE AF (FUNCTION RETURN) + LD A,$FF ; LOAD ORIGINAL BANK ($FF IS REPLACED AT ENTRY) +HBX_INVBNK .EQU $ - 1 + CALL HBX_BNKSEL ; SELECT IT + POP AF ; RESTORE AF + + LD SP,0 ; RESTORE ORIGINAL STACK FRAME +HBX_STKSAV .EQU $ - 2 + + RET ; RETURN TO CALLER +; +;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +;; SETBNK - Switch Memory Bank to Bank in A. +;; Preserve all Registers including Flags. +;; Does NOT update current bank. +;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; +HBX_BNKSEL: + LD (HB_CURBNK),A ; RECORD NEW CURRENT BANK +; +#IF ((PLATFORM == PLT_N8VEM) | (PLATFORM == PLT_ZETA)) + OUT (MPCL_ROM),A + OUT (MPCL_RAM),A +#ENDIF +#IF (PLATFORM == PLT_ZETA2) + BIT 7,A + JR Z,HBX_ROM ; JUMP IF IT IS A ROM PAGE + RES 7,A ; RAM PAGE REQUESTED: CLEAR ROM BIT + ADD A,16 ; ADD 16 x 32K - RAM STARTS FROM 512K +; +HBX_ROM: + RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K + OUT (MPGSEL_0),A ; BANK_0: 0K - 16K + INC A + OUT (MPGSEL_1),A ; BANK_1: 16K - 32K +#ENDIF +#IF (PLATFORM == PLT_N8) + BIT 7,A + JR Z,HBX_ROM +; +HBX_RAM: + RES 7,A + RLCA + RLCA + RLCA + OUT0 (CPU_BBR),A + LD A,DEFACR | 80H + OUT0 (ACR),A + RET +; +HBX_ROM: + OUT0 (RMAP),A + XOR A + OUT0 (CPU_BBR),A + LD A,DEFACR + OUT0 (ACR),A + RET +; +#ENDIF +#IF (PLATFORM == PLT_MK4) +; BIT 7,A ; RAM? +; JR Z,HBX_BNKSEL1 ; IF NOT, BYPASS +; XOR %10010000 ; CLEAR BIT 8, SET BIT 4 TO ADDRESS RAM +; +HBX_BNKSEL1: + RLCA + RLCA + RLCA + OUT0 (CPU_BBR),A +#ENDIF + RET +; +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Copy Data - Possibly between banks. This resembles CP/M 3, but +; usage of the HL and DE registers is reversed. +; Caller MUST ensure stack is already in high memory. +; Enter: +; HL = Source Address +; DE = Destination Address +; BC = Number of bytes to copy +; Exit : None +; Uses : AF,BC,DE,HL +; +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; +HBX_BNKCPY: + ; Save current bank to restore at end + LD A,(HB_CURBNK) + LD (HBX_CPYBNK),A + + ; Setup for copy loop + LD (HB_SRCADR),HL ; Init working source adr + LD (HB_DSTADR),DE ; Init working dest adr + LD H,B ; Move bytes to copy from BC + LD L,C ; ... to HL to use as byte counter +; +HBX_BNKCPY2: + ; Copy loop + LD A,L ; Low byte of count to A + AND $7F ; Isolate bits relevant to 128 byte buf + LD BC,$80 ; Assume full buf copy + JR Z,HBX_BNKCPY3 ; If full buf copy, go do it + LD C,A ; Otherwise, BC := bytes to copy +; +HBX_BNKCPY3: + PUSH HL ; Save bytes left to copy + CALL HBX_BNKCPY4 ; Do it + POP HL ; Recover bytes left to copy + XOR A ; Clear CF + SBC HL,BC ; Reflect bytes copied in HL + JR NZ,HBX_BNKCPY2 ; If any left, then loop + LD A,$FF ; Load original bank ($FF is replaced at entry) +HBX_CPYBNK .EQU $ - 1 + + JR HBX_BNKSEL ; Select and return +; +HBX_BNKCPY4: ; Switch to source bank + LD A,(HB_SRCBNK) ; Get source bank + CALL HBX_BNKSEL ; Set bank without making it current +; + ; Copy BC bytes from HL -> BUF, allow HL to increment + PUSH BC ; Save copy length + LD HL,(HB_SRCADR) ; Point to source adr + LD DE,HBX_BUF ; Setup buffer as interim destination + LDIR ; Copy BC bytes: src -> buffer + LD (HB_SRCADR),HL ; Update source adr + POP BC ; Recover copy length +; + ; Switch to dest bank + LD A,(HB_DSTBNK) ; Get destination bank + CALL HBX_BNKSEL ; Set bank without making it current +; + ; Copy BC bytes from BUF -> HL, allow DE to increment + PUSH BC ; Save copy length + LD HL,HBX_BUF ; Use the buffer as source now + LD DE,(HB_DSTADR) ; Setup final destination for copy + LDIR ; Copy BC bytes: buffer -> dest + LD (HB_DSTADR),DE ; Update dest adr + POP BC ; Recover copy length +; + RET ; Done +; +; Call a routine in another bank saving and restoring the original bank. +; Caller MUST ensure stack is already in high memory. +; On input A=target bank, HL=target address +; +HBX_BNKCALL: + LD (HBX_TGTBNK),A ; stuff target bank to call into code below + LD (HBX_TGTADR),HL ; stuff address to call into code below + LD A,(HB_CURBNK) ; get current bank + PUSH AF ; save for return +HBX_TGTBNK .EQU $ + 1 + LD A,$FF ; load bank to call ($ff overlaid at entry) + CALL HBX_BNKSEL ; activate the new bank +HBX_TGTADR .EQU $ + 1 + CALL $FFFF ; call routine ($FFFF is overlaid above) + EX (SP),HL ; save hl and get bank to restore in hl + PUSH AF ; save af + LD A,H ; bank to restore to a + CALL HBX_BNKSEL ; restore it + POP AF ; recover af + POP HL ; recover hl + RET +; +; INTERRUPT HANDLER DISPATCHING +; +INT_TIMER: + PUSH HL + LD HL,HB_TIMINT + JR HBX_INT +; +INT_BAD: + PUSH HL + LD HL,HB_BADINT + JR HBX_INT +; +; COMMON INTERRUPT DISPATCHING CODE +; SETUP AND CALL HANDLER IN BIOS BANK +; +HBX_INT: + ; SAVE STATE (HL MUST BE SAVED PREVIOUSLY) + PUSH AF + PUSH BC + PUSH DE + + ; ACTIVATE BIOS BANK +#IF ((PLATFORM == PLT_N8VEM) | (PLATFORM == PLT_ZETA)) + LD A,BID_BIOS + OUT (MPCL_ROM),A + OUT (MPCL_RAM),A +#ENDIF +#IF (PLATFORM == PLT_ZETA2) + LD A,(BID_BIOS - $80 + $10) * 2 + OUT (MPGSEL_0),A ; BANK_0: 0K - 16K + INC A + OUT (MPGSEL_1),A ; BANK_1: 16K - 32K +#ENDIF +#IF (PLATFORM == PLT_N8) + LD A,(BID_BIOS << 3) & $FF + OUT0 (CPU_BBR),A + LD A,DEFACR | $80 + OUT0 (ACR),A +#ENDIF +#IF (PLATFORM == PLT_MK4) + LD A,BID_BIOS << 3 + OUT0 (CPU_BBR),A +#ENDIF + + ; SETUP INTERRUPT PROCESSING STACK IN HBIOS + LD (HB_INTSTKSAV),SP + LD SP,HB_INTSTK + + ; DO THE REAL WORK + CALL JPHL + + ; RESTORE STACK + LD SP,(HB_INTSTKSAV) + + ; RESTORE BANK + LD A,(HB_CURBNK) ; SET TARGET BANK +; +#IF ((PLATFORM == PLT_N8VEM) | (PLATFORM == PLT_ZETA)) + OUT (MPCL_ROM),A + OUT (MPCL_RAM),A +#ENDIF +#IF (PLATFORM == PLT_ZETA2) + BIT 7,A + JR Z,HBX_INT1 ; JUMP IF IT IS A ROM PAGE + RES 7,A ; RAM PAGE REQUESTED: CLEAR ROM BIT + ADD A,16 ; ADD 16 x 32K - RAM STARTS FROM 512K +; +HBX_INT1: + RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K + OUT (MPGSEL_0),A ; BANK_0: 0K - 16K + INC A + OUT (MPGSEL_1),A ; BANK_1: 16K - 32K +#ENDIF +#IF (PLATFORM == PLT_N8) + BIT 7,A + JR Z,HBX_INT1 +; + RES 7,A + RLCA + RLCA + RLCA + OUT0 (CPU_BBR),A + JR HBX_INT2 +; +HBX_INT1: + XOR A + OUT0 (CPU_BBR),A + LD A,DEFACR + OUT0 (ACR),A +; +HBX_INT2: +#ENDIF +#IF (PLATFORM == PLT_MK4) + RLCA + RLCA + RLCA + OUT0 (CPU_BBR),A +#ENDIF +; + ; RESTORE STATE + POP DE + POP BC + POP AF + POP HL + + ; DONE + RETI ; IMPLICITLY REENABLES INTERRUPTS! +; +; FILLER FOR UNUSED HBIOS PROXY CODE SPACE +; PAD TO START OF INTERRUPT VECTOR TABLE +; +HBX_SLACK .EQU (HBX_LOC + HBX_CODSIZ - $) + .ECHO "HBIOS PROXY space remaining: " + .ECHO HBX_SLACK + .ECHO " bytes.\n" + .FILL HBX_SLACK,$FF +; +; HBIOS INTERRUPT VECTOR TABLE (16 ENTRIES) +; +HBX_IVT ; .FILL HBX_IVTSIZ,$FF + .DW INT_TIMER + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD + .DW INT_BAD +; +; INTERBANK COPY BUFFER (128 BYTES) +; +HBX_BUF .FILL HBX_BUFSIZ,0 +; +; PRIVATE STACK (64 BYTES, 32 ENTRIES) +; + .FILL HBX_STKSIZ,$FF +HBX_STACK .EQU $ +; +; HBIOS PROXY MGMT BLOCK (TOP 32 BYTES) +; + .DB BID_BOOT ; CURRENTLY ACTIVE LOW MEMORY BANK ID + .DB $FF ; DEPRECATED!!! + .DW 0 ; BNKCPY SOURCE ADDRESS + .DB BID_USR ; BNKCPY SOURCE BANK ID + .DW 0 ; BNKCPY DESTINATION ADDRESS + .DB BID_USR ; BNKCPY DESTINATION BANK ID + .FILL 8,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE + JP HBX_INVOKE ; FIXED ADR ENTRY FOR HBX_INVOKE (ALT FOR RST 08) + JP HBX_BNKSEL ; FIXED ADR ENTRY FOR HBX_BNKSEL + JP HBX_BNKCPY ; FIXED ADR ENTRY FOR HBX_BNKCPY + JP HBX_BNKCALL ; FIXED ADR ENTRY FOR HBX_BNKCALL + .DW HBX_IDENT ; ADDRESS OF HBIOX PROXY START + .DW HBX_IDENT ; ADDRESS OF HBIOS IDENT INFO DATA BLOCK +; + .FILL $MEMTOP - $ ; FILL TO END OF MEMORY (AS NEEDED) + .ORG HBX_IMG + HBX_SIZ ; RESET ORG +; +;================================================================================================== ; HBIOS CORE ;================================================================================================== ; @@ -909,6 +1285,16 @@ CIO_IDLE: POP AF ; RECOVER AF RET ; +; TIMER INTERRUPT +; +HB_TIMINT: + RET +; +; BAD INTERRUPT HANDLER +; +HB_BADINT: + RET +; ; WRAPPER FOR CALL TO HB_BNKCPY FOR USE BY INTERNAL HBIOS FUNCTIONS ; BNKCPY .EQU HB_BNKCPY @@ -1129,6 +1515,11 @@ CURVDA .DB DEFVDA ; CURRENT VDA TARGET FOR EMULATION DIOBUF .DW HB_BUF ; PTR TO 1024 BYTE DISK XFR BUFFER ; BOOTDRV .DW 0 ; BOOT DRIVE / LU +; +HB_INTSTKSAV .DW 0 ; SAVED STACK POINTER DURING INT PROCESSING + .FILL $40,$FF +HB_INTSTK .EQU $ + ; STR_BANNER .DB "N8VEM HBIOS v", BIOSVER, ", ", BIOSBLD, ", ", TIMESTAMP, "$" STR_PLATFORM .DB PLATFORM_NAME, "$" @@ -1138,266 +1529,12 @@ AT_BOOTVOL .DW 0 ; BOOT VOLUME, MSB=DEV/UNIT, LSB=LU AT_BOOTROM .DW 0 ; BANK ID OF ROM PAGE BOOTED .FILL HB_ATTR + 256 - $,0 ; FILL OUT UNUSED ENTRIES ; -;================================================================================================== -; FILL REMAINDER OF HBIOS (TO START OF 1K PHYSICAL DISK BUFFER AREA) -;================================================================================================== -; -SLACK .EQU (HBBUF_IMG - $) - .FILL SLACK,$FF +HB_BUF .EQU $ ; PHYSICAL DISK BUFFER +HB_END .EXPORT HB_END ; EXPORT ENDING ADDRESS ; +SLACK .EQU BNKTOP - $ .ECHO "HBIOS space remaining: " .ECHO SLACK .ECHO " bytes.\n" ; -HB_BUF .EQU $ -; -;================================================================================================== -; HBIOS UPPER MEMORY PROXY -;================================================================================================== -; -; THE FOLLOWING CODE IS RELOCATED TO THE TOP OF MEMORY TO HANDLE INVOCATION DISPATCHING -; AFTER RELOCATION THIS AREA (1K) IS REUSED AS THE HBIOS PHYSICAL DISK READ/WRITE BUFFER -; - .FILL (HBX_IMG - $) ; FILL TO START OF PROXY IMAGE START - .ORG HBX_LOC ; ADJUST FOR RELOCATION -; -; MEMORY LAYOUT: -; HBIOS PROXY CODE $FE00 (256 BYTES) -; INTERRUPT VECTORS $FF00 (32 BYTES, 16 ENTRIES) -; HBIOS PROXY COPY BUFFER $FF20 (128 BYTES) -; HBIOS PROXY PRIVATE STACK $FFA0 (64 BYTES, 32 ENTRIES) -; HBIOS PROXY MGMT BLOCK $FFE0 (32 BYTES) -; -; DEFINITIONS -; -HBX_CODSIZ .EQU $100 ; 256 BYTE CODE SPACE -HBX_IVTSIZ .EQU $20 ; VECTOR TABLE SIZE (16 ENTRIES) -HBX_BUFSIZ .EQU $80 ; INTERBANK COPY BUFFER -HBX_STKSIZ .EQU $40 ; PRIVATE STACK SIZE -; -; HBIOS IDENTIFICATION DATA BLOCK -; -HBX_IDENT: - .DB 'W',~'W' ; MARKER - .DB RMJ << 4 | RMN ; FIRST BYTE OF VERSION INFO - .DB RUP << 4 | RTP ; SECOND BYTE OF VERSION INFO -; -;================================================================================================== -; HBIOS ENTRY FOR RST 08 PROCESSING -;================================================================================================== -; -HBX_INVOKE: - LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME - LD SP,HBX_STACK ; SETUP NEW STACK FRAME - - LD A,(HB_CURBNK) ; GET CURRENT BANK - LD (HBX_INVBNK),A ; SETUP TO RESTORE AT EXIT - - LD A,BID_BIOS ; HBIOS BANK - CALL HBX_BNKSEL ; SELECT IT - - CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER - - PUSH AF ; SAVE AF (FUNCTION RETURN) - LD A,$FF ; LOAD ORIGINAL BANK ($FF IS REPLACED AT ENTRY) -HBX_INVBNK .EQU $ - 1 - CALL HBX_BNKSEL ; SELECT IT - POP AF ; RESTORE AF - - LD SP,0 ; RESTORE ORIGINAL STACK FRAME -HBX_STKSAV .EQU $ - 2 - - RET ; RETURN TO CALLER -; -;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -;; SETBNK - Switch Memory Bank to Bank in A. -;; Preserve all Registers including Flags. -;; Does NOT update current bank. -;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -; -HBX_BNKSEL: - LD (HB_CURBNK),A ; RECORD NEW CURRENT BANK -; -#IF ((PLATFORM == PLT_N8VEM) | (PLATFORM == PLT_ZETA)) - OUT (MPCL_ROM),A - OUT (MPCL_RAM),A -#ENDIF -#IF (PLATFORM == PLT_ZETA2) - BIT 7,A - JR Z,HBX_ROM ; JUMP IF IT IS A ROM PAGE - RES 7,A ; RAM PAGE REQUESTED: CLEAR ROM BIT - ADD A,16 ; ADD 16 x 32K - RAM STARTS FROM 512K -; -HBX_ROM: - RLCA ; TIMES 2 - GET 16K PAGE INSTEAD OF 32K - OUT (MPGSEL_0),A ; BANK_0: 0K - 16K - INC A - OUT (MPGSEL_1),A ; BANK_1: 16K - 32K -#ENDIF -#IF (PLATFORM == PLT_N8) - BIT 7,A - JR Z,HBX_ROM -; -HBX_RAM: - RES 7,A - RLCA - RLCA - RLCA - OUT0 (CPU_BBR),A - LD A,DEFACR | 80H - OUT0 (ACR),A - RET -; -HBX_ROM: - OUT0 (RMAP),A - XOR A - OUT0 (CPU_BBR),A - LD A,DEFACR - OUT0 (ACR),A - RET -; -#ENDIF -#IF (PLATFORM == PLT_MK4) -; BIT 7,A ; RAM? -; JR Z,HBX_BNKSEL1 ; IF NOT, BYPASS -; XOR %10010000 ; CLEAR BIT 8, SET BIT 4 TO ADDRESS RAM -; -HBX_BNKSEL1: - RLCA - RLCA - RLCA - OUT0 (CPU_BBR),A -#ENDIF - RET -; -;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -; Copy Data - Possibly between banks. This resembles CP/M 3, but -; usage of the HL and DE registers is reversed. -; Caller MUST ensure stack is already in high memory. -; Enter: -; HL = Source Address -; DE = Destination Address -; BC = Number of bytes to copy -; Exit : None -; Uses : AF,BC,DE,HL -; -;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: -; -HBX_BNKCPY: - ; Save current bank to restore at end - LD A,(HB_CURBNK) - LD (HBX_CPYBNK),A - - ; Setup for copy loop - LD (HB_SRCADR),HL ; Init working source adr - LD (HB_DSTADR),DE ; Init working dest adr - LD H,B ; Move bytes to copy from BC - LD L,C ; ... to HL to use as byte counter -; -HBX_BNKCPY2: - ; Copy loop - LD A,L ; Low byte of count to A - AND $7F ; Isolate bits relevant to 128 byte buf - LD BC,$80 ; Assume full buf copy - JR Z,HBX_BNKCPY3 ; If full buf copy, go do it - LD C,A ; Otherwise, BC := bytes to copy -; -HBX_BNKCPY3: - PUSH HL ; Save bytes left to copy - CALL HBX_BNKCPY4 ; Do it - POP HL ; Recover bytes left to copy - XOR A ; Clear CF - SBC HL,BC ; Reflect bytes copied in HL - JR NZ,HBX_BNKCPY2 ; If any left, then loop - LD A,$FF ; Load original bank ($FF is replaced at entry) -HBX_CPYBNK .EQU $ - 1 - - JR HBX_BNKSEL ; Select and return -; -HBX_BNKCPY4: ; Switch to source bank - LD A,(HB_SRCBNK) ; Get source bank - CALL HBX_BNKSEL ; Set bank without making it current -; - ; Copy BC bytes from HL -> BUF, allow HL to increment - PUSH BC ; Save copy length - LD HL,(HB_SRCADR) ; Point to source adr - LD DE,HBX_BUF ; Setup buffer as interim destination - LDIR ; Copy BC bytes: src -> buffer - LD (HB_SRCADR),HL ; Update source adr - POP BC ; Recover copy length -; - ; Switch to dest bank - LD A,(HB_DSTBNK) ; Get destination bank - CALL HBX_BNKSEL ; Set bank without making it current -; - ; Copy BC bytes from BUF -> HL, allow DE to increment - PUSH BC ; Save copy length - LD HL,HBX_BUF ; Use the buffer as source now - LD DE,(HB_DSTADR) ; Setup final destination for copy - LDIR ; Copy BC bytes: buffer -> dest - LD (HB_DSTADR),DE ; Update dest adr - POP BC ; Recover copy length -; - RET ; Done -; -; Call a routine in another bank saving and restoring the original bank. -; Caller MUST ensure stack is already in high memory. -; On input A=target bank, HL=target address -; -HBX_BNKCALL: - LD (HBX_TGTBNK),A ; stuff target bank to call into code below - LD (HBX_TGTADR),HL ; stuff address to call into code below - LD A,(HB_CURBNK) ; get current bank - PUSH AF ; save for return -HBX_TGTBNK .EQU $ + 1 - LD A,$FF ; load bank to call ($ff overlaid at entry) - CALL HBX_BNKSEL ; activate the new bank -HBX_TGTADR .EQU $ + 1 - CALL $FFFF ; call routine ($FFFF is overlaid above) - EX (SP),HL ; save hl and get bank to restore in hl - PUSH AF ; save af - LD A,H ; bank to restore to a - CALL HBX_BNKSEL ; restore it - POP AF ; recover af - POP HL ; recover hl - RET -; -; FILLER FOR UNUSED HBIOS PROXY CODE SPACE -; PAD TO START OF INTERRUPT VECTOR TABLE -; -HBX_SLACK .EQU (HBX_LOC + HBX_CODSIZ - $) - .ECHO "HBIOS PROXY space remaining: " - .ECHO HBX_SLACK - .ECHO " bytes.\n" - .FILL HBX_SLACK,$FF -; -; HBIOS INTERRUPT VECTOR TABLE (16 ENTRIES) -; -HBX_IVT .FILL HBX_IVTSIZ,$FF -; -; INTERBANK COPY BUFFER (128 BYTES) -; -HBX_BUF .FILL HBX_BUFSIZ,0 -; -; PRIVATE STACK (64 BYTES, 32 ENTRIES) -; - .FILL HBX_STKSIZ,$FF -HBX_STACK .EQU $ -; -; HBIOS PROXY MGMT BLOCK (TOP 32 BYTES) -; - .DB BID_BOOT ; CURRENTLY ACTIVE LOW MEMORY BANK ID - .DB $FF ; DEPRECATED!!! - .DW 0 ; BNKCPY SOURCE ADDRESS - .DB BID_USR ; BNKCPY SOURCE BANK ID - .DW 0 ; BNKCPY DESTINATION ADDRESS - .DB BID_USR ; BNKCPY DESTINATION BANK ID - .FILL 8,0 ; FILLER, RESERVED FOR FUTURE HBIOS USE - JP HBX_INVOKE ; FIXED ADR ENTRY FOR HBX_INVOKE (ALT FOR RST 08) - JP HBX_BNKSEL ; FIXED ADR ENTRY FOR HBX_BNKSEL - JP HBX_BNKCPY ; FIXED ADR ENTRY FOR HBX_BNKCPY - JP HBX_BNKCALL ; FIXED ADR ENTRY FOR HBX_BNKCALL - .DW HBX_IDENT ; ADDRESS OF HBIOX PROXY START - .DW HBX_IDENT ; ADDRESS OF HBIOS IDENT INFO DATA BLOCK -; - .END + .END diff --git a/Source/BIOS/loader.asm b/Source/BIOS/loader.asm new file mode 100644 index 00000000..ea3e9e74 --- /dev/null +++ b/Source/BIOS/loader.asm @@ -0,0 +1,264 @@ +; +;================================================================================================== +; LOADER +;================================================================================================== +; +; BOOT LOADER +; CAN BE COMPILED IN DIFFERENT MODES: +; - LOAD FROM ROM +; - LOAD FROM IMAGE IN RAM +; - LOAD FROM COM APPLICATION +; +#INCLUDE "std.asm" +#INCLUDE "hbios.exp" +; +LM_ROM .EQU 1 ; LOAD FROM ROM PAGE +LM_IMG .EQU 2 ; LOAD FROM IMAGE +LM_COM .EQU 3 ; LOAD FROM COM APP +; +P2LOC .EQU $F000 ; PHASE 2 RUN LOCATION +; +LDRMODE .EQU MODE ; DEFINE MODE ON COMMAND LINE +; +#IF (LDRMODE == LM_ROM) +CURBNK .EQU BID_BOOT +#ELSE +CURBNK .EQU BID_USR +#ENDIF + +#IF (LDRMODE == LM_COM) + .ORG $100 +#ELSE + .ORG 0 +; +;================================================================================================== +; NORMAL PAGE ZERO SETUP, RET/RETI/RETN AS APPROPRIATE +;================================================================================================== +; + .FILL (000H - $),0FFH ; RST 0 + JP START ; JUMP TO BOOT CODE + .FILL (004H - $),0FFH ; FILL TO START OF SIG PTR + .DW ROM_SIG + .FILL (008H - $),0FFH ; RST 8 + RET + .FILL (010H - $),0FFH ; RST 10 + RET + .FILL (018H - $),0FFH ; RST 18 + RET + .FILL (020H - $),0FFH ; RST 20 + RET + .FILL (028H - $),0FFH ; RST 28 + RET + .FILL (030H - $),0FFH ; RST 30 + RET + .FILL (038H - $),0FFH ; INT + RETI + .FILL (066H - $),0FFH ; NMI + RETN +; + .FILL (070H - $),0FFH ; SIG STARTS AT $80 +; +ROM_SIG: + .DB $76, $B5 ; 2 SIGNATURE BYTES + .DB 1 ; STRUCTURE VERSION NUMBER + .DB 7 ; ROM SIZE (IN MULTIPLES OF 4KB, MINUS ONE) + .DW NAME ; POINTER TO HUMAN-READABLE ROM NAME + .DW AUTH ; POINTER TO AUTHOR INITIALS + .DW DESC ; POINTER TO LONGER DESCRIPTION OF ROM + .DB 0, 0, 0, 0, 0, 0 ; RESERVED FOR FUTURE USE; MUST BE ZERO +; +NAME .DB "ROMWBW v", BIOSVER, ", ", BIOSBLD, ", ", TIMESTAMP, 0 +AUTH .DB "WBW",0 +DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2014, Wayne Warthen, GNU GPL v3", 0 +; + .FILL ($100 - $),$FF ; PAD REMAINDER OF PAGE ZERO +#ENDIF +; +;================================================================================================== +; COLD START +;================================================================================================== +; +START: + DI ; NO INTERRUPTS + IM 1 ; INTERRUPT MODE 1 + LD SP,HBX_LOC ; SETUP INITIAL STACK JUST BELOW HBIOS PROXY +; +; HARDWARE BOOTSTRAP FOR Z180 +; FOR N8, ACR & RMAP ARE ASSUMED TO BE ALREADY SET OR THIS CODE +; WOULD NOT BE EXECUTING +; +#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4)) + ; SET BASE FOR CPU IO REGISTERS + LD A,CPU_BASE + OUT0 (CPU_ICR),A + + ; SET DEFAULT CPU CLOCK MULTIPLIERS (XTAL / 2) + XOR A + OUT0 (CPU_CCR),A + OUT0 (CPU_CMR),A + + ; SET DEFAULT WAIT STATES + LD A,$F0 + OUT0 (CPU_DCNTL),A + +#IF (Z180_CLKDIV >= 1) + ; SET CLOCK DIVIDE TO 1 RESULTING IN FULL XTAL SPEED + LD A,$80 + OUT0 (CPU_CCR),A +#ENDIF + +#IF (Z180_CLKDIV >= 2) + ; SET CPU MULTIPLIER TO 1 RESULTINT IN XTAL * 2 SPEED + LD A,$80 + OUT0 (CPU_CMR),A +#ENDIF + + ; SET DESIRED WAIT STATES + LD A,0 + (Z180_MEMWAIT << 6) | (Z180_IOWAIT << 4) + OUT0 (CPU_DCNTL),A + + ; MMU SETUP + LD A,$80 + OUT0 (CPU_CBAR),A ; SETUP FOR 32K/32K BANK CONFIG +#IF (LDRMODE == LM_ROM) + XOR A + OUT0 (CPU_BBR),A ; BANK BASE = 0 +#ENDIF + LD A,(RAMSIZE + RAMBIAS - 64) >> 2 + OUT0 (CPU_CBR),A ; COMMON BASE = LAST (TOP) BANK +#ENDIF +; +; HARDWARE BOOTSTRAP FOR ZETA 2 +; +#IF (PLATFORM == PLT_ZETA2) + ; SET PAGING REGISTERS +#IF (LDRMODE == LM_ROM) + XOR A + OUT (MPGSEL_0),A + INC A + OUT (MPGSEL_1),A +#ENDIF + LD A,62 + OUT (MPGSEL_2),A + INC A + OUT (MPGSEL_3),A + ; ENABLE PAGING + LD A,1 + OUT (MPGENA),A +#ENDIF + +; +; EMIT FIRST SIGN OF LIFE TO SERIAL PORT +; + CALL XIO_INIT ; INIT SERIAL PORT + LD HL,STR_BOOT ; POINT TO MESSAGE + CALL XIO_OUTS ; SAY HELLO +; +; COPY OURSELVES AND LOADER TO HI RAM FOR PHASE 2 +; + LD HL,0 ; COPY FROM START OF ROM IMAGE + LD DE,P2LOC ; TO HIMEM RUN LOCATION + LD BC,LDR_END ; COPY FULL IMAGE + LDIR +; + CALL XIO_DOT ; MARK PROGRESS +; + JP PHASE2 ; JUMP TO PHASE 2 BOOT IN UPPER MEMORY +; +STR_BOOT .DB "RomWBW$" +; +; IMBED DIRECT SERIAL I/O ROUTINES +; +#INCLUDE "xio.asm" +; +;______________________________________________________________________________________________________________________ +; +; THIS IS THE PHASE 2 CODE THAT MUST EXECUTE IN UPPER MEMORY +; + .ORG $ + P2LOC ; WE ARE NOW EXECUTING IN UPPER MEMORY +; +PHASE2: + CALL XIO_DOT ; MARK PROGRESS +; +; INSTALL HBIOS PROXY IN UPPER MEMORY +; +#IF (LDRMODE == LM_ROM) + LD A,BID_BIOSIMG ; HBIOS IMAGE ROM BANK + CALL BNKSEL ; SELECT IT +#ENDIF + LD HL,HBX_IMG ; HL := SOURCE OF HBIOS PROXY IMAGE +#IF (LDRMODE != LM_ROM) + LD BC,LDR_END ; SIZE OF LOADER + ADD HL,BC ; OFFSET SOURCE ADDRESS +#ENDIF + LD DE,HBX_LOC ; DE := DESTINATION TO INSTALL IT + LD BC,HBX_SIZ ; SIZE + LDIR ; DO THE COPY + LD A,CURBNK ; BOOT/SETUP BANK + LD (HB_CURBNK),A ; INIT CURRENT BANK +#IF (LDRMODE == LM_ROM) + CALL BNKSEL ; SELECT IT +#ENDIF + CALL XIO_DOT ; MARK PROGRESS +; +; INSTALL HBIOS CODE BANK +; +#IF (LDRMODE == LM_ROM) + LD A,BID_BIOSIMG ; SOURCE BANK +#ELSE + LD A,(HB_CURBNK) ; SOURCE BANK +#ENDIF + LD (HB_SRCBNK),A ; SET IT + LD A,BID_BIOS ; DESTINATION BANK + LD (HB_DSTBNK),A ; SET IT + LD HL,0 ; SOURCE ADDRESS IS ZERO +#IF (LDRMODE != LM_ROM) + LD BC,LDR_END ; SIZE OF LOADER + ADD HL,BC ; OFFSET SOURCE ADDRESS +#ENDIF + LD DE,0 ; TARGET ADDRESS IS ZERO + LD BC,HB_END ; COPY ALL OF HBIOS IMAGE + CALL HB_BNKCPY ; DO IT + CALL XIO_DOT ; MARK PROGRESS +; +; INITIALIZE HBIOS +; + LD A,BID_BIOS ; HBIOS BANK + LD HL,0 ; ADDRESS 0 IS HBIOS INIT ENTRY ADDRESS + CALL HB_BNKCALL ; DO IT +; +; CHAIN TO OS LOADER +; +#IF (LDRMODE == LM_ROM) + ; PERFORM BANK CALL TO OS IMAGES BANK + LD A,BID_OSIMG ; CHAIN TO OS IMAGES BANK + LD HL,0 ; ENTER AT ADDRESS 0 + CALL HB_BNKCALL ; GO THERE + HALT ; WE SHOULD NEVER COME BACK! +#ELSE + ; SLIDE OS IMAGES BLOB DOWN TO $0000 + LD HL,LDR_END ; SOURCE IS LOADER END + LD BC,HB_END ; PLUS HBIOS IMAGE SIZE + ADD HL,BC ; FINAL SOURCE ADDRESS + LD DE,0 ; TARGET ADDRESS IS ZERO + LD BC,BNKTOP ; MAX SIZE OF OS IMAGES + LDIR ; DO IT + ; JUMP TO START + JP 0 ; AND CHAIN +#ENDIF +; +;================================================================================================== +; MEMORY MANAGER +;================================================================================================== +; +#IF (LDRMODE == LM_ROM) +#INCLUDE "memmgr.asm" +#ENDIF +; +;================================================================================================== +; CLEAN UP +;================================================================================================== +; + .ORG $ - P2LOC ; BANK TO IMAGE-BASED ADDRESSING +LDR_END .EXPORT LDR_END ; EXPORT ENDING ADDRESS + .END diff --git a/Source/BIOS/setup.asm b/Source/BIOS/setup.asm index 773455ea..f70b1cd8 100644 --- a/Source/BIOS/setup.asm +++ b/Source/BIOS/setup.asm @@ -3,209 +3,7 @@ ; SETUP ;================================================================================================== ; -; INCLUDE GENERIC STUFF -; -#INCLUDE "std.asm" -; - .ORG 0 -; -;================================================================================================== -; NORMAL PAGE ZERO SETUP, RET/RETI/RETN AS APPROPRIATE -;================================================================================================== -; - .FILL (000H - $),0FFH ; RST 0 - JP START ; JUMP TO BOOT CODE - .FILL (004H - $),0FFH ; FILL TO START OF SIG PTR - .DW ROM_SIG - .FILL (008H - $),0FFH ; RST 8 - RET - .FILL (010H - $),0FFH ; RST 10 - RET - .FILL (018H - $),0FFH ; RST 18 - RET - .FILL (020H - $),0FFH ; RST 20 - RET - .FILL (028H - $),0FFH ; RST 28 - RET - .FILL (030H - $),0FFH ; RST 30 - RET - .FILL (038H - $),0FFH ; INT - RETI - .FILL (066H - $),0FFH ; NMI - RETN -; - .FILL (070H - $),0FFH ; SIG STARTS AT $80 -; -ROM_SIG: - .DB $76, $B5 ; 2 SIGNATURE BYTES - .DB 1 ; STRUCTURE VERSION NUMBER - .DB 7 ; ROM SIZE (IN MULTIPLES OF 4KB, MINUS ONE) - .DW NAME ; POINTER TO HUMAN-READABLE ROM NAME - .DW AUTH ; POINTER TO AUTHOR INITIALS - .DW DESC ; POINTER TO LONGER DESCRIPTION OF ROM - .DB 0, 0, 0, 0, 0, 0 ; RESERVED FOR FUTURE USE; MUST BE ZERO -; -NAME .DB "ROMWBW v", BIOSVER, ", ", BIOSBLD, ", ", TIMESTAMP, 0 -AUTH .DB "WBW",0 -DESC .DB "ROMWBW v", BIOSVER, ", Copyright 2014, Wayne Warthen, GNU GPL v3", 0 -; - .FILL ($100 - $),$FF ; PAD REMAINDER OF PAGE ZERO -; -;================================================================================================== -; ROM COLD START -;================================================================================================== -; -START: - DI ; NO INTERRUPTS - IM 1 ; INTERRUPT MODE 1 - LD SP,HBX_LOC ; SETUP INITIAL STACK JUST BELOW HBIOS PROXY -; -; HARDWARE BOOTSTRAP FOR Z180 -; FOR N8, ACR & RMAP ARE ASSUMED TO BE ALREADY SET OR THIS CODE -; WOULD NOT BE EXECUTING -; -#IF ((PLATFORM == PLT_N8) | (PLATFORM == PLT_MK4)) - ; SET BASE FOR CPU IO REGISTERS - LD A,CPU_BASE - OUT0 (CPU_ICR),A - - ; SET DEFAULT CPU CLOCK MULTIPLIERS (XTAL / 2) - XOR A - OUT0 (CPU_CCR),A - OUT0 (CPU_CMR),A - - ; SET DEFAULT WAIT STATES - LD A,$F0 - OUT0 (CPU_DCNTL),A - -#IF (Z180_CLKDIV >= 1) - ; SET CLOCK DIVIDE TO 1 RESULTING IN FULL XTAL SPEED - LD A,$80 - OUT0 (CPU_CCR),A -#ENDIF - -#IF (Z180_CLKDIV >= 2) - ; SET CPU MULTIPLIER TO 1 RESULTINT IN XTAL * 2 SPEED - LD A,$80 - OUT0 (CPU_CMR),A -#ENDIF - - ; SET DESIRED WAIT STATES - LD A,0 + (Z180_MEMWAIT << 6) | (Z180_IOWAIT << 4) - OUT0 (CPU_DCNTL),A - - ; MMU SETUP - LD A,$80 - OUT0 (CPU_CBAR),A ; SETUP FOR 32K/32K BANK CONFIG - XOR A - OUT0 (CPU_BBR),A ; BANK BASE = 0 - LD A,(RAMSIZE + RAMBIAS - 64) >> 2 - OUT0 (CPU_CBR),A ; COMMON BASE = LAST (TOP) BANK -#ENDIF -; -; HARDWARE BOOTSTRAP FOR ZETA 2 -; -#IF (PLATFORM == PLT_ZETA2) - ; SET PAGING REGISTERS - XOR A - OUT (MPGSEL_0),A - INC A - OUT (MPGSEL_1),A - LD A,62 - OUT (MPGSEL_2),A - INC A - OUT (MPGSEL_3),A - ; ENABLE PAGING - LD A,1 - OUT (MPGENA),A -#ENDIF - -; -; EMIT FIRST SIGN OF LIFE TO SERIAL PORT -; - CALL XIO_INIT ; INIT SERIAL PORT - LD HL,STR_BOOT ; POINT TO MESSAGE - CALL XIO_OUTS ; SAY HELLO -; -; COPY OURSELVES AND LOADER TO HI RAM FOR PHASE 2 -; - LD HL,0 ; COPY FROM START OF ROM IMAGE - LD DE,$8000 ; TO HIMEM $F000 - LD BC,$0800 ; COPY 2K - LDIR -; - CALL XIO_DOT ; MARK PROGRESS -; - JP PHASE2 ; JUMP TO PHASE 2 BOOT IN UPPER MEMORY -; -STR_BOOT .DB "RomWBW$" -; -; IMBED DIRECT SERIAL I/O ROUTINES -; -#INCLUDE "xio.asm" -; -;______________________________________________________________________________________________________________________ -; -; THIS IS THE PHASE 2 CODE THAT MUST EXECUTE IN UPPER MEMORY -; - .ORG $ + $8000 ; WE ARE NOW EXECUTING IN UPPER MEMORY -; -PHASE2: - CALL XIO_DOT ; MARK PROGRESS -; -; LAUNCH HBIOS -; - ; INSTALL HBIOS PROXY - LD A,BID_BIOSIMG ; HBIOS IMAGE ROM BANK - CALL BNKSEL ; SELECT IT - LD HL,HBX_IMG ; HL := SOURCE OF HBIOS PROXY IMAGE - LD DE,HBX_LOC ; DE := DESTINATION TO INSTALL IT - LD BC,HBX_SIZ ; SIZE - LDIR ; DO THE COPY - LD A,BID_BOOT ; BOOT/SETUP BANK - LD (HB_CURBNK),A ; INIT CURRENT BANK - CALL BNKSEL ; SELECT IT - CALL XIO_DOT ; MARK PROGRESS -; - ; INSTALL HBIOS CORE IN SHADOW RAM BANK - LD A,BID_BIOSIMG ; SOURCE BANK - LD (HB_SRCBNK),A ; SET IT - LD A,BID_BIOS ; DESTINATION BANK - LD (HB_DSTBNK),A ; SET IT - LD HL,0 ; SOURCE ADDRESS IS ZERO - LD DE,0 ; TARGET ADDRESS IS ZERO - LD BC,$8000 ; COPY ENTIRE BANK - CALL HB_BNKCPY ; DO IT - CALL XIO_DOT ; MARK PROGRESS -; - ; INITIALIZE HBIOS - LD A,BID_BIOS ; HBIOS BANK - LD HL,0 ; ADDRESS 0 IS HBIOS INIT ENTRY ADDRESS - CALL HB_BNKCALL ; DO IT - -; -; CHAIN TO OS IMAGES BANK -; - LD A,BID_OSIMG ; CHAIN TO OS IMAGES BANK - LD HL,0 ; ENTER AT ADDRESS 0 - CALL HB_BNKCALL ; GO THERE - HALT ; WE SHOULD NEVER COME BACK! -; -;================================================================================================== -; MEMORY MANAGER -;================================================================================================== -; -#INCLUDE "memmgr.asm" -; -;================================================================================================== -; FILL REMAINDER OF SETUP BANK -;================================================================================================== -; -SLACK .EQU ($10000 - $) - .FILL SLACK,$FF -; - .ECHO "SETUP space remaining: " - .ECHO SLACK - .ECHO " bytes.\n" +#INCLUDE "loader.exp" ; + .FILL $8000 - LDR_END,$FF .END diff --git a/Source/BIOS/std.asm b/Source/BIOS/std.asm index 8f1e226f..3b90d20f 100644 --- a/Source/BIOS/std.asm +++ b/Source/BIOS/std.asm @@ -316,8 +316,7 @@ CBIOS_SIZ .EQU CPM_SIZ - CCP_SIZ - BDOS_SIZ ; CBIOS IS THE REMAINDER MEMTOP .EQU $10000 ; INVARIANT TOP OF Z80 ADDRESSABLE MEMORY BNKTOP .EQU $8000 ; BANK MEMORY BARRIER -HBBUF_IMG .EQU BNKTOP - HBBUF_SIZ ; LOC OF DISK BUFFER IN HBIOS IMAGE BANK -HBX_IMG .EQU BNKTOP - HBX_SIZ ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK +HBX_IMG .EQU $200 ; LOC OF HBX IMAGE IN HBIOS IMAGE BANK HBBUF_END .EQU BNKTOP ; END OF PHYSICAL DISK BUFFER IN HBIOS HBBUF_LOC .EQU HBBUF_END - HBBUF_SIZ ; START OF PHYSICAL DISK BUFFER diff --git a/Source/BIOS/ver.inc b/Source/BIOS/ver.inc index bc9d86ad..cacb2f65 100644 --- a/Source/BIOS/ver.inc +++ b/Source/BIOS/ver.inc @@ -1,7 +1,7 @@ #DEFINE RMJ 2 #DEFINE RMN 7 -#DEFINE RUP 0 +#DEFINE RUP 1 #DEFINE RTP 0 -#DEFINE BIOSVER "2.7.0" -#DEFINE BIOSBLD "Build 0 Developmental" +#DEFINE BIOSVER "2.7.1" +#DEFINE BIOSBLD "Build 1 Developmental" #DEFINE REVISION 500 diff --git a/Source/BPBIOS/-readme b/Source/BPBIOS/-readme new file mode 100644 index 00000000..2ba94379 --- /dev/null +++ b/Source/BPBIOS/-readme @@ -0,0 +1,116 @@ +Notes on GPL Release of Banked and Portable (B/P) Bios for the +D-X Designs Pty Ltd P112. 29 August 2001 + + +This package is the GPL Release of the Banked and Portable (B/P) Bios for +the D-X Designs Pty Ltd P112 microcomputer. An ascii text editor and +assembler capable of recognizing Z180 mnemonics (such as Al Hawley's ZMAC +or SLR Systems' SLR180/SLR180+ configured for Microsoft .REL output) are +all the necessary tools to build a customized version of the system for +your computer. Installation, configuration and support utilities for the +B/P system are in a separate library containing startup scripts, executable +routines (.COM files), some help (.HLP) and utility configuration (.CFG) +files, as well as selected ZCPR3 support utilities for proper initializa- +tion of the system on bootup. We recommend that you read the manual (also +in a separate file) to become familiar with the system prior to making any +major alterations to the system, and use it as a source of information for +debugging. As you work with the utilities supporting the B/P Bios system, +remember that most, if not all, will display a brief help message if you +invoke them with a double-slash argument as: "BPCNFG //". + +You will probably want to bring up a banked system as soon as possible to +gain additional floppy diskette formats due to the limitations posed by +the restricted format availability in either the default distribution +(especially the 128 entry limit of the 1.44 MB format) or the B/P Bios +Boot Track system. Examine the 'DEFBOOT' file to see other limitations of +the boot system compared to the fully-banked system defined in 'DEFBANK'. + +The default configuration for this installation assumes that you have +constructed and installed the SCSI modification (using an NCR 5380 'type' +controller chip) per the plans on Dave Brooks' web page, and programmed +the flash ROM with ROMV4B or later. Without these changes, you will not +be able to boot directly into a B/P system, but should be able to load an +Image (.IMG) file from the command line which will install a B/P system. + +As a brief guide, there are some steps which might ease the transition. +To begin, work with copies of the files in this distribution. For example, +copy the BANKED.IMG to a new name (still of type .IMG) and use it to build +your new system, changing the output name from Screen 1 in BPBUILD. This +procedure will then retain any previous tailoring to the ZCPR3 Environment +done in Screen 3 with BPBUILD. + +It is probably easier to start installation by bringing up an Image-based +system first since you will still be able to boot from your existing disks +and determine which options you need. Update the BANK-DX.CNF configuration +file for BPCNFG with your settings to avoid wading through all the settings +each time. When you have a workable solution, then copy the relevant +settings to the BOOT-DX.CNF file, and begin working on the Bootable version +by updating any necessary option selections in (a copy of) DEFBOOT. When +you are satisfied, copy DEFBOOT to DEF-DX.LIB and assemble the Bios (by the +name of the main file, BPBIO-DX.Z80) to a .REL file with a suitable name +(I use BPBOOT.REL). Finally, use INSTAL12 to overlay this Bios file on the +MOVP112.COM file and give it a new output name, then execute the new file +to generate an image for writing to the system tracks of a floppy or first +hard drive partition on a drive. The steps (with annotations) are: + + MOVP112 53 * <-- make a 53k system, keep in memory + BPSYGEN <-- Load utility for writing system tracks + Source drive: <-- Enter return for none (still in memory) + Dest drive: <-- Enter letter of disk you want to make bootable + +Here are some suggested steps you might follow if your configuration +differs from the default: + +1. No SCSI or GIDE (Tilmann Reh's Generic IDE interface): + + - Assemble banked system (copy DEFBANK to DEF-DX.LIB) selecting no + Hard Drive support. You will be limited to floppy drives A:, B: and + D: only (C: is unavailable due to hardware limitations in the SMC + controller chip), and the RAM disk (M:). You will still be able to + use the 'Fast Warm Boot' which means that you will not need to keep a + bootable floppy in drive A:. + + - Build a .IMG file from your Bios .REL file using BPBUILD and config- + ure it with BPCNFG. You might consider tailoring the BANK-DX.CNF + configuration script after becoming familiar with the BPCNFG config + tool. After this, you will be able to load a B/P system after you + boot the system from your existing disks. + + - If you have updated the ROM with ROMV4B or later, you can assemble + a bootable system (copy DEFBOOT to DEF-DX.LIB). Install the Bios + into the MOVP112.COM file using the INSTAL12 utility as described in + the manual, and use it to create a bootable image on the system track + or tracks of a diskette. After writing the system track(s) with the + new image, it may be tailored with BPCNFG (see the BOOT-DX.CNF sample + configuration script) to your installation. Due to size constraints + in a bootable image, only two disk formats are recognized as: + + - Ampro/SB180 80-track Double-Sided 'Quad'-Density 800 kB (3.5/5.25") + - P112 definition for 3.5" High-Density 1.44 MB IBM PC "compatible" + + Only the Ampro format will be usable as a target for a bootable B/P + system in the native mode, although you will be able to use the + EMULATE utility to lock a floppy drive into a specified format from + the library of formats available (or write your own). Once booted, + you may load a banked Image to obtain more formats. + + +2. Generic IDE (GIDE) Hard Drive interface installed: + + - Assemble a Bios after editing the DEF-DX.LIB file (a copy of DEFBANK + or DEFBOOT depending on whether you are building a banked Image or + bootable disk version respectively) to select IDE instead of SCSI for + the type of Hard Drive system. Configure the resulting system with + BPCNFG entering the appropriate values in Menu 4 for Cylinder, Head + and Sector, and establish your partitioning scheme in Menu 5. + + - If your have upgraded your flash Bios to version ROMV4B or later, you + should be able to boot from the system tracks on the IDE drive after + you build a bootable Bios, install it into MOVP112.COM with INSTAL12, + generate a system, write it to the boot tracks and configure it with + BPCNFG. You might consider modifying the sample BOOT-DX.CNF config + script for the last phase. + +Enjoy, +Hal + \ No newline at end of file diff --git a/Source/BPBIOS/@WBW BPBIOS Errata.rtf b/Source/BPBIOS/@WBW BPBIOS Errata.rtf new file mode 100644 index 00000000..7722d9b5 --- /dev/null +++ b/Source/BPBIOS/@WBW BPBIOS Errata.rtf @@ -0,0 +1,319 @@ +{\rtf1\adeflang1025\ansi\ansicpg1252\uc1\adeff31507\deff0\stshfdbch31505\stshfloch31506\stshfhich31506\stshfbi31507\deflang1033\deflangfe1033\themelang1033\themelangfe0\themelangcs0{\fonttbl{\f0\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f1\fbidi \fswiss\fcharset0\fprq2{\*\panose 020b0604020202020204}Arial;} +{\f2\fbidi \fmodern\fcharset0\fprq1{\*\panose 02070309020205020404}Courier New;}{\f34\fbidi \froman\fcharset1\fprq2{\*\panose 02040503050406030204}Cambria Math;} +{\flomajor\f31500\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbmajor\f31501\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fhimajor\f31502\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0302020204030204}Calibri Light;}{\fbimajor\f31503\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\flominor\f31504\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\fdbminor\f31505\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;} +{\fhiminor\f31506\fbidi \fswiss\fcharset0\fprq2{\*\panose 020f0502020204030204}Calibri;}{\fbiminor\f31507\fbidi \froman\fcharset0\fprq2{\*\panose 02020603050405020304}Times New Roman;}{\f39\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\f40\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\f42\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\f43\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\f44\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\f45\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\f46\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\f47\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\f49\fbidi \fswiss\fcharset238\fprq2 Arial CE;} +{\f50\fbidi \fswiss\fcharset204\fprq2 Arial Cyr;}{\f52\fbidi \fswiss\fcharset161\fprq2 Arial Greek;}{\f53\fbidi \fswiss\fcharset162\fprq2 Arial Tur;}{\f54\fbidi \fswiss\fcharset177\fprq2 Arial (Hebrew);} +{\f55\fbidi \fswiss\fcharset178\fprq2 Arial (Arabic);}{\f56\fbidi \fswiss\fcharset186\fprq2 Arial Baltic;}{\f57\fbidi \fswiss\fcharset163\fprq2 Arial (Vietnamese);}{\f59\fbidi \fmodern\fcharset238\fprq1 Courier New CE;} +{\f60\fbidi \fmodern\fcharset204\fprq1 Courier New Cyr;}{\f62\fbidi \fmodern\fcharset161\fprq1 Courier New Greek;}{\f63\fbidi \fmodern\fcharset162\fprq1 Courier New Tur;}{\f64\fbidi \fmodern\fcharset177\fprq1 Courier New (Hebrew);} +{\f65\fbidi \fmodern\fcharset178\fprq1 Courier New (Arabic);}{\f66\fbidi \fmodern\fcharset186\fprq1 Courier New Baltic;}{\f67\fbidi \fmodern\fcharset163\fprq1 Courier New (Vietnamese);}{\flomajor\f31508\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flomajor\f31509\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flomajor\f31511\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flomajor\f31512\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flomajor\f31513\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flomajor\f31514\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flomajor\f31515\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flomajor\f31516\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbmajor\f31518\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbmajor\f31519\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbmajor\f31521\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbmajor\f31522\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbmajor\f31523\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbmajor\f31524\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbmajor\f31525\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbmajor\f31526\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhimajor\f31528\fbidi \fswiss\fcharset238\fprq2 Calibri Light CE;}{\fhimajor\f31529\fbidi \fswiss\fcharset204\fprq2 Calibri Light Cyr;}{\fhimajor\f31531\fbidi \fswiss\fcharset161\fprq2 Calibri Light Greek;} +{\fhimajor\f31532\fbidi \fswiss\fcharset162\fprq2 Calibri Light Tur;}{\fhimajor\f31535\fbidi \fswiss\fcharset186\fprq2 Calibri Light Baltic;}{\fhimajor\f31536\fbidi \fswiss\fcharset163\fprq2 Calibri Light (Vietnamese);} +{\fbimajor\f31538\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fbimajor\f31539\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbimajor\f31541\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;} +{\fbimajor\f31542\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fbimajor\f31543\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbimajor\f31544\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);} +{\fbimajor\f31545\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fbimajor\f31546\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\flominor\f31548\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\flominor\f31549\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\flominor\f31551\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\flominor\f31552\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\flominor\f31553\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\flominor\f31554\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\flominor\f31555\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\flominor\f31556\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}{\fdbminor\f31558\fbidi \froman\fcharset238\fprq2 Times New Roman CE;}{\fdbminor\f31559\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;} +{\fdbminor\f31561\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fdbminor\f31562\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;}{\fdbminor\f31563\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);} +{\fdbminor\f31564\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fdbminor\f31565\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;}{\fdbminor\f31566\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);} +{\fhiminor\f31568\fbidi \fswiss\fcharset238\fprq2 Calibri CE;}{\fhiminor\f31569\fbidi \fswiss\fcharset204\fprq2 Calibri Cyr;}{\fhiminor\f31571\fbidi \fswiss\fcharset161\fprq2 Calibri Greek;}{\fhiminor\f31572\fbidi \fswiss\fcharset162\fprq2 Calibri Tur;} +{\fhiminor\f31575\fbidi \fswiss\fcharset186\fprq2 Calibri Baltic;}{\fhiminor\f31576\fbidi \fswiss\fcharset163\fprq2 Calibri (Vietnamese);}{\fbiminor\f31578\fbidi \froman\fcharset238\fprq2 Times New Roman CE;} +{\fbiminor\f31579\fbidi \froman\fcharset204\fprq2 Times New Roman Cyr;}{\fbiminor\f31581\fbidi \froman\fcharset161\fprq2 Times New Roman Greek;}{\fbiminor\f31582\fbidi \froman\fcharset162\fprq2 Times New Roman Tur;} +{\fbiminor\f31583\fbidi \froman\fcharset177\fprq2 Times New Roman (Hebrew);}{\fbiminor\f31584\fbidi \froman\fcharset178\fprq2 Times New Roman (Arabic);}{\fbiminor\f31585\fbidi \froman\fcharset186\fprq2 Times New Roman Baltic;} +{\fbiminor\f31586\fbidi \froman\fcharset163\fprq2 Times New Roman (Vietnamese);}}{\colortbl;\red0\green0\blue0;\red0\green0\blue255;\red0\green255\blue255;\red0\green255\blue0;\red255\green0\blue255;\red255\green0\blue0;\red255\green255\blue0; +\red255\green255\blue255;\red0\green0\blue128;\red0\green128\blue128;\red0\green128\blue0;\red128\green0\blue128;\red128\green0\blue0;\red128\green128\blue0;\red128\green128\blue128;\red192\green192\blue192;}{\*\defchp +\fs22\loch\af31506\hich\af31506\dbch\af31505 }{\*\defpap \ql \li0\ri0\sa160\sl259\slmult1\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 }\noqfpromote {\stylesheet{\ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext0 \sqformat \spriority0 Normal;} +{\*\cs10 \additive \ssemihidden \sunhideused \spriority1 Default Paragraph Font;}{\* +\ts11\tsrowd\trftsWidthB3\trpaddl108\trpaddr108\trpaddfl3\trpaddft3\trpaddfb3\trpaddfr3\trcbpat1\trcfpat1\tblind0\tblindtype3\tsvertalt\tsbrdrt\tsbrdrl\tsbrdrb\tsbrdrr\tsbrdrdgl\tsbrdrdgr\tsbrdrh\tsbrdrv \ql \li0\ri0\sa160\sl259\slmult1 +\widctlpar\wrapdefault\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 \fs22\lang1033\langfe1033\loch\f31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 \snext11 \ssemihidden \sunhideused +Normal Table;}}{\*\rsidtbl \rsid5900958\rsid10092601}{\mmathPr\mmathFont34\mbrkBin0\mbrkBinSub0\msmallFrac0\mdispDef1\mlMargin0\mrMargin0\mdefJc1\mwrapIndent1440\mintLim0\mnaryLim1}{\info{\operator Wayne Warthen}{\creatim\yr2014\mo12\dy30\hr20\min45} +{\revtim\yr2014\mo12\dy30\hr20\min46}{\version2}{\edmins1}{\nofpages3}{\nofwords740}{\nofchars4219}{\nofcharsws4950}{\vern57437}}{\*\xmlnstbl {\xmlns1 http://schemas.microsoft.com/office/word/2003/wordml}} +\paperw12240\paperh15840\margl1440\margr1440\margt1440\margb1440\gutter0\ltrsect +\widowctrl\ftnbj\aenddoc\trackmoves0\trackformatting1\donotembedsysfont0\relyonvml0\donotembedlingdata1\grfdocevents0\validatexml0\showplaceholdtext0\ignoremixedcontent0\saveinvalidxml0\showxmlerrors0\horzdoc\dghspace120\dgvspace120\dghorigin1701 +\dgvorigin1984\dghshow0\dgvshow3\jcompress\viewkind1\viewscale140\rsidroot5900958 \nouicompat \fet0{\*\wgrffmtfilter 2450}\nofeaturethrottle1\ilfomacatclnup0\ltrpar \sectd \ltrsect\linex0\sectdefaultcl\sftnbj {\*\pnseclvl1 +\pnucrm\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl2\pnucltr\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl3\pndec\pnstart1\pnindent720\pnhang {\pntxta .}}{\*\pnseclvl4\pnlcltr\pnstart1\pnindent720\pnhang {\pntxta )}}{\*\pnseclvl5 +\pndec\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl6\pnlcltr\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl7\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}{\*\pnseclvl8\pnlcltr\pnstart1\pnindent720\pnhang +{\pntxtb (}{\pntxta )}}{\*\pnseclvl9\pnlcrm\pnstart1\pnindent720\pnhang {\pntxtb (}{\pntxta )}}\pard\plain \ltrpar\qc \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 \rtlch\fcs1 \af31507\afs22\alang1025 \ltrch\fcs0 +\fs22\lang1033\langfe1033\loch\af31506\hich\af31506\dbch\af31505\cgrid\langnp1033\langfenp1033 {\rtlch\fcs1 \af1\afs36 \ltrch\fcs0 \f1\fs36\insrsid10092601 \hich\af1\dbch\af31505\loch\f1 BPBIOS Errata +\par }\pard \ltrpar\ql \li0\ri0\nowidctlpar\wrapdefault\faauto\rin0\lin0\itap0 {\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid10092601 \hich\af1\dbch\af31505\loch\f1 File: deblock.z80 @ SLP0: +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par \hich\af1\dbch\af31505\loch\f1 When attempting to increment the sector number for sequential unallocated write matching, HL was pointing one byte past the sector number byte when it was intended to point at the sector number byte. Added +\hich\af1\dbch\af31505\loch\f1 a DEC HL to make it point to the right place. Without this fix, there will be far more disk writes than desired, but no data corruption as far as I can tell. +\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\insrsid10092601 +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 ; More unallocated records remain. Check for any change. +\par +\par \tab \hich\af2\dbch\af31505\loch\f2 DEC\tab A\tab \tab ; Decrement unallocated count +\par \tab \hich\af2\dbch\af31505\loch\f2 LD\tab (UNACNT),A\tab ; And save it +\par \tab \hich\af2\dbch\af31505\loch\f2 LD\tab B,4\tab \tab ; Compare four bytes +\par \tab \hich\af2\dbch\af31505\loch\f2 LD\tab HL,UNADSK\tab ; Compare Old Disk, Track & Sector +\par \tab \hich\af2\dbch\af31505\loch\f2 LD\tab DE,SEKDSK\tab ; .to New Disk, Track & Sector +\par \hich\af2\dbch\af31505\loch\f2 SLP0:\tab LD\tab A,(DE) +\par \tab \hich\af2\dbch\af31505\loch\f2 CP\tab (HL)\tab \tab ; Same? +\par \tab \hich\af2\dbch\af31505\loch\f2 JR\tab NZ,ALLOC\tab ; ..jump if not +\par \tab \hich\af2\dbch\af31505\loch\f2 INC\tab HL\tab \tab ; Else advance to next +\par \tab \hich\af2\dbch\af31505\loch\f2 INC\tab DE +\par \tab \hich\af2\dbch\af31505\loch\f2 DJNZ\tab SLP0\tab \tab ; ..and loop til done +\par +\par \hich\af2\dbch\af31505\loch\f2 ; Everything matches, anticipate the next sector +\par +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\highlight7\insrsid10092601 \tab \hich\af2\dbch\af31505\loch\f2 DEC\tab HL\tab \tab ; WBW: point back to sector num +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \tab \hich\af2\dbch\af31505\loch\f2 INC\tab (HL)\tab \tab ; Unasec+1 +\par \tab \hich\af2\dbch\af31505\loch\f2 LD\tab A,(CPMSPT)\tab ; Max sectors per track +\par \tab \hich\af2\dbch\af31505\loch\f2 CP\tab (HL)\tab \tab ; Compare them +\par \tab \hich\af2\dbch\af31505\loch\f2 JR\tab NZ,NOOVF\tab ; ..jump if not ready for new t\hich\af2\dbch\af31505\loch\f2 rack yet +\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\insrsid10092601 +\par }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid10092601 \hich\af1\dbch\af31505\loch\f1 File: hardide.z80 & hard-dx.z80 @ HDWRIT: +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par \hich\af1\dbch\af31505\loch\f1 HSTACT was being reset instead of HSTWRT at every disk write call. Makes no sense and was causing many extra writes. Switched to HSTWRT which is what the floppy driver does. +\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\insrsid10092601 +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 ;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +\par \hich\af2\dbch\af31505\loch\f2 ; Write to Hard Disk Drive\tab \tab \tab < Internal BIOS Routine > +\par \hich\af2\dbch\af31505\loch\f2 ; Writes from HSTBUF using HSTTRK and HSTSEC to build Block Number. +\par \hich\af2\dbch\af31505\loch\f2 ; NOTE: This routine uses physical drive characteristics f\hich\af2\dbch\af31505\loch\f2 rom ICFG-xx. +\par +\par \hich\af2\dbch\af31505\loch\f2 HDWRIT:\tab XOR\tab A +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\highlight7\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 ;WBW\tab LD\tab (HSTACT),A\tab ; Show no active writes pending +\par \tab \hich\af2\dbch\af31505\loch\f2 LD\tab (HSTWRT),A\tab ; WBW: Show no active writes pending +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 +\par \tab \hich\af2\dbch\af31505\loch\f2 LD\tab HL,7CH*256+CMDWR ; Set the IDE Write Command +\par \tab \hich\af2\dbch\af31505\loch\f2 JR\tab HDRW\tab \tab ; ..continue +\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\insrsid10092601 +\par }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid5900958 \page }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid10092601 \hich\af1\dbch\af31505\loch\f1 selrwd.z80 @ SELDK0: +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par \hich\af1\dbch\af31505\loch\f1 It appears that if a disk is \hich\af1\dbch\af31505\loch\f1 +selected (SELDSK) and is not a new disk login, then, the driver select processing is being bypassed. Does not make sense to me, but not causing any harm that I can see at this point. +\par +\par \hich\af1\dbch\af31505\loch\f1 No code fix created yet. +\par +\par }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid10092601 \hich\af1\dbch\af31505\loch\f1 fdc-dx.z80 @ FDCDN: +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par \hich\af1\dbch\af31505\loch\f1 At high clock speeds (>~\hich\af1\dbch\af31505\loch\f1 24MHz) the seek/recal command wait for completion needs to make sure the prior command is not still active. +\par +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 ;..... +\par \hich\af2\dbch\af31505\loch\f2 ; Check for Proper Termination of Seek/Recalibrate Actions by +\par \hich\af2\dbch\af31505\loch\f2 ; executing a Check Interrupt Command returning ST0 in A. +\par \hich\af2\dbch\af31505\loch\f2 < +\par \hich\af2\dbch\af31505\loch\f2 FDCDN: PUSH HL ; Don't alter regs +\par \hich\af2\dbch\af31505\loch\f2 EI ; (Ints Ok Now) +\par \hich\af2\dbch\af31505\loch\f2 FDCDN0: CALL WRDY ; Ready? (leave Ints alone) +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\highlight7\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 BIT \hich\af2\dbch\af31505\loch\f2 4,A ; WBW: Prior command still active? +\par \hich\af2\dbch\af31505\loch\f2 JR NZ,FDCDN0 ; WBW: If so, keep checking +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 LD A,08H ; Else Issue Sense Interrupt Status Comnd +\par \hich\af2\dbch\af31505\loch\f2 OUT0 (DR),A +\par \hich\af2\dbch\af31505\loch\f2 CALL WRDY +\par \hich\af2\dbch\af31505\loch\f2 IN0 A,(DR) \hich\af2\dbch\af31505\loch\f2 ; Get first Result Byte (ST0) +\par \hich\af2\dbch\af31505\loch\f2 LD L,A +\par \hich\af2\dbch\af31505\loch\f2 CP 80H ; Invalid Command? +\par \hich\af2\dbch\af31505\loch\f2 JR Z,FDCDN0 ; ..jump to exit if So +\par \hich\af2\dbch\af31505\loch\f2 CALL WRDY +\par \hich\af2\dbch\af31505\loch\f2 IN0 A,(DR) ; Read Second Result Byte (Trk #) +\par \hich\af2\dbch\af31505\loch\f2 \hich\af2\dbch\af31505\loch\f2 LD A,L +\par \hich\af2\dbch\af31505\loch\f2 BIT 5,A ; Command Complete? +\par \hich\af2\dbch\af31505\loch\f2 JR Z,FDCDN0 ; ..loop if Not +\par \hich\af2\dbch\af31505\loch\f2 POP HL +\par \hich\af2\dbch\af31505\loch\f2 RET +\par \hich\af2\dbch\af31505\loch\f2 ENDIF ;~fddma}{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par +\par }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid5900958 \page }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid10092601 \hich\af1\dbch\af31505\loch\f1 fdc-dx.z80 @ WRDY: +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par \hich\af1\dbch\af31505\loch\f1 At high clock speeds (>~24MHz), a small delay is needed bet\hich\af1\dbch\af31505\loch\f1 ween MSR register reads. +\par +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 ;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +\par \hich\af2\dbch\af31505\loch\f2 ; Wait for FDC RQM to become Ready, and return DIO status in Zero Flag +\par \hich\af2\dbch\af31505\loch\f2 ; Pause before reading status port based on CPU Speed and Data Rate. +\par +\par \hich\af2\dbch\af31505\loch\f2 WRDY: LD A,(DLYCNT) ; Get computed delay count +\par \hich\af2\dbch\af31505\loch\f2 WRDY0: DEC A ; Done? +\par \hich\af2\dbch\af31505\loch\f2 JR NZ,WRDY0 ; ..loop if Not +\par \hich\af2\dbch\af31505\loch\f2 WRDYL: IN A,(MSR) ; Read Main Status Register +\par \hich\af2\dbch\af31505\loch\f2 BIT 7,A ; Interrupt Pres\hich\af2\dbch\af31505\loch\f2 ent? +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\highlight7\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 NOP ; WBW: Reg recovery for hi speed op +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 RET NZ ; Return if So +\par \hich\af2\dbch\af31505\loch\f2 JR WRDYL ; Else Loop +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par }{\rtlch\fcs1 \af1\afs28 \ltrch\fcs0 \f1\fs28\ul\insrsid10092601 \hich\af1\dbch\af31505\loch\f1 fdc-dx.z80 @ FDRst: +\par }{\rtlch\fcs1 \af1 \ltrch\fcs0 \f1\insrsid10092601 +\par \hich\af1\dbch\af31505\loch\f1 At high clock speeds (>~24MHz), an additional delay is needed to ma\hich\af1\dbch\af31505\loch\f1 +ke sure that the reset minimum timing is met. The code fix below seems to work, but it wold be better to implement a loop based on clock speed. +\par +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 ======================================================================== +\par \hich\af2\dbch\af31505\loch\f2 ; Reset the Floppy Disk Controller. \hich\af2\dbch\af31505\loch\f2 Called from CBOOT in case of Hard +\par \hich\af2\dbch\af31505\loch\f2 ; Disk Boot which leaves the controller in a "hung" state, and locally +\par \hich\af2\dbch\af31505\loch\f2 ; if the Controller times out (often due to changing diskettes). +\par +\par \hich\af2\dbch\af31505\loch\f2 FDRst: PUSH AF ; Save any status +\par \hich\af2\dbch\af31505\loch\f2 XOR A +\par \hich\af2\dbch\af31505\loch\f2 OUT (\hich\af2\dbch\af31505\loch\f2 DCR),A ; Place Controller in Reset state +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\highlight7\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 EX (SP),HL ; WBW: Delay required at high speed +\par \hich\af2\dbch\af31505\loch\f2 EX (SP),HL ; WBW: ... to ensure reset works +\par }{\rtlch\fcs1 \af2\afs20 \ltrch\fcs0 \f2\fs20\insrsid10092601 \hich\af2\dbch\af31505\loch\f2 LD A,(ACTIVE) ; get current settings +\par \hich\af2\dbch\af31505\loch\f2 AND 0FCH ; keep only motors, DMA and Ready +\par \hich\af2\dbch\af31505\loch\f2 OUT (DCR),A ; and Restore +\par \hich\af2\dbch\af31505\loch\f2 POP AF ; Restore Status +\par \hich\af2\dbch\af31505\loch\f2 RET}{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\insrsid10092601 +\par }{\rtlch\fcs1 \af2 \ltrch\fcs0 \f2\insrsid10092601 +\par }{\*\themedata 504b030414000600080000002100e9de0fbfff0000001c020000130000005b436f6e74656e745f54797065735d2e786d6cac91cb4ec3301045f748fc83e52d4a +9cb2400825e982c78ec7a27cc0c8992416c9d8b2a755fbf74cd25442a820166c2cd933f79e3be372bd1f07b5c3989ca74aaff2422b24eb1b475da5df374fd9ad +5689811a183c61a50f98f4babebc2837878049899a52a57be670674cb23d8e90721f90a4d2fa3802cb35762680fd800ecd7551dc18eb899138e3c943d7e503b6 +b01d583deee5f99824e290b4ba3f364eac4a430883b3c092d4eca8f946c916422ecab927f52ea42b89a1cd59c254f919b0e85e6535d135a8de20f20b8c12c3b0 +0c895fcf6720192de6bf3b9e89ecdbd6596cbcdd8eb28e7c365ecc4ec1ff1460f53fe813d3cc7f5b7f020000ffff0300504b030414000600080000002100a5d6 +a7e7c0000000360100000b0000005f72656c732f2e72656c73848fcf6ac3300c87ef85bd83d17d51d2c31825762fa590432fa37d00e1287f68221bdb1bebdb4f +c7060abb0884a4eff7a93dfeae8bf9e194e720169aaa06c3e2433fcb68e1763dbf7f82c985a4a725085b787086a37bdbb55fbc50d1a33ccd311ba548b6309512 +0f88d94fbc52ae4264d1c910d24a45db3462247fa791715fd71f989e19e0364cd3f51652d73760ae8fa8c9ffb3c330cc9e4fc17faf2ce545046e37944c69e462 +a1a82fe353bd90a865aad41ed0b5b8f9d6fd010000ffff0300504b0304140006000800000021006b799616830000008a0000001c0000007468656d652f746865 +6d652f7468656d654d616e616765722e786d6c0ccc4d0ac3201040e17da17790d93763bb284562b2cbaebbf600439c1a41c7a0d29fdbd7e5e38337cedf14d59b +4b0d592c9c070d8a65cd2e88b7f07c2ca71ba8da481cc52c6ce1c715e6e97818c9b48d13df49c873517d23d59085adb5dd20d6b52bd521ef2cdd5eb9246a3d8b +4757e8d3f729e245eb2b260a0238fd010000ffff0300504b030414000600080000002100aa5225dfc60600008b1a0000160000007468656d652f7468656d652f +7468656d65312e786d6cec595d8bdb46147d2ff43f08bd3bfe92fcb1c41b6cd9ceb6d94d42eca4e4716c8fadc98e344633de8d0981923c160aa569e943037deb +43691b48a02fe9afd936a54d217fa17746b63c638fbb9b2585a5640d8b343af7ce997bafce1d4997afdc8fa87384134e58dc708b970aae83e3211b9178d2706f +f7bbb99aeb7081e211a22cc60d778eb97b65f7c30f2ea31d11e2083b601ff31dd4704321a63bf93c1fc230e297d814c7706dcc920809384d26f951828ec16f44 +f3a542a1928f10895d274611b8bd311e932176fad2a5bbbb74dea1701a0b2e078634e949d7d8b050d8d1615122f89c0734718e106db830cf881df7f17de13a14 +7101171a6e41fdb9f9ddcb79b4b330a2628bad66d7557f0bbb85c1e8b0a4e64c26836c52cff3bd4a33f3af00546ce23ad54ea553c9fc29001a0e61a52917dda7 +dfaab7dafe02ab81d2438bef76b55d2e1a78cd7f798373d3973f03af40a97f6f03dfed06104503af4029dedfc07b5eb51478065e81527c65035f2d34db5ed5c0 +2b5048497cb8812ef89572b05c6d061933ba6785d77daf5b2d2d9caf50500d5975c929c62c16db6a2d42f758d2058004522448ec88f9148fd110aa3840940c12 +e2ec93490885374531e3305c2815ba8532fc973f4f1da988a01d8c346bc90b98f08d21c9c7e1c3844c45c3fd18bcba1ae4cdcb1fdfbc7cee9c3c7a71f2e89793 +c78f4f1efd9c3a32acf6503cd1ad5e7fffc5df4f3f75fe7afeddeb275fd9f15cc7fffed367bffdfaa51d082b5d85e0d5d7cffe78f1ecd5379ffff9c3130bbc99 +a0810eef930873e73a3e766eb10816a6426032c783e4ed2cfa2122ba45339e701423398bc57f478406fafa1c5164c1b5b019c13b09488c0d787576cf20dc0b93 +9920168fd7c2c8001e30465b2cb146e19a9c4b0b737f164fec9327331d770ba123dbdc018a8dfc766653d05662731984d8a07993a258a0098eb170e4357688b1 +6575770931e27a408609e36c2c9cbbc46921620d499f0c8c6a5a19ed9108f232b711847c1bb139b8e3b418b5adba8d8f4c24dc15885ac8f73135c27815cd048a +6c2efb28a27ac0f791086d247bf364a8e33a5c40a6279832a733c29cdb6c6e24b05e2de9d7405eec693fa0f3c84426821cda7cee23c674649b1d06218aa6366c +8fc4a18efd881f428922e7261336f80133ef10790e7940f1d674df21d848f7e96a701b9455a7b42a107965965872791533a37e7b733a4658490d08bfa1e71189 +4f15f73559f7ff5b5907217df5ed53cbaa2eaaa0371362bda3f6d6647c1b6e5dbc03968cc8c5d7ee369ac53731dc2e9b0decbd74bf976ef77f2fdddbeee7772f +d82b8d06f9965bc574abae36eed1d67dfb9850da13738af7b9daba73e84ca32e0c4a3bf5cc8ab3e7b8690887f24e86090cdc2441cac64998f88488b017a229ec +ef8bae7432e10bd713ee4c19876dbf1ab6fa96783a8b0ed8287d5c2d16e5a3692a1e1c89d578c1cfc6e15143a4e84a75f50896b9576c27ea51794940dabe0d09 +6d329344d942a2ba1c9441520fe610340b09b5b277c2a26e615193ee97a9da6001d4b2acc0d6c9810d57c3f53d30012378a242148f649ed2542fb3ab92f92e33 +bd2d984605c03e625901ab4cd725d7adcb93ab4b4bed0c99364868e566925091513d8c87688417d52947cf42e36d735d5fa5d4a02743a1e683d25ad1a8d6fe8d +c579730d76ebda40635d2968ec1c37dc4ad9879219a269c31dc3633f1c4653a81d2eb7bc884ee0ddd95024e90d7f1e6599265cb4110fd3802bd149d520220227 +0e2551c395cbcfd24063a5218a5bb104827061c9d541562e1a3948ba99643c1ee3a1d0d3ae8dc848a7a7a0f0a95658af2af3f383a5259b41ba7be1e8d819d059 +720b4189f9d5a20ce0887078fb534ca33922f03a3313b255fdad35a685eceaef13550da5e3884e43b4e828ba98a77025e5191d7596c5403b5bac1902aa8564d1 +080713d960f5a01add34eb1a2987ad5df7742319394d34573dd35015d935ed2a66ccb06c036bb13c5f93d7582d430c9aa677f854bad725b7bed4bab57d42d625 +20e059fc2c5df70c0d41a3b69acca026196fcab0d4ecc5a8d93b960b3c85da599a84a6fa95a5dbb5b8653dc23a1d0c9eabf383dd7ad5c2d078b9af549156df3d +f44f136c700fc4a30d2f81675470954af8f09020d810f5d49e24950db845ee8bc5ad0147ce2c210df741c16f7a41c90f72859adfc97965af90abf9cd72aee9fb +e562c72f16daadd243682c228c8a7efacda50bafa2e87cf1e5458d6f7c7d89966fdb2e0d599467eaeb4a5e11575f5f8aa5ed5f5f1c02a2f3a052ead6cbf55625 +572f37bb39afddaae5ea41a5956b57826abbdb0efc5abdfbd0758e14d86b9603afd2a9e52ac520c8799582a45fabe7aa5ea9d4f4aacd5ac76b3e5c6c6360e5a9 +7c2c6201e155bc76ff010000ffff0300504b0304140006000800000021000dd1909fb60000001b010000270000007468656d652f7468656d652f5f72656c732f +7468656d654d616e616765722e786d6c2e72656c73848f4d0ac2301484f78277086f6fd3ba109126dd88d0add40384e4350d363f2451eced0dae2c082e8761be +9969bb979dc9136332de3168aa1a083ae995719ac16db8ec8e4052164e89d93b64b060828e6f37ed1567914b284d262452282e3198720e274a939cd08a54f980 +ae38a38f56e422a3a641c8bbd048f7757da0f19b017cc524bd62107bd5001996509affb3fd381a89672f1f165dfe514173d9850528a2c6cce0239baa4c04ca5b +babac4df000000ffff0300504b01022d0014000600080000002100e9de0fbfff0000001c0200001300000000000000000000000000000000005b436f6e74656e +745f54797065735d2e786d6c504b01022d0014000600080000002100a5d6a7e7c0000000360100000b00000000000000000000000000300100005f72656c732f +2e72656c73504b01022d00140006000800000021006b799616830000008a0000001c00000000000000000000000000190200007468656d652f7468656d652f74 +68656d654d616e616765722e786d6c504b01022d0014000600080000002100aa5225dfc60600008b1a00001600000000000000000000000000d6020000746865 +6d652f7468656d652f7468656d65312e786d6c504b01022d00140006000800000021000dd1909fb60000001b0100002700000000000000000000000000d00900007468656d652f7468656d652f5f72656c732f7468656d654d616e616765722e786d6c2e72656c73504b050600000000050005005d010000cb0a00000000} +{\*\colorschememapping 3c3f786d6c2076657273696f6e3d22312e302220656e636f64696e673d225554462d3822207374616e64616c6f6e653d22796573223f3e0d0a3c613a636c724d +617020786d6c6e733a613d22687474703a2f2f736368656d61732e6f70656e786d6c666f726d6174732e6f72672f64726177696e676d6c2f323030362f6d6169 +6e22206267313d226c743122207478313d22646b3122206267323d226c743222207478323d22646b322220616363656e74313d22616363656e74312220616363 +656e74323d22616363656e74322220616363656e74333d22616363656e74332220616363656e74343d22616363656e74342220616363656e74353d22616363656e74352220616363656e74363d22616363656e74362220686c696e6b3d22686c696e6b2220666f6c486c696e6b3d22666f6c486c696e6b222f3e} +{\*\latentstyles\lsdstimax371\lsdlockeddef0\lsdsemihiddendef0\lsdunhideuseddef0\lsdqformatdef0\lsdprioritydef99{\lsdlockedexcept \lsdqformat1 \lsdpriority0 \lsdlocked0 Normal;\lsdqformat1 \lsdpriority9 \lsdlocked0 heading 1; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 2;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 3;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 4; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 5;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 6;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 7; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 8;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority9 \lsdlocked0 heading 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 5; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 6;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index 9; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 1;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 2;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 3; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 4;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 5;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 6; +\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 7;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 8;\lsdsemihidden1 \lsdunhideused1 \lsdpriority39 \lsdlocked0 toc 9;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 header;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footer; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 index heading;\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority35 \lsdlocked0 caption;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of figures; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 envelope return;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 footnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation reference; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 line number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 page number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote reference;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 endnote text; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 table of authorities;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 macro;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 toa heading;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Bullet 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Number 5;\lsdqformat1 \lsdpriority10 \lsdlocked0 Title;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Closing; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Signature;\lsdsemihidden1 \lsdunhideused1 \lsdpriority1 \lsdlocked0 Default Paragraph Font;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 4; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 List Continue 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Message Header;\lsdqformat1 \lsdpriority11 \lsdlocked0 Subtitle;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Salutation; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Date;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text First Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Note Heading; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Body Text Indent 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Block Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Hyperlink;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 FollowedHyperlink;\lsdqformat1 \lsdpriority22 \lsdlocked0 Strong; +\lsdqformat1 \lsdpriority20 \lsdlocked0 Emphasis;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Document Map;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Plain Text;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 E-mail Signature; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Top of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Bottom of Form;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal (Web);\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Acronym; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Address;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Cite;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Code;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Definition; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Keyboard;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Preformatted;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Sample;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Typewriter; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 HTML Variable;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Normal Table;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 annotation subject;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 No List; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Outline List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 1; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Simple 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Classic 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Colorful 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 3; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Columns 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Grid 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 4;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 5;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 6; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 7;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table List 8;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table 3D effects 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Contemporary;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Elegant;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Professional; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Subtle 2;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 1;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 2; +\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Web 3;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Balloon Text;\lsdpriority39 \lsdlocked0 Table Grid;\lsdsemihidden1 \lsdunhideused1 \lsdlocked0 Table Theme;\lsdsemihidden1 \lsdlocked0 Placeholder Text; +\lsdqformat1 \lsdpriority1 \lsdlocked0 No Spacing;\lsdpriority60 \lsdlocked0 Light Shading;\lsdpriority61 \lsdlocked0 Light List;\lsdpriority62 \lsdlocked0 Light Grid;\lsdpriority63 \lsdlocked0 Medium Shading 1;\lsdpriority64 \lsdlocked0 Medium Shading 2; +\lsdpriority65 \lsdlocked0 Medium List 1;\lsdpriority66 \lsdlocked0 Medium List 2;\lsdpriority67 \lsdlocked0 Medium Grid 1;\lsdpriority68 \lsdlocked0 Medium Grid 2;\lsdpriority69 \lsdlocked0 Medium Grid 3;\lsdpriority70 \lsdlocked0 Dark List; +\lsdpriority71 \lsdlocked0 Colorful Shading;\lsdpriority72 \lsdlocked0 Colorful List;\lsdpriority73 \lsdlocked0 Colorful Grid;\lsdpriority60 \lsdlocked0 Light Shading Accent 1;\lsdpriority61 \lsdlocked0 Light List Accent 1; +\lsdpriority62 \lsdlocked0 Light Grid Accent 1;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 1;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 1;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 1;\lsdsemihidden1 \lsdlocked0 Revision; +\lsdqformat1 \lsdpriority34 \lsdlocked0 List Paragraph;\lsdqformat1 \lsdpriority29 \lsdlocked0 Quote;\lsdqformat1 \lsdpriority30 \lsdlocked0 Intense Quote;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 1;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 1; +\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 1;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 1;\lsdpriority70 \lsdlocked0 Dark List Accent 1;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 1;\lsdpriority72 \lsdlocked0 Colorful List Accent 1; +\lsdpriority73 \lsdlocked0 Colorful Grid Accent 1;\lsdpriority60 \lsdlocked0 Light Shading Accent 2;\lsdpriority61 \lsdlocked0 Light List Accent 2;\lsdpriority62 \lsdlocked0 Light Grid Accent 2;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 2; +\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 2;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 2;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 2;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 2;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 2; +\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 2;\lsdpriority70 \lsdlocked0 Dark List Accent 2;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 2;\lsdpriority72 \lsdlocked0 Colorful List Accent 2;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 2; +\lsdpriority60 \lsdlocked0 Light Shading Accent 3;\lsdpriority61 \lsdlocked0 Light List Accent 3;\lsdpriority62 \lsdlocked0 Light Grid Accent 3;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 3;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 3; +\lsdpriority65 \lsdlocked0 Medium List 1 Accent 3;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 3;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 3;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 3;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 3; +\lsdpriority70 \lsdlocked0 Dark List Accent 3;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 3;\lsdpriority72 \lsdlocked0 Colorful List Accent 3;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 3;\lsdpriority60 \lsdlocked0 Light Shading Accent 4; +\lsdpriority61 \lsdlocked0 Light List Accent 4;\lsdpriority62 \lsdlocked0 Light Grid Accent 4;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 4;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 4;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 4; +\lsdpriority66 \lsdlocked0 Medium List 2 Accent 4;\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 4;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 4;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 4;\lsdpriority70 \lsdlocked0 Dark List Accent 4; +\lsdpriority71 \lsdlocked0 Colorful Shading Accent 4;\lsdpriority72 \lsdlocked0 Colorful List Accent 4;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 4;\lsdpriority60 \lsdlocked0 Light Shading Accent 5;\lsdpriority61 \lsdlocked0 Light List Accent 5; +\lsdpriority62 \lsdlocked0 Light Grid Accent 5;\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 5;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 5;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 5;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 5; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 5;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 5;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 5;\lsdpriority70 \lsdlocked0 Dark List Accent 5;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 5; +\lsdpriority72 \lsdlocked0 Colorful List Accent 5;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 5;\lsdpriority60 \lsdlocked0 Light Shading Accent 6;\lsdpriority61 \lsdlocked0 Light List Accent 6;\lsdpriority62 \lsdlocked0 Light Grid Accent 6; +\lsdpriority63 \lsdlocked0 Medium Shading 1 Accent 6;\lsdpriority64 \lsdlocked0 Medium Shading 2 Accent 6;\lsdpriority65 \lsdlocked0 Medium List 1 Accent 6;\lsdpriority66 \lsdlocked0 Medium List 2 Accent 6; +\lsdpriority67 \lsdlocked0 Medium Grid 1 Accent 6;\lsdpriority68 \lsdlocked0 Medium Grid 2 Accent 6;\lsdpriority69 \lsdlocked0 Medium Grid 3 Accent 6;\lsdpriority70 \lsdlocked0 Dark List Accent 6;\lsdpriority71 \lsdlocked0 Colorful Shading Accent 6; +\lsdpriority72 \lsdlocked0 Colorful List Accent 6;\lsdpriority73 \lsdlocked0 Colorful Grid Accent 6;\lsdqformat1 \lsdpriority19 \lsdlocked0 Subtle Emphasis;\lsdqformat1 \lsdpriority21 \lsdlocked0 Intense Emphasis; +\lsdqformat1 \lsdpriority31 \lsdlocked0 Subtle Reference;\lsdqformat1 \lsdpriority32 \lsdlocked0 Intense Reference;\lsdqformat1 \lsdpriority33 \lsdlocked0 Book Title;\lsdsemihidden1 \lsdunhideused1 \lsdpriority37 \lsdlocked0 Bibliography; +\lsdsemihidden1 \lsdunhideused1 \lsdqformat1 \lsdpriority39 \lsdlocked0 TOC Heading;\lsdpriority41 \lsdlocked0 Plain Table 1;\lsdpriority42 \lsdlocked0 Plain Table 2;\lsdpriority43 \lsdlocked0 Plain Table 3;\lsdpriority44 \lsdlocked0 Plain Table 4; +\lsdpriority45 \lsdlocked0 Plain Table 5;\lsdpriority40 \lsdlocked0 Grid Table Light;\lsdpriority46 \lsdlocked0 Grid Table 1 Light;\lsdpriority47 \lsdlocked0 Grid Table 2;\lsdpriority48 \lsdlocked0 Grid Table 3;\lsdpriority49 \lsdlocked0 Grid Table 4; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 1; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 1;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 1;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 1; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 1;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 2;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 2; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 2;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 2; +\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 3;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 3;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 3;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 3; +\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 3;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 4; +\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 4;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 4;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 4;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 4; +\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 4;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 5; +\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 5;\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 5;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 5; +\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 5;\lsdpriority46 \lsdlocked0 Grid Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 Grid Table 2 Accent 6;\lsdpriority48 \lsdlocked0 Grid Table 3 Accent 6; +\lsdpriority49 \lsdlocked0 Grid Table 4 Accent 6;\lsdpriority50 \lsdlocked0 Grid Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 Grid Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 Grid Table 7 Colorful Accent 6; +\lsdpriority46 \lsdlocked0 List Table 1 Light;\lsdpriority47 \lsdlocked0 List Table 2;\lsdpriority48 \lsdlocked0 List Table 3;\lsdpriority49 \lsdlocked0 List Table 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful;\lsdpriority52 \lsdlocked0 List Table 7 Colorful;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 1;\lsdpriority47 \lsdlocked0 List Table 2 Accent 1;\lsdpriority48 \lsdlocked0 List Table 3 Accent 1; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 1;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 1;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 1;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 1; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 2;\lsdpriority47 \lsdlocked0 List Table 2 Accent 2;\lsdpriority48 \lsdlocked0 List Table 3 Accent 2;\lsdpriority49 \lsdlocked0 List Table 4 Accent 2; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 2;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 2;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 2;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 3; +\lsdpriority47 \lsdlocked0 List Table 2 Accent 3;\lsdpriority48 \lsdlocked0 List Table 3 Accent 3;\lsdpriority49 \lsdlocked0 List Table 4 Accent 3;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 3; +\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 3;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 3;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 4;\lsdpriority47 \lsdlocked0 List Table 2 Accent 4; +\lsdpriority48 \lsdlocked0 List Table 3 Accent 4;\lsdpriority49 \lsdlocked0 List Table 4 Accent 4;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 4;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 4; +\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 4;\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 5;\lsdpriority47 \lsdlocked0 List Table 2 Accent 5;\lsdpriority48 \lsdlocked0 List Table 3 Accent 5; +\lsdpriority49 \lsdlocked0 List Table 4 Accent 5;\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 5;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 5;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 5; +\lsdpriority46 \lsdlocked0 List Table 1 Light Accent 6;\lsdpriority47 \lsdlocked0 List Table 2 Accent 6;\lsdpriority48 \lsdlocked0 List Table 3 Accent 6;\lsdpriority49 \lsdlocked0 List Table 4 Accent 6; +\lsdpriority50 \lsdlocked0 List Table 5 Dark Accent 6;\lsdpriority51 \lsdlocked0 List Table 6 Colorful Accent 6;\lsdpriority52 \lsdlocked0 List Table 7 Colorful Accent 6;}}{\*\datastore 010500000200000018000000 +4d73786d6c322e534158584d4c5265616465722e362e3000000000000000000000060000 +d0cf11e0a1b11ae1000000000000000000000000000000003e000300feff090006000000000000000000000001000000010000000000000000100000feffffff00000000feffffff0000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +fffffffffffffffffdfffffffeffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff +ffffffffffffffffffffffffffffffff52006f006f007400200045006e00740072007900000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000500ffffffffffffffffffffffff0c6ad98892f1d411a65f0040963251e5000000000000000000000000e082 +38b4b424d001feffffff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff00000000000000000000000000000000000000000000000000000000 +00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff0000000000000000000000000000000000000000000000000000 +000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffff000000000000000000000000000000000000000000000000 +0000000000000000000000000000000000000000000000000105000000000000}} \ No newline at end of file diff --git a/Source/BPBIOS/@WBW Z3ENV.txt b/Source/BPBIOS/@WBW Z3ENV.txt new file mode 100644 index 00000000..01b074e4 --- /dev/null +++ b/Source/BPBIOS/@WBW Z3ENV.txt @@ -0,0 +1,117 @@ +============================================================================= +ORIGINAL DISTRIBUTION ENVIRONMENT +----------------------------------------------------------------------------- + A - Environment - FE00H F - Named Dirs - FC00H + Size (# recs)- 2 # of Entries - 14 + B - Flow Ctrl Pkg - FA00H G - External Path - FDF4H + Size (# recs)- 4 # of Entries - 5 + C - I/O Package - EC00H H - Shell Stack - FD00H + Size (# recs)- 12 # of Entries - 4 + D - Res Cmd Proc - F200H Entry Size - 32 + Size (# recs)- 16 I - Msg Buffer - FD80H + E - Command Line - FF00H J - Ext. FCB - FDD0H + Size (bytes) - 203 K - Ext. Stack - FFD0H +============================================================================= + +============================================================================= +STANDARD ENVIRONMENT (HBIOS IMBEDDED IN BPBIOS) +----------------------------------------------------------------------------- + A - Environment - FE00H F - Named Dirs - FC00H + Size (# recs)- 2 # of Entries - 14 + B - Flow Ctrl Pkg - FA00H G - External Path - FDF4H + Size (# recs)- 4 # of Entries - 5 + C - I/O Package - EC00H H - Shell Stack - FD00H + Size (# recs)- 12 # of Entries - 4 + D - Res Cmd Proc - F200H Entry Size - 32 + Size (# recs)- 16 I - Msg Buffer - FD80H + E - Command Line - FF00H J - Ext. FCB - FDD0H + Size (bytes) - 203 K - Ext. Stack - FFD0H +============================================================================= + +============================================================================= +X ENVIRONMENT (HBIOS @ FC00): ALL SEGMENTS SHIFTED DOWN BY $400 +----------------------------------------------------------------------------- + A - Environment - FA00H F - Named Dirs - F800H + Size (# recs)- 2 # of Entries - 14 + B - Flow Ctrl Pkg - F600H G - External Path - F9F4H + Size (# recs)- 4 # of Entries - 5 + C - I/O Package - E800H H - Shell Stack - F900H + Size (# recs)- 12 # of Entries - 4 + D - Res Cmd Proc - EE00H Entry Size - 32 + Size (# recs)- 16 I - Msg Buffer - F980H + E - Command Line - FB00H J - Ext. FCB - F9D0H + Size (bytes) - 171 K - Ext. Stack - FBB0H +============================================================================= + +============================================================================= +T ENVIRONMENT (HBIOS @ FC00): ALL SEGMENTS REARRANGED +----------------------------------------------------------------------------- + A - Environment - EA00H F - Named Dirs - E800H + Size (# recs)- 2 # of Entries - 14 + B - Flow Ctrl Pkg - FA00H G - External Path - E9F4H + Size (# recs)- 4 # of Entries - 5 + C - I/O Package - EC00H H - Shell Stack - E900H + Size (# recs)- 12 # of Entries - 4 + D - Res Cmd Proc - F200H Entry Size - 32 + Size (# recs)- 16 I - Msg Buffer - E980H + E - Command Line - EB00H J - Ext. FCB - E9D0H + Size (bytes) - 171 K - Ext. Stack - EBB0H +============================================================================= + +============================================================================= +N ENVIRONMENT (HBIOS IMBEDDED IN BPBIOS): SMALL HBIOS STUB AT FFE0-FFFF +----------------------------------------------------------------------------- + A - Environment - FE00H F - Named Dirs - FC00H + Size (# recs)- 2 # of Entries - 14 + B - Flow Ctrl Pkg - FA00H G - External Path - FDF4H + Size (# recs)- 4 # of Entries - 5 + C - I/O Package - EC00H H - Shell Stack - FD00H + Size (# recs)- 12 # of Entries - 4 + D - Res Cmd Proc - F200H Entry Size - 32 + Size (# recs)- 16 I - Msg Buffer - FD80H + E - Command Line - FF00H J - Ext. FCB - FDD0H + Size (bytes) - 171 K - Ext. Stack - FFB0H +============================================================================= + + + +COMPONENT BP33 BP33BNK BP34 BP34BNK BP41 +-------------- -------------- -------------- -------------- -------------- -------------- +CCP ZCPR33.REL ZCPR33.REL Z34.REL Z34.REL Z41.ZRL +DOS ZSDOS.ZRL ZSDOS.ZRL ZSDOS.ZRL ZSDOS.ZRL ZS203.ZRL +BIOS BP33.REL BP33BNK.REL BP34.REL BP34BNK.REL BP41.REL + +NOTE: Implementing the environment changes in ZCPR33 requires building a new ZCPR33 from source!!! + + +SEGMENT Original Std Type X Type T Type N +-------------- -------------- -------------- -------------- -------------- -------------- + +Environment FE00 FE00 FA00 EA00 FE00 + # Recs 2 2 2 2 2 +Flow Ctl Pkg FA00 FA00 F600 FA00 FA00 + # Recs 4 4 4 4 4 +I/O Pkg EC00 EC00 E800 EC00 EC00 + # Recs 12 12 12 12 12 +Res Cmd Pkg F200 F200 EE00 F200 F200 + # Recs 16 16 16 16 16 +Cmd Line FF00 FF00 FB00 EB00 FF00 + # Bytes 203 203 171 171 171 +Named Dirs FC00 FC00 F800 E800 FC00 + # Ents 14 14 14 14 14 +Ext Path FDF4 FDF4 F9F4 E9F4 FDF4 + # Ents 5 5 5 5 5 +Shell Stack FD00 FD00 F900 E900 FD00 + # Ents 4 4 4 4 4 + Ent Size 32 32 32 32 32 +Msg Buffer FD80 FD80 F980 E980 FD80 +Ext FCB FDD0 FDD0 F9D0 E9D0 FDD0 +Ext Stack FFD0 FFD0 FBB0 EBB0 FFB0 + + +Type X: All segments shifted down by size of HBIOS Proxy (1K) +Type T: Segments rearranged to allow space for HBIOS Proxy + FC00-FFFF --> EA00-EBFF + Environment, Cmd Line, Named Dirs, Ext Path, Shell Stack, Msg Buffer, Ext FCB, Ext Stack +Type N: Frees up HBIOS interface area at FFE0-FFFF by shrinking Cmd Line and shifting + Ext Stack down by 32 bytes diff --git a/Source/BPBIOS/Build.cmd b/Source/BPBIOS/Build.cmd new file mode 100644 index 00000000..1984974f --- /dev/null +++ b/Source/BPBIOS/Build.cmd @@ -0,0 +1,267 @@ +@echo off + +setlocal + +set PATH=%PATH%;..\..\Tools\zx;..\..\Tools\cpmtools; + +set ZXBINDIR=../../tools/cpm/bin/ +set ZXLIBDIR=../../tools/cpm/lib/ +set ZXINCDIR=../../tools/cpm/include/ + +rem +rem Z33 + ZSDOS11 w/ Non-banked BPBIOS +rem + +copy def-z33.lib def-dx.lib +copy icfg-z33.z80 icfg-dx.z80 +zx ZMAC -BPBIO-DX -/P +echo ErrorLevel: %ERRORLEVEL% + +pause + +if exist bp33.rel del bp33.rel +ren bpbio-dx.rel bp33.rel + +if exist bpsys.img del bpsys.img +zx bpbuild -bp33.dat _Fc5>8IS`NcxK#>MU8p8U*G z5)4T^L?FXCfE0wr2GrekI;orw1P(i~rOt~S^`@5#9o(5%qjX4Fc2Ca_yZuv6;2G7J zVZH8Bw0BZJ`|ZPze1jc%xzN|n%<)JyCxH%A?z1)q79555^dQI(r4%k3q{U1)4YXLo zxI2}&a)e5@(K)DraHme_1&iJlg&47T7ca&0bZ7tj@%y)51X!)~fyjv-vhK~tq1iBTQK=!L@_g(Mw;j=&mN2j9|L74-~ylGc{RYoHdR zC#ilIZH>}m^dvJ8_X6tA9rJ?G6CU%2R%5idc*2+sZ5sNHfUc2>HA;)YX;9dije@~uXE!%3a(QCoW3LK!)2Y5 zqQy9W|Dvp=VXQTF1orAjF-=Nl31l8xj2l2h@aIx$QnVPo048}}W3(8Z0EUgl&=R9! x^aGxRYG' ; CPR prompt indicating user command + +numbase equ 'H' ; Character used to designate a hexadecimal + ; number in the SAVE command + +curind equ '$' ; Symbol in symbolic path for current disk + ; or user + +comment equ ';' ; Lines beginning with this character are + ; treated as comments + +; Definition equates + +wheel defl wera or wren or wlt or wgo or wsave or wget or wjump or wdir + +path equ expath ; Definition from Z3BASE.LIB + +; End of Z33HDR.LIB + + \ No newline at end of file diff --git a/Source/BPBIOS/ZCPR33/z33hdr.lib.sav b/Source/BPBIOS/ZCPR33/z33hdr.lib.sav new file mode 100644 index 00000000..0cdfd4cc --- /dev/null +++ b/Source/BPBIOS/ZCPR33/z33hdr.lib.sav @@ -0,0 +1,539 @@ + +; Z33HDR.LIB + +; This is the configuration file for the ZCPR Version 3.3 command processor. +; You should read through this file and set the equates according to the +; features you want to implement. Since the command processor is limited to +; no more than 2K (2048 bytes), it is impossible to include all features. + +; Basic definitions + +no equ 0 +yes equ not no +off equ no +on equ yes + +rel equ yes ; This equate MUST be set to YES if assembling + ; to a REL file, and it MUST be set to NO if + ; assembling to a HEX or COM file. + + +;============================================================================= +; +; R E S I D E N T C O M M A N D S S E L E C T I O N +; +;============================================================================= + +; Commands to include in the command processor + +; The primary function of the command processor is to interpret user commands. +; Providing resident command functions is secondary. As the command processor +; has evolved to provide ever more advanced command processing functions, there +; has been correspondingly less room for resident command code in the +; processor. We recommend that you opt for most if not all of the advanced +; processing features and leave the resident command code to the resident +; command processor (RCP) module and to transient programs (COM files). +; +; There are some interrelations between a number of the possible resident +; commands. Some are so close (LIST and TYPE) that a single equate controls +; both functions. Others like DIR and ERA share code (both display file +; listings). It is efficient to select or deselect them together. The RCP +; has the room to provide more elaborate capabilities. Therefore, it makes +; sense to choose for the CPR those resident commands that are intrinsically +; simple, (e.g., NOTE) or which depend on intrinsic command processing code +; (e.g., GET, GO, JUMP). + + +diron equ no ; DIR command to display disk directory +eraon equ no ; ERA command for deleting files +geton equ yes ; GET command for loading a file to a general address +goon equ yes ; GO command to execute code in TPA (at 100h) +jumpon equ yes ; JUMP command to execute code at a general address +lton equ no ; LIST and TYPE commands for file printing and display +noteon equ no ; NOTE command for comments in multiple command lines +renon equ no ; REN command for changing names of files +saveon equ no ; SAVE command for saving TPA to files + +;----------------------------------------------------------------------------- + +; Wheel control over accessibility of commands + +; To prevent unauthorized users from performing certain dangerous or sensitive +; operations on the computer, ZCPR33 provides the capability of disabling the +; operation of certain commands when the wheel byte is off. In ZCPR30, an +; attempt to use one of these wheel-protected commands when the wheel byte was +; off resulted in an error message. In ZCPR33 things work differently. In the +; same situation, the command simply disappears. In this way a transient +; program or extended command processor function can take over and deal with +; the attempt to use the command in a much more flexible way. +; +; Wheel-protected commands in ZCPR30 had extra code to intercept the function +; and disable it. In ZCPR33, wheel protection is enabled and disabled in a +; different way. To wheel-protect a command the high bit of the first +; character in the command name is set. The command table scanner in ZCPR33 +; will not recognize these commands when the wheel byte is off. Since the same +; command scanner is used to scan the commands in the RCP and FCP (flow control +; package), commands there can be wheel protected in the same way. For skilled +; computer operators it is very easy to use a debugger, file patcher, or disk +; utility to enable and disable wheel protection without having to reassemble +; the CPR, RCP, or FCP. +; +; Because of the way the command scanner works, once one command is wheel +; protected, there is no further code penalty in protecting other commands. +; Therefore, we recommend protecting all possibly sensitive commands or none. + + +wdir equ no ; Wheel-protect DIR +wera equ yes ; " " ERA +wget equ yes ; " " GET +wgo equ yes ; " " GO +wjump equ yes ; " " JUMP +wren equ yes ; " " REN +wsave equ yes ; " " SAVE +wlt equ yes ; " " LIST and TYPE + +;----------------------------------------------------------------------------- + +; Command names + +; The CTABLE macro, which constructs the command dispatch table, includes a +; line for each command, the first parameter of which is the name of the +; command. These names may be changed if you wish. But make sure that you +; do not use a name that is longer than the maximum allowed length. If you +; do, the name will be truncated and a nonfatal error will occur during +; assembly. DO NOT CHANGE ANY PARAMETER OTHER THAN THE COMMAND NAME. Lower +; case letters will be converted to upper case. The macro COMMAND is defined +; in Z33MAC.LIB. + +cmdsize equ 4 ; Maximum length of command names + +; Command table name, enable, wheel, jump_addr +; [ DO NOT CHANGE THESE PARAMETERS ] +ctable macro + command DIR, diron, wdir, dir + command ERA, eraon, wera, era + command GET, geton, wget, get + command GO, goon, wgo, go + command JUMP, jumpon, wjump, jump + command LIST, lton, wlt, list + command NOTE, noteon, false, note + command REN, renon, wren, ren + command SAVE, saveon, wsave, save + command TYPE, lton, wlt, type + endm + +;----------------------------------------------------------------------------- + +; DIR command options + +wide equ yes ; Wide display for 80-column terminals +fence equ '|' ; Separator to use between columns of names +allchar equ 'A' ; Option letter (must be upper case) for + ; showing SYS and DIR files +syschar equ 'S' ; Option letter (must be upper case) for + ; showing only SYS files +slashfl equ yes ; Allow forms "DIR /S" and "DIR /A"? +whldir equ yes ; Allow display of SYS files only if wheel set + +; Do not change + +whldir defl whldir and diron + +;----------------------------------------------------------------------------- + +; ERA command options + +; There are options that control whether or not and in what way the user will +; be prompted before files are erased. If ERAOK is off, then there will never +; by any prompting. If ERAOK is on and INSPFL is off, then the user will be +; prompted before all deletions. If INSPFL is also on, then the user will be +; prompted only when the prompt option character is included on the command +; line. If this character is defined to be a blank space, then any character +; will turn on prompting. + +eraok equ on ; Enable prompting before files are erased +inspfl equ on ; Enable command-line inspection flag +inspch equ ' ' ; Character to use (must be upper case) to + ; invoke inspection. If this is set to + ; ' ' (space character), then any character + ; after the files spec will turn on the + ; inspect option. + +;----------------------------------------------------------------------------- + +; GET command options + +fullget equ yes ; If yes, no memory checks are performed with + ; the GET command (files can even overwrite the + ; command processor or page 0). + +;----------------------------------------------------------------------------- + +; SAVE command options + +sectch equ ' ' ; Option character (must be upper case) to + ; select saving of sectors. If set to ' ' + ; (space), then any character will select the + ; sector-save option. + +bellfl equ yes ; If yes, bell will ring for SAVE and REN + ; commands when the file already exists. + +;----------------------------------------------------------------------------- + +; TYPE command options + +pagefl equ yes ; If enabled, normally page the output. If not + ; enabled, page output only when paging toggle + ; character is present. +pagech equ 'P' ; Option character (must be upper case) to + ; toggle paging. If it is set to ' ' + ; (space), then any character will toggle + ; the paging mode + + +;============================================================================= +; +; C O M M A N D P R O C E S S I N G O P T I O N S +; +;============================================================================= + +; ZCPR33 has many more command processing options than did ZCPR30. These are +; controlled by the following equates. + +;----------------------------------------------------------------------------- + +; Environment access + +; In ZCPR30 the command processor knew about its environment only at the time +; it was assembled. Therefore, all aspects of the environment were fixed. +; Loading a new ENV module might change the way a transient program would +; function (for example by changing the maximum drive and user values that +; would be accepted), but the command processor would not recognize these +; changes. ZCPR33 can be made to recognize dynamically several possible +; changes in the environment. + +duenv equ yes ; If enabled, the CPR will get the values of + ; the maximum drive and user to recognize from + ; the environment descriptor + +aduenv equ yes ; If enabled, the CPR will use the DUOK flag + ; byte in the environment to determine + ; whether or not to accept DU: references + +inclenv equ no ; If enabled, inclusion of the DU in the + ; prompt will be controlled by the DUOK flag + +; The following three functions, if enabled, allow one to dynamically trade off +; buffer space between named directories, resident commands, and flow control. +; By executing a command like "LDR NEW.ENV,NEW.RCP,NEW.FCP,NEW.NDR" one can +; temporarily expand the capabilities of one module at the expense of another. +; To use these capabilities, the three buffers must be contiguous in memory. +; Since making such changes can be risky, it is recommended that it be done +; only with aliases, so that all necessary changes get made automatically and +; at the same time. + +fcpenv equ yes ; If enabled, the CPR will determine the address + ; of the FCP (flow command package) from the + ; environment descriptor. + +rcpenv equ yes ; If enabled, the CPR will determine the address + ; of the RCP (resident command package) from + ; the environment descriptor. + +ndrenv equ yes ; If enabled, the CPR will determine the address + ; of the NDR (named directory registers) from + ; the environment descriptor. + +;----------------------------------------------------------------------------- + +; Control over types of files to load and run as transient programs. + +comtyp macro ; The file type for executable files (this will + db 'COM' ; be changed only in the most unusual + endm ; situtations). This file type will also apply + ; to the extended command processor. + +attchk equ no ; If enabled, the command processor can be made + ; to recognize as executable files only those + ; with particular attributes (defined by the + ; COMATT equate below). + +comatt equ 0 ; 0 = system, 80h = DIR (01h will give both, + ; but in that case setting ATTCHK to false will + ; give the same result with less code). + +;----------------------------------------------------------------------------- + +; Batch processing using the submit facility. This takes up quite a bit of +; space in the command processor, and you may wish to omit it. Most of the +; type of processing that submit can do can be accomplished using either the +; the memory-based ZEX batch processor or command-line scripts (aliases). + +subon equ yes ; If enabled, the command processor will + ; process submit files. + +subnoise equ 0 ; If 0, submit lines, like command lines + ; generated by aliases, will not be echoed + ; to the screen. If 1, then echoing will + ; be controlled by the ENV QUIET flag. If more + ; than 1, submit command lines will always + ; be echoed. + +subclue equ no ; If yes, use the flag returned by the DOS + ; as a clue to the existence of a submit file + ; (some versions of ZRDOS -- including 1.7 -- + ; do not return the correct value, in which + ; case 'no' should be used here). The speed + ; advantage to using 'yes' is probably not + ; great. + +sprmpt equ ']' ; CPR prompt indicating submit command + +subtyp macro ; The file type for the '$$$' file used by the + db 'SUB' ; submit processor (this will very rarely be + endm ; changed) + +; WARNING -- the following equate should not be changed from 'A' unless you +; know what you are doing! + +subdrv equ 'A' ; Drive to use for submit file (normally this + ; will be 'A', but in special cases, such as + ; when there is a RAM disk, you might want to + ; specify another drive) + +;----------------------------------------------------------------------------- + +; PATH options -- ZCPR searches for user programs along a path of directories +; specified in the path buffer. Because of the efficiency it adds, the +; minpath (minimum path) is not an option in ZCPR33 but is always in effect. +; This minimum path eliminates duplicate references that can arise in several +; ways and otherwise cause a useless search of a directory a second or third +; time. + +drvprefix equ yes ; If enabled, an explicit DU: or DIR: prefix on + ; a command verb will be recognized and made + ; the first element of the command search path. + +scancur equ no ; If enabled, the currently logged directory + ; will always be added to the beginning of the + ; symbolic path (we advise disabling this + ; option -- you can always include '$$' in the + ; path, but then you can omit it when you wish + ; and you can control its position in the path, + ; searching your main directories first). See + ; the Z33 User Guide for special precautions + ; required when SCANCUR is off. + +; In order to save space in the CPR for valuable code, the minpath can be +; built in a memory buffer external to the CPR. If your symbolic path has +; no more than 10 elements, the minpath will automatically be built at the +; bottom of the external stack. Otherwise, if you want an external minpath, +; you must set the EXTMPATH symbol to yes and supply the address of the memory +; to use. The memory requirement is twice the length of the symbolic path +; (see Z3BASE.LIB or run SHOW to get this value) plus 2 if SCANCUR is enabled +; plus 2 if DRVPREFIX is enabled, plus 1 for the ending null. + +extmpath equ no ; If yes, the minpath will be built in a buffer + ; external to the command processor at an + ; address supplied in the next definition. + +extmpathadr equ 0 ; If EXPMPATH is enabled, provide the address + ; of the external buffer here. + +; Do not change the following code + + if [ expaths le 10 ] +extmpath defl yes ; Automatic placement of minpath +extmpathadr defl extstk ; ..at bottom of external stack + endif + +;----------------------------------------------------------------------------- + +; Control over the acceptance and display of drive/user and named directory +; forms. With the options provided in ZCPR33 it is quite easy to provide a +; fully secure system with the DU form enabled. The DU form is often the only +; one recognized by non-ZCPR programs and is often more convenient and natural +; to use. We, therefore, recommend that both DU and DIR forms be allowed and +; displayed. Processing of DIR forms will not be carried out, obviously, if +; the named directory register (NDR) is not implemented in the system. + +accptdu equ yes ; Accept DU: form in command lines +accptdir equ yes ; Accept DIR: form in command lines +dufirst equ no ; If enabled, the DU form will be checked + ; before the DIR form. + +incldu equ yes ; Include DU in prompt +incldir equ yes ; Include DIR in prompt + + +; Do not change the following + +incldir defl incldir and [z3ndir ne 0] +accptdir defl accptdir and [z3ndir ne 0] + +;----------------------------------------------------------------------------- + +; Security matters + + +pwcheck equ yes ; If enabled, passwords on named directories + ; will be checked for DIR forms in the command + ; verb and the first two command-line tokens. + ; If disabled, passwords will not be checked + ; even if a directory has a password defined. + +pwnoecho equ yes ; If yes, the BIOS conout routine will be + ; disabled during password input so that the + ; password will not be echoed to the screen. + ; This does involves poking in the BIOS and + ; could in rare instances cause problems. + +wdu equ no ; If enabled, the DU: and DIR: forms will not + ; be allowed for changing the logged directory + ; unless the wheel byte is set. + +wpass equ yes ; If enabled, password checking of named + ; directories is bypassed when the wheel byte + ; is set. + +wprefix equ no ; If set, this option will effectively turn + ; off DRVPREFIX when the wheel byte is off. + ; Explicit drive prefixes will then be allowed + ; only when the wheel byte is set. Otherwise + ; they will be ignored except that ECPs will + ; not be invoked if a prefix was present. + +; Do not change the next lines + +pwcheck defl pwcheck and [ z3ndir ne 0 ] +pwnoecho defl pwnoecho and pwcheck + +;----------------------------------------------------------------------------- + +; Advanced command processing options + +highuser equ no ; If yes, the command processor will log into + ; user numbers higher than 15 (up to 31). + ; WARNING: BECAUSE CP/M USES A SINGLE BYTE AT + ; ADDRESS 0004H TO KEEP BOTH DRIVE AND USER, + ; PROGRAMS THAT USE THAT BYTE TO DETERMINE + ; THE DEFAULT DU MAY NOT RUN PROPERLY WHEN ONE + ; IS LOGGED INTO A USER NUMBER ABOVE 15. + +skippath equ yes ; If yes, command verbs with an explicit DU: or + ; DIR: prefix will not use the search path; if + ; the command is not found in the specified + ; directory, the error handler will be invoked + ; immediately (no path and no ECP). + +fastecp equ yes ; If yes, command verbs with leading spaces will + ; be executed directly by the ECP (saves the + ; time of searching the path for a COM file + ; when one knows the command is for the ECP). + +altspace equ yes ; If yes, the alternate character, ECPCHAR, can + ; also be used to invoke ECP processing + ; immediately (FASTECP must be enabled). + +altonly equ no ; If ALTSPACE is on, then if ALTONLY is also + ; on, the alternate character the only one that + ; will invoke fast ECP processing (spaces will + ; not). + +ecpchar equ '/' ; Alternate (or required) character for fast ECP + ; invocation. + +altcolon equ yes ; If enabled, an alternate character (period + ; recommended) can be used in place of a colon + ; to make the CPR skip resident commands and + ; add the current directory to the search path. + +altchar equ '.' ; Character that serves as an alias for leading + ; colon if it is the first non-blank character + ; in the command. + +badduecp equ yes ; If yes, pass commands that try to log into a + ; bad directory to the ECP for processing; if + ; set to NO, invoke the error handler + ; immediately under these circumstances. + +; WARNING -- do not change the following equate from 'no' unless you +; know what you are doing! + +shellif equ no ; If yes, flow control processing can take + ; place in shell aliases (complex command + ; sequences being used as a shell). The + ; penalty is that each time the shell runs, + ; the entire flow control system is + ; reinitialized. Flow control information + ; will not persist across shell invocations. + ; If SHELLIF is off, flow commands in shell + ; aliases will not be recognized as FCP + ; commands (they will be flushed) and, + ; therefore, should not be used. + +; Do not change the following + +skippath defl skippath and drvprefix + +;----------------------------------------------------------------------------- + +; Extended command processing + +; The extended command processor comes into effect when a way to process a +; command verb has still not been found after the entire search path for a +; COM file has been exhausted. The entire user command is taken as the +; command tail on the extended command processor. In ZCPR30 one could either +; have extended command processing OR error handling. In ZCPR33 one can, and +; should, have both. + +rootonly equ yes ; If yes, the command processor looks for the + ; ECP only in the directory specified as the + ; last one in the path instead of scanning the + ; entire path for the ECP. + +; The following macro defines the name of the ECP. Rename your favorite +; ECP (ours is ARUNZ) to CMDRUN.COM or whatever name you put in below. + +ecpname macro + db 0 ; Drive (do not change this from 0) + db 'CMDRUN ' ; Name of ECP program (exactly 8 characters) + ; '--------' ; (Eight-character space marker) + endm + +;----------------------------------------------------------------------------- + +; Miscellaneous equates + + +cmdsep equ ';' ; Separator between multiple commands + +; The following two equates are used only if the equates to get this +; information from the environment descriptor are not enabled. + +maxusr equ 31 ; Maximum user number accessible +maxdisk equ 4 ; Maximum number of disks accessible + +supres equ false ; Supresses user number in prompt for user 0 + +cprmpt equ '>' ; CPR prompt indicating user command + +numbase equ 'H' ; Character used to designate a hexadecimal + ; number in the SAVE command + +curind equ '$' ; Symbol in symbolic path for current disk + ; or user + +comment equ ';' ; Lines beginning with this character are + ; treated as comments + +; Definition equates + +wheel defl wera or wren or wlt or wgo or wsave or wget or wjump or wdir + +path equ expath ; Definition from Z3BASE.LIB + +; End of Z33HDR.LIB + + \ No newline at end of file diff --git a/Source/BPBIOS/ZCPR33/z33hdr1.lib b/Source/BPBIOS/ZCPR33/z33hdr1.lib new file mode 100644 index 0000000000000000000000000000000000000000..1254167c321f0fc62d704b50c3ed64f1da11276f GIT binary patch literal 3584 zcmbtXOK;mo5bl)%^apy{LjgH};yQItH4s3F)x<&U7=E;910Po8QrddC%j}Yt74*mV zn^}@tKdKa{F60bnXXo+FL*vnr`1A1a{qe>A$CEeW<;$1it+R!)K^5Xx=d1B(43Vpq z4kCB9)XUb(MmsCOD4iEl1eLd5iLeQcs>E71D{*=K=Je!Blrq;wH(CXutXvpXkgmOz zvbhqaS_`j&#$63mSCzCyc(E_U%v3HkLK-7vaVH^Lh}yecg`n+HxSFmHLV88oI>r0Z z&NnjXTokI*7WYDo*w$t0OPd{xM;jIR)w)JlHy*jN>}b4OeuW5~@yZNea1G+}Fi)i)y|NuiUxU2szY@8_x;4xjyja7!t%qw^ zmr^lA?EIQ+OTOXugreIM(j;1TSdv#o&|l-hpULLDAv|Q2%sqU_y8LI^@yW$B|pw0-wM_GU&6T*Yx9u>(ldT7PA8ZdWmEz z^zq~pcTmb8VsL}ep-BbKK3&bHSxnBJi(+v@N ziDW8t^~X7c5?h*0jl#&3En@9H!7Uh!8i82%h1XXVeORL;w;3*}SecysJsFQsmHA3W zR83}JpzODdOJW!qR;3YCauH7})8nu!u65*~OidQw1&UvA+Os2Z>`7W?u2N{riAoeg)UQER+vG=9bsu87;OVB^z zgMGmoa?{3o;$B|+s*d(dZa6nk`q(8{lDY(m!rw*s&L(v2@3V`ule2ff2(QEKM(DDu zokEn}RbuuHPtPSrb~jcz+y1Wh7@_yugohk+xb+bNaq6i1rmAt0g^1NNWD(oL0W3RH zs=)Ym*05R1C_+{c+6p==UW-?phYUt%pM|<7ZV*O+FK)IvGwu}(r1To*f)ScqZ*v6u0OYK9G#)9Dg;21M7e7C2l z3qgo@Y;{L*c5=a4RG4qbh8mu63TM`>UF+Sd8`+X zcD=R^-NPmA9F9_Np_H#{8RAC8!s`edmW?3k^|9q05e*lK&*Fwq{HW~@H+N?{J7`e! zTAw+!)8kpcPIl|YGixQGXQh{`HmL3D6mE4rK%G4;C6?X1PVy^F6KdIwN|phKaKFU~ z4)Cbt@J)V1O+zGiChaN2q4^qR_93&71-dQn8X9_7VN9T2hBTnB^cHfkdMZxUp_-q@ zcxSZc_YDdP)%!GB6eaIm^lz{W<(k)4R@=1>4VnAmX^Vw^0d%8Exk;ZMUtFIF8oooP z-ZAM;b;#kew92)y?_-@*F(Q*AD5>Oq8)Ci=Uolyr6LNg8ZH5-Oj4miY?+ literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/ZCPR33/z33hdr2.lib b/Source/BPBIOS/ZCPR33/z33hdr2.lib new file mode 100644 index 0000000000000000000000000000000000000000..27b37ea0644b303db90feba2886631f3475a54c6 GIT binary patch literal 3456 zcma)9OK;mo5bl)%^apyHLjfg#k~(!yH4s3F)x<&U7=E;910Po8QrddC%Wz4{4*KK! z%`8Q&A5p3cIm6l6d3^KGcyvI2@9)1qJbU@^=ncJi@q*rZS7;Y>LBIQ^8jr>hxmcM% zxp$>mc8zL{cLYZ18&VW>-Zh%SU1)VhYtycL*HXLEbbk5f_~?R4l^bi?yO&Yd8x>4W zg)WUVtSKP6v5)z9r|!BVU$1jdv%n5aBb8w!;?~3ELn2SgbHje~#7Z zMkUlzx2evhPpN;ps!nOUk!3wFPp2On?NTzRo6TpI-eKMv_6=^VVcyooHOxz?7$fn1 z&Bi6)aD77Y?FnfUEjuj9t0I`M@!+p)bKa_j)mf$T20moDuPWt=EIT|pn`RQ$X~yOY zkqXSuX46a}4FNobNCn=_FQ%CU9|Cv^aZlhASjYx{_WYWD{BU`EI?ZBwAiyt?Oocuk zo#PJ98AL2@uqL#rz{#hJ`811poMxr6K}RwbI-8$NGs!Kq;3-5Za6bD3T4K5(!Y`3b zg)aU&g-~Kkdsk}+XjjAndjwoC1T}q2)!@j!Kk%Kz5S$roXpCs+s0Udf&XG>7)mT+YUtPTip zc*+L`$hE-KyYa}lP~$4LXhY^JAtwZjcU}NEJ#|6ZS$nU9b}HdaKBWcytxYXiXlr{z z`%rze^`LPg^G_+Q)sh1{#GmQSC8ytWckXVur&Zdur1D$`X@^Cp-A%StsU9+n%k3b- zU8&6LffiSqhYVK$^QqFE5xi)W3x=(#8^3H+C3XS5fcwxzibXbg`{@`y4)9kk0vwUR zX5j!h;t1x!&Kn<07?uv*qHn~k3zYLFXhHg32H@_|GmMnyQ+h?uzH~;nR9dwJ{R=+0 z=W-;sT`VV2Q8!f`&6!+DYM}I?M=&Jy2ogne6VW@H@U?%=&Q6X_-u*_63D^qL0s&ZXm0{r>m{bOj?EDD7{9wV1)J>DJQf%Q+~(U zL(`zL+lE^8lTu{BVcc(V zf&(%sC47^gQPU8~y-jyJ=J0rpGA|*sPz9PT?i%`eSYb+_UWPQFuWT%oU~Q;4REKJQ z9OIqQn%}l4s3)VvHP(0^{Tu8;x#qP~)pn~xKbF3D+=Z4FKsTyXdi3$(+2slG>>V2Q zjzM>9LJpUe)4q#sAKRpk5t$r7Nu_SP5c9SFO2`78P~wASGjzaZgsE&|gfWox-Pcgy zx@w_9zvjFLgG&SJDEl_~iD|4!=v>q#l=I=iYirG#8 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/ZCPR33/z33hdr3.lib b/Source/BPBIOS/ZCPR33/z33hdr3.lib new file mode 100644 index 0000000000000000000000000000000000000000..99d1b78e1b86b8cb413a3cf5479e9551dc8794fb GIT binary patch literal 3584 zcma)9OK%%D5bkvi=nwQXhXP6f#dYeQY9N3TtBH%)F>I$r8~8x&awXPWazpM~R?r{c zZ^(VnkIL0$cV>t4;x`XX_KxVU!^0297yBPi-qNdAujrjMg*09k^s9B%WN!kItF`i! zTT`l4>qMihAuvkoNEouUG~~Cwkri!Jv!=_>Z%i`Nts-?g)H`CJa2_pITf;01`a|SvyIK<*ETzt>}{nFug0><$(}9C zj>fwQuMpugPU_(cyg~jR{aCC}t~j08v$0rxFEaY>RvEPA61r`_cSr$?Z0Xzed3cO!j&9abn2;dordjg-p!Zq+` z%dhFj-#(w7&$4(g5a5?cra~W2E@6W&3nCg8wDL_VaQ5kHG0Wlw&azTyFC&=>T`bOK zS-4ba!7~u4z~%gRXo>d>5q^neDs=VdIfN2lnr)5B$)qV_bw5HZ7y&MXT=$jPmmPoD zpk~AUh9W4ro&!1kXFAzK+2(5z;WV9tfzB{8E}5Z)UzeJ=*n)=5TK53#%Btg_Ky?=1 z(P#<^*Pb2Gu|-*;X{?1=A(S1kIwHW~sTdd_H^FObCVR^G8m8Ezp3K)VCW6O14FFD0 z87Nz=`{L=M`p@=oM0}G^X+bw@Qcspr>(0^VmGaF$rL-0+PVA6>rh6mj&xN}%x7^Gs z?%E>frp);%T4`>xppv_TctCUey(duS7#iJy5QuxoFa;2wO6=P!%%84p? zg{A?p4?UzTfPRnx zw+HkBqvYj`Uek-Ot&$CuTC70-gb(Ir(11BLHcwx>s*e6lufxs2#>0@{Ng5I)3U?d9 zJD;-IKjs%_Cui?}A*cM!mQ>kQPC=!!70sWC^ju)3cT+dqwY#kyM(5p#AfIDQw{8Rg zhTL6K)i^m|qGyOAHirXvb|xi;GFhX8TT)BLmB+XyK1*-tb-0HNPG?_8-Z9scmf+KM zVkC5m0HoAR;DX_s8{9cog+i6j1beI;O3u11c9T*9g1oC>4+?k!-s`4lW0=8O{K0N_w)28#M6dOUQ#-?*_p4^NX*{uVGIZ8zwQju}*Cl_W>H+5g6Q#f^oY%?a z3f=fxbW<|ohUc-~jv&E-FeO9wraz*faVWPsZ79s)(Hdp;A+r<(IxTDsz1*)cAy6#C zEug9N9)@J~R2-;7DL>Bf&TK928dMWX_i?s3OU~LD-{2Q&HLs1R#*Gf$I5fr67R&w; z&_;=d4t;uj@%fB+?hb8w$K*U!K1ayHNZZDyk4;j>j7*Q9q!M?nkN0)>I*Aryi(^gC2yA|gH82ksr6!8{*U>bj3(6%CjO(Jy<5sLy?OZ-^~ zcfe~Y;m;EXR-@L1XK;5{zVm=G++OJ;aM7eL+gT{X7DXl?=M+cNnt$L#OFd+zry D3k3rC literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/ZCPR33/z33hdr4.lib b/Source/BPBIOS/ZCPR33/z33hdr4.lib new file mode 100644 index 0000000000000000000000000000000000000000..de61e739a0010857ba56cba0478b55d813eb2a2b GIT binary patch literal 3584 zcmbtXOK%%D5bkvi=nwS7Ljfg#k~(!yH4s3F)x<&U7`D@*4Sb+>xe{wGxgmEgE9j5! zH^Y6t&;z6+o2E3u%R`l@(zd8dZsnZq}}C#Kq?~C&!nfl({y#(JBaK<`z0wj5a%*bGe3VBro{VhKGnS7QvloDAba}RM@?y5@KBFm1B&u1Asbe56c z45S2$^Z6`eAAQEpZ9cM;+Z4%IUrvRkWV*<+7n7(*AtNyh=914o$V_eYD znpBgeGNx1XX{HqU$C%b~MUEZ(PjD~f>?v~>_J+Dyr7U`MPF_ZPJmf7^}rxRE>B)@Fn z-k1lZHy!}PW?&BNlz4ZDZHYRx%dP97;?8wRpaH55o%xyTME~@9`c-XqLf&6^EwHxG)<^wHzZ@;&^R{RF-h=%ha`J% z`XdS&k8)?yg^n;ZStHF$&@5$vMhjU(D-UZ72o%c@1vHgjLv~gV#d$iE@XM?$D)o49*iB za+oZwa&7GSSR_^S$n+3QDtX(67_Wm@3>IjE>>uozp+#QCEafFkUj_ca*Uwpz;2 zZ8-0Np#K=yM9H@44+LXFLfeW65((Gc&sY?|TH((E$AGp{fxkzz)A83d{8>5v&>9zE jOb8;Q9g`2}0;rq5tHyR1#VwHfu1x-|5&HY@{@?E(ub=pZ literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/ZCPR33/z33hdr5.lib b/Source/BPBIOS/ZCPR33/z33hdr5.lib new file mode 100644 index 0000000000000000000000000000000000000000..8df8cdec5233fde37338012e0192e23dedbe7e0f GIT binary patch literal 3456 zcma)9OK;mo5YCkX^apy{Ljfg#k~(!yH4s3K)x<^Y7=E;910Po8QrddC%j}Yt74*mV zn^}@tKO$Eba)z_>{APAE9vz6k_xC>@oxk~Xd?;SOel6ZRTPPb;A%1hd8jr>hxm@WW za%W4uY`tu>vjU9Lc_FQEwXz~?LZd3N*3C*>TpgYqUy4%Z+UQ2BAe5C0qY6^BXd7Xj zu(E=MLVJ}r&Tm9$>)QF|O|*9?gU&^vN^POQ*+6XTGWE61_Qs=)3jAsv=^Bq*S#~tu zEx$s9&Uj^pFR+gI9{orRest$Zo$@lFma0j0E?r9f(^hp#n_iamz&({H^2(;7LEiRX zJ7>S^-WvW5VXWcamVkE&5i>-#*W}su3v6!*vb?3tR>6)8(BlS4x$CN@*>Zl-MEvME6F{o(p$wZ)uoS$~Hpg zxe7c7i&oj&j8)QfkPm2Wb8}Ci%rVrv100Bd$gl+vpGxd3!ljosX!5D{Zs}#kUIDuR z`!GX_MK*c=`2-OT;Fk^38*xB>;{Z4u2Cjjf7Vlp|8r7MudP;%D2-f#{uv+aE7p*kb~`*n?W;QaGr8u$d>FC3n|U zHBJtg=ozwz!(k7eohnt}ns(N(TgoWHRS?<=IxF6Zw_Jw|PG?_)x+887Mu9J`6C*q+ z7)YrZ=7JHL8`KG-}d3R7gmYA>&L^d_aGkZssD3wH@p?RH#_@JU^jahVi)#Y#gLyyL z?ap>y&<)XRed5&4aA(CW5DX~x*B! + + if not nul temp +flag defl flag shl 1 + if temp +flag defl flag or 1 + endif ;;temp + endif ;;not nul temp + + endm ;; irp + + defb low flag + + endm ;; optflag + +;---------------------------------------- + +; Macro for directory scanning + +; This macro resolves the command token for possible directory references. +; FORM1 and FORM2 can each be either "DU" or "DIR". FORM2 can also be null. +; The two forms are scanned for in the indicated order. + +; This macro preserves the pointer to the FCB in DE and to the next +; character in the line in HL. On return, the FCB pointer has been restored, +; and the command string pointer is still on the stack. The routines DUSCAN +; and DIRSCAN are called as needed. + +resolve macro form1,form2 + + local resolved + + push hl ; Save pointer to command string + push de ; Save pointer to FCB + call form1&scan ; Scan for the first directory form + + if not nul form2 + + jr z,gotit ; Resolved successfully, so jump ahead + + pop de ; Restore pointers for use by second call + pop hl + push hl ; Save them again + push de + call form2&scan ; Scan for the second directory form + + endif ;not nul form2 + +gotit: + pop de ; Restore pointer to FCB + + endm ;resolve + +;----------------------------------------------------------------------------- + +; Command table entry definition macro + +; Macro to form an entry for one command in the table. The first parameter is +; the name to be used for the command (no quotes); the second parameter is the +; flag that indicates whether or not the command is to be enabled; the third +; parameter is the wheel control flag; and the last parameter is the jump +; address to the code that carries out the command. The command names are +; automatically padded out to the correct length (they will be truncated and +; an error message will result if a command name is too long). The characters +; in the command name are automatically converted to upper case. + +command macro cmdname,enableflag,wheelflag,address + + if enableflag ;; Generate command only if enabled + +whlmask defl wheelflag ;; Initialize variables +count defl cmdsize ;; Initialize to size of each command name + + irpc char,cmdname ;; Repeat over letters in command name + +count defl count - 1 ;; Count down characters in name + + if [ count lt cmdsize ] + + ;; If character is lower case, convert to upper case + + if [ '&char' ge 'a' ] and [ '&char' le 'z' ] + + if whlmask + defb [ '&char' and 5fh ] + 80h + else ;;not whlmask + defb [ '&char' and 5fh ] + endif ;;whlmask + + else ;;not lower case + + if whlmask + defb '&char' + 80h ;; If controlled by wheel, set high bit + else ;;not whlmask + defb '&char' ;; If not restricted, leave high bit clear + endif ;;whlmask + + endif ;;lower case + + endif ;;[ count lt cmdsize ] + +whlmask defl false ;; Turn off high-bit setting after first char + + endm ;irpc + + ;; Pad command name with blanks + + if [ count gt cmdsize ] ;; If we underflowed + *** Command name "&cmdname" is too long / truncated *** + else + rept count + defb ' ' + endm + endif ;[ count gt cmdsize ] + + dw address ;; Dispatch address for command + + endif ;enable + + endm ;command + +; End Z33MAC.LIB + + \ No newline at end of file diff --git a/Source/BPBIOS/ZCPR33/z3base.lib b/Source/BPBIOS/ZCPR33/z3base.lib new file mode 100644 index 00000000..397ecd97 --- /dev/null +++ b/Source/BPBIOS/ZCPR33/z3base.lib @@ -0,0 +1,128 @@ +; B/P Bios System Z3 Definition File. + +; This file is adapted from the basic Z3BASE.LIB configuration file used for +; most ZCPR33 systems. It has added the new definitions for the Resident +; User Space defined in B/P Bios descriptions. +;========================================================================= +;== NOTE: The Starting Address of the User Space marks the lower == +;== base of memory and MUST be entered. B/P Bios Utilities use == +;== this address to locate many portions of the operating system. == +;========================================================================= +; To change your systems definition, first sketch out the memory map in the +; comment table, then set the equates to reflect the memory map, doing any +; required calculations for element sizes and required spaces. As an +; alternative, just leave this file alone and configure everything with +; the utilities provided. + +; FFE0 - FFFF 32 Bytes HBIOS Reserved +; FFB0 - FFDF 48 Bytes ZCPR3 External Stack +; FF00 - FFAF 176 Bytes Multiple Command Line Buffer +; FE00 - FEFF 256 Bytes Environment Descriptor +; Bytes 00H-7FH: Z3 Parameters +; Bytes 80H-FFH: Z3 TCAP +; FDFF 1 Byte Wheel byte +; FDF4 - FDFE 11 Bytes Path (5 elements) +; FDD0 - FDF3 36 Bytes ZCPR3 External FCB +; FD80 - FDCF 80 Bytes ZCPR3 Message Buffers +; FD00 - FD7F 128 Bytes ZCPR3 Shell Stack +; FC00 - FCFF 256 Bytes Named Directory Buffer +; FA00 - FBFF 512 Bytes Flow Command Package +; F200 - F9FF 2.0 KBytes Resident Command Package +; EC00 - F1FF 1.5 KBytes IO Package +; E900 - EBFF .75 KBytes Resident User Space + +; The remainder is for the Operating System. Exact sizes vary depending +; primarily on the Number and sizes of Hard Drive Partitions, but may be: + +; D100 - EBFF 5.0 KBytes B/P BIOS (unbanked version) +; C300 - D0FF 3.5 KBytes ZSDOS 1.0 BDOS +; BB00 - C2FF 2 KBytes ZCPR 3.3 Command Processor +; 0100 - BAFF ~46 KBytes Transient Program Area +; 0000 - 00FF 256 Bytes Standard CP/M Buffers +;======================================================================== + +FALSE EQU 0 +TRUE EQU NOT FALSE + +YES EQU TRUE +NO EQU FALSE + +; The External Stack is placed in the very top position in memory. It is +; mandatory for B/P Bios and ZCPR 3.3. + +;EXTSTK EQU 0FFD0H ; ZCPR3 External Stack +EXTSTK EQU 0FFB0H ; ZCPR3 External Stack +EXTSTKS EQU YES + +; The Multiple Command Line Buffer is placed in the Top Page of Memory to +; place it above the Environment. It is mandatory for ZCPR 3.3. + +Z3CL EQU 0FF00H ; ZCPR3 Command Line Buffer +;Z3CLS EQU 208-5 ; Size of Command Line Buffer-5 +Z3CLS EQU 176-5 ; Size of Command Line Buffer-5 + +; The ZCPR3 External Environment Descriptor is mandatory B/P Bios & ZCPR 3.3. +; The Environment Descriptor MUST begin on an even Page Boundary (xx00H). + +Z3ENV EQU 0FE00H ; Environment Descriptors +Z3ENVS EQU 2 ; Size of Env Descriptor in 128-Byte Blks + +; The ZCPR3 Wheel Byte is mandatory for ZCPR 3.3. + +Z3WHL EQU 0FDFFH ; Wheel Byte Address +Z3WHLS EQU YES + +; The Path is mandatory for ZCPR 3.3. + +EXPATH EQU 0FDF4H ; External Path starting Address +EXPATHS EQU 5 ; (Path Size = EXPATHS*2 + 1 = 11 bytes) + ; This defines 5 2-byte Path Elements + +; The ZCPR3 External FCB is mandatory for ZCPR 3.3. + +EXTFCB EQU 0FDD0H ; 36-Byte ZCPR3 External FCB +EXTFCBS EQU YES + +; The ZCPR3 Message Buffers are mandatory for ZCPR 3.3. + +Z3MSG EQU 0FD80H ; 80-Byte ZCPR3 Message Buffer +Z3MSGS EQU YES + +; Shell Stack definition. Set SHSTKS to 0 to eliminate Shell Stack + +SHSTK EQU 0FD00H ; Shell Stack Starting Address +SHSTKS EQU 4 ; Number of SHSIZE-Byte Shell Stack entries +SHSIZE EQU 32 ; (Stack Size = SHSTKS * SHSIZE = 128 Bytes) + +; ZCPR3 Named Directory Buffer definition. Set Z3NDIRS to 0 to eliminate +; the named directory buffer. + +Z3NDIR EQU 0FC00H ; Start of Named Directory Buffer +Z3NDIRS EQU 14 ; Number of Named Directory Elements + ; (NDIR Size = Z3NDIRS * 18 + 1 = 253 Bytes) + +; Flow Command Package definition. Set FCPS to 0 to eliminate FCP + +FCP EQU 0FA00H ; Start of Flow Command Package +FCPS EQU 4 ; (FCP Size = 128 * FCPS = 512 Bytes) + +; Resident Command Processor Definition. Set RCPS to 0 to eliminate RCP + +RCP EQU 0F200H ; Start of Resident Command Processor +RCPS EQU 16 ; (RCP Size = 128 * RCPS = 2 kBytes) + +; IO Package definition. Set IOPS to 0 to eliminate IOP + +IOP EQU 0EC00H ; Start of IO Package +IOPS DEFL 12 ; (IOP Size = 128 * IOPS = 1.5 kBytes) + +;========================================================================= +; Resident User Space Definition. Set USPCS to 0 to eliminate USPC. +; The USPC Value marks the Lower Limit of Reserved Common High Memory and +; MUST BE PRESENT! + +USPC EQU 0E900H ; Start of Resident User Space (MANDATORY) +USPCS EQU 6 ; (USPC Size = 128 * USPCS = 0.75 kBytes) + +;--- End of Z3BASE.LIB --- + \ No newline at end of file diff --git a/Source/BPBIOS/ZCPR33/z3base.lib.sav b/Source/BPBIOS/ZCPR33/z3base.lib.sav new file mode 100644 index 00000000..b412c670 --- /dev/null +++ b/Source/BPBIOS/ZCPR33/z3base.lib.sav @@ -0,0 +1,226 @@ +; Z3BASE - Dynamic Configuration +; +; ZCPR33 is copyright 1987 by Echelon, Inc. All rights reserved. End-user +; distribution and duplication permitted for non-commercial purposes only. +; Any commercial use of ZCPR33, defined as any situation where the duplicator +; recieves revenue by duplicating or distributing ZCPR33 by itself or in +; conjunction with any hardware or software product, is expressly prohibited +; unless authorized in writing by Echelon. +; +; This is a special version of Z3BASE, inspired by Joe Wright's Z3BASE +; for Z-Com. All segment addresses are automatically derived when the +; CCP equate is set. The benefit of this is that reconfiguration of the +; system after initial installation is greatly eased. +; +; Although this version of Z3BASE is being distributed with ZCPR 3.3, any +; previous version of Z3BASE can be used to assemble the Z33 Command +; Processor. No new symbols are needed. So, if you have an existing +; Z3BASE, go ahead and use it. +; +; Instructions: +; +; The user should first design the ZCPR3 memory usage using the chart +; below. (Echelon recommends the chart be filled out, even though it is +; not read by the assembler, so that your system will be self-documenting.) +; Then set the CCP equate for the beginning address of ZCPR3. Next, examine +; and change the SEGn equates which follow in the file to ensure that the +; system segments and buffers are placed at the proper addresses. +; +; This file has been customized for use with AMPRO hard disk systems. The +; target configuration has support for hard disks up to 49 Meg, extended +; IOP support, and 28-entry NDR. +; +;**************************************************************** +;* * +;* Z3BASE.LIB -- Base Addresses for ZCPR 3.3/Z-System * +;* * +;* Segments: * +;* * +;* Segment Function * +;* ------- -------- * +;* ZRDOS Echelon Z80 Replacement Disk Operating * +;* System, Version 1.7 (Public ZRDOS Plus) * +;* CBIOSZ Ampro-compatible BIOS with additional * +;* ZCPR3 initialization routines * +;* ZCPR3 Echelon Z80 Command Processor * +;* Replacement, Version 3.3 (ZCPR3) * +;* *.ENV All Environment Descriptors * +;* *.FCP All Flow Command Packages * +;* *.NDR All Named Directory Definition Files * +;* *.RCP All Resident Command Packages * +;* *.IOP All Input/Output Packages * +;* * +;* * +;* Memory Map of System (for CCP EQU 0BC00H): * +;* * +;* Address Range Size Function * +;* ------------- ------- -------- * +;* 0 - FF 256 b Standard CP/M Buffers except * +;* 100 - C3FF ~49 K Transient Program Area * +;* BC00 - C3FF 2K ZCPR 3.3 Command Processor * +;* C400 - D1FF 3.5 K ZRDOS * +;* D200 - EAFF 6.25K Ampro BIOS w/hard disk buffers * +;* EB00 - F2FF 2 K Resident Command Package * +;* F300 - F8FF 1.5 K Input/Output Package * +;* F900 - FAFF .5 K Flow Command Package * +;* FB00 - FB7F 128 b ZCPR3 Shell Stack * +;* FB80 - FBCF 80 b ZCPR3 Message Buffers * +;* FBD0 - FBF3 36 b ZCPR3 External FCB * +;* FBF4 - FBFE 11 b ZCPR3 External Path * +;* FBFF 1 b Wheel Byte * +;* FC00 - FDFF .5 K Memory-Based Named Directory * +;* FE00 - FEFF 256 b Environment Descriptor * +;* Bytes 00H-7FH: Z3 Parameters * +;* Bytes 80H-FFH: Z3 TCAP * +;* FF00 - FFCF 208 B Multiple Command Line Buffer * +;* FD00 - FFFF 48 b ZCPR3 External Stack * +;**************************************************************** + +FALSE equ 0 +TRUE equ NOT FALSE + +Z3REV EQU 33 ; ZCPR3 REV NUMBER +MSIZE EQU 54 ; SIZE OF CPM SYSTEM + +BASE EQU 0 + +CCP EQU 0BC00H ; ZCPR3 COMMAND PROCESSOR + +seg1 equ CCP+2F00h ; 11.75k from CCP to here (adding 2k ZCPR, + ; 3.5k DOS, and 6.25k BIOS). + +; +; RCP definition. Set RCPS to 0 to eliminate RCP +; + +RCPS EQU 16 ; 16 128-byte Blocks (2K bytes) + + IF RCPS NE 0 +RCP EQU seg1 ; RESIDENT COMMAND PACKAGE + ELSE +RCP EQU 0 + ENDIF + +seg2 equ seg1+[rcps*128] + +; +; IOP definition. Set IOPS to 0 to eliminate IOP +; +IOPS EQU 12 ; 12 128-byte Blocks (1.5K bytes) + + IF IOPS NE 0 +IOP EQU seg2 ; REDIRECTABLE I/O PACKAGE + ELSE +IOP EQU 0 + ENDIF + +seg3 equ seg2+[iops*128] + +; +; FCP definition. Set FCPS to 0 to eliminate FCP +; + +FCPS EQU 4 ; 4 128-byte Blocks (0.5K bytes) + + IF FCPS NE 0 +fcp equ seg3 + ELSE +fcp equ 0 + ENDIF + +seg4 equ seg3+[fcps*128] + +; +; Shell Stack definition. Set SHSTKS to 0 to eliminate Shell Stack +; + +SHSTKS EQU 4 ; NUMBER OF SHSIZE-BYTE SHELL STACK ENTRIES +SHSIZE EQU 32 ; SIZE OF A SHELL STACK ENTRY + ; (STACK SIZE = SHSTKS * SHSIZE) + IF SHSTKS NE 0 +SHSTK EQU seg4 + ELSE +SHSTK EQU 0 + ENDIF + +seg5 equ seg4+[shstks*shsize] + +; +; The ZCPR3 Message Buffers are mandatory for ZCPR 3.3. +; +Z3MSG EQU seg5 ; ZCPR3 MESSAGE BUFFER + +seg6 equ seg5+80 + +; +; The ZCPR3 External FCB is mandatory for ZCPR 3.3. +; + +EXTFCB EQU seg6 ; ZCPR3 EXTERNAL FCB + +seg7 equ seg6+36 + +; +; The Path is mandatory for ZCPR 3.3. No more than 5 path elements can be +; used with this Z3BASE.LIB file. +; + +EXPATH EQU seg7 ; EXTERNAL PATH +EXPATHS EQU 5 ; 5 2-byte Path Elements + ; (PATH SIZE = EXPATHS*2 + 1) + +seg8 equ seg7+[expaths*2]+1 + +; +; The ZCPR3 Wheel Byte is mandatory for ZCPR 3.3. +; + +Z3WHL EQU seg8 ; WHEEL BYTE ADDRESS + +seg9 equ seg8+1 + +; +; ZCPR3 Named Directory Buffer definition. Set Z3NDIRS to 0 to eliminate +; the named directory buffer. If Z3NDIRS is changed, also change the seg10 +; equate below. +; +Z3NDIRS EQU 28 ; 28 18-byte Named Directory Elements permitted + ; (NDIR SIZE = Z3NDIRS*18 + 1 for trailing 0) + IF Z3NDIRS NE 0 +Z3NDIR EQU seg9 ; ZCPR3 NAMED DIRECTORY AREA + ELSE +Z3NDIR EQU 0 + ENDIF + +seg10 equ seg9+512 ; add 512 for 28-entry NDR + ; add 256 for 14-entry NDR ("standard") + ; add 0 if Z3NDIRS is set to 0 + +; +; The ZCPR3 External Environment Descriptor is mandatory for ZCPR 3.3. +; Echelon recommends you work this out so that your ENV begins at address +; FE00h, but this is only a recommendation and not mandatory. +; + +Z3ENV EQU seg10 ; ENVIRONMENT DESCRIPTORS +Z3ENVS EQU 2 ; SIZE OF ENVIRONMENT DESCRIPTOR IN 128-BYTE BLOCKS + +seg11 equ seg10+[z3envs*128] + +; +; The ZCPR3 External Command Line Buffer is mandatory for ZCPR 3.3. +; + +Z3CL EQU seg11 ; ZCPR3 COMMAND LINE BUFFER +Z3CLS EQU 208 ; SIZE OF COMMAND LINE BUFFER + +seg12 equ seg11+z3cls + +; +; The ZCPR3 External Stack is mandatory for ZCPR 3.3. +; + +EXTSTK EQU seg12 ; ZCPR3 EXTERNAL STACK + +; end of Z3BASE.LIB + \ No newline at end of file diff --git a/Source/BPBIOS/ZCPR33/zcpr33.bin b/Source/BPBIOS/ZCPR33/zcpr33.bin new file mode 100644 index 0000000000000000000000000000000000000000..984d1ba6b33dc1404671cf9f0a17e6336ff08516 GIT binary patch literal 2048 zcmaJ?U2Ggz6~42(9*TAumBzg~FtrNKuK38@ckuui{@6u1sTm zuJHcM7XEwFL zBK@^vt7n6-`r}{(hl%`0{j^`5#^K&GKHZh=iPH}pbvLt3s4Y}0$Wi!F577@Dbyy!P z23XY$WaImKI+!E#Q1>d`X*NHm*ZctEc>hXqArOaNevlQME0%tfhHxAI%NlV;nC1%1 z6uGK60J*e?);MG)O!~H?3UQL?5O34Ro!05^zVbIKUVjZh>vuBr=MIhqA(bb?hzth` z3MfMIuZ)laxgN%0ZPBm3RXu>^>J(O3x_hc0DCd0BRuceb>1tX+zJh)32-xiO7l?zn6DnKB_-EQ=*1&+Fblpz|*l5A0 zJ!Lq}g&}0!K-v=-Z-B5W@LjmF-g_n^y@+;V0_d0Lv%OLp78U6zvLMptGfRGCbN@<_ z{v{jecmPbqTccmgsjam-EYi8!+O~eF7*9~!*@CRp@BUyn(5K1HkS+YxAkP z`i9>0ZTy`wtIhT>_X!NPLt;)#{i1@;h@D{xTX#>wEN zYr&hV8?!FM;79ISSqRO-Mgh=MoSQ(Io32Uh%J#-d`Z;Io6Zs#&9pOH2txQ``p;otD zptO*b|2``S@?S0OBcJVeLWF&;Aj%&Ll6*_K0Mx8lb07ww142SB7|mG$%a^2ZKnUSm zlDRyfb=QQOAmM)w*p*?Fw1O+vZR4)~Kuh0AA{#e!;iZy%rP!P0IA_sH65NPp8dM?NFM2*}?Ze zJ}^hW?WmnnxT!26ZV_6A{x+Y7{)3iNkk8mEN|7dqVW(kmpn~%Kw85G(C&Z*s6ChQ> zO_MOLAy;Sz6fa9o5O%+JY_-o-zJVkW$vm55h(pL`EM6bF1|_xx(zW&0^w>30zDe)o zA4134CdcdYjp&I#pvpeg;Yh(h=tX0YMp(YJQm!N@%Jf;bd~@m$)lIsw?6)r~=+qU{BENWGt76et{7A zD)7}~sH$zo7}pNrYk4Cohm1DhGA-s)cgj>u*X6K+ICieIn9(P*AScREcf?cbvQi@+w!A-xpzNX{#(SYrKP)HxLvMF>S1}!#w0- zZtzBHv7D){E1zfb$#p=UOj8eMA%J{kf=sctBJ`mGec4ej(=R!AoV5cmfyucLgi|pf z`#rosd%HMKKGP%4Lg}o- RDzC85lkR@%Q~ZAn{{f6JiOv83 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/ZCPR33/zcpr33.z80 b/Source/BPBIOS/ZCPR33/zcpr33.z80 new file mode 100644 index 00000000..1d490210 --- /dev/null +++ b/Source/BPBIOS/ZCPR33/zcpr33.z80 @@ -0,0 +1,4042 @@ +; PROGRAM: ZCPR +; VERSION: 3.3 +; DERIVATION: ZCPR30 +; AUTHOR: Jay Sage +; DATE: May 28, 1987 + +; ZCPR33 is copyright 1987 by Echelon, Inc. All rights reserved. End-user +; distribution and duplication permitted for non-commercial purposes only. +; Any commercial use of ZCPR33, defined as any situation where the duplicator +; recieves revenue by duplicating or distributing ZCPR33 by itself or in +; conjunction with any hardware or software product, is expressly prohibited +; unless authorized in writing by Echelon. +; +; Echelon specifically disclaims any warranties, expressed or implied, +; including but not limited to implied warranties of merchantability and +; fitness for a particular purpose. In no event will Echelon be liable for +; any loss of profit or any other commercial damage, including but not limited +; to special, incidental, consequential, or other damages. +; +; Echelon can be contacted at: +; Echelon, Inc. +; 885 N. San Antonio Road +; Los Altos, California USA 94022 +; (415) 948-3820 + + +;----------------------------------------------------------------------------- +; +; A C K N O W L E D G M E N T S +; +;----------------------------------------------------------------------------- + +; Many people have played a role in the development of ZCPR in general and +; ZCPR33 in particular. It all started when "The CCP Group," including +; Richard Conn, Ron Fowler, Keith Petersen, Frank Wancho, Charlie Strom, and +; Bob Mathias decided that by rewriting the CP/M command processor to take +; advantage of Zilog-specific opcodes they could save enough code to enhance +; some of the features. Richard Conn then extended that development through +; ZCPR2 to ZCPR3 (3.0). Just a little over two years ago, I took the first +; step to enhance ZCPR3 by making it get the maximum drive and user values +; from the environment instead of hard coding them in. This version was +; distributed privately as ZCPR31. Along the way to what is now ZCPR +; version 3.3 a number of others have made valuable contributions: Steve +; Kitahata, Michael Bate, Bruce Morgen, Roger Warren, Dreas Nielsen, Bob Freed, +; Al Hawley, Howard Goldstein, and many others who have stimulated developments +; by pointing out problems or asking questions. + +; I would like particularly to acknowledge two people who have played a very +; significant role in these developments. One is Al Hawley. He introduced +; the idea of having the DUOK flag in the environment control how the CPR +; would respond to the DU: form of directory reference. He also originated +; the idea of using the high bit of the first character of each command name +; to control whether or not it would be wheel restricted. Finally, he +; contributed the basic structure of the highly efficient, elegant, and more +; general number evaluation routines in the code. + +; My biggest debt of gratitude is to Howard Goldstein. His role in the +; development of ZCPR33 goes back about a year, when he contributed the first +; correct implementation of the minpath feature. More recently, during the +; period of intense development since Echelon expressed its interest in my +; writing the official 3.3 version, he and I have shared an especially +; enjoyable and fruitful relationship. Most of the newest ideas have been +; worked out jointly, and Howard has done a great deal to keep my code and +; concepts on track. He discovered many ways to pare the code down and, more +; importantly, uncovered numerous subtle bugs. He recoded the SAVE command +; to make it more compact and reliable. +; +; Jay Sage +; May 28,1987 + +;----------------------------------------------------------------------------- +; +; U S E R C O N F I G U R A T I O N +; +;----------------------------------------------------------------------------- + +; The following MACLIB statements load all the user-selected equates +; which are used to customize ZCPR33 for the user's working environment. +; NOTE -- TRUE & FALSE are defined in Z3BASE. + + maclib z3base.lib + maclib z33hdr.lib + +; Check that the configuration includes the required facilities + +; A ZCPR33 system is assumed to include certain minimal features, including +; an external file control block, external path, shell stack, message buffer, +; external environment descriptor, multiple command line, and external stack. +; If wheel checking is enabled in the Z33HDR.LIB file, then there must be +; an address defined for the wheel byte in the Z3BASE.LIB file. + +errflag defl extfcb eq 0 ; External command FCB +errflag defl errflag or [ expath eq 0 ] ; Symbolic path +errflag defl errflag or [ shstk eq 0 ] ; Shell stack +errflag defl errflag or [ z3msg eq 0 ] ; Message buffer +errflag defl errflag or [ z3env eq 0 ] ; Environment descriptor +errflag defl errflag or [ z3cl eq 0 ] ; Multiple command line +errflag defl errflag or [ extstk eq 0 ] ; External stack + if wheel or wdu or wpass or wprefix or whldir +errflag defl errflag or [ z3whl eq 0 ] ; Wheel byte + endif ;wheel or wdu or wpass or wprefix or whldir + + if errflag + + *** NOT ALL REQUIRED ZCPR3 FACILITIES ARE SUPPORTED *** + + else ; go ahead with the assembly + + +;----------------------------------------------------------------------------- +; +; D E F I N I T I O N S S E C T I O N +; +;----------------------------------------------------------------------------- + + +; ---------- Macro definitions + + maclib z33mac.lib ; Library of macros for ZCPR33 + + +; ---------- ASCII definitions + +ctrlc equ 03h +bell equ 07h +tab equ 09h +lf equ 0ah +cr equ 0dh + + +; ---------- Operating system addresses + +wboot equ base+0000h ; CP/M warm boot address +udflag equ base+0004h ; User number in high nybble, disk in low +bdos equ base+0005h ; BDOS function call entry point +tfcb equ base+005ch ; Default FCB buffer +tfcb2 equ tfcb+16 ; 2nd FCB +tbuff equ base+0080h ; Default disk I/O buffer +tpa equ base+0100h ; Base of TPA +;bios equ ccp+0800h+0e00h ; BIOS location + + +; ---------- Error codes + +; ZCPR33 uses the error byte at the beginning of the message buffer as a flag +; to show what kind of error occurred. Advanced error handlers will be able +; to help the user further by suggesting the possible cause of the error. +; Error code 6 for an ECP error is determined by the code and cannot be +; changed (without increasing code length). + +ecduchg equ 1 ; Directory change error -- attempt to change + ; ..logged directory when under control of + ; ..wheel byte and wheel is off + +ecbaddir equ 2 ; Bad directory specification -- logging of + ; ..user number beyond legal range, + ; ..nonexistent named directory + +ecbadpass equ 3 ; Bad password -- incorrect password entered + + +ecbadcmd equ 5 ; Bad command form -- wildcard or file type + ; ..present in command verb + +ececperr equ 6 ; ECP error -- command could not be executed + ; ..by ECP, error handling was forced by a + ; ..transient for its own reasons + ; (DO NOT CHANGE FROM 6) + +ecnocmd equ 7 ; Command file not found -- command that skips + ; ..ECP could not be executed, GET could not + ; ..find file to load + +ecambig equ 8 ; Ambiguous file specification where not + ; ..allowed (SAVE, GET, REN) + +ecbadnum equ 9 ; Bad numerical value -- not a number where + ; ..number expected, number out of range + +ecnofile equ 10 ; File not found -- REN, TYPE, LIST could not + ; ..find a specified file + +ecdiskfull equ 11 ; Disk directory or data area full + +ectpafull equ 12 ; TPA overflow error + + +; ---------- Multiple command line equates + +; The multiple command line buffer is located in a protected area in memory so +; that it is not overwritten during warm boots. It includes some pointers so +; that when ZCPR33 starts it can tell where to start reading the command line. +; BUFSIZ and CHRCNT are not used by ZCPR33 but are provided so that the BDOS +; line input function can be used to read in a command line. + +nxtchr equ z3cl ; Address where pointer to next command to + ; ..process is kept +bufsiz equ z3cl+2 ; Address where size of buffer is kept +chrcnt equ z3cl+3 ; Address where length of string actually in + ; ..the buffer is kept (not always reliable) +cmdlin equ z3cl+4 ; Address of beginning of command line buffer +buflen equ z3cls ; Length of command line buffer + + +; ---------- Command file control block + +; In ZCPR33 the file control block for commands must be located in protected +; memory. This not only frees up valuable space in the command processor for +; code but also makes it possible for programs to determine by what name they +; were invoked. + +cmdfcb equ extfcb + + +; ---------- External CPR stack + +stack equ extstk+48 ; Set top-of-stack address +pwlin equ extstk ; Place line at bottom of stack + + +; ---------- Environment + +quietfl equ z3env+28h ; Quiet flag +maxdrenv equ z3env+2ch ; Maximum drive value +maxusrenv equ z3env+2dh ; Maximum user value +duokfl equ z3env+2eh ; Flag indicating acceptance of DU: form +crttxt0 equ z3env+33h ; Address of number of lines of text on the + ; ..screen of CRT0 + + +; ---------- Message buffer + +ecflag equ z3msg ; Error return code flag +ifptrfl equ z3msg+1 ; Pointer to current IF level +ifstatfl equ z3msg+2 ; Flow control status byte +cmdstatfl equ z3msg+3 ; Command status flag +cmdptr equ z3msg+4 ; Pointer to currently running command +zexinpfl equ z3msg+7 ; ZEX input status/control flag +zexrunfl equ z3msg+8 ; ZEX running flag +errcmd equ z3msg+10h ; Error handling command line +xsubflag equ z3msg+2ch ; XSUB input redirection flag +subflag equ z3msg+2dh ; Submit running flag +curusr equ z3msg+2eh ; Currently logged user +curdr equ z3msg+2fh ; Currently logged drive + + +;----------------------------------------------------------------------------- +; +; C O D E M O D U L E S S E C T I O N +; +;----------------------------------------------------------------------------- + + page + +; ZCPR33-1.Z80 + +;============================================================================= +; +; E N T R Y P O I N T S A N D H E A D E R S T R U C T U R E +; +;============================================================================= + + if not rel ; If generating absolute code + org ccp + else + common /_BIOS_/ +bios equ $ + cseg + endif ;not rel + + +; ENTRY POINTS INTO ZCPR33 +; +; For compatibility with CP/M, two entry points are provided here. In +; standard CP/M if the code is entered from the first entry point, then the +; command in the resident command buffer is executed; if entered from the +; second entry point, the command line is flushed. With ZCPR33 and its +; multiple command line buffer, these two entry points function identically +; and go to the same address. +; +; We have kept the entry points in their standard locations but have used a +; relative jump for the second entry point and replaced the last byte with the +; version number. In this way the version number occupies a position that +; would otherwise contain the page number at which the CPR runs. It will +; always be possible, therefore, to distinguish ZCPR33 and later versions +; from other command processors. The first jump is kept as an absolute jump +; so that 1) the code will be compatible with Z-COM and Z3-DOT-COM and 2) the +; execution address of a CPR module can always be determined. + +entry: + jp zcpr + + jr zcpr + +version: + defb 33h ; Version ID squeezed in here (offset = 5) + +;----------------------------------------------------------------------------- + +; Configuration information + +options: ; (offset = 6) + optflag badduecp,rootonly,ndrenv,fcpenv,rcpenv,inclenv,aduenv,duenv + optflag highuser,drvprefix,scancur,incldir,incldu,dufirst,accptdir,accptdu + optflag no,pwcheck,pwnoecho,wdu,wpass,wprefix,fastecp,skippath + +attdir defl [ comatt eq 80h ] or [ comatt eq 01h ] or [ not attchk ] +attsys defl [ comatt eq 00h ] or [ comatt eq 01h ] or [ not attchk ] +subquiet defl [ subnoise eq 1 ] +subecho defl [ subnoise gt 1 ] + + optflag shellif,attsys,attdir,attchk,subecho,subquiet,subclue,subon + +; Byte with information about the alternate colon option. If the byte is +; zero, the option is not supported. Otherwise the byte contains the +; prefix character that serves as an alias for a colon prefix. Offset = 10. + + if altcolon + defb altchar + else + defb 0 + endif ;altcolon + +; Byte with information about the FASTECP implementation (option bit above +; indicates whether the feature is enabled at all). If no character appears +; here (zero byte), then only a leading space can be used. Otherwise, the +; first seven bits contain the character, and the high bit, if set, indicates +; that ONLY this character will be recognized and not a space. Offset = 11. + + if fastecp and altspace + if altonly + defb ecpchar + 80h + else ;not altonly + defb ecpchar + endif ;altonly + else ;no alternate character + defb 0 + endif ;fastecp and altspace + + defb 0,0,0,0 ; Space reserved for expansion + +;----------------------------------------------------------------------------- + +; Entry points to file name parsing code. + +; Entry point REPARSE. A call to this point can be used to parse a command +; line tail into the default file control blocks at 5CH and 6CH. Each time +; the parser is called it leaves the starting address of the second token in +; the PARESPTR address below so that successive calls to the routine reparse +; the command tail one token later. A program can load its own pointer into +; PARSEPTR as well. Offset = 16 (10h). + +reparse: +parseptr equ $+1 ; Pointer for in-the-code modification + ld hl,0 + jp parsetail + +; Entry point SCAN. A call to this point can be used to parse a single token +; pointed to by HL into the FCB pointed to by DE. Offset 22 (16h). + +scan: + jp scanner + +;----------------------------------------------------------------------------- + +; BUFFERS +; +; In this area various data items are kept. First comes the list of commands +; supported by ZCPR33; then comes the name of the extended command processor +; (ECP). By putting these items here, an 'H' command in the RCP or a utility +; like SHOW.COM can find this information and report it to the user. + + +; ---------- RESIDENT COMMAND TABLE + +; The command table entry is structured as follows: First there is a byte +; which indicates the number of characters in each command. Then there is a +; series of entries comprising the name of a command followed by the address +; of the entry point to the code for carrying out that command. Finally, +; there is a null byte (00h) to mark the end of the table. Offset = 25 (19h). + + +cmdtbl: + defb cmdsize ; Length of command names + ctable ; Define table via macro in Z33HDR.LIB + defb 0 ; End of table + +; ---------- NAME FOR EXTENDED COMMAND PROCESSOR + +; The name of the extended command processor is placed here after the command +; table so that utilities like SHOW or an RCP 'H' command can find it. + +ecpfcb: + ecpname ; From Z33HDR.LIB + + +; ---------- FILE TYPE FOR TRANSIENT COMMANDS (usually COM) + +; This file type also applies to the extended command processor name. + +commsg: + comtyp ; From Z33HDR.LIB + + + +; ---------- SUBMIT FILE CONTROL BLOCK + + if subon ; If submit facility enabled ... + +subfcb: + defb subdrv-'A'+1 ; Explicit drive for submit file + defb '$$$ ' ; File name + subtyp ; From Z33HDR.LIB + defb 0 ; Extent number + defb 0 ; S1 (user number 0) +subfs2: + defs 1 ; S2 +subfrc: + defs 1 ; Record count + defs 16 ; Disk group map +subfcr: + defs 1 ; Current record number + + endif ; subon + +; End ZCPR33-1.Z80 + + page + +; ZCPR33-2.Z80 + +;============================================================================= +; +; C O M M A N D L I N E P R O C E S S I N G C O D E +; +;============================================================================= + +; MAIN ENTRY POINT TO CPR + +; This is the main entry point to the command processor. On entry the C +; register must contain the value of the user/drive to be used as the current +; directory. + +zcpr: + ld sp,stack ; Reset stack + + if pwnoecho + ld a,0c3h ; Reenable BIOS conout routine + ld (bios+0ch),a ; ..after a warmboot + endif ;pwnoecho + + ld b,0fh ; Keep nibble mask in B + +; If the HIGHUSER option is enabled, we compare the user/drive in the login +; byte in C to the values stored in the message buffer. If, ignoring bit 4 +; of the user number, they match, then we remain in the current area, which +; may be a user area above 15. + + if highuser + + ld a,c ; Copy user/drive byte to A + and b ; Isolate drive + ld d,a ; ..and move to D + ld a,c ; Get full byte back + swap ; Swap nibbles + and b ; Isolate user number + ld e,a ; ..and move to E + ld hl,(curusr) ; Get old curdr/curusr into HL + sbc hl,de ; Subtract new values from old (carry is clear) + ex de,hl ; Switch new values into HL, diff into DE + ld a,d ; Combine two parts of difference + or e + and b ; Ignore bit for high user numbers + jr z,zcpr1 ; Skip update if no change in DU + ld (curusr),hl ; Update values of current drive and user +zcpr1: + + else ;not highuser + + ld a,c ; Copy user/drive byte to A + and b ; Isolate drive + ld h,a ; ..and move to H + ld a,c ; Get full byte back + swap ; Swap nibbles + and b ; Isolate user number + ld l,a ; ..and move to L + ld (curusr),hl ; ..and save them + + endif ;highuser + +; This block of code is executed when submit processing is enabled. We log +; into user area 0, where the submit file is kept, and we search the +; designated drive for the file. The result is kept in SUBFLAG. This code +; only has to be executed on reentry to the command processor at the main +; entry point. Commands that do not reboot but simply return to the CPR will +; execute without the disk reset and file search required here. Ron Fowler +; pointed out a shortcut based on the fact that after a disk reset, the A +; regiser contains a value of 0 if there is no file on drive A with a '$' in +; the file name and 0FFH if there is such a file. Thus if A = 0, there can +; be no '$$$.SUB' file on drive A. This trick is, unfortunately, not reliable +; under some versions of ZRDOS. Therefore, an option has been included to +; use or not use this shortcut. + + if subon ; If submit facility enabled .. + + call defltdma ; Set DMA address to 80H + ld a,0 ; Log into user area 0 + call setuser + ld c,0dh ; Reset disk system (returns 0FFH if a $$$.SUB + call bdossave ; ..file might exist in user 0) + ld de,subfcb ; Point to submit file FCB with explicit drive + + if subclue + call nz,srchfst ; Search only if flag says it could exist + else ;not subclue + call srchfst ; Search for the file unconditionally + endif ;subclue + + ld (subflag),a ; Set flag for result (0 = no $$$.SUB) + + else ;not subon + + ld c,0dh ; Reset disk system + call bdossave + + endif ; subon + + jr nextcmd ; Go to entry point for processing next command + + +;----------------------------------------------------------------------------- + +; NEW COMMAND LINE ENTRY POINT + +; This entry point is used when ZCPR33 finds the command line empty. A call to +; READBUF gets the next command line from the following possible sources in +; this order: +; 1) a running ZEX script +; 2) the submit file $$$.SUB (if enabled) +; 3) the shell stack +; 4) the user +; If the line comes from the shell stack, then the shell bit in the command +; status flag is set. + +restart: + ld sp,stack ; Reset stack + xor a + ld (cmdstatfl),a ; Reset ZCPR3 command status flag + inc a ; Set ZEX message byte to 1 to + ld (zexinpfl),a ; ..indicate command prompt + if subon + ld (xsubflag),a ; Ditto for XSUB flag + endif ;subon + ld hl,cmdlin ; HL --> beginning of command line buffer + ld (nxtchr),hl ; Save as pointer to next character to process + ld (hl),0 ; Zero out command line (in case of warm boot) + push hl ; Save pointer to command line + call readbuf ; Input command line (ZEX, submit, shell, + ; ..or user) + pop hl ; Get back pointer to command line + ld a,(hl) ; Check for comment line + cp comment ; Begins with comment character? + jr z,restart ; If so, go back for another line + ; Otherwise, fall through + +;----------------------------------------------------------------------------- + +; COMMAND CONTINUATION PROCESSING ENTRY POINT + +; This is the entry point for continuing the processing of an existing command +; line. The current drive and user values as known to the CPR are combined +; and made into the user/drive byte that CP/M keeps at location 0004. If the +; HIGHUSER option is enabled, the user number for this byte is forced to be +; in the range 0..15. Next the command status flag is processed. The error +; and ECP bits in the actual flag are reset, and the original flag is checked +; for an ECP error return (both ECP bit and error bit set). In that case, +; control is transferred to the error handler. + +nextcmd: + ld hl,(curusr) ; Get currently logged drive and user + ld a,l ; Work on user number + if highuser + and 0fh ; Keep value modulo 16 + endif ;highuser + swap ; Get user into high nibble + or h ; ..and drive into low nibble + ld (udflag),a ; Set user/disk flag in page 0 + + ld a,2 ; Turn ZEX input redirection off + ld (zexinpfl),a + if subon + ld (xsubflag),a ; Turn off XSUB input redirection + endif ;subon + + ld hl,cmdstatfl ; Point to the command status flag (CSF) + ld a,(hl) ; Get a copy into register A + res 1,(hl) ; Reset the actual error bit + res 2,(hl) ; Reset the actual ECP bit + and 110b ; Select ECP and error bits in original flag + cp 110b ; Test for an ECP error + jp z,error ; Process ECP error with error handler + +nextcmd1: + ld sp,stack ; Reset stack + call logcurrent ; Return to default directory + ld hl,(nxtchr) ; Point to first character of next command + push hl ; Save pointer to next character to process + +; We have to capitalize the command line each time because an alias or other +; command line generator may have stuck some new text in. The code is shorter +; if we simply capitalize the entire command rather than trying to capitalize +; only the one command we are about to execute. + +capbuf: ; Capitalize the command line + ld a,(hl) ; Get character + call ucase ; Convert to upper case + ld (hl),a ; Put it back + inc hl ; Point to next one + or a ; See if end of line (marked with null) + jr nz,capbuf ; If not, loop back + + pop hl ; Restore pointer to next character to process + +nextcmd3: + +; ZCPR33 provides a convenience feature to make it easier to enter a leading +; colon to force the current directory to be scanned and to make the CPR skip +; resident commands. If ALTCOLON is active, an alternate character can be +; entered as the first character of a command. The default (and recommended) +; alternative character is the period (it could not have any other meaning +; here). If FASTECP (see below) is not enabled or if ALTONLY is enabled, +; leading spaces on the command line are skipped before looking for the +; alternate character for the colon + + if [ not fastecp ] or [ fastecp and altonly ] + call sksp + endif ;[ not fastecp ] or [ fastecp and altonly ] + + if altcolon ; If allowing alias character for leading colon + ; Set B = ':' and C = alias character ('.') + ld bc,':' shl 8 + altchar + ld a,(hl) ; Get first character in new command line + cp c ; If first character is ALTCHAR, treat as ':' + jr nz,nextcmd3a ; Branch if not '.' + ld (hl),b ; Else replace with colon +nextcmd3a: + endif ;altcolon + + +; ZCPR33 supports three new options that can speed up command processing. +; FASTECP allows commands with a leading space to bypass the search for +; resident commands or transient commands (COM files) along the path and go +; directly to the extended command processor. With SKIPPATH enabled, when +; a command is prefixed by an explicit directory specification (but not a +; lone colon), searching of the path and invocation of the ECP are disabled. +; If the command is not found in the specified directory, the error handler +; is invoked immediately. Finally, if BADDUECP is enabled, when an attempt +; is made to log into an invalid directory, the command is sent directly to +; the ECP, which can provide special handling. To implement these three +; features, the first actual character of the command line is saved as a +; flag in FIRSTCHAR. My apologies for the complexity of these nested +; conditionals. + + if fastecp or skippath or badduecp + + ; With FASTECP we store the first actual + ; ..character and then skip over spaces (unless ALTONLY is + ; ..enabled, in which case we skipped spaces above) + + if fastecp + + if altspace ; If allowing alias character for leading space + ; Set B = ' ' and C = alias character ('/') + ld bc,' ' shl 8 + ecpchar + ld a,(hl) ; Get first character in new command line + cp c ; If first character is ECPCHAR treat as ' ' + jr nz,nextcmd3b ; Branch if not '/' (alternate character) + ld (hl),b ; Else replace with space +nextcmd3b: + endif ;altspace + + ld a,(hl) ; Get first character in command line + ld (firstchar),a ; Save it in flag + call sksp ; Then skip leading spaces + endif ;fastecp + + ; With SKIPPATH but not FASTECP we store the first + ; ..character of the command (spaces were skipped above) + + if [ not fastecp ] and skippath + ld (firstchar),a ; Store first nonspace character + endif ;[ not fastecp ] and skippath + + ; With only BADDUECP (and neither SKIPPATH nor FASTECP) + ; ..we store a null in the FIRSTCHAR flag + + if [ not fastecp ] and [ not skippath ] + xor a + ld (firstchar),a + endif ;[ not fastecp ] and [ not skippath ] + + endif ;fastecp or skippath or badduecp + +; Resume processing of the command line + + or a ; Now at end of line? + jr z,restart ; If so, get a new command line + cp ctrlc ; Flush ^C to prevent error-handler + jr z,restart ; ..invocation on warm boots + + cp cmdsep ; Is it a command separator? + jr nz,nextcmd4 ; If not, skip ahead to process the command + inc hl ; If it is, skip over it + jr nextcmd3 ; ..and process next command + +nextcmd4: + +; Unless we are now running the external error handler, the following code +; saves the address of the current command in Z3MSG+4 for use by programs +; to determine the command line with which they were invoked. + + ld a,(cmdstatfl) ; Get command status flag + bit 1,a ; Test for error handler invocation + jr nz,nextcmd5 ; If so, skip over next instruction + ld (cmdptr),hl + +nextcmd5: + call parser ; Parse entire command line, then look for + ; ..the command + + +;============================================================================= + +; C O M M A N D S E A R C H C O D E + +;============================================================================= + +; CODE FOR FINDING AND RUNNING THE COMMAND + +; Here is the code for running a command. Commands are searched for and +; processed in the following order: +; +; 1) flow control package (FCP) commands and IF state testing +; 2) resident command package (RCP) +; 3) command processor (CPR) +; 4) transient (COM file or extended command processor) +; 5) external error handler +; 6) internal error message and processing +; +; Special notes: +; +; a) If the current command is a shell command, special handling of flow +; control is required. If SHELLIF is enabled so that flow commands are +; allowed in shell alias scripts, then we reset the flow state to its +; initial condition (none) with each shell invocation (and after each +; command is run, we reset the shell bit in the code after CALLPROG). +; In this case shells will run regardless of flow state, and residual +; conditionals from the last running of the shell are flushed. Each +; shell input sequence begins afresh. On the other hand, if SHELLIF is +; off, flow control commands inside a shell script must be flushed so +; that they do not interfere with user entered commands. +; b) Directory prefixes are ignored for flow commands, since all flow control +; processing must pass through the FCP (the command must run even when +; the current flow state is false). +; c) If the command is not found in the FCP, then the current flow state is +; tested. If it is false, the command is flushed and the code branches +; back to get the next command. +; d) If the command had a directory prefix (a colon alone is sufficient), +; then steps #2 and #3 are skipped over,and the command is processed +; immediately as a transient program. +; e) In ZCPR33, unlike ZCPR30, RCP commands are scanned before CPR commands. +; This has been done so that more powerful RCP commands can supercede +; CPR commands. +; f) If the SKIPPATH option is enabled, when an explicit directory is +; specified with a command (but not just a colon), searching of the path +; is bypassed. If the FASTECP option is enabled, commands with leading +; spaces are sent directly to the ECP for processing. +; g) If no external command can be found, ZCPR33 performs extensive error +; handling. If the command error occurred while looking for a shell +; program, then the shell stack is popped. Otherwise, ZCPR33 tries to +; invoke an external, user-specified error handling command line. If +; none was specified or if the error handler invoked by that command +; line cannot be found, the internal error message (step #6) is displayed. + + +;----------------------------------------------------------------------------- + +runcmd: + if shellif ; If shells reininitialize flow control... + ld a,(cmdstatfl) ; Get command status flag + bit 0,a ; Shell bit set? + jr z,fcpcmd ; If not a shell, process command + xor a ; Otherwise, shell is running, so + ld (ifptrfl),a ; ..reinitialize the IF system and continue + endif ;shellif + + +; ---------- Module <<1>>: Flow Control Processing + +; An option is supported here to allow the address of the FCP to be obtained +; from the environment descriptor. This is logically consistent with the +; pholosopy of the Z-System and is useful when one wants to have a single block +; of FCP/RCP memory that can be allocated dynamically between FCP and RCP +; functions. + +fcpcmd: + + if fcp ne 0 ; Omit code if FCP not implemented + + if fcpenv ; If getting FCP address from Z3ENV + + ld e,12h ; Offset in Z3ENV to FCP address + call pkgoff ; Set HL to FCP+5 + jr z,runcmd1 ; Skip if no FCP present + + else ; using fixed FCP address + + ld hl,fcp+5 ; Get address from Z3BASE.LIB + + endif ;fcpenv + + +; If flow control processing is not allowed in shell aliases (scripts running +; as shell commands), then we have to make sure that we flush any flow control +; commmands, otherwise the CPR will attempt to execute them as transients, +; with dire consequences. In the code below we check the shell bit. If it +; is not set, we proceed normally. If it is set, we scan for flow commands +; and then jump past the flow testing to RUNFCP2, where the code will flush +; the command if it was a flow command and execute it unconditionally if not. + + if not shellif + ld a,(cmdstatfl) ; Get command status flag + bit 0,a ; If shell bit not set, + jr z,runfcp1 ; ..we do normal processing + call cmdscan ; Otherwise, check for flow command + jr runfcp2 ; ..and flush if so using code below + endif ;not shellif + +runfcp1: + call cmdscan ; Scan command table in the module + jr z,callprog ; Run if found (with no leading CRLF) + +; This is where we test the current IF state. If it is false, we skip this +; command. + + call iftest ; Check current IF status + +runfcp2: ; If false, skip this command and go on to next + if drvprefix ; If DRVPREFIX we can use code below + jr z,jpnextcmd ; ..to save a byte + else ; Otherwise, we have to do an + jp z,nextcmd ; ..absolute jump + endif ;drvprefix + + endif ;fcp ne 0 + + +runcmd1: + if fastecp or badduecp + ld a,(firstchar) ; If FIRSTCHAR flag set for ECP invocation, + cp ' ' ; ..then go straight to transient processing + jr z,com + endif ;fastecp or badduecp + +colon equ $+1 ; Flag for in-the-code modification + ld a,0 ; If command had a directory prefix (even just + or a ; ..a colon) then skip over resident commands + jr nz,comdir + + +; ---------- Module <<2>>: RCP Processing + +; An option is supported here to allow the address of the RCP to be obtained +; from the environment descriptor. This is logically consistent with the +; pholosopy of the Z-System and is useful when one wants to have a single block +; of FCP/RCP memory that can be allocated dynamically between FCP and RCP +; functions. + + if rcp ne 0 ; Omit code if RCP not implemented + +rcpcmd: + + if rcpenv ; If getting address of rcp from Z3ENV + + ld e,0ch ; Offset in Z3ENV to RCP address + call pkgoff ; Set HL to address of RCP+5 + jr z,cprcmd ; Skip if no RCP + + else ; using fixed RCP address + + ld hl,rcp+5 ; Get address from Z3BASE.LIB + + endif ; rcpenv + + call cmdscan ; Check for command in RCP + jr z,callproglf ; If so, run it (with leading CRLF) + + endif ;rcp ne 0 + + +; ---------- Module <<3>>: CPR-Resident Command Processing + +cprcmd: + + ld hl,cmdtbl ; Point to CPR-resident command table + call cmdscan ; ..and scan for the command + jr z,callprog ; If found, run it (with no leading CRLF) + + + +; ---------- Module <<4>>: Transient Command Processing + +comdir: ; Test for DU: or DIR: only (directory change) + + if drvprefix + + ld a,(cmdfcb+1) ; Any command name? + cp ' ' + jr nz,com ; If so, must be transient or error + + ; Entry point for change of directory only + + if wdu ; If controlled by wheel.. + + ld a,(z3whl) ; Get wheel byte + or a ; If wheel on, go on ahead + jr nz,comdir1 + + if badduecp + ld (colon),a ; Pretend there is no colon + ld a,' ' ; Force invocation of ECP + ld (firstchar),a + jr com + else ;not badduecp + ld a,ecduchg + jr z,error + endif ;badduecp + + endif ; wdu + +comdir1: + ld hl,(tempusr) ; Get temporary drive and user bytes + + if not highuser ; If only users 0..15 can be logged + ld a,l ; Get user number and + cp 16 ; ..make sure not above 15 + jr nc,baddirerr ; If out of range, invoke error handling + endif ;not highuser + + dec h ; Shift drive to range 0..15 + ld (curusr),hl ; Make the temporary DU into the current DU + call logcurrent ; Log into the new current directory +jpnextcmd: + jp nextcmd ; Resume command line processing + + else ;not drvprefix + + if badduecp + xor a ; Pretend there is no colon + ld (colon),a + ld a,' ' ; Force invocation of ECP + ld (firstchar),a + else ;not badduecp + ld a,ecduchg + jr z,error + endif ;badduecp + + endif ;drvprefix + + +com: ; Process transient command + + ld a,(cmdstatfl) ; Check command status flag to see if + and 2 ; ..error handler is running + ld (zexinpfl),a ; Store result in ZEX control flag (2 will turn + ; ..ZEX input redirection off (0 = on) + if subon + ld (xsubflag),a ; Turn off XSUB input redirection also + endif ;subon + + ld hl,tpa ; Set default execution/load address + ld a,3 ; Dynamically load type-3 and above ENVs + call mload ; Load memory with file specified in cmd line + ld a,(cmdstatfl) ; Check command status flag to see if + and 100b ; ..ECP running (and suppress leading CRLF) + +; CALLPROG is the entry point for the execution of the loaded program. At +; alternate entry point CALLPROGLF if the zero flag is set, a CRLF is sent to +; the console before running the program. + +callproglf: + call z,crlf ; Leading new line + +callprog: + ; Copy command tail into TBUFF + +tailsv equ $+1 ; Pointer for in-the-code modification + ld hl,0 ; Address of first character of command tail + ld de,tbuff ; Point to TBUFF + push de ; Save pointer + ld bc,7e00h ; C=0 (byte counter) and B=7E (max bytes) + inc de ; Point to first char +tail: + ld a,(hl) ; Get character from tail + call tsteol ; Check for EOL + jr z,tail1 ; Jump if we are done + ld (de),a ; Put character into TBUFF + inc hl ; Advance pointers + inc de + inc c ; Increment character count + djnz tail ; If room for more characters, continue + call print ; Display overflow message + db bell ; ..ring bell + db 'Ovf','l'+80h ; ..then continue anyway +tail1: + xor a ; Store ending zero + ld (de),a + pop hl ; Get back pointer to character count byte + ld (hl),c ; Store the count + +; Run loaded transient program + + call defltdma ; Set DMA to 0080h standard value + +; Perform automatic installation of Z3 programs (unless type-2 environment) + + ld hl,(execadr) ; Get current execution address + call z3chk ; See if file is a Z3 program + jr nz,noinstall ; Branch if not + + cp 2 ; If type-2 (internal) environment + jr z,noinstall ; ..do not perform installation + + inc hl ; Advance to place for ENV address + ld (hl),low z3env ; Put in low byte of environment address + inc hl + ld (hl),high z3env ; Put in high byte + +noinstall: + +; Execution of the program occurs here by calling it as a subroutine + + ld hl,z3env ; Pass environment address to program in HL +execadr equ $+1 ; Pointer for in-line code modification + call 0 ; Call transient + +; Return from execution + + if shellif ; If flow processing allowed in shells... + ld hl,cmdstatfl ; Reset the shell bit in the command status + res 0,(hl) ; ..flag so multiple-command shells will work + endif ;shellif + + ; Continue command processing + if drvprefix ; If DRVPREFIX we can save a byte by + jr jpnextcmd ; ..doing a two-step relative jump + else ; Otherwise, we just have to do + jp nextcmd ; ..the absolute jump + endif ;drvprefix + + +; ---------- Module <<5>>: External Error Handler Processing + +baddirerr: + ld a,ecbaddir ; Error code for bad directory specification + +error: + +; If we are returning from an external command to process an error, we want +; to leave the error return code as it was set by the transient program. + + ld hl,cmdstatfl ; Point to command status flag + bit 3,(hl) ; Check transient error flag bit + jr nz,error1 ; If set, leave error code as set externally + ld (ecflag),a ; Otherwise, save error code from A register + +error1: + res 2,(hl) ; Reset the ECP bit to prevent recursion of + ; ..error handler by programs that don't + ; ..clear the bit + bit 0,(hl) ; Was error in attempting to run a shell? + jr nz,errsh ; If so, pop shell stack + +; The following code is included to avoid a catastrophic infinite loop when +; the external error handler cannot be found. After one unsuccessful try, +; the internal code is invoked. + + bit 1,(hl) ; Was an error handler already called? + jr nz,errintrnl ; If so, use internal error handler + +; If the current IF state is false, we would like to ignore the error and just +; go on with the next command. Unfortunately, for some errors (e.g., a bad +; command format such as a command with a wildcard character) the error handler +; is invoked before the pointer in the multiple command line buffer is set up +; to the next command. In that case, we fall into an infinite loop. We also +; must not allow the external error handler to run, since it will not run and +; we will again fall into an infinite loop. The present code is not so bad, of +; course, since even a command in a false part of a command sequence should not +; have a true error in it. We have already put in code to bypass password +; checking during a false IF state, since a command with a password is not an +; invalid command. + + if fcp ne 0 + call iftest ; If we are in a false IF state, external + jr z,errintrnl ; ..handler will not run, so use built-in + endif ;fcp ne 0 + + set 1,(hl) ; Set command status flag for error invocation + ld hl,errcmd ; Point to error handler command line + ld a,(hl) ; Check first byte for presence of an + or a ; ..error command line + jr z,errintrnl ; If no error handler, use built-in one + ld (nxtchr),hl ; Else, use error command line as next command + jp nextcmd1 ; Run command without resetting status flag + + +; ---------- Module <<6>>: Resident Error Handler Code + +; If the error is with the invocation of a shell command, we pop the bad shell +; command off the stack to prevent recursion of the error. We then use the +; the internal error handler to echo the bad shell command. + +errsh: + + ld de,shstk ; Point to current entry in shell stack + ld hl,shstk+shsize ; Point to next entry in stack + ld bc,[shstks-1]*shsize ; Bytes to move + ldir ; Pop the stack + xor a ; Clear the last entry position + ld (de),a + +errintrnl: + if subon + call subkil ; Terminate active submit file if any + endif ;subon + + call crlf ; New line + ld hl,(cmdptr) ; Point to beginning of bad command + call printhl ; Echo it to console + call print ; Print '?' + defb '?'+80h + jp restart ; Restart CPR + +; End ZCPR33-2.Z80 + + page + +; ZCPR33-3.Z80 + +;============================================================================= +; +; C O M M A N D L I N E P A R S I N G C O D E +; +;============================================================================= + +; This code parses the command line pointed to by HL. The command verb is +; parsed, placing the requested program name into the command file control +; block. The drive and user bytes are set. If an explicit DU or DIR was +; given, the COLON flag is set so that the processor knows about this later +; when the command search path is built. + +parser: + + ld de,cmdfcb ; Point to the command FCB + push de + call initfcb ; Initialize the FCB + pop de + ld (duerrflag),a ; Store zero (INITFCB ends with A=0) into flag + call scanner ; Parse first token on command line into FCB + jr nz,badcmd ; Invoke error handler if '?' in command + +duerrflag equ $+1 ; Pointer for in-the-code modification + ld a,0 ; See if bad DU/DIR specified with command verb + or a + + if badduecp + jr z,parser1 ; If DU/DIR is OK, skip ahead + ld a,(cmdstatfl) ; If ECP already running + bit 2,a ; ..skip ahead + jr nz,parser1 + ld a,(cmdfcb+1) ; If not a directory change command + sub ' ' ; ..invoke error handler + jr nz,baddirerr + ; If bad directory change attempt, + ld (tmpcolon),a ; ..pretend there is no colon (A=0) + ld a,' ' ; ..and force immediate ECP invocation + ld (firstchar),a ; ..when command is processed + else ; If errors not processed by ECP then + jr nz,baddirerr ; ..invoke error handler + endif ; badduecp + +parser1: + ld de,cmdfcb+9 ; Make sure no explicit file type was given + ld a,(de) ; Get first character of file type + cp ' ' ; Must be blank +badcmd: + ld a,ecbadcmd ; Error code for illegal command form + jr nz,error ; If not, invoke error handler + + push hl ; Save pointer to next byte of command + ld hl,commsg ; Place default file type (COM) into FCB + ld bc,3 + ldir + pop hl ; Get command line pointer back + +; The following block of code is arranged so that the COLON flag is set only +; when an explicit directory specification is detected in the command verb. +; Other parses also change the TMPCOLON flag, but only when passing here does +; the flag get transferred to COLON. + +tmpcolon equ $+1 ; Pointer for in-the-code modification + ld a,0 ; ..by SCANNER routine + ld (colon),a ; If explicit DU/DIR, set COLON flag + +; Find the end of this command and set up the pointer to the next command. + + push hl ; Save command line pointer + dec hl ; Adjust for preincrementing below +parser2: ; Find end of this command + inc hl ; Point to next character + ld a,(hl) ; ..and get it + call tsteol ; Test for end of command + jr nz,parser2 ; Keep looping if not + + ld (nxtchr),hl ; Set pointer to next command + pop hl ; Get back pointer to current command tail + +; This block of code parses two tokens in the command line into the two +; default FCBs at 5Ch and 6Ch. It also sets a pointer to the command tail +; for later copying into the command tail buffer at 80h. This code is used +; first when attempting to parse a normal command line and possibly again +; later when the entire user's command is treated as a tail to the extended +; command processor. The resident JUMP and SAVE commands use it also, and +; the entry point is available at location CCP+9 for use by other programs. + +parsetail: + ld (tailsv),hl ; Save pointer to command tail + + ; Process first token + + ld de,tfcb ; Point to first default FCB + push de ; Save pointer while initializing + call initfcb ; Initialize both default FCBs + pop de + call sksp ; Skip over spaces in command line + call nz,scanner ; If not end of line, parse the token + ; ..into first FCB + ld (parseptr),hl ; Save pointer to second token for reparsing + + ; Process second token + + call sksp ; Skip over spaces + ret z ; Done if end of line or end of command + ld de,tfcb2 ; Point to second default FCB + ; ..and fall through to SCANNER routine + +;----------------------------------------------------------------------------- + +; This routine processes a command line token pointed to by HL. It attempts +; to interpret the token according to the form [DU:|DIR:]NAME.TYP and places +; the corresponding values into the FCB pointed to by DE. On exit, HL points +; to the delimiter encountered at the end of the token. The Z flag is set if +; a wild card was detected in the token. + +scanner: + xor a ; Initialize various flags + ld (tmpcolon),a ; Set no colon + ld bc,(curusr) ; Get current drive and user into BC + inc b ; Shift drive range from 0..15 to 1..16 + ld (tempusr),bc ; Initialize temporary DU + + call scanfld8 ; Extract possible file name + cp ':' ; Was terminating character a colon? + jr nz,scantype ; If not, go on to extract file type + ld (tmpcolon),a ; Otherwise, set colon and process DU/DIR + inc hl ; Point to character after colon + +; Code for resolving directory specifications (macro RESOLVE is defined in +; Z33MAC.LIB). RESOLVE returns with a nonzero value and a NZ flag setting +; if the DU/DIR specification cannot be resolved. There are quite a few +; possibilities here. + + ; Case where both forms are accepted + + if accptdir and accptdu + if dufirst + resolve du,dir ; Check DU: form before DIR: form + else + resolve dir,du ; Check DIR: form before DU: form + endif ;dufirst + endif ;accptdir and accptdu + + ; Cases of only one form accepted + + if accptdu and not accptdir + resolve du, ; Check only DU: form + endif ;accptdu and not accptdir + + if accptdir and not accptdu + resolve dir, ; Check only DIR: form + endif ;accptdir and not accptdu + + ; Case of neither form accepted + + if not accptdir and not accptdu + push hl ; Save pointer to command string + inc de ; Point to first character of name + ld a,(de) ; Get it + dec de ; Restore the pointer + sub ' ' ; If no name is there, A=0 and Z flag set + endif ;not accptdir and not accptdu + + push de ; Save pointer to FCB again + push af ; Save bad directory flag + ld a,(tempdr) ; Set designated drive + ld (de),a ; ..into FCB + inc de ; Point to file name field + call ifcb ; Perform partial init (set user code) + pop af ; Get bad directory flag back + ld (duerrflag),a ; Save flag in parser code + jr z,scanner1 ; Branch if valid directory specified + dec de ; Back up to record count byte + dec de + ld (de),a ; Store error flag there (NZ if error) +scanner1: + pop de ; Get FCB pointer back + pop hl ; Restore pointer to command string + call scanfld8 ; Scan for file name + +; This code processes the file type specification in the token + +scantype: + ld a,(hl) ; Get ending character of file name field + ex de,hl ; Switch FCB pointer into HL + ld bc,8 ; Offset to file type field + add hl,bc + ex de,hl ; Switch pointers back + + ld b,3 ; Maximum characters in file type + cp '.' ; See if file type specified + jr nz,scantype2 ; If not, skip over file type parsing + + inc hl ; Point to character after '.' + push de ; Save pointer to FCB file type + call scanfield ; Parse file type into FCB + pop de + +scantype2: + ex de,hl ; Swap pointers again + ld bc,5 ; Offset from file type to S1 field in FCB + add hl,bc + ex de,hl ; Swap pointers back + ld a,(tempusr) ; Get specified user number + ld (de),a ; ..and store in S1 byte of FCB + +scan3: ; Skip to space character, character after an + ; ..equal sign, or to end of command + ld a,(hl) ; Get next character + cp ' '+1 ; Done if less than space + jr c,scan4 + call tsteol ; Done if end of line or end of command + jr z,scan4 + inc hl ; Skip on to next character + cp '=' ; If not equal sign + jr nz,scan3 ; ..keep scanning + +scan4: ; Set zero flag if '?' in filename.typ + +qmcnt equ $+1 ; Pointer for in-the-code modification + ld a,0 ; Number of question marks + or a ; Set zero flag + ret + +; This routine invokes SCANFIELD for a file name field. It initializes the +; question mark count and preserves the FCB pointer. + +scanfld8: + xor a ; Initialize question mark count + ld (qmcnt),a + push de ; Save pointer to FCB + ld b,8 ; Scan up to 8 characters + call scanfield + pop de ; Restore pointer to FCB + ret + +; This routine scans a command-line token pointed to by HL for a field whose +; maximum length is given by the contents of the B register. The result is +; placed into the FCB buffer pointed to by DE. The FCB must have had its name +; and type fields initialized before this routine is called. Wild cards of +; '?' and '*' are expanded. On exit, HL points to the terminating delimiter. + +scanfield: + call sdelm ; Done if delimiter encountered + ret z + inc de ; Point to next byte in FCB + cp '*' ; Is character a wild card? + jr nz,scanfld1 ; Continue if not + + ld a,'?' ; Process '*' by filling with '?'s + ld (de),a + call qcountinc ; Increment count of question marks + jr scanfld2 ; Skip so HL pointer left on '*' + +scanfld1: ; Not wildcard character '*' + ld (de),a ; Store character in FCB + inc hl ; Point to next character in command line + cp '?' ; Check for question mark (wild) + call z,qcountinc ; Increment question mark count +scanfld2: + djnz scanfield ; Decrement char count until limit reached +scanfld3: + call sdelm ; Skip until delimiter + ret z ; Zero flag set if delimiter found + inc hl ; Pt to next char in command line + jr scanfld3 + + +; Subroutine to increment the count of question mark characters in the +; parsed file name. + +qcountinc: + push hl + ld hl,qmcnt ; Point to count + inc (hl) ; Increment it + pop hl + ret + +;----------------------------------------------------------------------------- + +; Validate the password pointed to by HL. Prompt user for password entry +; and return zero if it is correct. + + if pwcheck + +passck: + push hl ; Save pointer to password + call print ; Prompt user + defb cr,lf,'PW?',' '+80h + ld hl,pwlin ; Set up buffer for user input + ld bc,90ah ; Set 0ah (BDOS readln function) in C + ld (hl),b ; ..and 9 (max character count) in B + ex de,hl ; Switch buffer pointer to DE + + if pwnoecho + ld a,0c9h ; Disable BIOS conout routine to + ld (bios+0ch),a ; ..suppress password echoing + call bdossave ; Get user input + ld a,0c3h ; Reenable BIOS conout routine + ld (bios+0ch),a + else ;not pwnoecho + call bdossave ; Get user input + endif ;pwnoecho + + ex de,hl ; Restore pointer to HL + inc hl ; Point to count of characters entered + ld a,(hl) ; Get character count + inc hl ; Point to first character + push hl ; Save pointer while marking end of input + call addah ; Advance HL to just past last character + ld (hl),' ' ; Place space there + pop de ; Restore pointer to beginning of user input + pop hl ; Restore pointer to password from NDR + ld b,8 ; Maximum characters to compare +pwck: + ld a,(de) ; Get next user character + call ucase ; Capitalize it + cp (hl) ; Compare to NDR + ret nz ; No match + cp ' ' ; If last user character matched space in + ret z ; ..NDR, then we have a complete match + inc hl ; If not done, point to next characters + inc de + djnz pwck ; (flags not affected by DJNZ) + xor a ; Set zero flag and + ret ; ..return Z to show success + + endif ; pwcheck + +;----------------------------------------------------------------------------- + +; This code attempts to interpret the token in the FCB pointed to by register +; pair DE as a DIR (named directory) prefix. If it is successful, the drive +; and user values are stored in TEMPDR and TEMPUSR, the zero flag is set, and +; a value of zero is returned in register A. +; +; If the named directory is found to be password restricted, then the user is +; asked for the password (unless the directory is the one currently logged or +; the current IF state is false). If an incorrect password is entered, the +; error handler is generally invoked directly. The exception to this is when +; the transient program bit is set in the command status flag (this bit would +; be set by a non-CPR program that calls REPARSE). In this case the default +; directory is returned, the zero flag is reset, and a nonzero value in +; returned in register A to show a bad directory. In addition, the code in +; SCANNER will set record-count byte in the FCB to a nonzero value so that +; the calling program can detect the error. [Note: if DU processing is also +; allowed and it follows DIR processing, DUSCAN will also be called. Unless +; there is a passworded directory with a DU form, this will cause no trouble.] + + if accptdir + +dirscan: + +; If the DU form is not allowed, we have to detect a colon-only condition here. +; Otherwise DUSCAN will take care of it. + + inc de ; Point to first byte of directory form + + if not accptdu + ld a,(de) ; Get first character of directory + sub ' ' ; If it is a blank space + ret z ; ..we have a successful directory resolution + endif ;not accptdu + + ex de,hl ; Switch pointer to FCB to HL + + if ndrenv ; If getting NDR address for Z3ENV + ld e,15h ; Offset to NDR address + push hl ; Preserve pointer to FCB + call pkgoff ; Get NDR address from ENV into DE + pop hl + jr z,direrr ; Branch if no NDR implemented + else ; using fixed address of NDR buffer + ld de,z3ndir ; Point to first entry in NDR + endif ; ndrenv + +dirscan1: + ld a,(de) ; Get next character + or a ; Zero if end of NDR + jr z,direrr + inc de ; Point to name of directory + inc de + push hl ; Save pointer to name we are looking for + push de ; Save pointer to NDR entry + ld b,8 ; Number of characters to compare + +dirscan2: + ld a,(de) + cp (hl) + jr nz,dirscan3 ; If no match, quit and go on to next DIR + inc hl ; Point to next characters to compare + inc de + djnz dirscan2 ; Count down + +dirscan3: + pop de ; Restore pointers + pop hl + jr z,dirscan4 ; Branch if we have good match + + ex de,hl ; Advance to next entry in NDR + ld bc,16 ; 8 bytes for name + 8 bytes for password + add hl,bc + ex de,hl + jr dirscan1 ; Continue comparing + +; If ACCPTDU is enabled, we can share similar code in DUSCAN and do not need +; the code here. + + if not accptdu +direrr: ; No match found + dec a + ret + endif ;not accptdu + +dirscan4: ; Match found + ex de,hl ; Switch pointer to NDR entry into HL + push hl ; ..and save it for later + dec hl ; Point to user corresponding to the DIR + ld c,(hl) ; Get user value into C + dec hl ; Point to drive + ld b,(hl) ; Get it into B + + if pwcheck + + ld hl,(curusr) ; Get current drive/user into HL + inc h ; Shift drive to range 1..16 + xor a ; Clear carry flag + sbc hl,bc ; Compare + pop hl ; Restore pointer to NDR entry + jr z,setdu ; If same, accept values without PW checking + +; If WPASS is set, then password checking is bypassed when the wheel byte is +; set. + + if wpass + ld a,(z3whl) ; Get wheel byte + or a ; If wheel byte set + jr nz,setdu ; ..skip checking passwords + endif ;wpass + +; This code is a bit tricky. We do not want to be asked for passwords for +; named directory references in commands when the current IF state is false. +; So, first we check to see if there is a password on the directory. If not, +; we proceed to set the temporary DU to the specified directory. If there is +; a password, we check the current IF state. If it is false, we do not check +; passwords and pretend there was no password. However, we leave the current +; directory in effect. This will work properly in all but one rare +; circumstance. When the command is an 'OR' command with a reference to a +; passworded named directory (e.g., "OR EXIST SECRET:FN.FT"), the password +; will not be requested and the current directory will be used instead of the +; specified one. + + push bc ; Save requested drive/user + ld bc,8 ; Point to password in NDR + add hl,bc + ld a,(hl) ; Get first character of password + cp ' ' ; Is there a password? + + if fcp eq 0 ; If FCP not implemented ... + + call nz,passck ; Perform password checking if pw present + + else ;fcp ne 0 ; FCP implemented ... + + jr z,dirscan5 ; If no pw, skip ahead + call iftest ; Otherwise, test current IF state + pop bc ; Restore BC in case we return now + ret z ; If false IF in effect, fake success without + ; ..checking password (but TEMPDR/TEMPUSR not + ; ..set) + push bc ; Otherwise, save BC again + call passck ; Perform password checking + + endif ;fcp eq 0 + +dirscan5: + pop bc ; Restore requested drive/user + jr z,setdu ; If not bad password, set it up + ld a,(cmdstatfl) ; See if external invocation (disable + bit 3,a ; ..error handling if so) + ret nz ; Return NZ to show bad directory + ld a,ecbadpass ; Error code for bad password + jp error + + else ;not pwcheck + + pop hl ; Clean up stack + if accptdu ; If we cannot fall through, branch + jr setdu + endif ;accptdu + + endif ;pwcheck + + if not accptdu ; If NOT ACCPTDU, we have to supply code here +setdu: + ld (tempusr),bc + xor a ; Set Z to flag success + ret + endif ;not accptdu + + endif ;accptdir + +;----------------------------------------------------------------------------- + +; This code attempts to interpret the token in the FCB pointed to by register +; pair DE as a DU (drive/user) prefix. If it is successful, the drive and +; user values are stored in TEMPDR and TEMPUSR, the zero flag is set, and a +; value of zero is returned in register A. Otherwise the zero flag is reset +; and a nonzero value is returned in register A. +; +; The ADUENV option allows acceptance of the DU form to be controlled by the +; DUOK flag in the environment descriptor. An additional feature of this code +; when the ADUENV option is enabled is that a DU value is always accepted, +; even if DUOK is off and even if it is outside the normally allowed range, +; if it corresponds to a named directory with no password. The currently +; logged directory is unconditionally acceptable (if you got there once, you +; can stay as long as you like without further hassles). + + if accptdu ; Allow DU: form + +direrr: ; This code may do double duty for DIRSCAN + ; ..above +duerr: + xor a ; Return NZ to show failure + dec a + ret + +duscan: + ex de,hl ; Switch FCB pointer to HL + inc hl ; Point to first byte of file name in FCB + + ld bc,(curusr) ; Preset C to current user, B to current drive + ld a,(hl) ; Get possible drive specification + sub 'A' ; Otherwise convert to number 0..15 + jr c,duscan1 ; If < 0, leave B as is + cp 16 + jr nc,duscan1 ; If > 15, leave B as is + ld b,a ; Otherwise use value given + inc hl ; ..and point to next character + +duscan1: + inc b ; Shift drive to range 1..16 + ld a,(hl) ; Get possible user specification + cp ' ' + jr z,duscan2 ; If none present, leave C as is + push bc ; Save DU values in BC + call decimal1 ; Get specified decimal user number into BC + pop hl ; Restore values to HL + jr c,duerr ; Return NZ if invalid decimal conversion + ld a,b ; Get high byte of result + or a ; Make sure it is zero + ret nz ; If not, return NZ to show bad user number + ld b,h ; DU value is now in BC + +; If the specified directory is the currently logged directory, accept it +; even if it is out of range and/or password protected. + +duscan2: + ld hl,(curusr) ; Get current drive/user into HL + inc h ; Shift drive to range 1..16 + xor a ; Clear carry flag + sbc hl,bc ; Compare values + jr z,setdu + +; If the specified DU corresponds to a named directory with no password, or +; if WPASS is enabled so that password checking is not performed when the +; wheel byte is set, then accept it. + + if z3ndir ne 0 + + call du2dir ; See if there is a matching named directory + jr z,duscan3 ; If not, skip on + + if pwcheck ; If passwords are being checked... + + if wpass + ld a,(z3whl) ; Get wheel byte + or a ; If wheel byte set, skip checking passwords + jr nz,setdu ; ..and accept the DU values + endif ;wpass + + ld de,9 ; Advance to password + add hl,de + ld a,(hl) ; Get first character of password + cp ' ' + jr z,setdu ; If none, we have a valid DU + + else ;not pwcheck + + jr setdu ; Set the DU + + endif ;pwcheck + + endif ;z3ndir ne 0 + +duscan3: + if aduenv ; Check DUOK flag in ENV + ld a,(duokfl) ; Get flag + or a ; If DU not accepted + jr z,duerr ; ..skip over the DU scan + endif ;aduenv + + if duenv ; If getting max drive and user from ENV + ld hl,(maxdrenv) ; Get max drive into L and max user into H + ld a,l ; Test drive value + cp b + jr c,duerr + ld a,h ; Test user value + cp c + jr c,duerr + else ; Using fixed values of max DU + ld a,maxdisk + cp b + jr c,duerr + ld a,maxusr + cp c + jr c,duerr + endif ;duenv + +setdu: + ld (tempusr),bc + xor a ; Set Z to flag success + ret + + endif ; accptdu + +; End ZCPR33-3.Z80 + + page + +; ZCPR33-4.Z80 + +;============================================================================= +; +; G E N E R A L S U B R O U T I N E S S E C T I O N +; +;============================================================================= + + +;----------------------------------------------------------------------------- +; +; CHARACTER I/O BDOS ROUTINES +; +;----------------------------------------------------------------------------- + +; Get uppercase character from console (with ^S processing). Registers B, +; D, H, and L are preserved. The character is returned in A. + +conin: + ld c,1 ; BDOS conin function + call bdossave + ; Fall through to UCASE + +;-------------------- + +; Convert character in A to upper case. All registers except A are preserved. + +ucase: + and 7fh ; Mask out msb + cp 61h ; Less than lower-case 'a'? + ret c ; If so, return + cp 7bh ; Greater than lower-case 'z'? + ret nc ; If so, return + and 5fh ; Otherwise capitalize + ret + +;---------------------------------------- + +; Output CRLF + +crlf: + call print + db cr + db lf or 80h + ret + +;---------------------------------------- + +; Output character in A to the console. All registers are preserved. + +conout: + push de + push bc + ld c,2 ; BDOS conout function +output: ; Entry point for LCOUT below + ld e,a + call bdossave + pop bc + pop de + ret + +;---------------------------------------- + +; Print the character string immediately following the call to this routine. +; The string terminates with a character whose high bit is set or with a null. +; At entry point PRINTC the string is automatically preceded by a +; carriage-return-linefeed sequence. All registers are preserved except A. + +printc: + call crlf ; New line + +print: + ex (sp),hl ; Get pointer to string + call printhl ; Print string + ex (sp),hl ; Restore HL and set return address + ret + +;---------------------------------------- + +; Print the character string pointed to by HL. Terminate on character with +; the high bit set or on a null character. On return HL points to the byte +; after the last character displayed. All other registers except A are +; preserved. + +printhl: + ld a,(hl) ; Get a character + inc hl ; Point to next byte + or a ; End of string null? + ret z + push af ; Save flags + and 7fh ; Mask out msb + call conout ; Print character + pop af ; Get flags + ret m ; String terminated by msb set + jr printhl + + +;----------------------------------------------------------------------------- +; +; FILE I/O BDOS ROUTINES +; +;----------------------------------------------------------------------------- + +; Read a record from a file to be listed or typed + + if lton ; Only needed for LIST and TYPE functions + +readf: + ld de,tfcb + jr read + + endif ; lton + +;---------------------------------------- + +; Read a record from the command file named in CMDFCB + +readcmd: + ld de,cmdfcb + +; Read a record from file whose FCB is pointed to by DE + +read: + ld c,14h ; Read-sequential function + ; Fall through to BDOSSAVE + +;-------------------- + +; Call BDOS for read and write operations. The flags are set appropriately. +; The BC, DE, and HL registers are preserved. + +bdossave: + putreg + call bdos + getreg + or a ; Set flags +note: ; This return is used for NOTE command, too + ret + + +;----------------------------------------------------------------------------- +; +; MISCELLANEOUS BDOS ROUTINES +; +;----------------------------------------------------------------------------- + +; Set DMA address. At the entry point DEFLTDMA the address is set to the +; default value of 80H. At the entry point DMASET it is set to the value +; passed in the DE registers. + +defltdma: + ld de,tbuff +dmaset: + ld c,1ah + jr bdossave + +;---------------------------------------- + +; Log in the drive value passed in the A register (A=0). + +setdrive: + ld e,a + ld c,0eh + jr bdossave + +;---------------------------------------- + +; Open a file. At entry point OPENCMD the file is the one specified in +; CMDFCB, and the current record is set to zero. At entry point OPEN +; the file whose FCB is pointed to by DE is used. + +opencmd: + xor a ; Set current record to 0 + ld (cmdfcb+32),a + ld de,cmdfcb ; Command file control block + ; Fall through to open + +open: + ld c,0fh ; BDOS open function + ; Fall through to BDOSTEST + +;-------------------- + +; Invoke BDOS for disk functions. This routine increments the return code in +; register A so that the zero flag is set if there was an error. Registers +; BC, DE, and HL are preserved. + +bdostest: + call bdossave + inc a ; Set zero flag for error return + ret + +;---------------------------------------- + +; Close file whose FCB is pointed to by DE. + + if saveon or subon +close: + ld c,10h + jr bdostest + endif ;saveon or subon + +;---------------------------------------- + +; Search for first matching file. At entry point SRCHFST1 the first default FCB +; is used. At entry point SRCHFST the FCB pointed to by DE is used. + + if diron or eraon or renon or saveon +srchfst1: + ld de,tfcb ; Use first default FCB + endif ;diron or eraon or renon or saveon + +srchfst: + ld c,11h + jr bdostest + +;----------------------------------------------------------------------------- + +; Search for next matching file whose FCB is pointed to by DE. + + if diron or eraon ; Only needed by DIR and ERA functions +srchnxt: + ld c,12h + jr bdostest + endif ; diron or eraon + +;----------------------------------------------------------------------------- + +; Kill any submit file that is executing. + + if subon + +subkil: + ld hl,subflag ; Check for submit file in execution + ld a,(hl) + or a ; 0=no + ret z ; If none executing, return now + ; Kill submit file + xor a + ld (hl),a ; Zero submit flag + call setuser ; Log in user 0 + ld de,subfcb ; Delete submit file + ; ..by falling through to delete routine + + endif ; subon + +;-------------------- + +; Delete file whose FCB is pointed to by DE. + + if eraon or renon or saveon or subon +delete: + ld c,13h + jr bdossave + endif ;eraon or renon or saveon or subon + +;----------------------------------------------------------------------------- + +; Get and set user number. Registers B, D, H, and L are preserved. Register +; E is also preserved at entry point SETUSER1. + +getuser: + ld a,0ffh ; Get current user number +setuser: + ld e,a ; User number in E +setuser1: + ld c,20h ; Get/Set BDOS function + jr bdossave + + +;----------------------------------------------------------------------------- +; +; GENERAL UTILITY ROUTINES +; +;----------------------------------------------------------------------------- + + +; This subroutine checks to see if a program loaded at an address given by HL +; has a Z3ENV header. If the header is not present, the zero flag is reset. +; If it is present, the zero flag is set, and on return HL points to the +; environment-type byte and A contains that byte. + +z3chk: + ld de,z3env+3 ; Point to 'Z3ENV' string in ENV + inc hl ; Advance three bytes to possible program + inc hl ; ..header + inc hl + ld b,5 ; Characters to compare +z3chk1: ; Check for Z3 ID header + ld a,(de) ; Get character from ENV descriptor + cp (hl) ; Compare it to loaded file + ret nz ; Quit now if mismatch + inc hl ; If same, advance to next characters + inc de ; ..and continue comparing + djnz z3chk1 ; (flags not affected by DJNZ) + ld a,(hl) ; Return the environment type in A + ret ; Return Z if all 5 characters match + +;---------------------------------------- + +; Subroutine to skip over spaces in the buffer pointed to by HL. On return, +; the zero flag is set if we encountered the end of the line or a command +; separator character. + +sksp: + ld a,(hl) ; Get next character + inc hl ; Point to the following character + cp ' ' ; Space? + jr z,sksp ; If so, keep skipping + dec hl ; Back up to non-space + ; ..and fall through + +;-------------------- + +; Subroutine to check if character is the command separator or marks the end +; of the line. + +tsteol: + or a ; End of command line? + ret z ; Return with zero flag set + cp cmdsep ; Command separator? + ret ; Return with flag set appropriately + +;---------------------------------------- + +; Initialize complete FCB pointed to by DE + +initfcb: + xor a + ld (de),a ; Set default disk (dn byte is 0) + inc de ; Point to file name field + call ifcb ; Fill 1st part of FCB + ; Fall through to IFCB to run again + +;-------------------- + +; Initialize part of FCB whose file name field is pointed to by DE on entry. +; The file name and type are set to space characters; the EX, S2, RC, and the +; following CR (current record ) or DN (disk number) fields are set to zero. +; The S1 byte is set to the current user number. On exit, DE points to the +; byte at offset 17 in the FCB (two bytes past the record count byte). + +ifcb: + ld b,11 ; Store 11 spaces for file name and type + ld a,' ' + call fill + xor a + ld (de),a ; Set extent byte to zero + inc de + ld a,(curusr) + ld (de),a ; Set S1 byte to current user + inc de + ld b,3 ; Store 3 zeroes + xor a ; Fall thru to fill + +;-------------------- + +; Fill memory pointed to by DE with character in A for B bytes + +fill: + ld (de),a ; Fill with byte in A + inc de ; Point to next + djnz fill + ret + +;---------------------------------------- + +; Subroutine to display the 'no file' error message for the built-in +; commands DIR, ERA, LIST, TYPE, and/or REN. + + if diron or eraon + +prnnf: + call printc ; No file message + defb 'No Fil','e'+80h + ret + endif ; diron or eraon + +;---------------------------------------- + +; Calculate address of command table in package from Z3ENV. On entry, E +; contains the offset to the address of the package in the environment. On +; exit, DE points to the beginning of the package and HL points to the fifth +; byte (where the command table starts in the RCP and FCP modules). The zero +; flag is set on return if the package is not supported. + + if fcpenv or rcpenv or ndrenv +pkgoff: + ld hl,z3env ; Point to beginning of ENV descriptor + ld d,0 ; Make DE have offset + add hl,de ; ..and add it + ld a,(hl) ; Get low byte of package address + inc hl ; Point to high byte + ld h,(hl) ; ..and get it + ld l,a ; Move full address into HL + or h ; Set zero flag if no package + ld de,5 ; Offset to start of table + ex de,hl ; Preserve start address of package in DE + add hl,de ; Pointer to 5th byte of package in HL + ret ; Return with zero flag set appropriately + + endif ;fcpenv or rcpenv or ndrenv + +;---------------------------------------- + +; This subroutine checks to see if we are in a false IF state. If that is +; the case, the routine returns with the zero flag set. If there is not active +; IF state or if it is true, then the zero flag is reset. + + if fcp ne 0 ; Omit code if FCP not implemented + +iftest: + ld bc,(ifptrfl) ; Current IF pointer into C, IF status into B + ld a,c ; See if any IF in effect + or a + jr z,iftest1 ; Branch if no IF state is active + and b ; Mask the current IF status + ret +iftest1: + dec a ; Reset the zero flag + ret + + endif ;fcp ne 0 + +;---------------------------------------- + +; Print the command prompt with DU and/or DIR (but without any trailing +; character). This is also the code in which the current drive and user +; will be stored. The conditional assemblies are somewhat involved because +; of the possibilities of either or both of the DU or DIR forms being omitted +; from the prompt. + +prompt: + call crlf + + if incldu ; If drive/user in prompt + + ld hl,(curusr) ; Get current drive/user into HL + +; If INCLENV is enabled, the drive and user (DU) will be included in the +; prompt based on the state of the DUOK flag in the environment. If INCLENV +; is disabled, the DU form will always be included if INCLDU is on. + + if inclenv + ld a,(duokfl) ; If ENV disallows DU, + or a ; ..then don't show it in + jr z,prompt2 ; ..the prompt, either + endif ;inclenv + + ld a,h ; Get current drive + add a,'A' ; Convert to ascii A-P + call conout + ld a,l ; Get current user + + if supres ; If suppressing user # report for user 0 + or a + jr z,prompt2 + endif + + cp 10 ; User < 10? + jr c,prompt1 + + if highuser ; If allowing users 16..31 + + ld c,'0'-1 +prompt0: + inc c + sub 10 + jr nc,prompt0 + add a,10 + ld b,a + ld a,c + call conout + ld a,b + + else ;using only standard user numbers 0..15 + + sub 10 ; Subtract 10 from user number + push af ; Save low digit + call print ; Display a '1' for tens digit + defb '1' or 80h + pop af + + endif ;highuser + +prompt1: + add a,'0' ; Output 1's digit (convert to ascii) + call conout +prompt2: + endif ; incldu + + ; Display named directory + + if incldir + + if incldu + ld b,h ; Copy drive/user from HL to BC + ld c,l ; ..(saves a byte) + else + ld bc,(curusr) ; Get current drive and user into BC + endif ;incldu + + inc b ; Switch drive to range 1..16 + call du2dir ; See if there is a corresponding DIR form + ret z ; If not, return now + + if incldu ; Separate DU and DIR with colon + + if inclenv + ld a,(duokfl) ; If not displaying DU, then + or a ; ..don't send separator, either + ld a,':' ; Make the separator + call nz,conout ; ..and send if permitted + else + call print ; Put in colon separator + defb ':' or 80h + endif ;inclenv + + endif ; incldu + + ld b,8 ; Max of 8 chars in DIR name +prompt3: + inc hl ; Point to next character in DIR name + ld a,(hl) ; ..and get it + cp ' ' ; Done if space + ret z + call conout ; Print character + djnz prompt3 ; Count down + + endif ; incldir + + ret + +;----------------------------------------------------------------------------- + +; Subroutine to convert DU value in BC into pointer to a matching entry in +; the NDR. If there is no match, the routine returns with the zero flag set. +; If a match is found, the zero flag is reset, and the code returns with HL +; pointing to the byte before the directory name. + + if z3ndir ne 0 + +du2dir: + + if ndrenv ; If getting NDR address from environment + ld e,15h ; Offset to NDR in Z3ENV + call pkgoff ; Get address of NDR into DE + ex de,hl ; ..and switch into HL + ret z ; If no NDR, return with zero flag set + jr du2dir2 + else + ld hl,z3ndir-17 ; Scan directory for match + endif ;ndrenv + +du2dir1: ; Advance to next entry in NDR + ld de,16+1 ; Skip user (1 byte) and name/pw (16 bytes) + add hl,de + +du2dir2: + ld a,(hl) ; End of NDR? + or a + ret z ; If so, return with zero flag set + + inc hl ; Point to user number in NDR entry + cp b ; Compare drive values + jr nz,du2dir1 ; If mismatch, back for another try + ld a,(hl) ; Get user number + sub c ; ..and compare + jr nz,du2dir1 ; If mismatch, back for another try + dec a ; Force NZ to show successful match + ret + + endif ;z3ndir ne 0 + +;----------------------------------------------------------------------------- + +; This routine gets the next line of input for the command buffer. The +; following order of priority is followed: +; If ZEX is active, the next line is obtained from ZEX +; If a submit file is running, its last record provides the input +; If there is a command line on the shell stack, use it +; Finally, if none of the above, the input is obtained from the user + +readbuf: + + ld a,(zexrunfl) ; Get ZEX-running flag + or a + jr nz,userinput ; If ZEX running, go directly to user input + + if subon ; If submit facility is enabled, check for it + + ld a,(subflag) ; Test for submit file running + or a + jr z,shellinput ; If not, go on to possible shell input + + xor a ; Log into user 0 + call setuser + call defltdma ; Initialize DMA pointer + ld de,subfcb ; Point to submit file FCB + call open ; Try to open file + jr z,readbuf1 ; Branch if open failed + + ld hl,subfrc ; Point to record count in submit FCB + ld a,(hl) ; Get the number of records in file + dec a ; Reduce to number of last record + ld (subfcr),a ; ..and put into current record field + call read ; Attempt to read submit file + jr nz,readbuf1 ; Branch if read failed + + dec (hl) ; Reduce file record cound + dec hl ; Point to S2 byte of FCB (yes, this is req'd!) + ld (hl),a ; Stuff a zero in there (A=0 from call to READ) + call close ; Close the submit file one record smaller + jr z,readbuf1 ; Branch if close failed + +; Now we copy the line read from the file into the multiple command line +; buffer + + ld de,chrcnt ; Point to command length byte in command buffer + ld hl,tbuff ; Point to sector read in from submit file + + if buflen gt 7fh ; If command line buffer is longer than record, + ld bc,80h ; ..then copy entire record from $$$.SUB file + else ;buflen le 7fh ; Otherwise copy only enough to fill + ld bc,buflen+1 ; ..the command line buffer + endif ;buflen gt 7fh + + ldir ; Transfer line from submit file to buffer + +; We now deal with various options that control the display of commands fed +; to the command processor from a submit file. + + if subnoise gt 0 ; If subnoise = 0 we omit all this display code + + if subnoise eq 1 ; If subnoise = 1 we follow the quiet flag + ld a,(quietfl) + or a + jr nz,readbuf0 ; If quiet, skip echoing the command + endif ;subnoise eq 1 + + call prompt ; Print prompt + call print ; Print submit prompt trailer + defb sprmpt or 80h + ld hl,cmdlin ; Print command line + call printhl + + endif ;subnoise gt 0 + +readbuf0: + call break ; Check for abort (any char) + ret nz ; If no ^C, return to caller and run + +readbuf1: + call subkil ; Kill submit file and abort + jp restart ; Restart CPR + + endif ; subon + +shellinput: + ld hl,shstk ; Point to shell stack + ld a,(hl) ; Check first byte + cp ' '+1 ; See if any entry + jr c,userinput ; Get user input if none + + ld de,cmdlin ; Point to first character of command line + ld bc,shsize ; Copy shell line into command line buffer + ldir ; Do copy + ex de,hl ; HL points to end of line + ld a,1 ; Set command status flag to show + ld (cmdstatfl),a ; ..that a shell has been invoked + jr readbuf3 ; Store ending zero and exit + +userinput: + call prompt ; Print prompt + call print ; Print prompt trailer + defb cprmpt or 80h + ld c,0ah ; Read command line from user + ld de,bufsiz ; Point to buffer size byte of command line + call bdos + + ; Store null at end of line + + ld hl,chrcnt ; Point to character count + ld a,(hl) ; ..and get its value + inc hl ; Point to first character of command line + call addah ; Make pointer to byte past end of command line +readbuf3: + ld (hl),0 ; Store ending zero + ret + +;----------------------------------------------------------------------------- + +; Check for any character from the user console. Return with the character +; in A. If the character is a control-C, then the zero flag will be set. + + if subon or diron or eraon or lton + +break: + ld c,0bh ; BDOS console status function + call bdossave ; Call BDOS and set flags + call nz,conin ; Get input character if there is one + cp 'C'-'@' ; Check for abort + ret + + endif ; subon or diron or eraon or lton + +;----------------------------------------------------------------------------- + +; Add A to HL (HL=HL+A) + +addah: + add a,l + ld l,a + ret nc + inc h + ret + +;----------------------------------------------------------------------------- + +; The routine NUMBER evaluates a string in the first FCB as either a decimal +; or, if terminated with the NUMBASE hexadecimal marker, a HEX number. If the +; conversion is successful, the value is returned as a 16-bit quantity in BC. +; If an invalid character is encountered in the string, the routine returns +; with the carry flag set and HL pointing to the offending character. + + if saveon + +number: + ld hl,tfcb+8 ; Set pointer to end of number string + ld bc,8 ; Number of characters to scan + ld a,numbase ; Scan for HEX identifier + cpdr ; Do the search + jr nz,decimal ; Branch if HEX identifier not found + + inc hl ; Point to HEX marker + ld (hl),' ' ; Replace HEX marker with valid terminator + ; ..and fall through to HEXNUM + + endif ;saveon + +;---------------------------------------- + +; At this entry point the character string in the first default FCB is +; converted as a hexadecimal number (there must NOT be a HEX marker). + +hexnum: + ld hl,tfcb+1 ; Point to string in first FCB + +; At this entry point the character string pointed to by HL is converted +; as a hexadecimal number (there must be NO HEX marker at the end). + +hexnum1: + ld de,16 ; HEX radix base + jr radbin ; Invoke the generalized conversion routine + +;---------------------------------------- + +; This entry point performs decimal conversion of the string in the first +; default FCB. + +decimal: + ld hl,tfcb+1 ; Set pointer to number string + +; This entry point performs decimal conversion of the string pointed to +; by HL. + +decimal1: + ld de,10 ; Decimal radix base + ; Fall through to generalized + ; ..radix conversion routine + +; This routine converts the string pointed to by HL using the radix passed in +; DE. If the conversion is successful, the value is returned in BC. HL points +; to the character that terminated the number, and A contains that character. +; If an invalid character is encountered, the routine returns with the carry +; flag set, and HL points to the offending character. + +radbin: + ld bc,0 ; Initialize result +radbin1: + or a ; Make sure carry is reset + call sdelm ; Test for delimiter (returns Z if delimiter) + ret z ; Return if delimiter encountered + + sub '0' ; See if less than '0' + ret c ; Return with carry set if so + cp 10 ; See if in range '0'..'9' + jr c,radbin2 ; Branch if it is valid + cp 'A'-'0' ; Bad character if < 'A' + ret c ; ..so we return with carry set + sub 7 ; Convert to range 10..15 +radbin2: + cp e ; Compare to radix in E + ccf ; Carry should be set; this will clear it + ret c ; If carry now set, we have an error + + inc hl ; Point to next character + push bc ; Push the result we are forming onto the stack + ex (sp),hl ; Now HL=result, (sp)=source pointer + call mpy16 ; HLBC = previous$result * radix + ld h,0 ; Discard high 16 bits and + ld l,a ; ..move current digit into HL + add hl,bc ; Form new result + ld c,l ; Move it into BC + ld b,h + pop hl ; Get string pointer back + jr radbin1 ; Loop until delimiter + +;----------------------------------------------------------------------------- + +; This routine multiplies the 16-bit values in DE and HL and returns the +; 32-bit result in HLBC (HL has high 16 bits; BC has low 16 bits). Register +; pair AF is preserved. + +mpy16: + ex af,af' ; Save AF + ld a,h ; Transfer factor in HL to A and C + ld c,l + ld hl,0 ; Initialize product + ld b,16 ; Set bit counter + rra ; Shift AC right so first multiplier bit + rr c ; ..is in carry flag +mp161: + jr nc,mp162 ; If carry not set, skip the addition + add hl,de ; Add multiplicand +mp162: + rr h ; Rotate HL right, low bit into carry + rr l + rra ; Continue rotating through AC, with + rr c ; ..next multiplier bit moving into carry + djnz mp161 ; Loop through 16 bits + + ld b,a ; Move A to B so result is in HLBC + ex af,af' ; Restore original AF registers + ret + +;----------------------------------------------------------------------------- + +; This routine checks for a delimiter character pointed to by HL. It returns +; with the character in A and the zero flag set if it is a delimiter. All +; registers are preserved except A. + +sdelm: + ld a,(hl) ; Get the character + exx ; Use alternate register set (shorter code) + ld hl,deldat ; Point to delimiter list + ld bc,delend-deldat; Length of delimiter list + cpir ; Scan for match + exx ; Restore registers + ret ; Returns Z if delimiter + +deldat: ; List of delimiter characters + db ' ' + db '=' + db '_' + db '.' + db ':' + db ';' + db '<' + db '>' + db ',' + db 0 + if cmdsep ne ';' + db cmdsep + endif ;cmdsep ne ';' +delend: + +;----------------------------------------------------------------------------- + +; Log into DU contained in FCB pointed to by DE. Registers DE are preserved; +; all others are changed. Explicit values for the temporary drive and user +; are extracted from the FCB. If the record-count byte has an FF in it, that +; is a signal that the directory specification was invalid. We then invoke +; the error handler. + + if diron or eraon or lton or renon or saveon + +fcblog: + push de ; Save pointer to FCB + ex de,hl + ld a,(hl) ; Get drive + ld bc,13 ; Offset to S1 field + add hl,bc + ld c,(hl) ; Get user into C + or a ; See if drive value was 0 + jr nz,fcblog1 ; If not, branch ahead + ld a,(curdr) ; Otherwise substitute current drive + inc a ; ..shifted to range 1..16 +fcblog1: + ld b,a ; Get drive into B + ld (tempusr),bc ; Set up temporary DU values + call logtemp ; ..and log into it + pop de ; Restore pointer to FCB + +; Now check to make sure that the directory specification was valid. + + inc hl ; Advance pointer to record-count byte + inc hl + ld a,(hl) ; See if it is nonzero + or a + jp nz,baddirerr ; If so, invoke error handler + + ret ; Otherwise return + + endif ;diron or eraon or lton or renon or saveon + +;----------------------------------------------------------------------------- + +; Log into the temporary directory. Registers B, H, and L are preserved. + +logtemp: + ld de,(tempusr) ; Set D = tempdr, E = tempusr + call setuser1 ; Register D is preserved during this call + ld a,d ; Move drive into A + dec a ; Adjust for drive range 0..15 + jp setdrive ; Log in new drive and return + +;----------------------------------------------------------------------------- + +; This routine scans the command table pointed to by HL for the command name +; stored in the command FCB. If the command is not found, the routine returns +; with the zero flag reset. If the command is found, the address vector is +; stored in EXECADR and the zero flag is set. + +cmdscan: + ld b,(hl) ; Get length of each command + inc hl ; Point to first command name + +scannext: + ld a,(hl) ; Check for end of table + or a + jr z,scanend ; Branch if end + + ld de,cmdfcb+1 ; Point to name of requested command + push bc ; Save size of commands in table + + if wheel + ; Ignore commands with high bit set in first + ; ..char of command name if wheel is false + ld a,(z3whl) ; Get the wheel byte + or a + ld c,0ffh ; Make a mask that passes all characters + jr z,scancmp ; Use this mask if wheel not set + + endif ; wheel + + ld c,7fh ; Use mask to block high bit if wheel set + ; ..or not in use + +scancmp: + ld a,(de) ; Compare against table entry + + xor (hl) + and c ; Mask high bit of comparison + jr nz,scanskip ; No match, so skip rest of command name + + inc de ; Advance to next characters to compare + inc hl + res 7,c ; Mask out high bit on characters after first + djnz scancmp ; Count down + + ld a,(de) ; See if next character in input command + cp ' ' ; ..is a space + jr nz,scanbad ; If not, user command is longer than commands + ; ..in the command table + + ; Matching command found + + pop bc ; Clear stack + ld a,(hl) ; Get address from table into HL + inc hl + ld h,(hl) + ld l,a + ld (execadr),hl ; Set execution address + xor a ; Set zero flag to show that command found + ret + +scanskip: + inc hl ; Skip to next command table entry + djnz scanskip + +scanbad: + pop bc ; Get back size of each command + inc hl ; Skip over address vector + inc hl + jr scannext ; Try scanning next entry in table + +scanend: + xor a ; Reset zero flag to show + dec a ; ..that command was not found + ret + +; End ZCPR33-4.Z80 + + page + +; ZCPR33-5.Z80 + +;============================================================================= +; +; R E S I D E N T C O M M A N D C O D E +; +;============================================================================= + +; Command: DIR +; Function: To display a directory of the files on disk +; Forms: +; DIR Displays the DIR-attribute files +; DIR Same as DIR *.* +; DIR S Displays the SYS-attribute files +; DIR /S Same as DIR *.* S +; DIR A Display both DIR and SYS files +; DIR /A Same as DIR *.* A + + if diron + +dir: + ld de,tfcb ; Point to target FCB + push de ; ..and save the pointer for later + inc de ; Point to file name + ld a,(de) ; Get first character + + if slashfl ; If allowing "DIR /S" and "DIR /A" formats + cp '/' ; If name does not start with '/' + jr nz,dir1 ; ..branch and process normally + inc de ; Point to second character + ld a,(de) ; Get option character after slash + ld (tfcb2+1),a ; ..and put it into second FCB + dec de ; Back to first character + ld a,' ' ; Simulate empty FCB + endif ;slashfl + +dir1: + cp ' ' ; If space, make all wild + jr nz,dir2 + ld b,11 + ld a,'?' + call fill + +dir2: + pop de ; Restore pointer to FCB + call fcblog ; Log in the specified directory + + if whldir + ld a,(z3whl) ; Check wheel status + or a ; If not set, then ignore options + jr z,dir2a + endif ;whldir + + ld a,(tfcb2+1) ; Check for any option letter + ld b,1 ; Flag for both DIR and SYS files + cp allchar ; See if all (SYS and DIR) option letter + jr z,dirpr ; Branch if so + dec b ; B = 0 for SYS files only + cp syschar ; See if SYS-only option letter + jr z,dirpr ; Branch if so +dir2a: + ld b,80h ; Flag for DIR-only selection + ; Drop into DIRPR to print directory + + endif ; diron + +;-------------------- + +; Directory display routine + +; On entry, if attribute checking is required, the B register is +; set as follows: +; 00H for SYS files only +; 80H for DIR files only +; 01H for both + + if diron or eraon + +dirpr: + if diron ; Attribute checking needed only for DIR + ld a,b ; Get flag + ld (systst),a ; Set system test flag + endif + + ld e,0 ; Set column counter to zero + push de ; Save column counter (E) + call srchfst1 ; Search for specified file (first occurrence) + jr nz,dir3 + call prnnf ; Print no-file message + pop de ; Restore DE + xor a ; Set Z to show no files found + ret + +; Entry selection loop. On entering this code, A contains the offset in the +; directory block as returned by the search-first or search-next call. + +dir3: + if diron ; Attribute checking needed only for DIR cmd + + call getsbit ; Get and test for type of files + jr z,dir6 + + else ;not diron + + dec a ; Adjust returned value from 1..4 to 0..3 + rrca ; Multiply by 32 to convert number to + rrca ; ..offset into TBUFF + rrca + ld c,a ; C = offset to entry in TBUFF + + endif ;diron + + pop de ; Restore count of + ld a,e ; ..entries displayed + inc e ; Increment entry counter + push de ; Save it + and 03h ; Output CRLF if 4 entries printed in line + jr nz,dir4 + call crlf ; New line + jr dir5 +dir4: + call print + + if wide + + defb ' ' ; 2 spaces + defb fence ; Then fence char + defb ' ',' '+80h ; Then 2 more spaces + + else ;not wide + + defb ' ' ; Space + defb fence ; Then fence char + defb ' '+80h ; Then space + + endif ; wide + +dir5: + ld a,1 + call dirptr ; HL now points to 1st byte of file name + call prfn ; Print file name +dir6: + call break ; Check for abort + jr z,dir7 + call srchnxt ; Search for next file + jr nz,dir3 ; Continue if file found + +dir7: + pop de ; Restore stack + dec a ; Set NZ flag + ret + + endif ; diron or eraon + +;----------------------------------------------------------------------------- + + if diron or attchk or eraon + +; This routine returns a pointer in HL to the directory entry in TBUFF that +; corresponds to the offset specified in registers C (file offset) and C +; (byte offset within entry). + +dirptr: + ld hl,tbuff + add a,c ; Add the two offset contributions + call addah ; Set pointer to desired byte + ld a,(hl) ; Get the desired byte + ret + + endif ; diron or attchk or eraon + +;----------------------------------------------------------------------------- + +; Test File in FCB for existence, ask user to delete if so, and abort if he +; choses not to + + if saveon or renon + +extest: + ld de,tfcb ; Point to FCB + push de ; ..and save it for later + call fcblog ; Log into specified directory + call srchfst1 ; Look for specified file + pop de ; Restore pointer + ret z ; OK if not found, so return + call printc + if bellfl + defb bell + endif ;bellfl + defb 'Erase',' '+80h + ld hl,tfcb+1 ; Point to file name field + call prfn ; Print it + call print ; Add question mark + defb '?' or 80h + call conin ; Get user response + cp 'Y' ; Test for permission to erase file + jp nz,restart ; If not, flush the entire command line + jp delete ; Delete the file + + endif ; saveon or renon + +;----------------------------------------------------------------------------- + +; Print file name pointed to by HL + + if diron or renon or saveon + +prfn: + ld b,8 ; Display 8 characters in name + call prfn1 + call print ; Put in dot + defb '.' or 80h + ld b,3 ; Display 3 characters in type +prfn1: + ld a,(hl) ; Get character + inc hl ; Point to next + call conout ; Print character + djnz prfn1 ; Loop through them all + ret + + endif ;diron or renon or saveon + +;----------------------------------------------------------------------------- + +; This routine returns NZ if the file has the required attributes and Z if +; it does not. It works by performing the 'exclusive or' of the mask passed +; in register A and the filename attribute obtained by masking out all but +; the highest bit of the character. For the 'both' case, setting any bit +; in the mask other than bit 7 will guarantee a nonzero result. +; +; File name: : X 0 0 0 0 0 0 0 (After 80H mask, X=1 if SYS, 0 if DIR) +; +; SYS-ONLY : 0 0 0 0 0 0 0 0 (XOR gives 00H if X=0 and 80H if X=1) +; DIR-ONLY : 1 0 0 0 0 0 0 0 (XOR gives 80H if X=0 and 00H if X=1) +; BOTH : 0 0 0 0 0 0 0 1 (XOR gives 01H if X=0 and 81H if X=1) + + if diron or attchk + +getsbit: + dec a ; Adjust to returned value from 1..4 to 0..3 + rrca ; Multiply by 32 to convert number to + rrca ; ..offset into TBUFF + rrca + ld c,a ; Save offset in TBUFF in C + ld a,10 ; Add 10 to point to SYS attribute bit + call dirptr ; A = SYS byte + and 80h ; Look only at attribute bit +systst equ $+1 ; In-the-code variable + xor 0 ; If SYSTST=0, SYS only; if SYSTST=80H, DIR + ; ..only; if SYSTST=1, both SYS and DIR + ret ; NZ if OK, Z if not OK + + endif ;diron or attchk + +;----------------------------------------------------------------------------- + +; Command: REN +; Function: To change the name of an existing file +; Forms: REN = +; Notes: If either file spec is ambiguous, or if the source file does +; not exist, the error handler will be entered. If a file with +; the new name already exists, the user is prompted for deletion +; and ZEX is turned off during the prompt. + + if renon + +ren: + ld hl,tfcb ; Check for ambiguity in first file name + call ambchk + call fcblog ; Login to fcb + ld hl,tfcb2 ; Check for ambiguity in second file name + call ambchk + xor a ; Use current drive for 2nd file + ld (de),a + call srchfst ; Check for old file's existence + jr nz,ren0a ; Branch if file exists +jpnofile: + ld a,ecnofile ; Set error code for file not found + jp error ; ..and invoke error handler +ren0a: + call extest ; Test for file existence and return if not + ld b,12 ; Exchange new and old file names + push de ; Save pointer to FCB + ld hl,tfcb2 ; Point to FCB for old file name +ren0: + ld a,(de) ; Get character of old name + ld c,a ; ..into C register + ld a,(hl) ; Get character of new name + ld (de),a ; ..into place in old name + ld (hl),c ; Put character of old name into new name + inc hl ; Advance pointers + inc de + djnz ren0 + +; Perform rename function + + pop de ; Restore pointer to FCB + ld c,17h ; BDOS rename function + jp bdostest + + endif ;renon + +;----------------------------------------------------------------------------- + +; Command: ERA +; Function: Erase files +; Forms: +; ERA Erase specified files and dislay their names +; ERA I Display names of files to be erased and prompt for +; inspection before erase is performed. (Character 'I' +; is defined by INSPCH in Z33HDR.LIB; if it is ' ', then +; any character triggers inspection.) + + if eraon + +era: + if inspfl and eraok; 'I' flag and verification enabled? + ld a,(tfcb2+1) ; Get flag, if any, entered by user + ld (eraflg),a ; Save it in code below + endif ;erav and eraok + + ld de,tfcb ; Point to target FCB + call fcblog ; ..and log into the specified directory + + if diron or attchk ; Attribute checking only in these cases + ld b,1 ; Display all matching files + endif ;diron or attchk + + call dirpr ; Print directory of erased files + ret z ; Abort if no files + + if eraok ; Print prompt + + if inspfl ; Test verify flag + +eraflg equ $+1 ; Address of flag (in-the-code modification) + ld a,0 + cp inspch ; Is it an inspect option? + + if inspch ne ' ' ; If an explicit inspect character is specified + jr nz,era2 ; ..skip prompt if it is not that character + else ; If INSPCH is the space character + jr z,era2 ; ..then skip prompt only if FCB has a space + endif ;inspch ne ' ' + + endif ;inspfl + + call printc + defb 'OK to Erase','?'+80h + call conin ; Get reply + cp 'Y' ; Yes? + ret nz ; Abort if not + + endif ; eraok + +era2: + ld de,tfcb + jp delete ; Delete files and return + + endif ; Eraon + +;----------------------------------------------------------------------------- + +; Command: LIST +; Function: Print out specified file on the LST: device +; Forms: LIST Print file (No Paging) +; Notes: The flags which apply to TYPE do not take effect with LIST + + if lton + +list: + ld a,0ffh ; Turn on printer flag + jr type0 + +;----------------------------------------------------------------------------- + +; Command: TYPE +; Function: Print out specified file on the CON: Device +; Forms: TYPE Print file with default paging option +; TYPE P Print file with paging option reversed + +type: + xor a ; Turn off printer flag + +; Common entry point for LIST and TYPE functions + +type0: + ld (prflg),a ; Set printer/console flag + ld a,(tfcb2+1) ; Check for user page toggle ('P') option + ld (pgflg),a ; Save it as a flag in code below + ld hl,tfcb ; Point to target file FCB + call ambchk ; Check for ambiguous file spec (vectors to + ; ..error handler if so) + call fcblog ; Log into specified directory + call open ; Open the file + + if renon ; If REN on, share code + jr z,jpnofile + else ;not renon ; Otherwise repeat code here + ld a,ecnofile + jp z,error + endif ;renon + + call crlf ; New line + ld a,(crttxt0) ; Set line count using value from the + ; ..environment for CRT0 + inc a ; One extra the first time through + ld (pagcnt),a + ld bc,080h ; Set character position and tab count + ; (B = 0 = tab, C = 080h = char position) + +; Main loop for loading next block + +type2: + ld a,c ; Get character count + cp 80h ; If not end of disk record + jr c,type3 ; ..then skip + + call readf ; Read next record of file + ret nz ; Quit if end of file + + ld c,0 ; Reset character count + ld hl,tbuff ; Point to first character + +; Main loop for printing characters in TBUFF + +type3: + ld a,(hl) ; Get next character + and 7fh ; Mask out MSB + cp 1ah ; Check for end of file (^z) + ret z ; Quit if so + +; Output character to CON: or LST: device with tabulation + + cp cr ; If carriage return, + jr z,type4 ; ..branch to reset tab count + cp lf ; If line feed, then output + jr z,type4a ; ..with no change in tab count + cp tab ; If tab + jr z,type5 ; ..expand to spaces + +; Output character and increment character count + + call lcout ; Output character + inc b ; Increment tab count + jr type6 + +; Output CR and reset tab count + +type4: + ld b,0 ; Reset tab counter + +; Output LF and leave tab count as is + +type4a: + call lcout ; Output or + jr type6 + +; Process tab character + +type5: + ld a,' ' ; Space + call lcout + inc b ; Increment tab count + ld a,b + and 7 + jr nz,type5 ; Loop until column = n * 8 + 7 + +; Continue processing + +type6: + inc c ; Increment character count + inc hl ; Point to next character + push bc + call break ; Check for user abort + pop bc + ret z ; Quit if so + jr type2 ; Else back for more + +;-------------------- + +; Output character in A to console or list device depending on a flag. +; Registers are preserved. This code is used only by the LIST and TYPE +; commands. + +lcout: + push af ; Save character +prflg equ $+1 ; Pointer for in-the-code modification + ld a,0 ; ..to determine destination (CON or LST) + or a ; Z=type, NZ=list + jr z,lc1 + + ; Output to list device + + pop af ; Get character back + push de + push bc + ld c,5 ; LISTOUT function + jp output + + ; Output to console with paging + +lc1: + pop af ; Get character back + push af ; Save it again for page check + call conout ; Output to console + pop af ; Get character back again + cp lf ; Check for new line (paging) + ret nz ; If not new line, we are done + + ; Paging routines + +pager: + push hl + ld hl,pagcnt ; Decrement lines remaining on screen + dec (hl) + jr nz,pager1 ; Jump if not end of page + + ; New page + ld a,(crttxt0) ; Get full page count from environment + ld (hl),a ; Reset count to a full page +pgflg equ $+1 ; Pointer to in-the-code buffer pgflg + ld a,0 + cp pagech ; Page default override option wanted? + + if pagech ne ' ' ; If using explicit character for page toggle + + if pagefl ; If paging is default + jr z,pager1 ; ..PAGECH means no paging + else ; If paging not default + jr nz,pager1 ; ..PAGECH means please paginate + endif ;pagefl + + else ; Any character toggles paging + + if pagefl ; If paging is default + jr nz,pager1 ; ..any character means no paging + else ; If paging not default + jr z,pager1 ; ..any character means please paginate + endif ;pagefl + + endif ;pagech ne ' ' + + ; End of page + push bc + call bios+9 ; Wait for user input (BIOS console input) + pop bc + cp 'C'-'@' ; Did user enter control-c? + jp z,nextcmd ; If so, terminate this command + +pager1: + pop hl ; Restore HL + ret + + endif ; lton + +;----------------------------------------------------------------------------- + +; Command: SAVE +; Function: To save the contents of the TPA onto disk as a file +; Forms: +; SAVE +; Save specified number of pages (starting at 100H) from TPA +; into specified file +; +; SAVE +; Like SAVE above, but numeric argument specifies +; number of sectors rather than pages + + if saveon + +; Entry point for SAVE command + +save: + call number ; Extract number from command line + jr c,badnumber ; Invoke error handler if bad number + push bc ; Save the number + call reparse ; Reparse tail after number of sectors/pages + pop hl ; Get sector/page count back into HL + ld a,(tfcb2+1) ; Check sector flag in second FCB + cp sectch + + if sectch ne ' ' ; If using a specific character, then jump + jr z,save0 ; ..if it is that character + else ; If allowing any character (SECTCH=' ') + jr nz,save0 ; ..jump if it is anything other than space + endif ;sectch ne ' ' + + add hl,hl ; Double page count to get sector count +save0: + ld a,1 ; Maximum allowed value in H + cp h ; Make sure sector count < 512 (64K) + jr c,badnumber ; If >511, invoke error handler + + push hl ; Save sector count + ld hl,tfcb + call ambchk ; Check for ambiguous file spec (vectors to + ; ..error handler if so) + + call extest ; Test for existence of file and abort if so + ld c,16h ; BDOS make file function + call bdostest + jr z,save3 ; Branch if error in creating file + + pop bc ; Get sector count into BC + ld hl,tpa-80h ; Set pointer to one record before TPA + +save1: + ld a,b ; Check for BC = 0 + or c + dec bc ; Count down on sectors (flags unchanged, + ; ..B=0FFH if all records written successfully) + jr z,save2 ; If BC=0, save is done so branch + + push bc ; Save sector count + ld de,80h ; Advance address by one record + add hl,de + push hl ; Save address on stack + ex de,hl ; Put address into DE for BDOS call + call dmaset ; Set DMA address for write + ld de,tfcb ; Write sector + ld c,15h ; BDOS write sector function + call bdossave + pop hl ; Get address back into HL + pop bc ; Get sector count back into BC + jr z,save1 ; If write successful, go back for more + + ld b,0 ; B=0 if write failed + +save2: + call close ; Close file even if last write failed + and b ; Combine close return code with + ; ..write success flag + ret nz ; Return if all ok + +save3: ; Disk must be full + ld a,ecdiskfull ; Disk full error code + jr jperror + + endif ; saveon + +;----------------------------------------------------------------------------- + + if lton or saveon or renon or geton + +; Check file control block pointed to by HL for any wildcard characters ('?'). +; Return to calling program if none found. Otherwise branch to error handler. +; The routine also treats an empty file name as ambiguous. + +ambchk: + push hl ; Save pointer to FCB + inc hl ; Point to first character in file name + ld a,(hl) ; See if first character is a space + cp ' ' + jr z,ambchk1 ; If so, branch to error return + + ld a,'?' ; Set up for scan for question mark + ld bc,11 ; Scan 11 characters + cpir + pop de ; Restore pointer to FCB in DE + ret nz ; Return if no '?' found +ambchk1: + ld a,ecambig ; Error code for ambiguous file name + jr jperror + + endif ;lton or renon or saveon or geton + + if lton or renon or saveon or geton or jumpon + +badnumber: + ld a,ecbadnum ; Error code for bad number value +jperror: ; Local entry point for relative jump + jp error ; ..to go to error handler + + endif ;lton or renon or saveon or geton or jumpon + +;----------------------------------------------------------------------------- + +; Command: JUMP +; Function: To execute a program already loaded into some specified memory +; address +; Forms: JUMP +; The address is in hex; the tail will be parsed as usual + + if jumpon + +jump: + call hexnum ; Get load address into BC + jr c,badnumber ; If bad number, invoke error handling + push bc ; ..and save it + call reparse ; Reparse tail after address value + pop hl ; Restore execution address to HL + jr getproglf ; Perform call via code below + + endif ;jumpon + +;----------------------------------------------------------------------------- + +; Command: GO +; Function: To Call the program in the TPA without loading +; loading from disk. Same as JUMP 100H, but much +; more convenient, especially when used with +; parameters for programs like STAT. Also can be +; allowed on remote-access systems with no problems. +; +;Form: GO + + if goon + +go: + ld hl,tpa ; Set up TPA as the execution address + + endif ; goon + + if jumpon or goon ; Common code + +getproglf: + ld (execadr),hl + xor a ; Set zero flag to enable leading CRLF + jp callproglf ; Perform call (with leading CRLF) + + endif ;jumpon or goon + +;----------------------------------------------------------------------------- + +; Command: GET +; Function: To load the specified file from disk to the specified address +; Forms: GET +; Loads the specified file to the specified hexadecimal address +; Note that the normal file search path is used to find the file. +; If SCANCUR is off, the file may not be found in the current +; directory unless a colon is included in the file spec. + + if geton + +get: + +; TMPCOLON was set when the file name was parsed. We use that as the colon +; flag so that the file will be loaded from a directory just as if it had +; been entered as the command name. + + if drvprefix and [not scancur] + ld a,(tmpcolon) ; Allow GET to load from specified + ld (colon),a ; directory + endif ;drvprefix and [not scancur] + + ld hl,tfcb2 ; Copy TFCB2 to CMDFCB for load + push hl + ld de,cmdfcb + ld bc,14 + ldir + pop hl + call ambchk ; Make sure file is not ambiguous (vectors + ; ..to error handler if so) + +; If GET fails to find the specified file along the search path, we do not +; want the ECP to be engaged. To prevent that, we fool the command processor +; by telling it that the ECP is already engaged. + + ld hl,cmdstatfl ; Point to command status flag + set 2,(hl) ; Turn on ECP flag to prevent use of ECP + call hexnum ; Get load address into BC + jr c,badnumber ; If invalid number, invoke error handler + + if not fullget + ld a,b ; If trying to load into base page + or a ; ..treat as error + jr z,badnumber + endif ;not fullget + + ld h,b ; Move address into HL + ld l,c + ld a,0ffh ; Disable dynamic loading + ; Fall through to mload + + endif ; geton + +; End ZCPR33-5.Z80 + + page + +; ZCPR33-6.Z80 + +;============================================================================= +; +; P A T H S E A R C H A N D F I L E L O A D I N G C O D E +; +;============================================================================= + +; This block of code loads a file into memory. The normal address at which +; loading is to begin is passed to the routine in the HL register. The name +; of the file to load is passed in the command file control block. +; +; This code supports an advanced option that loads files to a dynamic address +; specified in the header to the file using a new type-3 environment. In a +; type-3 environment, the execution/load address is stored in the word +; following the environment descriptor address. A value is passed to MLOAD in +; the A register that controls this dynamic loading mechanism. The value +; specifies the lowest environment type value for which dynamic loading will +; be performed. This value will be 3 when MLOAD is called for normal COM file +; execution and will be 0FFH when chained to from the GET command. In the +; latter case, the user-specified load address must be used. +; +; MLOAD guards against loading a file over the operating system. It computes +; the lower of the following two addresses: 1) the CPR entry point; 2) the +; bottom of protected memory as indicated by the DOS entry address stored at +; address 0006H. If the load would exceed this limit, error handling is +; engaged (except for the GET command when FULLGET is enabled). + +mload: + ld (envtype),a ; Set up in-the-code modification below + ld (execadr),hl ; Set up execution/load address + call defltdma ; Set DMA address to 80H for file searches + + +; This code sets the attributes of COM files which are acceptable. If both +; SYS and DIR type files are acceptable, there is no need to include this code, +; and ATTCHK can be set to false. + + if attchk ; Only if attribute checking enabled + ld a,comatt ; Attributes specified in Z33HDR.LIB + ld (systst),a ; Set flag + endif ;attchk + +;----------------------------------------------------------------------------- + +; PATH BUILDING CODE + +; In ZCPR33 the minpath feature, optional in ZCPR30, is always used. To +; minimize the size of the CPR code, however, there is an option to place the +; minpath in an external buffer (outside the CPR). If the path is short +; enough, the minpath can be placed at the bottom of the system stack. + + ld de,path ; Point to first element in user's symbolic path + ld hl,mpath ; Point to minpath buffer + xor a + ld (hl),a ; Initialize to empty minpath + + +; If DRVPREFIX is enabled, the CPR will recognize an explicit directory +; reference in a command. The first element of the path will then be this +; explicit directory. If no explicit directory was given in the command, +; then no entry is made into the search path. If the WPREFIX option is +; on, explicit directory prefixes will be recognized only when the wheel +; byte is on. + + if drvprefix ; Pay attention to du:com prefix? + + ld a,(colon) ; See if colon was present in command + or a + jr z,makepath2 ; If not, skip ahead + + if wprefix + ld a,(z3whl) ; See if wheel byte is on + or a + jr z,makepath2 ; If not, skip ahead + endif ;wprefix + + ld a,(cmdfcb) ; Get drive from command FCB + ld (hl),a ; Put drive into minpath + inc hl ; Advance pointer + ld a,(cmdfcb+13) ; Get user number from command FCB + ld (hl),a ; Put it into minpath + inc hl ; Advance pointer to next path element + xor a ; A=0 + ld (hl),a ; Store ending 0 in mpath +makepath2: + endif ; drvprefix + + +; If SCANCUR is enabled in Z33HDR.LIB, then we always include the current +; directory automatically, even without a '$$' element in the user's path. +; If WPREFIX is enabled, however, we do not want to allow the current +; directory to be included, but we must make sure that it is included in +; the building of the root path, in case the user's symbolic path is empty. + + if scancur ; Scan current directory at all times? + + ld bc,(curusr) ; C = current user, B = current drive + inc b ; Set drive to range 1..16 + + if wprefix + + ld a,(z3whl) ; See if wheel byte is on + or a + jr nz,addpath ; If it is, add element to path; if not, + ; ..fall through to MAKEPATH3 + else ;not wprefix + + jr addpath ; Begin loop of placing entries into mpath + + endif ;wprefix + + else ;not scancur + +; If SCANCUR is off and ROOTONLY is in effect, we have to make sure that some +; directory values are put into the root path in the case where the user's +; path is completely empty. To do so, we preset BC for directory A0. + + if rootonly + ld bc,0100h ; Setup for drive A (B=1), user 0 (C=0) + endif ;rootonly + + endif ;scancur + + +; Convert symbolic entries in user's path into absolute DU values in minpath. +; Entries are read one-by-one from the symbolic path. If the 'current' drive +; or user indicator is present (default symbol is '$'), then the current +; drive or user value is fetched. Otherwise the explicit binary value from the +; path is used. After each absolute DU value is formed, the minpath as it +; exists so far is scanned to see if this DU value is already there. If it is +; not, then the DU value is appended to the path. Otherwise it is ignored. + +makepath3: + ld a,(de) ; Get next symbolic path entry + or a ; If 0, we are at end of path + jr z,makepath6 + + ld bc,(curusr) ; C = current user, B = current drive + inc b ; Set drive to range 1..16 + cp curind ; Check for current drive symbol (default '$') + jr z,makepath4 ; If so, leave current drive in B + ld b,a ; Else move specified drive into B +makepath4: + inc de ; Point to user value in symbolic path + ld a,(de) ; Get user + inc de ; Point to next element in symbolic path + cp curind ; Check for current user symbol (default '$') + jr z,makepath5 ; If so, leave current drive in C + ld c,a ; Else move specified user into C +makepath5: + +; At this point in the code we have a potential path element in BC. We first +; have to scan the minpath we have so far to see if that element is already +; there. In that case we ignore it; otherwise we add it to the end of the path. + +addpath: + ; Skip path if directory given explicitly + + if skippath + + if wprefix + ld a,(z3whl) ; See if wheel byte is on + or a + call nz,skipchk ; If not, fall through + else ;not wprefix + call skipchk ; See if path should be skipped + endif ;wprefix + + jr nz,makepath3 ; If so, branch out of ADDPATH + + endif ;skippath + + ld hl,mpath ; Point to beginning of minpath + +addpath1: ; Point of reentry + ld a,(hl) ; Get drive value + or a ; Check for end of minpath + jr z,addpath2 ; If end, jump and add BC to minpath + + inc hl ; Increment pointer to user + cp b ; Check for drive match + ld a,(hl) ; Get user from minpath + inc hl ; Point to next minpath entry + jr nz,addpath1 ; If drive was different, loop back again + cp c ; Check for user match + jr nz,addpath1 ; If user is different, loop back again + jr makepath3 ; Branch if we have a duplicate + +; We have a new DU; add it to minpath + +addpath2: + ld (hl),b ; Store drive + inc hl + ld (hl),c ; Store user + inc hl + ld (hl),0 ; Store ending 0 + jr makepath3 ; Continue scanning user's path + +; If the ECP facility is set up to use the root directory, then create a +; root path. BC presently contains the proper DU. + +makepath6: + + if rootonly + ld hl,rootpth ; Point to special path to contain root + ld (hl),b ; Store disk + inc hl + ld (hl),c ; Store user + endif ;rootonly + +;----------------------------------------------------------------------------- + +; This is the code for loading the specified file by searching the minpath. + + xor a ; Always use current disk specification in the + ld (cmdfcb),a ; ..command FCB + +mload1: + + ld hl,mpath ; Point to beginning of minpath + +mload2: + +; Either the FASTECP or BADDUECP option may have set FIRSTCHAR to a space +; character as a signal to go directly to extended command processing. If +; neither option is enabled but SKIPPATH is, then the FIRSTCHAR data is +; stored in the routine below where path skipping is implemented. + + if fastecp or badduecp + + ld a,(cmdstatfl) ; If ECP is running + bit 2,a ; ..we branch to look for ECP along path + jr nz,mload2a +firstchar equ $+1 ; Pointer for in-the-code modification + ld a,0 + cp ' ' ; Was command invoked with leading space? + jr z,ecprun ; If so, go directly to ECP code + + endif ;fastecp or badduecp + +mload2a: + ld a,(hl) ; Get drive from path + or a ; If end of path, command not found + jr nz,mload3 ; If not end of path, skip over ECP code + +;----------------------------------------------------------------------------- + +; EXTENDED COMMAND PROCESSING + +; At this point we have exhausted the search path. We now engage the +; extended command processor. + +ecprun: + if skippath + call skipchk ; See if path should be skipped + jr nz,jnzerror ; If so, invoke error handler + endif ;skippath + + ld hl,cmdstatfl ; Point to command status flag + ld a,(hl) ; ..and get value + and 110b ; Isolate ECP and error handler bits +jnzerror: ; If either is set, + ld a,ecnocmd ; Error code for command not found + jp nz,error ; ..process as an error + + set 2,(hl) ; Set ECP bit + + ld hl,ecpfcb ; Copy name of ECP to command FCB + ld de,cmdfcb + ld bc,12 ; Only 12 bytes required + ldir + + ld hl,(cmdptr) ; Get pointer to current command line + call parsetail ; Parse entire command as the command tail + + if rootonly ; Look for ECP in root directory only + ld hl,rootpth ; Point to path containing root directory only + jr mload2 ; Search for command + else ; not rootonly + jr mload1 ; Search the entire minpath for the ECP + endif ; rootonly + +;----------------------------------------------------------------------------- + +mload3: + ld b,a ; Drive into B + inc hl ; Point to user number + ld c,(hl) ; User into C + ld (tempusr),bc ; Save the values + inc hl ; Point to next entry in path + call logtemp ; Log in path-specified user/drive + + if attchk ; If allowing execution only of COM files with + ; ..specific attributes + + ld de,cmdfcb ; Point to command FCB + call srchfst ; Look for directory entry for file + jr z,mload2a ; Continue path search if file not found + push hl ; Save path pointer + call getsbit ; Check system attribute bit + pop hl ; Restore path pointer + jr z,mload2a ; Continue if attributes do not match + call opencmd ; Open file for input + jr z,mload2a ; If open failed, back to next path element + + else ;not attchk + + call opencmd ; Open file for input + jr z,mload2a ; If open failed, back to next path element + + endif ; attchk + + call readcmd ; Read first record into default DMA address + jr nz,mload5 ; Branch if zero-length file + xor a ; Set file current record back to zero + ld (cmdfcb+20h),a + ld hl,80h ; Pointer to start of code + call z3chk + jr nz,mload3a ; If not Z3 file, branch + +; The following test is modified by earlier code. For normal COM file loading, +; a 3 is inserted for the minimum environment type for dynamic load address +; determination. For the GET command, where the user-specified address should +; be used, a value of 0FFH is put in here so the carry flag will always be set. + +envtype equ $+1 ; Pointer for in-the-code modification + cp 3 ; See if no higher than a type-3 environment + jr c,mload3a ; If higher than type 3, branch + + inc hl ; Advance to load address word + inc hl + inc hl + ld a,(hl) ; Get load address into HL + inc hl + ld h,(hl) + ld l,a + ld (execadr),hl ; Set new execution/load address + +mload3a: + ld hl,(execadr) ; Get initial loading address + +; Load the file, making sure neither CPR nor protected memory is overwritten + +mload4: + if fullget + ld a,(envtype) ; If ENVTYPE is FF (from GET command) + inc a ; ..then skip memory limit checking + jr z,mload4b + endif ;fullget + + if rel + ld bc,entry ; We have to use a relocatable form to get + dec b ; ..highest page below the CPR + else ;not rel + ld b,high entry - 1 ; We can use shorter code for absolute form + endif ;rel + + ld a,(0007h) ; Get highest page below + dec a ; ..protected memory + cp b ; If A is lower value, + jr c,mload4a ; ..branch + ld a,b ; Otherwise use lower value in B +mload4a: + cp h ; Are we going to overwrite protected memory? + ld a,ectpafull ; Get ready with TPA overflow error code + jp c,error ; Error if about to overwrite protected memory +mload4b: + push hl ; Save this load address + ex de,hl ; Set DMA address + call dmaset + call readcmd + pop hl ; Get last load address back + jr nz,mload5 ; Read error or eof? + ld de,128 ; Increment load address by 128 + add hl,de + jr mload4 ; Continue loading + +; In case a program would like to find out in what directory the command +; processor found the program, temporary DU is stored in bytes 13 (user) and +; 14 (drive) in the command FCB. + +mload5: + +tempusr equ $+1 ; Pointers for in-the-code modification +tempdr equ $+2 + ld hl,0 + ld (cmdfcb+13),hl + +logcurrent: ; Return to original logged directory + ld hl,(curusr) ; Set L = current user, H = current drive + ld a,h + call setdrive ; Login current drive + ld a,l + jp setuser ; Log in new user and return from MLOAD + +;---------------------------------------- + +; This routine checks to see if building the path or running the ECP should +; be skipped. If there is a colon in the command (an explicit directory +; given) but it was not a lone colon (indicating desire to skip resident +; commands), then the routine returns with the zero flag reset. + + if skippath + +skipchk: + ld a,(colon) ; Was there a colon in the command? + or a + ret z ; Return with zero flag set if not + + if fastecp or badduecp + ld a,(firstchar) ; See if the first character was the colon + else +firstchar equ $+1 ; Put data here if other two options are + ld a,0 ; ..false (in-the-code modification) + endif ;fastecp or badduecp + + cp ':' + ret ; Return: Z if lone colon, NZ otherwise + + endif ;skippath + + +; End ZCPR33-6.Z80 + + page + +;----------------------------------------------------------------------------- +; +; D A T A A R E A D E F I N I T I O N S +; +;----------------------------------------------------------------------------- + +; ---------- Page line count buffer + + if lton ; Needed only if TYPE command included + +pagcnt: + defs 1 ; Lines left on page (filled in by code) + + endif ;lton + + +; ---------- Minpath/Rootpth buffers + + if extmpath + +mpath equ extmpathadr ; Assign external minpath address + + else + +mpath: + if drvprefix + defs 2 ; Two bytes for specified DU + endif + + if scancur + defs 2 ; Two bytes for current DU + endif + + defs 2 * expaths ; Space for path from path buffer + + defs 1 ; One byte for ending null + + endif ; not extmpath + + + if rootonly +rootpth: + defs 2 ; Special path for root dir only + defb 0 ; End of path + endif ; rootonly + +;----------------------------------------------------------------------------- + +; The following will cause an error message to appear if +; the size of ZCPR33 is over 2K bytes. + + if [ $ - entry ] gt 800h + *** ZCPR33 IS LARGER THAN 2K BYTES *** + endif + + endif ;errflag + + end ; ZCPR33 + \ No newline at end of file diff --git a/Source/BPBIOS/ZCPR33/zcpr33.z80.sav b/Source/BPBIOS/ZCPR33/zcpr33.z80.sav new file mode 100644 index 00000000..99e7e96a --- /dev/null +++ b/Source/BPBIOS/ZCPR33/zcpr33.z80.sav @@ -0,0 +1,4038 @@ +; PROGRAM: ZCPR +; VERSION: 3.3 +; DERIVATION: ZCPR30 +; AUTHOR: Jay Sage +; DATE: May 28, 1987 + +; ZCPR33 is copyright 1987 by Echelon, Inc. All rights reserved. End-user +; distribution and duplication permitted for non-commercial purposes only. +; Any commercial use of ZCPR33, defined as any situation where the duplicator +; recieves revenue by duplicating or distributing ZCPR33 by itself or in +; conjunction with any hardware or software product, is expressly prohibited +; unless authorized in writing by Echelon. +; +; Echelon specifically disclaims any warranties, expressed or implied, +; including but not limited to implied warranties of merchantability and +; fitness for a particular purpose. In no event will Echelon be liable for +; any loss of profit or any other commercial damage, including but not limited +; to special, incidental, consequential, or other damages. +; +; Echelon can be contacted at: +; Echelon, Inc. +; 885 N. San Antonio Road +; Los Altos, California USA 94022 +; (415) 948-3820 + + +;----------------------------------------------------------------------------- +; +; A C K N O W L E D G M E N T S +; +;----------------------------------------------------------------------------- + +; Many people have played a role in the development of ZCPR in general and +; ZCPR33 in particular. It all started when "The CCP Group," including +; Richard Conn, Ron Fowler, Keith Petersen, Frank Wancho, Charlie Strom, and +; Bob Mathias decided that by rewriting the CP/M command processor to take +; advantage of Zilog-specific opcodes they could save enough code to enhance +; some of the features. Richard Conn then extended that development through +; ZCPR2 to ZCPR3 (3.0). Just a little over two years ago, I took the first +; step to enhance ZCPR3 by making it get the maximum drive and user values +; from the environment instead of hard coding them in. This version was +; distributed privately as ZCPR31. Along the way to what is now ZCPR +; version 3.3 a number of others have made valuable contributions: Steve +; Kitahata, Michael Bate, Bruce Morgen, Roger Warren, Dreas Nielsen, Bob Freed, +; Al Hawley, Howard Goldstein, and many others who have stimulated developments +; by pointing out problems or asking questions. + +; I would like particularly to acknowledge two people who have played a very +; significant role in these developments. One is Al Hawley. He introduced +; the idea of having the DUOK flag in the environment control how the CPR +; would respond to the DU: form of directory reference. He also originated +; the idea of using the high bit of the first character of each command name +; to control whether or not it would be wheel restricted. Finally, he +; contributed the basic structure of the highly efficient, elegant, and more +; general number evaluation routines in the code. + +; My biggest debt of gratitude is to Howard Goldstein. His role in the +; development of ZCPR33 goes back about a year, when he contributed the first +; correct implementation of the minpath feature. More recently, during the +; period of intense development since Echelon expressed its interest in my +; writing the official 3.3 version, he and I have shared an especially +; enjoyable and fruitful relationship. Most of the newest ideas have been +; worked out jointly, and Howard has done a great deal to keep my code and +; concepts on track. He discovered many ways to pare the code down and, more +; importantly, uncovered numerous subtle bugs. He recoded the SAVE command +; to make it more compact and reliable. +; +; Jay Sage +; May 28,1987 + +;----------------------------------------------------------------------------- +; +; U S E R C O N F I G U R A T I O N +; +;----------------------------------------------------------------------------- + +; The following MACLIB statements load all the user-selected equates +; which are used to customize ZCPR33 for the user's working environment. +; NOTE -- TRUE & FALSE are defined in Z3BASE. + + maclib z3base.lib + maclib z33hdr.lib + +; Check that the configuration includes the required facilities + +; A ZCPR33 system is assumed to include certain minimal features, including +; an external file control block, external path, shell stack, message buffer, +; external environment descriptor, multiple command line, and external stack. +; If wheel checking is enabled in the Z33HDR.LIB file, then there must be +; an address defined for the wheel byte in the Z3BASE.LIB file. + +errflag defl extfcb eq 0 ; External command FCB +errflag defl errflag or [ expath eq 0 ] ; Symbolic path +errflag defl errflag or [ shstk eq 0 ] ; Shell stack +errflag defl errflag or [ z3msg eq 0 ] ; Message buffer +errflag defl errflag or [ z3env eq 0 ] ; Environment descriptor +errflag defl errflag or [ z3cl eq 0 ] ; Multiple command line +errflag defl errflag or [ extstk eq 0 ] ; External stack + if wheel or wdu or wpass or wprefix or whldir +errflag defl errflag or [ z3whl eq 0 ] ; Wheel byte + endif ;wheel or wdu or wpass or wprefix or whldir + + if errflag + + *** NOT ALL REQUIRED ZCPR3 FACILITIES ARE SUPPORTED *** + + else ; go ahead with the assembly + + +;----------------------------------------------------------------------------- +; +; D E F I N I T I O N S S E C T I O N +; +;----------------------------------------------------------------------------- + + +; ---------- Macro definitions + + maclib z33mac.lib ; Library of macros for ZCPR33 + + +; ---------- ASCII definitions + +ctrlc equ 03h +bell equ 07h +tab equ 09h +lf equ 0ah +cr equ 0dh + + +; ---------- Operating system addresses + +wboot equ base+0000h ; CP/M warm boot address +udflag equ base+0004h ; User number in high nybble, disk in low +bdos equ base+0005h ; BDOS function call entry point +tfcb equ base+005ch ; Default FCB buffer +tfcb2 equ tfcb+16 ; 2nd FCB +tbuff equ base+0080h ; Default disk I/O buffer +tpa equ base+0100h ; Base of TPA +bios equ ccp+0800h+0e00h ; BIOS location + + +; ---------- Error codes + +; ZCPR33 uses the error byte at the beginning of the message buffer as a flag +; to show what kind of error occurred. Advanced error handlers will be able +; to help the user further by suggesting the possible cause of the error. +; Error code 6 for an ECP error is determined by the code and cannot be +; changed (without increasing code length). + +ecduchg equ 1 ; Directory change error -- attempt to change + ; ..logged directory when under control of + ; ..wheel byte and wheel is off + +ecbaddir equ 2 ; Bad directory specification -- logging of + ; ..user number beyond legal range, + ; ..nonexistent named directory + +ecbadpass equ 3 ; Bad password -- incorrect password entered + + +ecbadcmd equ 5 ; Bad command form -- wildcard or file type + ; ..present in command verb + +ececperr equ 6 ; ECP error -- command could not be executed + ; ..by ECP, error handling was forced by a + ; ..transient for its own reasons + ; (DO NOT CHANGE FROM 6) + +ecnocmd equ 7 ; Command file not found -- command that skips + ; ..ECP could not be executed, GET could not + ; ..find file to load + +ecambig equ 8 ; Ambiguous file specification where not + ; ..allowed (SAVE, GET, REN) + +ecbadnum equ 9 ; Bad numerical value -- not a number where + ; ..number expected, number out of range + +ecnofile equ 10 ; File not found -- REN, TYPE, LIST could not + ; ..find a specified file + +ecdiskfull equ 11 ; Disk directory or data area full + +ectpafull equ 12 ; TPA overflow error + + +; ---------- Multiple command line equates + +; The multiple command line buffer is located in a protected area in memory so +; that it is not overwritten during warm boots. It includes some pointers so +; that when ZCPR33 starts it can tell where to start reading the command line. +; BUFSIZ and CHRCNT are not used by ZCPR33 but are provided so that the BDOS +; line input function can be used to read in a command line. + +nxtchr equ z3cl ; Address where pointer to next command to + ; ..process is kept +bufsiz equ z3cl+2 ; Address where size of buffer is kept +chrcnt equ z3cl+3 ; Address where length of string actually in + ; ..the buffer is kept (not always reliable) +cmdlin equ z3cl+4 ; Address of beginning of command line buffer +buflen equ z3cls ; Length of command line buffer + + +; ---------- Command file control block + +; In ZCPR33 the file control block for commands must be located in protected +; memory. This not only frees up valuable space in the command processor for +; code but also makes it possible for programs to determine by what name they +; were invoked. + +cmdfcb equ extfcb + + +; ---------- External CPR stack + +stack equ extstk+48 ; Set top-of-stack address +pwlin equ extstk ; Place line at bottom of stack + + +; ---------- Environment + +quietfl equ z3env+28h ; Quiet flag +maxdrenv equ z3env+2ch ; Maximum drive value +maxusrenv equ z3env+2dh ; Maximum user value +duokfl equ z3env+2eh ; Flag indicating acceptance of DU: form +crttxt0 equ z3env+33h ; Address of number of lines of text on the + ; ..screen of CRT0 + + +; ---------- Message buffer + +ecflag equ z3msg ; Error return code flag +ifptrfl equ z3msg+1 ; Pointer to current IF level +ifstatfl equ z3msg+2 ; Flow control status byte +cmdstatfl equ z3msg+3 ; Command status flag +cmdptr equ z3msg+4 ; Pointer to currently running command +zexinpfl equ z3msg+7 ; ZEX input status/control flag +zexrunfl equ z3msg+8 ; ZEX running flag +errcmd equ z3msg+10h ; Error handling command line +xsubflag equ z3msg+2ch ; XSUB input redirection flag +subflag equ z3msg+2dh ; Submit running flag +curusr equ z3msg+2eh ; Currently logged user +curdr equ z3msg+2fh ; Currently logged drive + + +;----------------------------------------------------------------------------- +; +; C O D E M O D U L E S S E C T I O N +; +;----------------------------------------------------------------------------- + + page + +; ZCPR33-1.Z80 + +;============================================================================= +; +; E N T R Y P O I N T S A N D H E A D E R S T R U C T U R E +; +;============================================================================= + + if not rel ; If generating absolute code + org ccp + endif ;not rel + + +; ENTRY POINTS INTO ZCPR33 +; +; For compatibility with CP/M, two entry points are provided here. In +; standard CP/M if the code is entered from the first entry point, then the +; command in the resident command buffer is executed; if entered from the +; second entry point, the command line is flushed. With ZCPR33 and its +; multiple command line buffer, these two entry points function identically +; and go to the same address. +; +; We have kept the entry points in their standard locations but have used a +; relative jump for the second entry point and replaced the last byte with the +; version number. In this way the version number occupies a position that +; would otherwise contain the page number at which the CPR runs. It will +; always be possible, therefore, to distinguish ZCPR33 and later versions +; from other command processors. The first jump is kept as an absolute jump +; so that 1) the code will be compatible with Z-COM and Z3-DOT-COM and 2) the +; execution address of a CPR module can always be determined. + +entry: + jp zcpr + + jr zcpr + +version: + defb 33h ; Version ID squeezed in here (offset = 5) + +;----------------------------------------------------------------------------- + +; Configuration information + +options: ; (offset = 6) + optflag badduecp,rootonly,ndrenv,fcpenv,rcpenv,inclenv,aduenv,duenv + optflag highuser,drvprefix,scancur,incldir,incldu,dufirst,accptdir,accptdu + optflag no,pwcheck,pwnoecho,wdu,wpass,wprefix,fastecp,skippath + +attdir defl [ comatt eq 80h ] or [ comatt eq 01h ] or [ not attchk ] +attsys defl [ comatt eq 00h ] or [ comatt eq 01h ] or [ not attchk ] +subquiet defl [ subnoise eq 1 ] +subecho defl [ subnoise gt 1 ] + + optflag shellif,attsys,attdir,attchk,subecho,subquiet,subclue,subon + +; Byte with information about the alternate colon option. If the byte is +; zero, the option is not supported. Otherwise the byte contains the +; prefix character that serves as an alias for a colon prefix. Offset = 10. + + if altcolon + defb altchar + else + defb 0 + endif ;altcolon + +; Byte with information about the FASTECP implementation (option bit above +; indicates whether the feature is enabled at all). If no character appears +; here (zero byte), then only a leading space can be used. Otherwise, the +; first seven bits contain the character, and the high bit, if set, indicates +; that ONLY this character will be recognized and not a space. Offset = 11. + + if fastecp and altspace + if altonly + defb ecpchar + 80h + else ;not altonly + defb ecpchar + endif ;altonly + else ;no alternate character + defb 0 + endif ;fastecp and altspace + + defb 0,0,0,0 ; Space reserved for expansion + +;----------------------------------------------------------------------------- + +; Entry points to file name parsing code. + +; Entry point REPARSE. A call to this point can be used to parse a command +; line tail into the default file control blocks at 5CH and 6CH. Each time +; the parser is called it leaves the starting address of the second token in +; the PARESPTR address below so that successive calls to the routine reparse +; the command tail one token later. A program can load its own pointer into +; PARSEPTR as well. Offset = 16 (10h). + +reparse: +parseptr equ $+1 ; Pointer for in-the-code modification + ld hl,0 + jp parsetail + +; Entry point SCAN. A call to this point can be used to parse a single token +; pointed to by HL into the FCB pointed to by DE. Offset 22 (16h). + +scan: + jp scanner + +;----------------------------------------------------------------------------- + +; BUFFERS +; +; In this area various data items are kept. First comes the list of commands +; supported by ZCPR33; then comes the name of the extended command processor +; (ECP). By putting these items here, an 'H' command in the RCP or a utility +; like SHOW.COM can find this information and report it to the user. + + +; ---------- RESIDENT COMMAND TABLE + +; The command table entry is structured as follows: First there is a byte +; which indicates the number of characters in each command. Then there is a +; series of entries comprising the name of a command followed by the address +; of the entry point to the code for carrying out that command. Finally, +; there is a null byte (00h) to mark the end of the table. Offset = 25 (19h). + + +cmdtbl: + defb cmdsize ; Length of command names + ctable ; Define table via macro in Z33HDR.LIB + defb 0 ; End of table + +; ---------- NAME FOR EXTENDED COMMAND PROCESSOR + +; The name of the extended command processor is placed here after the command +; table so that utilities like SHOW or an RCP 'H' command can find it. + +ecpfcb: + ecpname ; From Z33HDR.LIB + + +; ---------- FILE TYPE FOR TRANSIENT COMMANDS (usually COM) + +; This file type also applies to the extended command processor name. + +commsg: + comtyp ; From Z33HDR.LIB + + + +; ---------- SUBMIT FILE CONTROL BLOCK + + if subon ; If submit facility enabled ... + +subfcb: + defb subdrv-'A'+1 ; Explicit drive for submit file + defb '$$$ ' ; File name + subtyp ; From Z33HDR.LIB + defb 0 ; Extent number + defb 0 ; S1 (user number 0) +subfs2: + defs 1 ; S2 +subfrc: + defs 1 ; Record count + defs 16 ; Disk group map +subfcr: + defs 1 ; Current record number + + endif ; subon + +; End ZCPR33-1.Z80 + + page + +; ZCPR33-2.Z80 + +;============================================================================= +; +; C O M M A N D L I N E P R O C E S S I N G C O D E +; +;============================================================================= + +; MAIN ENTRY POINT TO CPR + +; This is the main entry point to the command processor. On entry the C +; register must contain the value of the user/drive to be used as the current +; directory. + +zcpr: + ld sp,stack ; Reset stack + + if pwnoecho + ld a,0c3h ; Reenable BIOS conout routine + ld (bios+0ch),a ; ..after a warmboot + endif ;pwnoecho + + ld b,0fh ; Keep nibble mask in B + +; If the HIGHUSER option is enabled, we compare the user/drive in the login +; byte in C to the values stored in the message buffer. If, ignoring bit 4 +; of the user number, they match, then we remain in the current area, which +; may be a user area above 15. + + if highuser + + ld a,c ; Copy user/drive byte to A + and b ; Isolate drive + ld d,a ; ..and move to D + ld a,c ; Get full byte back + swap ; Swap nibbles + and b ; Isolate user number + ld e,a ; ..and move to E + ld hl,(curusr) ; Get old curdr/curusr into HL + sbc hl,de ; Subtract new values from old (carry is clear) + ex de,hl ; Switch new values into HL, diff into DE + ld a,d ; Combine two parts of difference + or e + and b ; Ignore bit for high user numbers + jr z,zcpr1 ; Skip update if no change in DU + ld (curusr),hl ; Update values of current drive and user +zcpr1: + + else ;not highuser + + ld a,c ; Copy user/drive byte to A + and b ; Isolate drive + ld h,a ; ..and move to H + ld a,c ; Get full byte back + swap ; Swap nibbles + and b ; Isolate user number + ld l,a ; ..and move to L + ld (curusr),hl ; ..and save them + + endif ;highuser + +; This block of code is executed when submit processing is enabled. We log +; into user area 0, where the submit file is kept, and we search the +; designated drive for the file. The result is kept in SUBFLAG. This code +; only has to be executed on reentry to the command processor at the main +; entry point. Commands that do not reboot but simply return to the CPR will +; execute without the disk reset and file search required here. Ron Fowler +; pointed out a shortcut based on the fact that after a disk reset, the A +; regiser contains a value of 0 if there is no file on drive A with a '$' in +; the file name and 0FFH if there is such a file. Thus if A = 0, there can +; be no '$$$.SUB' file on drive A. This trick is, unfortunately, not reliable +; under some versions of ZRDOS. Therefore, an option has been included to +; use or not use this shortcut. + + if subon ; If submit facility enabled .. + + call defltdma ; Set DMA address to 80H + ld a,0 ; Log into user area 0 + call setuser + ld c,0dh ; Reset disk system (returns 0FFH if a $$$.SUB + call bdossave ; ..file might exist in user 0) + ld de,subfcb ; Point to submit file FCB with explicit drive + + if subclue + call nz,srchfst ; Search only if flag says it could exist + else ;not subclue + call srchfst ; Search for the file unconditionally + endif ;subclue + + ld (subflag),a ; Set flag for result (0 = no $$$.SUB) + + else ;not subon + + ld c,0dh ; Reset disk system + call bdossave + + endif ; subon + + jr nextcmd ; Go to entry point for processing next command + + +;----------------------------------------------------------------------------- + +; NEW COMMAND LINE ENTRY POINT + +; This entry point is used when ZCPR33 finds the command line empty. A call to +; READBUF gets the next command line from the following possible sources in +; this order: +; 1) a running ZEX script +; 2) the submit file $$$.SUB (if enabled) +; 3) the shell stack +; 4) the user +; If the line comes from the shell stack, then the shell bit in the command +; status flag is set. + +restart: + ld sp,stack ; Reset stack + xor a + ld (cmdstatfl),a ; Reset ZCPR3 command status flag + inc a ; Set ZEX message byte to 1 to + ld (zexinpfl),a ; ..indicate command prompt + if subon + ld (xsubflag),a ; Ditto for XSUB flag + endif ;subon + ld hl,cmdlin ; HL --> beginning of command line buffer + ld (nxtchr),hl ; Save as pointer to next character to process + ld (hl),0 ; Zero out command line (in case of warm boot) + push hl ; Save pointer to command line + call readbuf ; Input command line (ZEX, submit, shell, + ; ..or user) + pop hl ; Get back pointer to command line + ld a,(hl) ; Check for comment line + cp comment ; Begins with comment character? + jr z,restart ; If so, go back for another line + ; Otherwise, fall through + +;----------------------------------------------------------------------------- + +; COMMAND CONTINUATION PROCESSING ENTRY POINT + +; This is the entry point for continuing the processing of an existing command +; line. The current drive and user values as known to the CPR are combined +; and made into the user/drive byte that CP/M keeps at location 0004. If the +; HIGHUSER option is enabled, the user number for this byte is forced to be +; in the range 0..15. Next the command status flag is processed. The error +; and ECP bits in the actual flag are reset, and the original flag is checked +; for an ECP error return (both ECP bit and error bit set). In that case, +; control is transferred to the error handler. + +nextcmd: + ld hl,(curusr) ; Get currently logged drive and user + ld a,l ; Work on user number + if highuser + and 0fh ; Keep value modulo 16 + endif ;highuser + swap ; Get user into high nibble + or h ; ..and drive into low nibble + ld (udflag),a ; Set user/disk flag in page 0 + + ld a,2 ; Turn ZEX input redirection off + ld (zexinpfl),a + if subon + ld (xsubflag),a ; Turn off XSUB input redirection + endif ;subon + + ld hl,cmdstatfl ; Point to the command status flag (CSF) + ld a,(hl) ; Get a copy into register A + res 1,(hl) ; Reset the actual error bit + res 2,(hl) ; Reset the actual ECP bit + and 110b ; Select ECP and error bits in original flag + cp 110b ; Test for an ECP error + jp z,error ; Process ECP error with error handler + +nextcmd1: + ld sp,stack ; Reset stack + call logcurrent ; Return to default directory + ld hl,(nxtchr) ; Point to first character of next command + push hl ; Save pointer to next character to process + +; We have to capitalize the command line each time because an alias or other +; command line generator may have stuck some new text in. The code is shorter +; if we simply capitalize the entire command rather than trying to capitalize +; only the one command we are about to execute. + +capbuf: ; Capitalize the command line + ld a,(hl) ; Get character + call ucase ; Convert to upper case + ld (hl),a ; Put it back + inc hl ; Point to next one + or a ; See if end of line (marked with null) + jr nz,capbuf ; If not, loop back + + pop hl ; Restore pointer to next character to process + +nextcmd3: + +; ZCPR33 provides a convenience feature to make it easier to enter a leading +; colon to force the current directory to be scanned and to make the CPR skip +; resident commands. If ALTCOLON is active, an alternate character can be +; entered as the first character of a command. The default (and recommended) +; alternative character is the period (it could not have any other meaning +; here). If FASTECP (see below) is not enabled or if ALTONLY is enabled, +; leading spaces on the command line are skipped before looking for the +; alternate character for the colon + + if [ not fastecp ] or [ fastecp and altonly ] + call sksp + endif ;[ not fastecp ] or [ fastecp and altonly ] + + if altcolon ; If allowing alias character for leading colon + ; Set B = ':' and C = alias character ('.') + ld bc,':' shl 8 + altchar + ld a,(hl) ; Get first character in new command line + cp c ; If first character is ALTCHAR, treat as ':' + jr nz,nextcmd3a ; Branch if not '.' + ld (hl),b ; Else replace with colon +nextcmd3a: + endif ;altcolon + + +; ZCPR33 supports three new options that can speed up command processing. +; FASTECP allows commands with a leading space to bypass the search for +; resident commands or transient commands (COM files) along the path and go +; directly to the extended command processor. With SKIPPATH enabled, when +; a command is prefixed by an explicit directory specification (but not a +; lone colon), searching of the path and invocation of the ECP are disabled. +; If the command is not found in the specified directory, the error handler +; is invoked immediately. Finally, if BADDUECP is enabled, when an attempt +; is made to log into an invalid directory, the command is sent directly to +; the ECP, which can provide special handling. To implement these three +; features, the first actual character of the command line is saved as a +; flag in FIRSTCHAR. My apologies for the complexity of these nested +; conditionals. + + if fastecp or skippath or badduecp + + ; With FASTECP we store the first actual + ; ..character and then skip over spaces (unless ALTONLY is + ; ..enabled, in which case we skipped spaces above) + + if fastecp + + if altspace ; If allowing alias character for leading space + ; Set B = ' ' and C = alias character ('/') + ld bc,' ' shl 8 + ecpchar + ld a,(hl) ; Get first character in new command line + cp c ; If first character is ECPCHAR treat as ' ' + jr nz,nextcmd3b ; Branch if not '/' (alternate character) + ld (hl),b ; Else replace with space +nextcmd3b: + endif ;altspace + + ld a,(hl) ; Get first character in command line + ld (firstchar),a ; Save it in flag + call sksp ; Then skip leading spaces + endif ;fastecp + + ; With SKIPPATH but not FASTECP we store the first + ; ..character of the command (spaces were skipped above) + + if [ not fastecp ] and skippath + ld (firstchar),a ; Store first nonspace character + endif ;[ not fastecp ] and skippath + + ; With only BADDUECP (and neither SKIPPATH nor FASTECP) + ; ..we store a null in the FIRSTCHAR flag + + if [ not fastecp ] and [ not skippath ] + xor a + ld (firstchar),a + endif ;[ not fastecp ] and [ not skippath ] + + endif ;fastecp or skippath or badduecp + +; Resume processing of the command line + + or a ; Now at end of line? + jr z,restart ; If so, get a new command line + cp ctrlc ; Flush ^C to prevent error-handler + jr z,restart ; ..invocation on warm boots + + cp cmdsep ; Is it a command separator? + jr nz,nextcmd4 ; If not, skip ahead to process the command + inc hl ; If it is, skip over it + jr nextcmd3 ; ..and process next command + +nextcmd4: + +; Unless we are now running the external error handler, the following code +; saves the address of the current command in Z3MSG+4 for use by programs +; to determine the command line with which they were invoked. + + ld a,(cmdstatfl) ; Get command status flag + bit 1,a ; Test for error handler invocation + jr nz,nextcmd5 ; If so, skip over next instruction + ld (cmdptr),hl + +nextcmd5: + call parser ; Parse entire command line, then look for + ; ..the command + + +;============================================================================= + +; C O M M A N D S E A R C H C O D E + +;============================================================================= + +; CODE FOR FINDING AND RUNNING THE COMMAND + +; Here is the code for running a command. Commands are searched for and +; processed in the following order: +; +; 1) flow control package (FCP) commands and IF state testing +; 2) resident command package (RCP) +; 3) command processor (CPR) +; 4) transient (COM file or extended command processor) +; 5) external error handler +; 6) internal error message and processing +; +; Special notes: +; +; a) If the current command is a shell command, special handling of flow +; control is required. If SHELLIF is enabled so that flow commands are +; allowed in shell alias scripts, then we reset the flow state to its +; initial condition (none) with each shell invocation (and after each +; command is run, we reset the shell bit in the code after CALLPROG). +; In this case shells will run regardless of flow state, and residual +; conditionals from the last running of the shell are flushed. Each +; shell input sequence begins afresh. On the other hand, if SHELLIF is +; off, flow control commands inside a shell script must be flushed so +; that they do not interfere with user entered commands. +; b) Directory prefixes are ignored for flow commands, since all flow control +; processing must pass through the FCP (the command must run even when +; the current flow state is false). +; c) If the command is not found in the FCP, then the current flow state is +; tested. If it is false, the command is flushed and the code branches +; back to get the next command. +; d) If the command had a directory prefix (a colon alone is sufficient), +; then steps #2 and #3 are skipped over,and the command is processed +; immediately as a transient program. +; e) In ZCPR33, unlike ZCPR30, RCP commands are scanned before CPR commands. +; This has been done so that more powerful RCP commands can supercede +; CPR commands. +; f) If the SKIPPATH option is enabled, when an explicit directory is +; specified with a command (but not just a colon), searching of the path +; is bypassed. If the FASTECP option is enabled, commands with leading +; spaces are sent directly to the ECP for processing. +; g) If no external command can be found, ZCPR33 performs extensive error +; handling. If the command error occurred while looking for a shell +; program, then the shell stack is popped. Otherwise, ZCPR33 tries to +; invoke an external, user-specified error handling command line. If +; none was specified or if the error handler invoked by that command +; line cannot be found, the internal error message (step #6) is displayed. + + +;----------------------------------------------------------------------------- + +runcmd: + if shellif ; If shells reininitialize flow control... + ld a,(cmdstatfl) ; Get command status flag + bit 0,a ; Shell bit set? + jr z,fcpcmd ; If not a shell, process command + xor a ; Otherwise, shell is running, so + ld (ifptrfl),a ; ..reinitialize the IF system and continue + endif ;shellif + + +; ---------- Module <<1>>: Flow Control Processing + +; An option is supported here to allow the address of the FCP to be obtained +; from the environment descriptor. This is logically consistent with the +; pholosopy of the Z-System and is useful when one wants to have a single block +; of FCP/RCP memory that can be allocated dynamically between FCP and RCP +; functions. + +fcpcmd: + + if fcp ne 0 ; Omit code if FCP not implemented + + if fcpenv ; If getting FCP address from Z3ENV + + ld e,12h ; Offset in Z3ENV to FCP address + call pkgoff ; Set HL to FCP+5 + jr z,runcmd1 ; Skip if no FCP present + + else ; using fixed FCP address + + ld hl,fcp+5 ; Get address from Z3BASE.LIB + + endif ;fcpenv + + +; If flow control processing is not allowed in shell aliases (scripts running +; as shell commands), then we have to make sure that we flush any flow control +; commmands, otherwise the CPR will attempt to execute them as transients, +; with dire consequences. In the code below we check the shell bit. If it +; is not set, we proceed normally. If it is set, we scan for flow commands +; and then jump past the flow testing to RUNFCP2, where the code will flush +; the command if it was a flow command and execute it unconditionally if not. + + if not shellif + ld a,(cmdstatfl) ; Get command status flag + bit 0,a ; If shell bit not set, + jr z,runfcp1 ; ..we do normal processing + call cmdscan ; Otherwise, check for flow command + jr runfcp2 ; ..and flush if so using code below + endif ;not shellif + +runfcp1: + call cmdscan ; Scan command table in the module + jr z,callprog ; Run if found (with no leading CRLF) + +; This is where we test the current IF state. If it is false, we skip this +; command. + + call iftest ; Check current IF status + +runfcp2: ; If false, skip this command and go on to next + if drvprefix ; If DRVPREFIX we can use code below + jr z,jpnextcmd ; ..to save a byte + else ; Otherwise, we have to do an + jp z,nextcmd ; ..absolute jump + endif ;drvprefix + + endif ;fcp ne 0 + + +runcmd1: + if fastecp or badduecp + ld a,(firstchar) ; If FIRSTCHAR flag set for ECP invocation, + cp ' ' ; ..then go straight to transient processing + jr z,com + endif ;fastecp or badduecp + +colon equ $+1 ; Flag for in-the-code modification + ld a,0 ; If command had a directory prefix (even just + or a ; ..a colon) then skip over resident commands + jr nz,comdir + + +; ---------- Module <<2>>: RCP Processing + +; An option is supported here to allow the address of the RCP to be obtained +; from the environment descriptor. This is logically consistent with the +; pholosopy of the Z-System and is useful when one wants to have a single block +; of FCP/RCP memory that can be allocated dynamically between FCP and RCP +; functions. + + if rcp ne 0 ; Omit code if RCP not implemented + +rcpcmd: + + if rcpenv ; If getting address of rcp from Z3ENV + + ld e,0ch ; Offset in Z3ENV to RCP address + call pkgoff ; Set HL to address of RCP+5 + jr z,cprcmd ; Skip if no RCP + + else ; using fixed RCP address + + ld hl,rcp+5 ; Get address from Z3BASE.LIB + + endif ; rcpenv + + call cmdscan ; Check for command in RCP + jr z,callproglf ; If so, run it (with leading CRLF) + + endif ;rcp ne 0 + + +; ---------- Module <<3>>: CPR-Resident Command Processing + +cprcmd: + + ld hl,cmdtbl ; Point to CPR-resident command table + call cmdscan ; ..and scan for the command + jr z,callprog ; If found, run it (with no leading CRLF) + + + +; ---------- Module <<4>>: Transient Command Processing + +comdir: ; Test for DU: or DIR: only (directory change) + + if drvprefix + + ld a,(cmdfcb+1) ; Any command name? + cp ' ' + jr nz,com ; If so, must be transient or error + + ; Entry point for change of directory only + + if wdu ; If controlled by wheel.. + + ld a,(z3whl) ; Get wheel byte + or a ; If wheel on, go on ahead + jr nz,comdir1 + + if badduecp + ld (colon),a ; Pretend there is no colon + ld a,' ' ; Force invocation of ECP + ld (firstchar),a + jr com + else ;not badduecp + ld a,ecduchg + jr z,error + endif ;badduecp + + endif ; wdu + +comdir1: + ld hl,(tempusr) ; Get temporary drive and user bytes + + if not highuser ; If only users 0..15 can be logged + ld a,l ; Get user number and + cp 16 ; ..make sure not above 15 + jr nc,baddirerr ; If out of range, invoke error handling + endif ;not highuser + + dec h ; Shift drive to range 0..15 + ld (curusr),hl ; Make the temporary DU into the current DU + call logcurrent ; Log into the new current directory +jpnextcmd: + jp nextcmd ; Resume command line processing + + else ;not drvprefix + + if badduecp + xor a ; Pretend there is no colon + ld (colon),a + ld a,' ' ; Force invocation of ECP + ld (firstchar),a + else ;not badduecp + ld a,ecduchg + jr z,error + endif ;badduecp + + endif ;drvprefix + + +com: ; Process transient command + + ld a,(cmdstatfl) ; Check command status flag to see if + and 2 ; ..error handler is running + ld (zexinpfl),a ; Store result in ZEX control flag (2 will turn + ; ..ZEX input redirection off (0 = on) + if subon + ld (xsubflag),a ; Turn off XSUB input redirection also + endif ;subon + + ld hl,tpa ; Set default execution/load address + ld a,3 ; Dynamically load type-3 and above ENVs + call mload ; Load memory with file specified in cmd line + ld a,(cmdstatfl) ; Check command status flag to see if + and 100b ; ..ECP running (and suppress leading CRLF) + +; CALLPROG is the entry point for the execution of the loaded program. At +; alternate entry point CALLPROGLF if the zero flag is set, a CRLF is sent to +; the console before running the program. + +callproglf: + call z,crlf ; Leading new line + +callprog: + ; Copy command tail into TBUFF + +tailsv equ $+1 ; Pointer for in-the-code modification + ld hl,0 ; Address of first character of command tail + ld de,tbuff ; Point to TBUFF + push de ; Save pointer + ld bc,7e00h ; C=0 (byte counter) and B=7E (max bytes) + inc de ; Point to first char +tail: + ld a,(hl) ; Get character from tail + call tsteol ; Check for EOL + jr z,tail1 ; Jump if we are done + ld (de),a ; Put character into TBUFF + inc hl ; Advance pointers + inc de + inc c ; Increment character count + djnz tail ; If room for more characters, continue + call print ; Display overflow message + db bell ; ..ring bell + db 'Ovf','l'+80h ; ..then continue anyway +tail1: + xor a ; Store ending zero + ld (de),a + pop hl ; Get back pointer to character count byte + ld (hl),c ; Store the count + +; Run loaded transient program + + call defltdma ; Set DMA to 0080h standard value + +; Perform automatic installation of Z3 programs (unless type-2 environment) + + ld hl,(execadr) ; Get current execution address + call z3chk ; See if file is a Z3 program + jr nz,noinstall ; Branch if not + + cp 2 ; If type-2 (internal) environment + jr z,noinstall ; ..do not perform installation + + inc hl ; Advance to place for ENV address + ld (hl),low z3env ; Put in low byte of environment address + inc hl + ld (hl),high z3env ; Put in high byte + +noinstall: + +; Execution of the program occurs here by calling it as a subroutine + + ld hl,z3env ; Pass environment address to program in HL +execadr equ $+1 ; Pointer for in-line code modification + call 0 ; Call transient + +; Return from execution + + if shellif ; If flow processing allowed in shells... + ld hl,cmdstatfl ; Reset the shell bit in the command status + res 0,(hl) ; ..flag so multiple-command shells will work + endif ;shellif + + ; Continue command processing + if drvprefix ; If DRVPREFIX we can save a byte by + jr jpnextcmd ; ..doing a two-step relative jump + else ; Otherwise, we just have to do + jp nextcmd ; ..the absolute jump + endif ;drvprefix + + +; ---------- Module <<5>>: External Error Handler Processing + +baddirerr: + ld a,ecbaddir ; Error code for bad directory specification + +error: + +; If we are returning from an external command to process an error, we want +; to leave the error return code as it was set by the transient program. + + ld hl,cmdstatfl ; Point to command status flag + bit 3,(hl) ; Check transient error flag bit + jr nz,error1 ; If set, leave error code as set externally + ld (ecflag),a ; Otherwise, save error code from A register + +error1: + res 2,(hl) ; Reset the ECP bit to prevent recursion of + ; ..error handler by programs that don't + ; ..clear the bit + bit 0,(hl) ; Was error in attempting to run a shell? + jr nz,errsh ; If so, pop shell stack + +; The following code is included to avoid a catastrophic infinite loop when +; the external error handler cannot be found. After one unsuccessful try, +; the internal code is invoked. + + bit 1,(hl) ; Was an error handler already called? + jr nz,errintrnl ; If so, use internal error handler + +; If the current IF state is false, we would like to ignore the error and just +; go on with the next command. Unfortunately, for some errors (e.g., a bad +; command format such as a command with a wildcard character) the error handler +; is invoked before the pointer in the multiple command line buffer is set up +; to the next command. In that case, we fall into an infinite loop. We also +; must not allow the external error handler to run, since it will not run and +; we will again fall into an infinite loop. The present code is not so bad, of +; course, since even a command in a false part of a command sequence should not +; have a true error in it. We have already put in code to bypass password +; checking during a false IF state, since a command with a password is not an +; invalid command. + + if fcp ne 0 + call iftest ; If we are in a false IF state, external + jr z,errintrnl ; ..handler will not run, so use built-in + endif ;fcp ne 0 + + set 1,(hl) ; Set command status flag for error invocation + ld hl,errcmd ; Point to error handler command line + ld a,(hl) ; Check first byte for presence of an + or a ; ..error command line + jr z,errintrnl ; If no error handler, use built-in one + ld (nxtchr),hl ; Else, use error command line as next command + jp nextcmd1 ; Run command without resetting status flag + + +; ---------- Module <<6>>: Resident Error Handler Code + +; If the error is with the invocation of a shell command, we pop the bad shell +; command off the stack to prevent recursion of the error. We then use the +; the internal error handler to echo the bad shell command. + +errsh: + + ld de,shstk ; Point to current entry in shell stack + ld hl,shstk+shsize ; Point to next entry in stack + ld bc,[shstks-1]*shsize ; Bytes to move + ldir ; Pop the stack + xor a ; Clear the last entry position + ld (de),a + +errintrnl: + if subon + call subkil ; Terminate active submit file if any + endif ;subon + + call crlf ; New line + ld hl,(cmdptr) ; Point to beginning of bad command + call printhl ; Echo it to console + call print ; Print '?' + defb '?'+80h + jp restart ; Restart CPR + +; End ZCPR33-2.Z80 + + page + +; ZCPR33-3.Z80 + +;============================================================================= +; +; C O M M A N D L I N E P A R S I N G C O D E +; +;============================================================================= + +; This code parses the command line pointed to by HL. The command verb is +; parsed, placing the requested program name into the command file control +; block. The drive and user bytes are set. If an explicit DU or DIR was +; given, the COLON flag is set so that the processor knows about this later +; when the command search path is built. + +parser: + + ld de,cmdfcb ; Point to the command FCB + push de + call initfcb ; Initialize the FCB + pop de + ld (duerrflag),a ; Store zero (INITFCB ends with A=0) into flag + call scanner ; Parse first token on command line into FCB + jr nz,badcmd ; Invoke error handler if '?' in command + +duerrflag equ $+1 ; Pointer for in-the-code modification + ld a,0 ; See if bad DU/DIR specified with command verb + or a + + if badduecp + jr z,parser1 ; If DU/DIR is OK, skip ahead + ld a,(cmdstatfl) ; If ECP already running + bit 2,a ; ..skip ahead + jr nz,parser1 + ld a,(cmdfcb+1) ; If not a directory change command + sub ' ' ; ..invoke error handler + jr nz,baddirerr + ; If bad directory change attempt, + ld (tmpcolon),a ; ..pretend there is no colon (A=0) + ld a,' ' ; ..and force immediate ECP invocation + ld (firstchar),a ; ..when command is processed + else ; If errors not processed by ECP then + jr nz,baddirerr ; ..invoke error handler + endif ; badduecp + +parser1: + ld de,cmdfcb+9 ; Make sure no explicit file type was given + ld a,(de) ; Get first character of file type + cp ' ' ; Must be blank +badcmd: + ld a,ecbadcmd ; Error code for illegal command form + jr nz,error ; If not, invoke error handler + + push hl ; Save pointer to next byte of command + ld hl,commsg ; Place default file type (COM) into FCB + ld bc,3 + ldir + pop hl ; Get command line pointer back + +; The following block of code is arranged so that the COLON flag is set only +; when an explicit directory specification is detected in the command verb. +; Other parses also change the TMPCOLON flag, but only when passing here does +; the flag get transferred to COLON. + +tmpcolon equ $+1 ; Pointer for in-the-code modification + ld a,0 ; ..by SCANNER routine + ld (colon),a ; If explicit DU/DIR, set COLON flag + +; Find the end of this command and set up the pointer to the next command. + + push hl ; Save command line pointer + dec hl ; Adjust for preincrementing below +parser2: ; Find end of this command + inc hl ; Point to next character + ld a,(hl) ; ..and get it + call tsteol ; Test for end of command + jr nz,parser2 ; Keep looping if not + + ld (nxtchr),hl ; Set pointer to next command + pop hl ; Get back pointer to current command tail + +; This block of code parses two tokens in the command line into the two +; default FCBs at 5Ch and 6Ch. It also sets a pointer to the command tail +; for later copying into the command tail buffer at 80h. This code is used +; first when attempting to parse a normal command line and possibly again +; later when the entire user's command is treated as a tail to the extended +; command processor. The resident JUMP and SAVE commands use it also, and +; the entry point is available at location CCP+9 for use by other programs. + +parsetail: + ld (tailsv),hl ; Save pointer to command tail + + ; Process first token + + ld de,tfcb ; Point to first default FCB + push de ; Save pointer while initializing + call initfcb ; Initialize both default FCBs + pop de + call sksp ; Skip over spaces in command line + call nz,scanner ; If not end of line, parse the token + ; ..into first FCB + ld (parseptr),hl ; Save pointer to second token for reparsing + + ; Process second token + + call sksp ; Skip over spaces + ret z ; Done if end of line or end of command + ld de,tfcb2 ; Point to second default FCB + ; ..and fall through to SCANNER routine + +;----------------------------------------------------------------------------- + +; This routine processes a command line token pointed to by HL. It attempts +; to interpret the token according to the form [DU:|DIR:]NAME.TYP and places +; the corresponding values into the FCB pointed to by DE. On exit, HL points +; to the delimiter encountered at the end of the token. The Z flag is set if +; a wild card was detected in the token. + +scanner: + xor a ; Initialize various flags + ld (tmpcolon),a ; Set no colon + ld bc,(curusr) ; Get current drive and user into BC + inc b ; Shift drive range from 0..15 to 1..16 + ld (tempusr),bc ; Initialize temporary DU + + call scanfld8 ; Extract possible file name + cp ':' ; Was terminating character a colon? + jr nz,scantype ; If not, go on to extract file type + ld (tmpcolon),a ; Otherwise, set colon and process DU/DIR + inc hl ; Point to character after colon + +; Code for resolving directory specifications (macro RESOLVE is defined in +; Z33MAC.LIB). RESOLVE returns with a nonzero value and a NZ flag setting +; if the DU/DIR specification cannot be resolved. There are quite a few +; possibilities here. + + ; Case where both forms are accepted + + if accptdir and accptdu + if dufirst + resolve du,dir ; Check DU: form before DIR: form + else + resolve dir,du ; Check DIR: form before DU: form + endif ;dufirst + endif ;accptdir and accptdu + + ; Cases of only one form accepted + + if accptdu and not accptdir + resolve du, ; Check only DU: form + endif ;accptdu and not accptdir + + if accptdir and not accptdu + resolve dir, ; Check only DIR: form + endif ;accptdir and not accptdu + + ; Case of neither form accepted + + if not accptdir and not accptdu + push hl ; Save pointer to command string + inc de ; Point to first character of name + ld a,(de) ; Get it + dec de ; Restore the pointer + sub ' ' ; If no name is there, A=0 and Z flag set + endif ;not accptdir and not accptdu + + push de ; Save pointer to FCB again + push af ; Save bad directory flag + ld a,(tempdr) ; Set designated drive + ld (de),a ; ..into FCB + inc de ; Point to file name field + call ifcb ; Perform partial init (set user code) + pop af ; Get bad directory flag back + ld (duerrflag),a ; Save flag in parser code + jr z,scanner1 ; Branch if valid directory specified + dec de ; Back up to record count byte + dec de + ld (de),a ; Store error flag there (NZ if error) +scanner1: + pop de ; Get FCB pointer back + pop hl ; Restore pointer to command string + call scanfld8 ; Scan for file name + +; This code processes the file type specification in the token + +scantype: + ld a,(hl) ; Get ending character of file name field + ex de,hl ; Switch FCB pointer into HL + ld bc,8 ; Offset to file type field + add hl,bc + ex de,hl ; Switch pointers back + + ld b,3 ; Maximum characters in file type + cp '.' ; See if file type specified + jr nz,scantype2 ; If not, skip over file type parsing + + inc hl ; Point to character after '.' + push de ; Save pointer to FCB file type + call scanfield ; Parse file type into FCB + pop de + +scantype2: + ex de,hl ; Swap pointers again + ld bc,5 ; Offset from file type to S1 field in FCB + add hl,bc + ex de,hl ; Swap pointers back + ld a,(tempusr) ; Get specified user number + ld (de),a ; ..and store in S1 byte of FCB + +scan3: ; Skip to space character, character after an + ; ..equal sign, or to end of command + ld a,(hl) ; Get next character + cp ' '+1 ; Done if less than space + jr c,scan4 + call tsteol ; Done if end of line or end of command + jr z,scan4 + inc hl ; Skip on to next character + cp '=' ; If not equal sign + jr nz,scan3 ; ..keep scanning + +scan4: ; Set zero flag if '?' in filename.typ + +qmcnt equ $+1 ; Pointer for in-the-code modification + ld a,0 ; Number of question marks + or a ; Set zero flag + ret + +; This routine invokes SCANFIELD for a file name field. It initializes the +; question mark count and preserves the FCB pointer. + +scanfld8: + xor a ; Initialize question mark count + ld (qmcnt),a + push de ; Save pointer to FCB + ld b,8 ; Scan up to 8 characters + call scanfield + pop de ; Restore pointer to FCB + ret + +; This routine scans a command-line token pointed to by HL for a field whose +; maximum length is given by the contents of the B register. The result is +; placed into the FCB buffer pointed to by DE. The FCB must have had its name +; and type fields initialized before this routine is called. Wild cards of +; '?' and '*' are expanded. On exit, HL points to the terminating delimiter. + +scanfield: + call sdelm ; Done if delimiter encountered + ret z + inc de ; Point to next byte in FCB + cp '*' ; Is character a wild card? + jr nz,scanfld1 ; Continue if not + + ld a,'?' ; Process '*' by filling with '?'s + ld (de),a + call qcountinc ; Increment count of question marks + jr scanfld2 ; Skip so HL pointer left on '*' + +scanfld1: ; Not wildcard character '*' + ld (de),a ; Store character in FCB + inc hl ; Point to next character in command line + cp '?' ; Check for question mark (wild) + call z,qcountinc ; Increment question mark count +scanfld2: + djnz scanfield ; Decrement char count until limit reached +scanfld3: + call sdelm ; Skip until delimiter + ret z ; Zero flag set if delimiter found + inc hl ; Pt to next char in command line + jr scanfld3 + + +; Subroutine to increment the count of question mark characters in the +; parsed file name. + +qcountinc: + push hl + ld hl,qmcnt ; Point to count + inc (hl) ; Increment it + pop hl + ret + +;----------------------------------------------------------------------------- + +; Validate the password pointed to by HL. Prompt user for password entry +; and return zero if it is correct. + + if pwcheck + +passck: + push hl ; Save pointer to password + call print ; Prompt user + defb cr,lf,'PW?',' '+80h + ld hl,pwlin ; Set up buffer for user input + ld bc,90ah ; Set 0ah (BDOS readln function) in C + ld (hl),b ; ..and 9 (max character count) in B + ex de,hl ; Switch buffer pointer to DE + + if pwnoecho + ld a,0c9h ; Disable BIOS conout routine to + ld (bios+0ch),a ; ..suppress password echoing + call bdossave ; Get user input + ld a,0c3h ; Reenable BIOS conout routine + ld (bios+0ch),a + else ;not pwnoecho + call bdossave ; Get user input + endif ;pwnoecho + + ex de,hl ; Restore pointer to HL + inc hl ; Point to count of characters entered + ld a,(hl) ; Get character count + inc hl ; Point to first character + push hl ; Save pointer while marking end of input + call addah ; Advance HL to just past last character + ld (hl),' ' ; Place space there + pop de ; Restore pointer to beginning of user input + pop hl ; Restore pointer to password from NDR + ld b,8 ; Maximum characters to compare +pwck: + ld a,(de) ; Get next user character + call ucase ; Capitalize it + cp (hl) ; Compare to NDR + ret nz ; No match + cp ' ' ; If last user character matched space in + ret z ; ..NDR, then we have a complete match + inc hl ; If not done, point to next characters + inc de + djnz pwck ; (flags not affected by DJNZ) + xor a ; Set zero flag and + ret ; ..return Z to show success + + endif ; pwcheck + +;----------------------------------------------------------------------------- + +; This code attempts to interpret the token in the FCB pointed to by register +; pair DE as a DIR (named directory) prefix. If it is successful, the drive +; and user values are stored in TEMPDR and TEMPUSR, the zero flag is set, and +; a value of zero is returned in register A. +; +; If the named directory is found to be password restricted, then the user is +; asked for the password (unless the directory is the one currently logged or +; the current IF state is false). If an incorrect password is entered, the +; error handler is generally invoked directly. The exception to this is when +; the transient program bit is set in the command status flag (this bit would +; be set by a non-CPR program that calls REPARSE). In this case the default +; directory is returned, the zero flag is reset, and a nonzero value in +; returned in register A to show a bad directory. In addition, the code in +; SCANNER will set record-count byte in the FCB to a nonzero value so that +; the calling program can detect the error. [Note: if DU processing is also +; allowed and it follows DIR processing, DUSCAN will also be called. Unless +; there is a passworded directory with a DU form, this will cause no trouble.] + + if accptdir + +dirscan: + +; If the DU form is not allowed, we have to detect a colon-only condition here. +; Otherwise DUSCAN will take care of it. + + inc de ; Point to first byte of directory form + + if not accptdu + ld a,(de) ; Get first character of directory + sub ' ' ; If it is a blank space + ret z ; ..we have a successful directory resolution + endif ;not accptdu + + ex de,hl ; Switch pointer to FCB to HL + + if ndrenv ; If getting NDR address for Z3ENV + ld e,15h ; Offset to NDR address + push hl ; Preserve pointer to FCB + call pkgoff ; Get NDR address from ENV into DE + pop hl + jr z,direrr ; Branch if no NDR implemented + else ; using fixed address of NDR buffer + ld de,z3ndir ; Point to first entry in NDR + endif ; ndrenv + +dirscan1: + ld a,(de) ; Get next character + or a ; Zero if end of NDR + jr z,direrr + inc de ; Point to name of directory + inc de + push hl ; Save pointer to name we are looking for + push de ; Save pointer to NDR entry + ld b,8 ; Number of characters to compare + +dirscan2: + ld a,(de) + cp (hl) + jr nz,dirscan3 ; If no match, quit and go on to next DIR + inc hl ; Point to next characters to compare + inc de + djnz dirscan2 ; Count down + +dirscan3: + pop de ; Restore pointers + pop hl + jr z,dirscan4 ; Branch if we have good match + + ex de,hl ; Advance to next entry in NDR + ld bc,16 ; 8 bytes for name + 8 bytes for password + add hl,bc + ex de,hl + jr dirscan1 ; Continue comparing + +; If ACCPTDU is enabled, we can share similar code in DUSCAN and do not need +; the code here. + + if not accptdu +direrr: ; No match found + dec a + ret + endif ;not accptdu + +dirscan4: ; Match found + ex de,hl ; Switch pointer to NDR entry into HL + push hl ; ..and save it for later + dec hl ; Point to user corresponding to the DIR + ld c,(hl) ; Get user value into C + dec hl ; Point to drive + ld b,(hl) ; Get it into B + + if pwcheck + + ld hl,(curusr) ; Get current drive/user into HL + inc h ; Shift drive to range 1..16 + xor a ; Clear carry flag + sbc hl,bc ; Compare + pop hl ; Restore pointer to NDR entry + jr z,setdu ; If same, accept values without PW checking + +; If WPASS is set, then password checking is bypassed when the wheel byte is +; set. + + if wpass + ld a,(z3whl) ; Get wheel byte + or a ; If wheel byte set + jr nz,setdu ; ..skip checking passwords + endif ;wpass + +; This code is a bit tricky. We do not want to be asked for passwords for +; named directory references in commands when the current IF state is false. +; So, first we check to see if there is a password on the directory. If not, +; we proceed to set the temporary DU to the specified directory. If there is +; a password, we check the current IF state. If it is false, we do not check +; passwords and pretend there was no password. However, we leave the current +; directory in effect. This will work properly in all but one rare +; circumstance. When the command is an 'OR' command with a reference to a +; passworded named directory (e.g., "OR EXIST SECRET:FN.FT"), the password +; will not be requested and the current directory will be used instead of the +; specified one. + + push bc ; Save requested drive/user + ld bc,8 ; Point to password in NDR + add hl,bc + ld a,(hl) ; Get first character of password + cp ' ' ; Is there a password? + + if fcp eq 0 ; If FCP not implemented ... + + call nz,passck ; Perform password checking if pw present + + else ;fcp ne 0 ; FCP implemented ... + + jr z,dirscan5 ; If no pw, skip ahead + call iftest ; Otherwise, test current IF state + pop bc ; Restore BC in case we return now + ret z ; If false IF in effect, fake success without + ; ..checking password (but TEMPDR/TEMPUSR not + ; ..set) + push bc ; Otherwise, save BC again + call passck ; Perform password checking + + endif ;fcp eq 0 + +dirscan5: + pop bc ; Restore requested drive/user + jr z,setdu ; If not bad password, set it up + ld a,(cmdstatfl) ; See if external invocation (disable + bit 3,a ; ..error handling if so) + ret nz ; Return NZ to show bad directory + ld a,ecbadpass ; Error code for bad password + jp error + + else ;not pwcheck + + pop hl ; Clean up stack + if accptdu ; If we cannot fall through, branch + jr setdu + endif ;accptdu + + endif ;pwcheck + + if not accptdu ; If NOT ACCPTDU, we have to supply code here +setdu: + ld (tempusr),bc + xor a ; Set Z to flag success + ret + endif ;not accptdu + + endif ;accptdir + +;----------------------------------------------------------------------------- + +; This code attempts to interpret the token in the FCB pointed to by register +; pair DE as a DU (drive/user) prefix. If it is successful, the drive and +; user values are stored in TEMPDR and TEMPUSR, the zero flag is set, and a +; value of zero is returned in register A. Otherwise the zero flag is reset +; and a nonzero value is returned in register A. +; +; The ADUENV option allows acceptance of the DU form to be controlled by the +; DUOK flag in the environment descriptor. An additional feature of this code +; when the ADUENV option is enabled is that a DU value is always accepted, +; even if DUOK is off and even if it is outside the normally allowed range, +; if it corresponds to a named directory with no password. The currently +; logged directory is unconditionally acceptable (if you got there once, you +; can stay as long as you like without further hassles). + + if accptdu ; Allow DU: form + +direrr: ; This code may do double duty for DIRSCAN + ; ..above +duerr: + xor a ; Return NZ to show failure + dec a + ret + +duscan: + ex de,hl ; Switch FCB pointer to HL + inc hl ; Point to first byte of file name in FCB + + ld bc,(curusr) ; Preset C to current user, B to current drive + ld a,(hl) ; Get possible drive specification + sub 'A' ; Otherwise convert to number 0..15 + jr c,duscan1 ; If < 0, leave B as is + cp 16 + jr nc,duscan1 ; If > 15, leave B as is + ld b,a ; Otherwise use value given + inc hl ; ..and point to next character + +duscan1: + inc b ; Shift drive to range 1..16 + ld a,(hl) ; Get possible user specification + cp ' ' + jr z,duscan2 ; If none present, leave C as is + push bc ; Save DU values in BC + call decimal1 ; Get specified decimal user number into BC + pop hl ; Restore values to HL + jr c,duerr ; Return NZ if invalid decimal conversion + ld a,b ; Get high byte of result + or a ; Make sure it is zero + ret nz ; If not, return NZ to show bad user number + ld b,h ; DU value is now in BC + +; If the specified directory is the currently logged directory, accept it +; even if it is out of range and/or password protected. + +duscan2: + ld hl,(curusr) ; Get current drive/user into HL + inc h ; Shift drive to range 1..16 + xor a ; Clear carry flag + sbc hl,bc ; Compare values + jr z,setdu + +; If the specified DU corresponds to a named directory with no password, or +; if WPASS is enabled so that password checking is not performed when the +; wheel byte is set, then accept it. + + if z3ndir ne 0 + + call du2dir ; See if there is a matching named directory + jr z,duscan3 ; If not, skip on + + if pwcheck ; If passwords are being checked... + + if wpass + ld a,(z3whl) ; Get wheel byte + or a ; If wheel byte set, skip checking passwords + jr nz,setdu ; ..and accept the DU values + endif ;wpass + + ld de,9 ; Advance to password + add hl,de + ld a,(hl) ; Get first character of password + cp ' ' + jr z,setdu ; If none, we have a valid DU + + else ;not pwcheck + + jr setdu ; Set the DU + + endif ;pwcheck + + endif ;z3ndir ne 0 + +duscan3: + if aduenv ; Check DUOK flag in ENV + ld a,(duokfl) ; Get flag + or a ; If DU not accepted + jr z,duerr ; ..skip over the DU scan + endif ;aduenv + + if duenv ; If getting max drive and user from ENV + ld hl,(maxdrenv) ; Get max drive into L and max user into H + ld a,l ; Test drive value + cp b + jr c,duerr + ld a,h ; Test user value + cp c + jr c,duerr + else ; Using fixed values of max DU + ld a,maxdisk + cp b + jr c,duerr + ld a,maxusr + cp c + jr c,duerr + endif ;duenv + +setdu: + ld (tempusr),bc + xor a ; Set Z to flag success + ret + + endif ; accptdu + +; End ZCPR33-3.Z80 + + page + +; ZCPR33-4.Z80 + +;============================================================================= +; +; G E N E R A L S U B R O U T I N E S S E C T I O N +; +;============================================================================= + + +;----------------------------------------------------------------------------- +; +; CHARACTER I/O BDOS ROUTINES +; +;----------------------------------------------------------------------------- + +; Get uppercase character from console (with ^S processing). Registers B, +; D, H, and L are preserved. The character is returned in A. + +conin: + ld c,1 ; BDOS conin function + call bdossave + ; Fall through to UCASE + +;-------------------- + +; Convert character in A to upper case. All registers except A are preserved. + +ucase: + and 7fh ; Mask out msb + cp 61h ; Less than lower-case 'a'? + ret c ; If so, return + cp 7bh ; Greater than lower-case 'z'? + ret nc ; If so, return + and 5fh ; Otherwise capitalize + ret + +;---------------------------------------- + +; Output CRLF + +crlf: + call print + db cr + db lf or 80h + ret + +;---------------------------------------- + +; Output character in A to the console. All registers are preserved. + +conout: + push de + push bc + ld c,2 ; BDOS conout function +output: ; Entry point for LCOUT below + ld e,a + call bdossave + pop bc + pop de + ret + +;---------------------------------------- + +; Print the character string immediately following the call to this routine. +; The string terminates with a character whose high bit is set or with a null. +; At entry point PRINTC the string is automatically preceded by a +; carriage-return-linefeed sequence. All registers are preserved except A. + +printc: + call crlf ; New line + +print: + ex (sp),hl ; Get pointer to string + call printhl ; Print string + ex (sp),hl ; Restore HL and set return address + ret + +;---------------------------------------- + +; Print the character string pointed to by HL. Terminate on character with +; the high bit set or on a null character. On return HL points to the byte +; after the last character displayed. All other registers except A are +; preserved. + +printhl: + ld a,(hl) ; Get a character + inc hl ; Point to next byte + or a ; End of string null? + ret z + push af ; Save flags + and 7fh ; Mask out msb + call conout ; Print character + pop af ; Get flags + ret m ; String terminated by msb set + jr printhl + + +;----------------------------------------------------------------------------- +; +; FILE I/O BDOS ROUTINES +; +;----------------------------------------------------------------------------- + +; Read a record from a file to be listed or typed + + if lton ; Only needed for LIST and TYPE functions + +readf: + ld de,tfcb + jr read + + endif ; lton + +;---------------------------------------- + +; Read a record from the command file named in CMDFCB + +readcmd: + ld de,cmdfcb + +; Read a record from file whose FCB is pointed to by DE + +read: + ld c,14h ; Read-sequential function + ; Fall through to BDOSSAVE + +;-------------------- + +; Call BDOS for read and write operations. The flags are set appropriately. +; The BC, DE, and HL registers are preserved. + +bdossave: + putreg + call bdos + getreg + or a ; Set flags +note: ; This return is used for NOTE command, too + ret + + +;----------------------------------------------------------------------------- +; +; MISCELLANEOUS BDOS ROUTINES +; +;----------------------------------------------------------------------------- + +; Set DMA address. At the entry point DEFLTDMA the address is set to the +; default value of 80H. At the entry point DMASET it is set to the value +; passed in the DE registers. + +defltdma: + ld de,tbuff +dmaset: + ld c,1ah + jr bdossave + +;---------------------------------------- + +; Log in the drive value passed in the A register (A=0). + +setdrive: + ld e,a + ld c,0eh + jr bdossave + +;---------------------------------------- + +; Open a file. At entry point OPENCMD the file is the one specified in +; CMDFCB, and the current record is set to zero. At entry point OPEN +; the file whose FCB is pointed to by DE is used. + +opencmd: + xor a ; Set current record to 0 + ld (cmdfcb+32),a + ld de,cmdfcb ; Command file control block + ; Fall through to open + +open: + ld c,0fh ; BDOS open function + ; Fall through to BDOSTEST + +;-------------------- + +; Invoke BDOS for disk functions. This routine increments the return code in +; register A so that the zero flag is set if there was an error. Registers +; BC, DE, and HL are preserved. + +bdostest: + call bdossave + inc a ; Set zero flag for error return + ret + +;---------------------------------------- + +; Close file whose FCB is pointed to by DE. + + if saveon or subon +close: + ld c,10h + jr bdostest + endif ;saveon or subon + +;---------------------------------------- + +; Search for first matching file. At entry point SRCHFST1 the first default FCB +; is used. At entry point SRCHFST the FCB pointed to by DE is used. + + if diron or eraon or renon or saveon +srchfst1: + ld de,tfcb ; Use first default FCB + endif ;diron or eraon or renon or saveon + +srchfst: + ld c,11h + jr bdostest + +;----------------------------------------------------------------------------- + +; Search for next matching file whose FCB is pointed to by DE. + + if diron or eraon ; Only needed by DIR and ERA functions +srchnxt: + ld c,12h + jr bdostest + endif ; diron or eraon + +;----------------------------------------------------------------------------- + +; Kill any submit file that is executing. + + if subon + +subkil: + ld hl,subflag ; Check for submit file in execution + ld a,(hl) + or a ; 0=no + ret z ; If none executing, return now + ; Kill submit file + xor a + ld (hl),a ; Zero submit flag + call setuser ; Log in user 0 + ld de,subfcb ; Delete submit file + ; ..by falling through to delete routine + + endif ; subon + +;-------------------- + +; Delete file whose FCB is pointed to by DE. + + if eraon or renon or saveon or subon +delete: + ld c,13h + jr bdossave + endif ;eraon or renon or saveon or subon + +;----------------------------------------------------------------------------- + +; Get and set user number. Registers B, D, H, and L are preserved. Register +; E is also preserved at entry point SETUSER1. + +getuser: + ld a,0ffh ; Get current user number +setuser: + ld e,a ; User number in E +setuser1: + ld c,20h ; Get/Set BDOS function + jr bdossave + + +;----------------------------------------------------------------------------- +; +; GENERAL UTILITY ROUTINES +; +;----------------------------------------------------------------------------- + + +; This subroutine checks to see if a program loaded at an address given by HL +; has a Z3ENV header. If the header is not present, the zero flag is reset. +; If it is present, the zero flag is set, and on return HL points to the +; environment-type byte and A contains that byte. + +z3chk: + ld de,z3env+3 ; Point to 'Z3ENV' string in ENV + inc hl ; Advance three bytes to possible program + inc hl ; ..header + inc hl + ld b,5 ; Characters to compare +z3chk1: ; Check for Z3 ID header + ld a,(de) ; Get character from ENV descriptor + cp (hl) ; Compare it to loaded file + ret nz ; Quit now if mismatch + inc hl ; If same, advance to next characters + inc de ; ..and continue comparing + djnz z3chk1 ; (flags not affected by DJNZ) + ld a,(hl) ; Return the environment type in A + ret ; Return Z if all 5 characters match + +;---------------------------------------- + +; Subroutine to skip over spaces in the buffer pointed to by HL. On return, +; the zero flag is set if we encountered the end of the line or a command +; separator character. + +sksp: + ld a,(hl) ; Get next character + inc hl ; Point to the following character + cp ' ' ; Space? + jr z,sksp ; If so, keep skipping + dec hl ; Back up to non-space + ; ..and fall through + +;-------------------- + +; Subroutine to check if character is the command separator or marks the end +; of the line. + +tsteol: + or a ; End of command line? + ret z ; Return with zero flag set + cp cmdsep ; Command separator? + ret ; Return with flag set appropriately + +;---------------------------------------- + +; Initialize complete FCB pointed to by DE + +initfcb: + xor a + ld (de),a ; Set default disk (dn byte is 0) + inc de ; Point to file name field + call ifcb ; Fill 1st part of FCB + ; Fall through to IFCB to run again + +;-------------------- + +; Initialize part of FCB whose file name field is pointed to by DE on entry. +; The file name and type are set to space characters; the EX, S2, RC, and the +; following CR (current record ) or DN (disk number) fields are set to zero. +; The S1 byte is set to the current user number. On exit, DE points to the +; byte at offset 17 in the FCB (two bytes past the record count byte). + +ifcb: + ld b,11 ; Store 11 spaces for file name and type + ld a,' ' + call fill + xor a + ld (de),a ; Set extent byte to zero + inc de + ld a,(curusr) + ld (de),a ; Set S1 byte to current user + inc de + ld b,3 ; Store 3 zeroes + xor a ; Fall thru to fill + +;-------------------- + +; Fill memory pointed to by DE with character in A for B bytes + +fill: + ld (de),a ; Fill with byte in A + inc de ; Point to next + djnz fill + ret + +;---------------------------------------- + +; Subroutine to display the 'no file' error message for the built-in +; commands DIR, ERA, LIST, TYPE, and/or REN. + + if diron or eraon + +prnnf: + call printc ; No file message + defb 'No Fil','e'+80h + ret + endif ; diron or eraon + +;---------------------------------------- + +; Calculate address of command table in package from Z3ENV. On entry, E +; contains the offset to the address of the package in the environment. On +; exit, DE points to the beginning of the package and HL points to the fifth +; byte (where the command table starts in the RCP and FCP modules). The zero +; flag is set on return if the package is not supported. + + if fcpenv or rcpenv or ndrenv +pkgoff: + ld hl,z3env ; Point to beginning of ENV descriptor + ld d,0 ; Make DE have offset + add hl,de ; ..and add it + ld a,(hl) ; Get low byte of package address + inc hl ; Point to high byte + ld h,(hl) ; ..and get it + ld l,a ; Move full address into HL + or h ; Set zero flag if no package + ld de,5 ; Offset to start of table + ex de,hl ; Preserve start address of package in DE + add hl,de ; Pointer to 5th byte of package in HL + ret ; Return with zero flag set appropriately + + endif ;fcpenv or rcpenv or ndrenv + +;---------------------------------------- + +; This subroutine checks to see if we are in a false IF state. If that is +; the case, the routine returns with the zero flag set. If there is not active +; IF state or if it is true, then the zero flag is reset. + + if fcp ne 0 ; Omit code if FCP not implemented + +iftest: + ld bc,(ifptrfl) ; Current IF pointer into C, IF status into B + ld a,c ; See if any IF in effect + or a + jr z,iftest1 ; Branch if no IF state is active + and b ; Mask the current IF status + ret +iftest1: + dec a ; Reset the zero flag + ret + + endif ;fcp ne 0 + +;---------------------------------------- + +; Print the command prompt with DU and/or DIR (but without any trailing +; character). This is also the code in which the current drive and user +; will be stored. The conditional assemblies are somewhat involved because +; of the possibilities of either or both of the DU or DIR forms being omitted +; from the prompt. + +prompt: + call crlf + + if incldu ; If drive/user in prompt + + ld hl,(curusr) ; Get current drive/user into HL + +; If INCLENV is enabled, the drive and user (DU) will be included in the +; prompt based on the state of the DUOK flag in the environment. If INCLENV +; is disabled, the DU form will always be included if INCLDU is on. + + if inclenv + ld a,(duokfl) ; If ENV disallows DU, + or a ; ..then don't show it in + jr z,prompt2 ; ..the prompt, either + endif ;inclenv + + ld a,h ; Get current drive + add a,'A' ; Convert to ascii A-P + call conout + ld a,l ; Get current user + + if supres ; If suppressing user # report for user 0 + or a + jr z,prompt2 + endif + + cp 10 ; User < 10? + jr c,prompt1 + + if highuser ; If allowing users 16..31 + + ld c,'0'-1 +prompt0: + inc c + sub 10 + jr nc,prompt0 + add a,10 + ld b,a + ld a,c + call conout + ld a,b + + else ;using only standard user numbers 0..15 + + sub 10 ; Subtract 10 from user number + push af ; Save low digit + call print ; Display a '1' for tens digit + defb '1' or 80h + pop af + + endif ;highuser + +prompt1: + add a,'0' ; Output 1's digit (convert to ascii) + call conout +prompt2: + endif ; incldu + + ; Display named directory + + if incldir + + if incldu + ld b,h ; Copy drive/user from HL to BC + ld c,l ; ..(saves a byte) + else + ld bc,(curusr) ; Get current drive and user into BC + endif ;incldu + + inc b ; Switch drive to range 1..16 + call du2dir ; See if there is a corresponding DIR form + ret z ; If not, return now + + if incldu ; Separate DU and DIR with colon + + if inclenv + ld a,(duokfl) ; If not displaying DU, then + or a ; ..don't send separator, either + ld a,':' ; Make the separator + call nz,conout ; ..and send if permitted + else + call print ; Put in colon separator + defb ':' or 80h + endif ;inclenv + + endif ; incldu + + ld b,8 ; Max of 8 chars in DIR name +prompt3: + inc hl ; Point to next character in DIR name + ld a,(hl) ; ..and get it + cp ' ' ; Done if space + ret z + call conout ; Print character + djnz prompt3 ; Count down + + endif ; incldir + + ret + +;----------------------------------------------------------------------------- + +; Subroutine to convert DU value in BC into pointer to a matching entry in +; the NDR. If there is no match, the routine returns with the zero flag set. +; If a match is found, the zero flag is reset, and the code returns with HL +; pointing to the byte before the directory name. + + if z3ndir ne 0 + +du2dir: + + if ndrenv ; If getting NDR address from environment + ld e,15h ; Offset to NDR in Z3ENV + call pkgoff ; Get address of NDR into DE + ex de,hl ; ..and switch into HL + ret z ; If no NDR, return with zero flag set + jr du2dir2 + else + ld hl,z3ndir-17 ; Scan directory for match + endif ;ndrenv + +du2dir1: ; Advance to next entry in NDR + ld de,16+1 ; Skip user (1 byte) and name/pw (16 bytes) + add hl,de + +du2dir2: + ld a,(hl) ; End of NDR? + or a + ret z ; If so, return with zero flag set + + inc hl ; Point to user number in NDR entry + cp b ; Compare drive values + jr nz,du2dir1 ; If mismatch, back for another try + ld a,(hl) ; Get user number + sub c ; ..and compare + jr nz,du2dir1 ; If mismatch, back for another try + dec a ; Force NZ to show successful match + ret + + endif ;z3ndir ne 0 + +;----------------------------------------------------------------------------- + +; This routine gets the next line of input for the command buffer. The +; following order of priority is followed: +; If ZEX is active, the next line is obtained from ZEX +; If a submit file is running, its last record provides the input +; If there is a command line on the shell stack, use it +; Finally, if none of the above, the input is obtained from the user + +readbuf: + + ld a,(zexrunfl) ; Get ZEX-running flag + or a + jr nz,userinput ; If ZEX running, go directly to user input + + if subon ; If submit facility is enabled, check for it + + ld a,(subflag) ; Test for submit file running + or a + jr z,shellinput ; If not, go on to possible shell input + + xor a ; Log into user 0 + call setuser + call defltdma ; Initialize DMA pointer + ld de,subfcb ; Point to submit file FCB + call open ; Try to open file + jr z,readbuf1 ; Branch if open failed + + ld hl,subfrc ; Point to record count in submit FCB + ld a,(hl) ; Get the number of records in file + dec a ; Reduce to number of last record + ld (subfcr),a ; ..and put into current record field + call read ; Attempt to read submit file + jr nz,readbuf1 ; Branch if read failed + + dec (hl) ; Reduce file record cound + dec hl ; Point to S2 byte of FCB (yes, this is req'd!) + ld (hl),a ; Stuff a zero in there (A=0 from call to READ) + call close ; Close the submit file one record smaller + jr z,readbuf1 ; Branch if close failed + +; Now we copy the line read from the file into the multiple command line +; buffer + + ld de,chrcnt ; Point to command length byte in command buffer + ld hl,tbuff ; Point to sector read in from submit file + + if buflen gt 7fh ; If command line buffer is longer than record, + ld bc,80h ; ..then copy entire record from $$$.SUB file + else ;buflen le 7fh ; Otherwise copy only enough to fill + ld bc,buflen+1 ; ..the command line buffer + endif ;buflen gt 7fh + + ldir ; Transfer line from submit file to buffer + +; We now deal with various options that control the display of commands fed +; to the command processor from a submit file. + + if subnoise gt 0 ; If subnoise = 0 we omit all this display code + + if subnoise eq 1 ; If subnoise = 1 we follow the quiet flag + ld a,(quietfl) + or a + jr nz,readbuf0 ; If quiet, skip echoing the command + endif ;subnoise eq 1 + + call prompt ; Print prompt + call print ; Print submit prompt trailer + defb sprmpt or 80h + ld hl,cmdlin ; Print command line + call printhl + + endif ;subnoise gt 0 + +readbuf0: + call break ; Check for abort (any char) + ret nz ; If no ^C, return to caller and run + +readbuf1: + call subkil ; Kill submit file and abort + jp restart ; Restart CPR + + endif ; subon + +shellinput: + ld hl,shstk ; Point to shell stack + ld a,(hl) ; Check first byte + cp ' '+1 ; See if any entry + jr c,userinput ; Get user input if none + + ld de,cmdlin ; Point to first character of command line + ld bc,shsize ; Copy shell line into command line buffer + ldir ; Do copy + ex de,hl ; HL points to end of line + ld a,1 ; Set command status flag to show + ld (cmdstatfl),a ; ..that a shell has been invoked + jr readbuf3 ; Store ending zero and exit + +userinput: + call prompt ; Print prompt + call print ; Print prompt trailer + defb cprmpt or 80h + ld c,0ah ; Read command line from user + ld de,bufsiz ; Point to buffer size byte of command line + call bdos + + ; Store null at end of line + + ld hl,chrcnt ; Point to character count + ld a,(hl) ; ..and get its value + inc hl ; Point to first character of command line + call addah ; Make pointer to byte past end of command line +readbuf3: + ld (hl),0 ; Store ending zero + ret + +;----------------------------------------------------------------------------- + +; Check for any character from the user console. Return with the character +; in A. If the character is a control-C, then the zero flag will be set. + + if subon or diron or eraon or lton + +break: + ld c,0bh ; BDOS console status function + call bdossave ; Call BDOS and set flags + call nz,conin ; Get input character if there is one + cp 'C'-'@' ; Check for abort + ret + + endif ; subon or diron or eraon or lton + +;----------------------------------------------------------------------------- + +; Add A to HL (HL=HL+A) + +addah: + add a,l + ld l,a + ret nc + inc h + ret + +;----------------------------------------------------------------------------- + +; The routine NUMBER evaluates a string in the first FCB as either a decimal +; or, if terminated with the NUMBASE hexadecimal marker, a HEX number. If the +; conversion is successful, the value is returned as a 16-bit quantity in BC. +; If an invalid character is encountered in the string, the routine returns +; with the carry flag set and HL pointing to the offending character. + + if saveon + +number: + ld hl,tfcb+8 ; Set pointer to end of number string + ld bc,8 ; Number of characters to scan + ld a,numbase ; Scan for HEX identifier + cpdr ; Do the search + jr nz,decimal ; Branch if HEX identifier not found + + inc hl ; Point to HEX marker + ld (hl),' ' ; Replace HEX marker with valid terminator + ; ..and fall through to HEXNUM + + endif ;saveon + +;---------------------------------------- + +; At this entry point the character string in the first default FCB is +; converted as a hexadecimal number (there must NOT be a HEX marker). + +hexnum: + ld hl,tfcb+1 ; Point to string in first FCB + +; At this entry point the character string pointed to by HL is converted +; as a hexadecimal number (there must be NO HEX marker at the end). + +hexnum1: + ld de,16 ; HEX radix base + jr radbin ; Invoke the generalized conversion routine + +;---------------------------------------- + +; This entry point performs decimal conversion of the string in the first +; default FCB. + +decimal: + ld hl,tfcb+1 ; Set pointer to number string + +; This entry point performs decimal conversion of the string pointed to +; by HL. + +decimal1: + ld de,10 ; Decimal radix base + ; Fall through to generalized + ; ..radix conversion routine + +; This routine converts the string pointed to by HL using the radix passed in +; DE. If the conversion is successful, the value is returned in BC. HL points +; to the character that terminated the number, and A contains that character. +; If an invalid character is encountered, the routine returns with the carry +; flag set, and HL points to the offending character. + +radbin: + ld bc,0 ; Initialize result +radbin1: + or a ; Make sure carry is reset + call sdelm ; Test for delimiter (returns Z if delimiter) + ret z ; Return if delimiter encountered + + sub '0' ; See if less than '0' + ret c ; Return with carry set if so + cp 10 ; See if in range '0'..'9' + jr c,radbin2 ; Branch if it is valid + cp 'A'-'0' ; Bad character if < 'A' + ret c ; ..so we return with carry set + sub 7 ; Convert to range 10..15 +radbin2: + cp e ; Compare to radix in E + ccf ; Carry should be set; this will clear it + ret c ; If carry now set, we have an error + + inc hl ; Point to next character + push bc ; Push the result we are forming onto the stack + ex (sp),hl ; Now HL=result, (sp)=source pointer + call mpy16 ; HLBC = previous$result * radix + ld h,0 ; Discard high 16 bits and + ld l,a ; ..move current digit into HL + add hl,bc ; Form new result + ld c,l ; Move it into BC + ld b,h + pop hl ; Get string pointer back + jr radbin1 ; Loop until delimiter + +;----------------------------------------------------------------------------- + +; This routine multiplies the 16-bit values in DE and HL and returns the +; 32-bit result in HLBC (HL has high 16 bits; BC has low 16 bits). Register +; pair AF is preserved. + +mpy16: + ex af,af' ; Save AF + ld a,h ; Transfer factor in HL to A and C + ld c,l + ld hl,0 ; Initialize product + ld b,16 ; Set bit counter + rra ; Shift AC right so first multiplier bit + rr c ; ..is in carry flag +mp161: + jr nc,mp162 ; If carry not set, skip the addition + add hl,de ; Add multiplicand +mp162: + rr h ; Rotate HL right, low bit into carry + rr l + rra ; Continue rotating through AC, with + rr c ; ..next multiplier bit moving into carry + djnz mp161 ; Loop through 16 bits + + ld b,a ; Move A to B so result is in HLBC + ex af,af' ; Restore original AF registers + ret + +;----------------------------------------------------------------------------- + +; This routine checks for a delimiter character pointed to by HL. It returns +; with the character in A and the zero flag set if it is a delimiter. All +; registers are preserved except A. + +sdelm: + ld a,(hl) ; Get the character + exx ; Use alternate register set (shorter code) + ld hl,deldat ; Point to delimiter list + ld bc,delend-deldat; Length of delimiter list + cpir ; Scan for match + exx ; Restore registers + ret ; Returns Z if delimiter + +deldat: ; List of delimiter characters + db ' ' + db '=' + db '_' + db '.' + db ':' + db ';' + db '<' + db '>' + db ',' + db 0 + if cmdsep ne ';' + db cmdsep + endif ;cmdsep ne ';' +delend: + +;----------------------------------------------------------------------------- + +; Log into DU contained in FCB pointed to by DE. Registers DE are preserved; +; all others are changed. Explicit values for the temporary drive and user +; are extracted from the FCB. If the record-count byte has an FF in it, that +; is a signal that the directory specification was invalid. We then invoke +; the error handler. + + if diron or eraon or lton or renon or saveon + +fcblog: + push de ; Save pointer to FCB + ex de,hl + ld a,(hl) ; Get drive + ld bc,13 ; Offset to S1 field + add hl,bc + ld c,(hl) ; Get user into C + or a ; See if drive value was 0 + jr nz,fcblog1 ; If not, branch ahead + ld a,(curdr) ; Otherwise substitute current drive + inc a ; ..shifted to range 1..16 +fcblog1: + ld b,a ; Get drive into B + ld (tempusr),bc ; Set up temporary DU values + call logtemp ; ..and log into it + pop de ; Restore pointer to FCB + +; Now check to make sure that the directory specification was valid. + + inc hl ; Advance pointer to record-count byte + inc hl + ld a,(hl) ; See if it is nonzero + or a + jp nz,baddirerr ; If so, invoke error handler + + ret ; Otherwise return + + endif ;diron or eraon or lton or renon or saveon + +;----------------------------------------------------------------------------- + +; Log into the temporary directory. Registers B, H, and L are preserved. + +logtemp: + ld de,(tempusr) ; Set D = tempdr, E = tempusr + call setuser1 ; Register D is preserved during this call + ld a,d ; Move drive into A + dec a ; Adjust for drive range 0..15 + jp setdrive ; Log in new drive and return + +;----------------------------------------------------------------------------- + +; This routine scans the command table pointed to by HL for the command name +; stored in the command FCB. If the command is not found, the routine returns +; with the zero flag reset. If the command is found, the address vector is +; stored in EXECADR and the zero flag is set. + +cmdscan: + ld b,(hl) ; Get length of each command + inc hl ; Point to first command name + +scannext: + ld a,(hl) ; Check for end of table + or a + jr z,scanend ; Branch if end + + ld de,cmdfcb+1 ; Point to name of requested command + push bc ; Save size of commands in table + + if wheel + ; Ignore commands with high bit set in first + ; ..char of command name if wheel is false + ld a,(z3whl) ; Get the wheel byte + or a + ld c,0ffh ; Make a mask that passes all characters + jr z,scancmp ; Use this mask if wheel not set + + endif ; wheel + + ld c,7fh ; Use mask to block high bit if wheel set + ; ..or not in use + +scancmp: + ld a,(de) ; Compare against table entry + + xor (hl) + and c ; Mask high bit of comparison + jr nz,scanskip ; No match, so skip rest of command name + + inc de ; Advance to next characters to compare + inc hl + res 7,c ; Mask out high bit on characters after first + djnz scancmp ; Count down + + ld a,(de) ; See if next character in input command + cp ' ' ; ..is a space + jr nz,scanbad ; If not, user command is longer than commands + ; ..in the command table + + ; Matching command found + + pop bc ; Clear stack + ld a,(hl) ; Get address from table into HL + inc hl + ld h,(hl) + ld l,a + ld (execadr),hl ; Set execution address + xor a ; Set zero flag to show that command found + ret + +scanskip: + inc hl ; Skip to next command table entry + djnz scanskip + +scanbad: + pop bc ; Get back size of each command + inc hl ; Skip over address vector + inc hl + jr scannext ; Try scanning next entry in table + +scanend: + xor a ; Reset zero flag to show + dec a ; ..that command was not found + ret + +; End ZCPR33-4.Z80 + + page + +; ZCPR33-5.Z80 + +;============================================================================= +; +; R E S I D E N T C O M M A N D C O D E +; +;============================================================================= + +; Command: DIR +; Function: To display a directory of the files on disk +; Forms: +; DIR Displays the DIR-attribute files +; DIR Same as DIR *.* +; DIR S Displays the SYS-attribute files +; DIR /S Same as DIR *.* S +; DIR A Display both DIR and SYS files +; DIR /A Same as DIR *.* A + + if diron + +dir: + ld de,tfcb ; Point to target FCB + push de ; ..and save the pointer for later + inc de ; Point to file name + ld a,(de) ; Get first character + + if slashfl ; If allowing "DIR /S" and "DIR /A" formats + cp '/' ; If name does not start with '/' + jr nz,dir1 ; ..branch and process normally + inc de ; Point to second character + ld a,(de) ; Get option character after slash + ld (tfcb2+1),a ; ..and put it into second FCB + dec de ; Back to first character + ld a,' ' ; Simulate empty FCB + endif ;slashfl + +dir1: + cp ' ' ; If space, make all wild + jr nz,dir2 + ld b,11 + ld a,'?' + call fill + +dir2: + pop de ; Restore pointer to FCB + call fcblog ; Log in the specified directory + + if whldir + ld a,(z3whl) ; Check wheel status + or a ; If not set, then ignore options + jr z,dir2a + endif ;whldir + + ld a,(tfcb2+1) ; Check for any option letter + ld b,1 ; Flag for both DIR and SYS files + cp allchar ; See if all (SYS and DIR) option letter + jr z,dirpr ; Branch if so + dec b ; B = 0 for SYS files only + cp syschar ; See if SYS-only option letter + jr z,dirpr ; Branch if so +dir2a: + ld b,80h ; Flag for DIR-only selection + ; Drop into DIRPR to print directory + + endif ; diron + +;-------------------- + +; Directory display routine + +; On entry, if attribute checking is required, the B register is +; set as follows: +; 00H for SYS files only +; 80H for DIR files only +; 01H for both + + if diron or eraon + +dirpr: + if diron ; Attribute checking needed only for DIR + ld a,b ; Get flag + ld (systst),a ; Set system test flag + endif + + ld e,0 ; Set column counter to zero + push de ; Save column counter (E) + call srchfst1 ; Search for specified file (first occurrence) + jr nz,dir3 + call prnnf ; Print no-file message + pop de ; Restore DE + xor a ; Set Z to show no files found + ret + +; Entry selection loop. On entering this code, A contains the offset in the +; directory block as returned by the search-first or search-next call. + +dir3: + if diron ; Attribute checking needed only for DIR cmd + + call getsbit ; Get and test for type of files + jr z,dir6 + + else ;not diron + + dec a ; Adjust returned value from 1..4 to 0..3 + rrca ; Multiply by 32 to convert number to + rrca ; ..offset into TBUFF + rrca + ld c,a ; C = offset to entry in TBUFF + + endif ;diron + + pop de ; Restore count of + ld a,e ; ..entries displayed + inc e ; Increment entry counter + push de ; Save it + and 03h ; Output CRLF if 4 entries printed in line + jr nz,dir4 + call crlf ; New line + jr dir5 +dir4: + call print + + if wide + + defb ' ' ; 2 spaces + defb fence ; Then fence char + defb ' ',' '+80h ; Then 2 more spaces + + else ;not wide + + defb ' ' ; Space + defb fence ; Then fence char + defb ' '+80h ; Then space + + endif ; wide + +dir5: + ld a,1 + call dirptr ; HL now points to 1st byte of file name + call prfn ; Print file name +dir6: + call break ; Check for abort + jr z,dir7 + call srchnxt ; Search for next file + jr nz,dir3 ; Continue if file found + +dir7: + pop de ; Restore stack + dec a ; Set NZ flag + ret + + endif ; diron or eraon + +;----------------------------------------------------------------------------- + + if diron or attchk or eraon + +; This routine returns a pointer in HL to the directory entry in TBUFF that +; corresponds to the offset specified in registers C (file offset) and C +; (byte offset within entry). + +dirptr: + ld hl,tbuff + add a,c ; Add the two offset contributions + call addah ; Set pointer to desired byte + ld a,(hl) ; Get the desired byte + ret + + endif ; diron or attchk or eraon + +;----------------------------------------------------------------------------- + +; Test File in FCB for existence, ask user to delete if so, and abort if he +; choses not to + + if saveon or renon + +extest: + ld de,tfcb ; Point to FCB + push de ; ..and save it for later + call fcblog ; Log into specified directory + call srchfst1 ; Look for specified file + pop de ; Restore pointer + ret z ; OK if not found, so return + call printc + if bellfl + defb bell + endif ;bellfl + defb 'Erase',' '+80h + ld hl,tfcb+1 ; Point to file name field + call prfn ; Print it + call print ; Add question mark + defb '?' or 80h + call conin ; Get user response + cp 'Y' ; Test for permission to erase file + jp nz,restart ; If not, flush the entire command line + jp delete ; Delete the file + + endif ; saveon or renon + +;----------------------------------------------------------------------------- + +; Print file name pointed to by HL + + if diron or renon or saveon + +prfn: + ld b,8 ; Display 8 characters in name + call prfn1 + call print ; Put in dot + defb '.' or 80h + ld b,3 ; Display 3 characters in type +prfn1: + ld a,(hl) ; Get character + inc hl ; Point to next + call conout ; Print character + djnz prfn1 ; Loop through them all + ret + + endif ;diron or renon or saveon + +;----------------------------------------------------------------------------- + +; This routine returns NZ if the file has the required attributes and Z if +; it does not. It works by performing the 'exclusive or' of the mask passed +; in register A and the filename attribute obtained by masking out all but +; the highest bit of the character. For the 'both' case, setting any bit +; in the mask other than bit 7 will guarantee a nonzero result. +; +; File name: : X 0 0 0 0 0 0 0 (After 80H mask, X=1 if SYS, 0 if DIR) +; +; SYS-ONLY : 0 0 0 0 0 0 0 0 (XOR gives 00H if X=0 and 80H if X=1) +; DIR-ONLY : 1 0 0 0 0 0 0 0 (XOR gives 80H if X=0 and 00H if X=1) +; BOTH : 0 0 0 0 0 0 0 1 (XOR gives 01H if X=0 and 81H if X=1) + + if diron or attchk + +getsbit: + dec a ; Adjust to returned value from 1..4 to 0..3 + rrca ; Multiply by 32 to convert number to + rrca ; ..offset into TBUFF + rrca + ld c,a ; Save offset in TBUFF in C + ld a,10 ; Add 10 to point to SYS attribute bit + call dirptr ; A = SYS byte + and 80h ; Look only at attribute bit +systst equ $+1 ; In-the-code variable + xor 0 ; If SYSTST=0, SYS only; if SYSTST=80H, DIR + ; ..only; if SYSTST=1, both SYS and DIR + ret ; NZ if OK, Z if not OK + + endif ;diron or attchk + +;----------------------------------------------------------------------------- + +; Command: REN +; Function: To change the name of an existing file +; Forms: REN = +; Notes: If either file spec is ambiguous, or if the source file does +; not exist, the error handler will be entered. If a file with +; the new name already exists, the user is prompted for deletion +; and ZEX is turned off during the prompt. + + if renon + +ren: + ld hl,tfcb ; Check for ambiguity in first file name + call ambchk + call fcblog ; Login to fcb + ld hl,tfcb2 ; Check for ambiguity in second file name + call ambchk + xor a ; Use current drive for 2nd file + ld (de),a + call srchfst ; Check for old file's existence + jr nz,ren0a ; Branch if file exists +jpnofile: + ld a,ecnofile ; Set error code for file not found + jp error ; ..and invoke error handler +ren0a: + call extest ; Test for file existence and return if not + ld b,12 ; Exchange new and old file names + push de ; Save pointer to FCB + ld hl,tfcb2 ; Point to FCB for old file name +ren0: + ld a,(de) ; Get character of old name + ld c,a ; ..into C register + ld a,(hl) ; Get character of new name + ld (de),a ; ..into place in old name + ld (hl),c ; Put character of old name into new name + inc hl ; Advance pointers + inc de + djnz ren0 + +; Perform rename function + + pop de ; Restore pointer to FCB + ld c,17h ; BDOS rename function + jp bdostest + + endif ;renon + +;----------------------------------------------------------------------------- + +; Command: ERA +; Function: Erase files +; Forms: +; ERA Erase specified files and dislay their names +; ERA I Display names of files to be erased and prompt for +; inspection before erase is performed. (Character 'I' +; is defined by INSPCH in Z33HDR.LIB; if it is ' ', then +; any character triggers inspection.) + + if eraon + +era: + if inspfl and eraok; 'I' flag and verification enabled? + ld a,(tfcb2+1) ; Get flag, if any, entered by user + ld (eraflg),a ; Save it in code below + endif ;erav and eraok + + ld de,tfcb ; Point to target FCB + call fcblog ; ..and log into the specified directory + + if diron or attchk ; Attribute checking only in these cases + ld b,1 ; Display all matching files + endif ;diron or attchk + + call dirpr ; Print directory of erased files + ret z ; Abort if no files + + if eraok ; Print prompt + + if inspfl ; Test verify flag + +eraflg equ $+1 ; Address of flag (in-the-code modification) + ld a,0 + cp inspch ; Is it an inspect option? + + if inspch ne ' ' ; If an explicit inspect character is specified + jr nz,era2 ; ..skip prompt if it is not that character + else ; If INSPCH is the space character + jr z,era2 ; ..then skip prompt only if FCB has a space + endif ;inspch ne ' ' + + endif ;inspfl + + call printc + defb 'OK to Erase','?'+80h + call conin ; Get reply + cp 'Y' ; Yes? + ret nz ; Abort if not + + endif ; eraok + +era2: + ld de,tfcb + jp delete ; Delete files and return + + endif ; Eraon + +;----------------------------------------------------------------------------- + +; Command: LIST +; Function: Print out specified file on the LST: device +; Forms: LIST Print file (No Paging) +; Notes: The flags which apply to TYPE do not take effect with LIST + + if lton + +list: + ld a,0ffh ; Turn on printer flag + jr type0 + +;----------------------------------------------------------------------------- + +; Command: TYPE +; Function: Print out specified file on the CON: Device +; Forms: TYPE Print file with default paging option +; TYPE P Print file with paging option reversed + +type: + xor a ; Turn off printer flag + +; Common entry point for LIST and TYPE functions + +type0: + ld (prflg),a ; Set printer/console flag + ld a,(tfcb2+1) ; Check for user page toggle ('P') option + ld (pgflg),a ; Save it as a flag in code below + ld hl,tfcb ; Point to target file FCB + call ambchk ; Check for ambiguous file spec (vectors to + ; ..error handler if so) + call fcblog ; Log into specified directory + call open ; Open the file + + if renon ; If REN on, share code + jr z,jpnofile + else ;not renon ; Otherwise repeat code here + ld a,ecnofile + jp z,error + endif ;renon + + call crlf ; New line + ld a,(crttxt0) ; Set line count using value from the + ; ..environment for CRT0 + inc a ; One extra the first time through + ld (pagcnt),a + ld bc,080h ; Set character position and tab count + ; (B = 0 = tab, C = 080h = char position) + +; Main loop for loading next block + +type2: + ld a,c ; Get character count + cp 80h ; If not end of disk record + jr c,type3 ; ..then skip + + call readf ; Read next record of file + ret nz ; Quit if end of file + + ld c,0 ; Reset character count + ld hl,tbuff ; Point to first character + +; Main loop for printing characters in TBUFF + +type3: + ld a,(hl) ; Get next character + and 7fh ; Mask out MSB + cp 1ah ; Check for end of file (^z) + ret z ; Quit if so + +; Output character to CON: or LST: device with tabulation + + cp cr ; If carriage return, + jr z,type4 ; ..branch to reset tab count + cp lf ; If line feed, then output + jr z,type4a ; ..with no change in tab count + cp tab ; If tab + jr z,type5 ; ..expand to spaces + +; Output character and increment character count + + call lcout ; Output character + inc b ; Increment tab count + jr type6 + +; Output CR and reset tab count + +type4: + ld b,0 ; Reset tab counter + +; Output LF and leave tab count as is + +type4a: + call lcout ; Output or + jr type6 + +; Process tab character + +type5: + ld a,' ' ; Space + call lcout + inc b ; Increment tab count + ld a,b + and 7 + jr nz,type5 ; Loop until column = n * 8 + 7 + +; Continue processing + +type6: + inc c ; Increment character count + inc hl ; Point to next character + push bc + call break ; Check for user abort + pop bc + ret z ; Quit if so + jr type2 ; Else back for more + +;-------------------- + +; Output character in A to console or list device depending on a flag. +; Registers are preserved. This code is used only by the LIST and TYPE +; commands. + +lcout: + push af ; Save character +prflg equ $+1 ; Pointer for in-the-code modification + ld a,0 ; ..to determine destination (CON or LST) + or a ; Z=type, NZ=list + jr z,lc1 + + ; Output to list device + + pop af ; Get character back + push de + push bc + ld c,5 ; LISTOUT function + jp output + + ; Output to console with paging + +lc1: + pop af ; Get character back + push af ; Save it again for page check + call conout ; Output to console + pop af ; Get character back again + cp lf ; Check for new line (paging) + ret nz ; If not new line, we are done + + ; Paging routines + +pager: + push hl + ld hl,pagcnt ; Decrement lines remaining on screen + dec (hl) + jr nz,pager1 ; Jump if not end of page + + ; New page + ld a,(crttxt0) ; Get full page count from environment + ld (hl),a ; Reset count to a full page +pgflg equ $+1 ; Pointer to in-the-code buffer pgflg + ld a,0 + cp pagech ; Page default override option wanted? + + if pagech ne ' ' ; If using explicit character for page toggle + + if pagefl ; If paging is default + jr z,pager1 ; ..PAGECH means no paging + else ; If paging not default + jr nz,pager1 ; ..PAGECH means please paginate + endif ;pagefl + + else ; Any character toggles paging + + if pagefl ; If paging is default + jr nz,pager1 ; ..any character means no paging + else ; If paging not default + jr z,pager1 ; ..any character means please paginate + endif ;pagefl + + endif ;pagech ne ' ' + + ; End of page + push bc + call bios+9 ; Wait for user input (BIOS console input) + pop bc + cp 'C'-'@' ; Did user enter control-c? + jp z,nextcmd ; If so, terminate this command + +pager1: + pop hl ; Restore HL + ret + + endif ; lton + +;----------------------------------------------------------------------------- + +; Command: SAVE +; Function: To save the contents of the TPA onto disk as a file +; Forms: +; SAVE +; Save specified number of pages (starting at 100H) from TPA +; into specified file +; +; SAVE +; Like SAVE above, but numeric argument specifies +; number of sectors rather than pages + + if saveon + +; Entry point for SAVE command + +save: + call number ; Extract number from command line + jr c,badnumber ; Invoke error handler if bad number + push bc ; Save the number + call reparse ; Reparse tail after number of sectors/pages + pop hl ; Get sector/page count back into HL + ld a,(tfcb2+1) ; Check sector flag in second FCB + cp sectch + + if sectch ne ' ' ; If using a specific character, then jump + jr z,save0 ; ..if it is that character + else ; If allowing any character (SECTCH=' ') + jr nz,save0 ; ..jump if it is anything other than space + endif ;sectch ne ' ' + + add hl,hl ; Double page count to get sector count +save0: + ld a,1 ; Maximum allowed value in H + cp h ; Make sure sector count < 512 (64K) + jr c,badnumber ; If >511, invoke error handler + + push hl ; Save sector count + ld hl,tfcb + call ambchk ; Check for ambiguous file spec (vectors to + ; ..error handler if so) + + call extest ; Test for existence of file and abort if so + ld c,16h ; BDOS make file function + call bdostest + jr z,save3 ; Branch if error in creating file + + pop bc ; Get sector count into BC + ld hl,tpa-80h ; Set pointer to one record before TPA + +save1: + ld a,b ; Check for BC = 0 + or c + dec bc ; Count down on sectors (flags unchanged, + ; ..B=0FFH if all records written successfully) + jr z,save2 ; If BC=0, save is done so branch + + push bc ; Save sector count + ld de,80h ; Advance address by one record + add hl,de + push hl ; Save address on stack + ex de,hl ; Put address into DE for BDOS call + call dmaset ; Set DMA address for write + ld de,tfcb ; Write sector + ld c,15h ; BDOS write sector function + call bdossave + pop hl ; Get address back into HL + pop bc ; Get sector count back into BC + jr z,save1 ; If write successful, go back for more + + ld b,0 ; B=0 if write failed + +save2: + call close ; Close file even if last write failed + and b ; Combine close return code with + ; ..write success flag + ret nz ; Return if all ok + +save3: ; Disk must be full + ld a,ecdiskfull ; Disk full error code + jr jperror + + endif ; saveon + +;----------------------------------------------------------------------------- + + if lton or saveon or renon or geton + +; Check file control block pointed to by HL for any wildcard characters ('?'). +; Return to calling program if none found. Otherwise branch to error handler. +; The routine also treats an empty file name as ambiguous. + +ambchk: + push hl ; Save pointer to FCB + inc hl ; Point to first character in file name + ld a,(hl) ; See if first character is a space + cp ' ' + jr z,ambchk1 ; If so, branch to error return + + ld a,'?' ; Set up for scan for question mark + ld bc,11 ; Scan 11 characters + cpir + pop de ; Restore pointer to FCB in DE + ret nz ; Return if no '?' found +ambchk1: + ld a,ecambig ; Error code for ambiguous file name + jr jperror + + endif ;lton or renon or saveon or geton + + if lton or renon or saveon or geton or jumpon + +badnumber: + ld a,ecbadnum ; Error code for bad number value +jperror: ; Local entry point for relative jump + jp error ; ..to go to error handler + + endif ;lton or renon or saveon or geton or jumpon + +;----------------------------------------------------------------------------- + +; Command: JUMP +; Function: To execute a program already loaded into some specified memory +; address +; Forms: JUMP +; The address is in hex; the tail will be parsed as usual + + if jumpon + +jump: + call hexnum ; Get load address into BC + jr c,badnumber ; If bad number, invoke error handling + push bc ; ..and save it + call reparse ; Reparse tail after address value + pop hl ; Restore execution address to HL + jr getproglf ; Perform call via code below + + endif ;jumpon + +;----------------------------------------------------------------------------- + +; Command: GO +; Function: To Call the program in the TPA without loading +; loading from disk. Same as JUMP 100H, but much +; more convenient, especially when used with +; parameters for programs like STAT. Also can be +; allowed on remote-access systems with no problems. +; +;Form: GO + + if goon + +go: + ld hl,tpa ; Set up TPA as the execution address + + endif ; goon + + if jumpon or goon ; Common code + +getproglf: + ld (execadr),hl + xor a ; Set zero flag to enable leading CRLF + jp callproglf ; Perform call (with leading CRLF) + + endif ;jumpon or goon + +;----------------------------------------------------------------------------- + +; Command: GET +; Function: To load the specified file from disk to the specified address +; Forms: GET +; Loads the specified file to the specified hexadecimal address +; Note that the normal file search path is used to find the file. +; If SCANCUR is off, the file may not be found in the current +; directory unless a colon is included in the file spec. + + if geton + +get: + +; TMPCOLON was set when the file name was parsed. We use that as the colon +; flag so that the file will be loaded from a directory just as if it had +; been entered as the command name. + + if drvprefix and [not scancur] + ld a,(tmpcolon) ; Allow GET to load from specified + ld (colon),a ; directory + endif ;drvprefix and [not scancur] + + ld hl,tfcb2 ; Copy TFCB2 to CMDFCB for load + push hl + ld de,cmdfcb + ld bc,14 + ldir + pop hl + call ambchk ; Make sure file is not ambiguous (vectors + ; ..to error handler if so) + +; If GET fails to find the specified file along the search path, we do not +; want the ECP to be engaged. To prevent that, we fool the command processor +; by telling it that the ECP is already engaged. + + ld hl,cmdstatfl ; Point to command status flag + set 2,(hl) ; Turn on ECP flag to prevent use of ECP + call hexnum ; Get load address into BC + jr c,badnumber ; If invalid number, invoke error handler + + if not fullget + ld a,b ; If trying to load into base page + or a ; ..treat as error + jr z,badnumber + endif ;not fullget + + ld h,b ; Move address into HL + ld l,c + ld a,0ffh ; Disable dynamic loading + ; Fall through to mload + + endif ; geton + +; End ZCPR33-5.Z80 + + page + +; ZCPR33-6.Z80 + +;============================================================================= +; +; P A T H S E A R C H A N D F I L E L O A D I N G C O D E +; +;============================================================================= + +; This block of code loads a file into memory. The normal address at which +; loading is to begin is passed to the routine in the HL register. The name +; of the file to load is passed in the command file control block. +; +; This code supports an advanced option that loads files to a dynamic address +; specified in the header to the file using a new type-3 environment. In a +; type-3 environment, the execution/load address is stored in the word +; following the environment descriptor address. A value is passed to MLOAD in +; the A register that controls this dynamic loading mechanism. The value +; specifies the lowest environment type value for which dynamic loading will +; be performed. This value will be 3 when MLOAD is called for normal COM file +; execution and will be 0FFH when chained to from the GET command. In the +; latter case, the user-specified load address must be used. +; +; MLOAD guards against loading a file over the operating system. It computes +; the lower of the following two addresses: 1) the CPR entry point; 2) the +; bottom of protected memory as indicated by the DOS entry address stored at +; address 0006H. If the load would exceed this limit, error handling is +; engaged (except for the GET command when FULLGET is enabled). + +mload: + ld (envtype),a ; Set up in-the-code modification below + ld (execadr),hl ; Set up execution/load address + call defltdma ; Set DMA address to 80H for file searches + + +; This code sets the attributes of COM files which are acceptable. If both +; SYS and DIR type files are acceptable, there is no need to include this code, +; and ATTCHK can be set to false. + + if attchk ; Only if attribute checking enabled + ld a,comatt ; Attributes specified in Z33HDR.LIB + ld (systst),a ; Set flag + endif ;attchk + +;----------------------------------------------------------------------------- + +; PATH BUILDING CODE + +; In ZCPR33 the minpath feature, optional in ZCPR30, is always used. To +; minimize the size of the CPR code, however, there is an option to place the +; minpath in an external buffer (outside the CPR). If the path is short +; enough, the minpath can be placed at the bottom of the system stack. + + ld de,path ; Point to first element in user's symbolic path + ld hl,mpath ; Point to minpath buffer + xor a + ld (hl),a ; Initialize to empty minpath + + +; If DRVPREFIX is enabled, the CPR will recognize an explicit directory +; reference in a command. The first element of the path will then be this +; explicit directory. If no explicit directory was given in the command, +; then no entry is made into the search path. If the WPREFIX option is +; on, explicit directory prefixes will be recognized only when the wheel +; byte is on. + + if drvprefix ; Pay attention to du:com prefix? + + ld a,(colon) ; See if colon was present in command + or a + jr z,makepath2 ; If not, skip ahead + + if wprefix + ld a,(z3whl) ; See if wheel byte is on + or a + jr z,makepath2 ; If not, skip ahead + endif ;wprefix + + ld a,(cmdfcb) ; Get drive from command FCB + ld (hl),a ; Put drive into minpath + inc hl ; Advance pointer + ld a,(cmdfcb+13) ; Get user number from command FCB + ld (hl),a ; Put it into minpath + inc hl ; Advance pointer to next path element + xor a ; A=0 + ld (hl),a ; Store ending 0 in mpath +makepath2: + endif ; drvprefix + + +; If SCANCUR is enabled in Z33HDR.LIB, then we always include the current +; directory automatically, even without a '$$' element in the user's path. +; If WPREFIX is enabled, however, we do not want to allow the current +; directory to be included, but we must make sure that it is included in +; the building of the root path, in case the user's symbolic path is empty. + + if scancur ; Scan current directory at all times? + + ld bc,(curusr) ; C = current user, B = current drive + inc b ; Set drive to range 1..16 + + if wprefix + + ld a,(z3whl) ; See if wheel byte is on + or a + jr nz,addpath ; If it is, add element to path; if not, + ; ..fall through to MAKEPATH3 + else ;not wprefix + + jr addpath ; Begin loop of placing entries into mpath + + endif ;wprefix + + else ;not scancur + +; If SCANCUR is off and ROOTONLY is in effect, we have to make sure that some +; directory values are put into the root path in the case where the user's +; path is completely empty. To do so, we preset BC for directory A0. + + if rootonly + ld bc,0100h ; Setup for drive A (B=1), user 0 (C=0) + endif ;rootonly + + endif ;scancur + + +; Convert symbolic entries in user's path into absolute DU values in minpath. +; Entries are read one-by-one from the symbolic path. If the 'current' drive +; or user indicator is present (default symbol is '$'), then the current +; drive or user value is fetched. Otherwise the explicit binary value from the +; path is used. After each absolute DU value is formed, the minpath as it +; exists so far is scanned to see if this DU value is already there. If it is +; not, then the DU value is appended to the path. Otherwise it is ignored. + +makepath3: + ld a,(de) ; Get next symbolic path entry + or a ; If 0, we are at end of path + jr z,makepath6 + + ld bc,(curusr) ; C = current user, B = current drive + inc b ; Set drive to range 1..16 + cp curind ; Check for current drive symbol (default '$') + jr z,makepath4 ; If so, leave current drive in B + ld b,a ; Else move specified drive into B +makepath4: + inc de ; Point to user value in symbolic path + ld a,(de) ; Get user + inc de ; Point to next element in symbolic path + cp curind ; Check for current user symbol (default '$') + jr z,makepath5 ; If so, leave current drive in C + ld c,a ; Else move specified user into C +makepath5: + +; At this point in the code we have a potential path element in BC. We first +; have to scan the minpath we have so far to see if that element is already +; there. In that case we ignore it; otherwise we add it to the end of the path. + +addpath: + ; Skip path if directory given explicitly + + if skippath + + if wprefix + ld a,(z3whl) ; See if wheel byte is on + or a + call nz,skipchk ; If not, fall through + else ;not wprefix + call skipchk ; See if path should be skipped + endif ;wprefix + + jr nz,makepath3 ; If so, branch out of ADDPATH + + endif ;skippath + + ld hl,mpath ; Point to beginning of minpath + +addpath1: ; Point of reentry + ld a,(hl) ; Get drive value + or a ; Check for end of minpath + jr z,addpath2 ; If end, jump and add BC to minpath + + inc hl ; Increment pointer to user + cp b ; Check for drive match + ld a,(hl) ; Get user from minpath + inc hl ; Point to next minpath entry + jr nz,addpath1 ; If drive was different, loop back again + cp c ; Check for user match + jr nz,addpath1 ; If user is different, loop back again + jr makepath3 ; Branch if we have a duplicate + +; We have a new DU; add it to minpath + +addpath2: + ld (hl),b ; Store drive + inc hl + ld (hl),c ; Store user + inc hl + ld (hl),0 ; Store ending 0 + jr makepath3 ; Continue scanning user's path + +; If the ECP facility is set up to use the root directory, then create a +; root path. BC presently contains the proper DU. + +makepath6: + + if rootonly + ld hl,rootpth ; Point to special path to contain root + ld (hl),b ; Store disk + inc hl + ld (hl),c ; Store user + endif ;rootonly + +;----------------------------------------------------------------------------- + +; This is the code for loading the specified file by searching the minpath. + + xor a ; Always use current disk specification in the + ld (cmdfcb),a ; ..command FCB + +mload1: + + ld hl,mpath ; Point to beginning of minpath + +mload2: + +; Either the FASTECP or BADDUECP option may have set FIRSTCHAR to a space +; character as a signal to go directly to extended command processing. If +; neither option is enabled but SKIPPATH is, then the FIRSTCHAR data is +; stored in the routine below where path skipping is implemented. + + if fastecp or badduecp + + ld a,(cmdstatfl) ; If ECP is running + bit 2,a ; ..we branch to look for ECP along path + jr nz,mload2a +firstchar equ $+1 ; Pointer for in-the-code modification + ld a,0 + cp ' ' ; Was command invoked with leading space? + jr z,ecprun ; If so, go directly to ECP code + + endif ;fastecp or badduecp + +mload2a: + ld a,(hl) ; Get drive from path + or a ; If end of path, command not found + jr nz,mload3 ; If not end of path, skip over ECP code + +;----------------------------------------------------------------------------- + +; EXTENDED COMMAND PROCESSING + +; At this point we have exhausted the search path. We now engage the +; extended command processor. + +ecprun: + if skippath + call skipchk ; See if path should be skipped + jr nz,jnzerror ; If so, invoke error handler + endif ;skippath + + ld hl,cmdstatfl ; Point to command status flag + ld a,(hl) ; ..and get value + and 110b ; Isolate ECP and error handler bits +jnzerror: ; If either is set, + ld a,ecnocmd ; Error code for command not found + jp nz,error ; ..process as an error + + set 2,(hl) ; Set ECP bit + + ld hl,ecpfcb ; Copy name of ECP to command FCB + ld de,cmdfcb + ld bc,12 ; Only 12 bytes required + ldir + + ld hl,(cmdptr) ; Get pointer to current command line + call parsetail ; Parse entire command as the command tail + + if rootonly ; Look for ECP in root directory only + ld hl,rootpth ; Point to path containing root directory only + jr mload2 ; Search for command + else ; not rootonly + jr mload1 ; Search the entire minpath for the ECP + endif ; rootonly + +;----------------------------------------------------------------------------- + +mload3: + ld b,a ; Drive into B + inc hl ; Point to user number + ld c,(hl) ; User into C + ld (tempusr),bc ; Save the values + inc hl ; Point to next entry in path + call logtemp ; Log in path-specified user/drive + + if attchk ; If allowing execution only of COM files with + ; ..specific attributes + + ld de,cmdfcb ; Point to command FCB + call srchfst ; Look for directory entry for file + jr z,mload2a ; Continue path search if file not found + push hl ; Save path pointer + call getsbit ; Check system attribute bit + pop hl ; Restore path pointer + jr z,mload2a ; Continue if attributes do not match + call opencmd ; Open file for input + jr z,mload2a ; If open failed, back to next path element + + else ;not attchk + + call opencmd ; Open file for input + jr z,mload2a ; If open failed, back to next path element + + endif ; attchk + + call readcmd ; Read first record into default DMA address + jr nz,mload5 ; Branch if zero-length file + xor a ; Set file current record back to zero + ld (cmdfcb+20h),a + ld hl,80h ; Pointer to start of code + call z3chk + jr nz,mload3a ; If not Z3 file, branch + +; The following test is modified by earlier code. For normal COM file loading, +; a 3 is inserted for the minimum environment type for dynamic load address +; determination. For the GET command, where the user-specified address should +; be used, a value of 0FFH is put in here so the carry flag will always be set. + +envtype equ $+1 ; Pointer for in-the-code modification + cp 3 ; See if no higher than a type-3 environment + jr c,mload3a ; If higher than type 3, branch + + inc hl ; Advance to load address word + inc hl + inc hl + ld a,(hl) ; Get load address into HL + inc hl + ld h,(hl) + ld l,a + ld (execadr),hl ; Set new execution/load address + +mload3a: + ld hl,(execadr) ; Get initial loading address + +; Load the file, making sure neither CPR nor protected memory is overwritten + +mload4: + if fullget + ld a,(envtype) ; If ENVTYPE is FF (from GET command) + inc a ; ..then skip memory limit checking + jr z,mload4b + endif ;fullget + + if rel + ld bc,entry ; We have to use a relocatable form to get + dec b ; ..highest page below the CPR + else ;not rel + ld b,high entry - 1 ; We can use shorter code for absolute form + endif ;rel + + ld a,(0007h) ; Get highest page below + dec a ; ..protected memory + cp b ; If A is lower value, + jr c,mload4a ; ..branch + ld a,b ; Otherwise use lower value in B +mload4a: + cp h ; Are we going to overwrite protected memory? + ld a,ectpafull ; Get ready with TPA overflow error code + jp c,error ; Error if about to overwrite protected memory +mload4b: + push hl ; Save this load address + ex de,hl ; Set DMA address + call dmaset + call readcmd + pop hl ; Get last load address back + jr nz,mload5 ; Read error or eof? + ld de,128 ; Increment load address by 128 + add hl,de + jr mload4 ; Continue loading + +; In case a program would like to find out in what directory the command +; processor found the program, temporary DU is stored in bytes 13 (user) and +; 14 (drive) in the command FCB. + +mload5: + +tempusr equ $+1 ; Pointers for in-the-code modification +tempdr equ $+2 + ld hl,0 + ld (cmdfcb+13),hl + +logcurrent: ; Return to original logged directory + ld hl,(curusr) ; Set L = current user, H = current drive + ld a,h + call setdrive ; Login current drive + ld a,l + jp setuser ; Log in new user and return from MLOAD + +;---------------------------------------- + +; This routine checks to see if building the path or running the ECP should +; be skipped. If there is a colon in the command (an explicit directory +; given) but it was not a lone colon (indicating desire to skip resident +; commands), then the routine returns with the zero flag reset. + + if skippath + +skipchk: + ld a,(colon) ; Was there a colon in the command? + or a + ret z ; Return with zero flag set if not + + if fastecp or badduecp + ld a,(firstchar) ; See if the first character was the colon + else +firstchar equ $+1 ; Put data here if other two options are + ld a,0 ; ..false (in-the-code modification) + endif ;fastecp or badduecp + + cp ':' + ret ; Return: Z if lone colon, NZ otherwise + + endif ;skippath + + +; End ZCPR33-6.Z80 + + page + +;----------------------------------------------------------------------------- +; +; D A T A A R E A D E F I N I T I O N S +; +;----------------------------------------------------------------------------- + +; ---------- Page line count buffer + + if lton ; Needed only if TYPE command included + +pagcnt: + defs 1 ; Lines left on page (filled in by code) + + endif ;lton + + +; ---------- Minpath/Rootpth buffers + + if extmpath + +mpath equ extmpathadr ; Assign external minpath address + + else + +mpath: + if drvprefix + defs 2 ; Two bytes for specified DU + endif + + if scancur + defs 2 ; Two bytes for current DU + endif + + defs 2 * expaths ; Space for path from path buffer + + defs 1 ; One byte for ending null + + endif ; not extmpath + + + if rootonly +rootpth: + defs 2 ; Special path for root dir only + defb 0 ; End of path + endif ; rootonly + +;----------------------------------------------------------------------------- + +; The following will cause an error message to appear if +; the size of ZCPR33 is over 2K bytes. + + if [ $ - entry ] gt 800h + *** ZCPR33 IS LARGER THAN 2K BYTES *** + endif + + endif ;errflag + + end ; ZCPR33 + \ No newline at end of file diff --git a/Source/BPBIOS/bank-dx.cnf b/Source/BPBIOS/bank-dx.cnf new file mode 100644 index 00000000..15f25911 --- /dev/null +++ b/Source/BPBIOS/bank-dx.cnf @@ -0,0 +1,129 @@ +; BPCNFG Configuration script for D-X Designs' P112, 256/512k RAM, 16/18 MHz +; + +;-- Submenu 1 allows changes to be made in miscellaneous system parameters + +1[ ; Start w/Base Menu, go to Submenu 1 + 2 START01, ; Use START01.COM alias file. Comma ends string. + ;; NOTE: While the original P112 plans call for a 16.000 MHz Crystal, + ;; more precise baud rate generation, plus a little extra speed + ;; is obtained by using a 18.432 MHz Crystal. + ;; Select one of the two following pairs, comment out the other +;; 4 18,, ; Set 18 MHz, Scale divisor (18.432 MHz recommended) +;; 3 46080, ; Explicitly set for 18*2560 + 4 16,, ; Set 16 MHz, Scale divisor (Crystal per Dave's plan) + 3 40000, ; Explicitly set for 16*2500 + 5 1, 2, ; Set Wait States: 9 MHz --> Memory = 0, IO = 1 + ; 18 MHz --> Memory = 1, IO = 2 + ;; The following configures the contiguous system RAM size and allocation. + ;; NOTE: This assumes 'bank' 0 occupied by image of Boot Flash ROM. + 6 Y ; "Hidden" Menu, "Y" acknowledging danger + 1 1, ; Base Bank of TPA + 2 3, ; First System Bank + 3 4, ; First User Bank + 4 5, ; First Bank of RAM Disk (Runs to Last) + 5 15,, ; Last RAM Bank (7=256k,15=512k, 31=1MB) + ] ; and back to main menu + +;-- Submenu 2 allows changes to be made to Character IO and IOByte Devices +; Insure that the Console (COM1) Baud rate is set to that of your terminal + +2[ ; Start w/Base Menu, go to Submenu 2 + 2 10,,,,,,,, ; Set COM1 (Console) to 9600 bps, default settings + 3 10,,,,,,,, ; Set COM2 to 9600 bps, default settings + ] ; and back to main menu + +;-- Submenu 3 allows changes to be made in the Floppy Drive physical parameters + +3[ ; Start w/Base Menu, go to Submenu 3 + 1 0 3, ; Set Drive, Unit 0 (3.5" Teac FDD 235-4xxx) + D Y H ; Double-Sided, Motor Needed, "High-Density" + 80, 3, 4, 240, ; 80 Trks, 3 mS Step, 4 mS Head Load, 240 mS Unload + 1 1 2, ; Set Drive, Unit 1, (5.25" Teac FD-55FGV) + D Y H ; Double-Sided, Motor Needed, "High-Density" + 80, 3, 4, 240, ; 80 Trks, 3 mS Step, 4 mS Head Load, 240 mS Unload + 1 3 2, ; Set Drive, Unit 3, (5.25" Teac FD-55B) + D Y S ; Double-Sided, Motor Needed, Standard Double-Density + 40, 4, 24, 240, ; 40 Trks, 4 mS Step, 24 mS Head Load, 240 mS Unload + ] + +;-- Submenu 4 allows changes to be made in Physical Hard Drive parameters + +4[ ; Start w/Base Menu, go to Submenu 4 +; Set SCSI Controller Type for this configuration as: +; 0 = Owl +; 1 = Adaptec ACB-4000A +; 2 = Xebec 1410a/Shugart 1610-3 +; 3 = Seagate SCSI +; 4 = Shugart 1610-4 (Minimal SCSI) +; 5 - Conner SCSI +; 6 - Quantum SCSI +; 7 - Maxtor SCSI +; 8 - Syquest SCSI +; 9 - GIDE (Generic IDE/ATA) + + ; Sample SCSI config. (Values of Trk/Hd/etc irrelevant) + 1 5 ; Configure Controller to Type #5 (Conner SCSI) + 2 Y 0, 0, ; Set Unit 0 Params, Activate, Unit 0, LUN 0 + 615, 4, 615, 615, ; Generic SCSI, 615 Trks, 4 Hds, RedWrt & Precomp @615 + ; Sample IDE config. NECESSARY if using GIDE. +; 1 9 ; Configure Controller to Type (9 = GIDE) +; 2 Y 0, ; Set Unit 0 Params, Activate, Device 0 (IDE Master) +; 988, 10, 17, ; Toshiba 2.5" MK1422 Emulates 988 Trks,10 Hds,17 SPT + ] + +;-- Submenu 5 allows changes to be made to Hard and RAM Disk Logical +;-- parameters, and exchanging of logical drives. + +5[ ; Starting w/Base menu, go to Submenu 5 + ; Since the initial assembly places Floppies in A-D, + ; swap them with the first four Hard Drive partitions. + ; NOTE Comment these out if you have no Hard Drive, or are + ; re-configuring an image that has them already swapped! + 1 A E ; swap floppies + 1 B F ; A-D with + 1 C G ; Hard Partitions + 1 D H ; E-H + + ; Configure the Hard Drive partitions. + 2 A ; Configure Partition A: + 4,1024, 2, 498,0, ; 4k Allocs, 1024 Dirs, Start @ 2, 498 Trks, Unit 0 + 2 B ; Partition B: + 4,1024, 500,750,0, ; 4k Allocs, 1024 Dirs, Start @ 500, 750 Trks, U 0 + 2 C ; Partition C: + 4,1024,1250, 750,0, ; 4k Allocs, 1024 Dirs, Start @ 1250, 750 Trks, U 0 + 2 D ; Partition D: + 4,1024,2000, 3206,0, ; 4k Allocs, 1024 Dirs, Start @ 2000, 3206 Trks, U 0 + + ; A second drive is often useful. Configure allocations here. + ; NOTE: the Bios must be assembled to activate these drives, or + ; BPCNFG will abort. + 2 O ; Partition O: (Backup Drive) + 4,1024, 2, 998,1, ; 4k Allocs, 1024 Dirs, Start @ 2, 1000 Trks, U 1 + 2 P ; Partition P: (Backup Drive) + 4,1024,1000,1620,1, ; 4k Allocs, 1024 Dirs, Start @ 1000, 1635 Trks, U 1 + + ; SUGGESTION: If you use the ZSDOS2 Hashed Directory feature, one way + ; is to build a primary partition with needed executables, then swap + ; it with the main A: drive, gaining the significantly faster access + ; and response. For example, if the hashed drive is the partition + ; at D:, to use it as A: simply uncomment the following. + +; 1 A D ; Swap Logical drives A: and D:. + + ; Configure the RAM Drive. + ; Each "Track" is a 4k increment, 8 "Tracks" per 32k memory bank. + ; Common memory complements for the P112 are 2-128k memory chips (256k), + ; 1-512k chip (512k), and 2-512k chips (1024k). If a User Bank is + ; defined, the space for RAM drive is reduced by 32k (8 'tracks). + 2 M ; Drive M: (RAM Disk) + 2, 128, 0, 88,0, ; 2k Allocs, 128 Dirs, Start @ 0, 88 Trks (352k), U 0 + ;------ Alternatives for 2x128k, 1x512k and 2x512k RAM Chips ------ + ; Alc #Dirs Start #Trks Unit Cap w/User Bank + ; 256k RAM : 2, 64, 0, 32, 0, (128k, 24= 96k) + ;NOTE: For 512k or More RAM, the Flash is copied to RAM + ; causing one 32k block to be unusable. + ; 512k RAM : 2, 128, 0, 96, 0, (384k, 88=352k) + ; Max w/1 MB RAM : 2, 256, 0, 224, 0, (896k, 216=864k) + ] + \ No newline at end of file diff --git a/Source/BPBIOS/boot-dx.cnf b/Source/BPBIOS/boot-dx.cnf new file mode 100644 index 00000000..1bfa09fe --- /dev/null +++ b/Source/BPBIOS/boot-dx.cnf @@ -0,0 +1,86 @@ +; BPCNFG Configuration script for D-X Designs' P112 +; <--BOOT TRACK Version--> +;-- Submenu 1 allows changes to be made in miscellaneous system parameters + +1[ ; Start w/Base Menu, go to Submenu 1 +; 2 STARTUP, ; Uncomment and change name for custom startup script. + ; Comma ends string. + ;; NOTE: While the original P112 plans call for a 16.000 MHz Crystal, + ;; more precise baud rate generation, plus a little extra speed + ;; is obtained by using a 18.432 MHz Crystal. + ;; Select one of the two following pairs, comment out the other +;; 4 18,, ; Set 18 MHz, Scale divisor (18.432 MHz recommended) +;; 3 46080, ; Explicitly set for 18*2560 + 4 16,, ; Set 16 MHz, Scale divisor (Crystal per Dave's plan) + 3 40000, ; Explicitly set for 16*2500 + 5 1, 2, ; Set Wait States: 9 MHz --> Memory = 0, IO = 1 + ; 18 MHz --> Memory = 1, IO = 2 + ;; The following configures the contiguous system RAM size and allocation. + ;; NOTE: Memory configuration not needed in Boot version, commented out + ;; This layout assumes 'Bank' 0 occupied by image of Flash Boot ROM. +; 6 Y ; "Hidden" Menu, "Y" acknowledging danger +; 1 1, ; Base Bank of TPA +; 2 3, ; First System Bank +; 3 4, ; First User Bank +; 4 5, ; First Bank of RAM Disk (Extends to Last) +; 5 15,, ; Last RAM Bank (7=256k,15=512k, 31=1MB) + ] ; and back to main menu + +;-- Submenu 2 allows changes to be made to Character IO and IOByte Devices +; Insure that the Console (COM1) Baud rate is set to that of your terminal + +2[ ; Start w/Base Menu, go to Submenu 2 + 2 10,,,,,,,, ; Set COM1 (Console) to 9600 bps, default settings + 3 10,,,,,,,, ; Set COM2 to 9600 bps, default settings + ] ; and back to main menu + +;-- Submenu 3 allows changes to be made in the Floppy Drive physical parameters + +3[ ; Start w/Base Menu, go to Submenu 3 + 1 0 3, ; Set Drive, Unit 0 (3.5" Teac FDD 235-4xxx) + D Y H ; Double-Sided, Motor Needed, "High-Density" + 80, 4, 4, 240, ; 80 Trks, 4 mS Step, 4 mS Head Load, 240 mS Unload + 1 1 2, ; Set Drive, Unit 1 (5.25" Teac FDD 55FGV) + D Y H ; Double-Sided, Motor Needed, "High-Density" + 80, 4, 4, 240, ; 80 Trks, 4 mS Step, 4 mS Head Load, 240 mS Unload + ] + +;-- Submenu 4 allows changes to be made in Physical Hard Drive parameters + +4[ ; Start w/Base Menu, go to Submenu 4 +; Set SCSI Controller Type for this configuration as: +; 0 = Owl +; 1 = Adaptec ACB-4000A +; 2 = Xebec 1410a/Shugart 1610-3 +; 3 = Seagate SCSI +; 4 = Shugart 1610-4 (Minimal SCSI) +; 5 - Conner SCSI +; 6 - Quantum SCSI +; 7 - Maxtor SCSI +; 8 - Syquest SCSI +; 9 - GIDE (Generic IDE/ATA) + ; Sample SCSI config. (Values of Trk/Hd/etc irrelevant) + 1 5 ; Configure Controller to Type #5 (Conner SCSI) + 2 Y 0, 0, ; Set Unit 0 Params, Activate, Unit 0, LUN 0 + 615, 4, 615, 615, ; Generic SCSI, 615 Trks, 4 Hds, RedWrt & Precomp @615 + ; Sample IDE config. (All values NECESSARY if using GIDE). +; 1 9 ; Configure Controller to Type (9 = GIDE) +; 2 Y 0, ; Set Unit 0 Params, Activate, Device 0 (IDE Master) +; 988, 10, 17, ; Toshiba 2.5" MK1422 Emulates 988 Trks,10 Hds,17 SPT + ] + +;-- Submenu 5 allows changes to be made to Hard and RAM Disk Logical +;-- parameters, and exchanging of logical drives. + +5[ ; Starting w/Base menu, go to Submenu 5 + ; Configure the Hard Drive partitions. (Generally, Only two on Boot Disks) + 2 E ; Configure Partition E: + 4,1024, 2, 498,0, ; 4k Allocs, 1024 Dirs, Start @ 2, 498 Trks, Unit 0 + 2 F ; Partition F: + 4,1024, 500, 750,0, ; 4k Allocs, 1024 Dirs, Start @ 500, 750 Trks, U 0 + ; Swap first HD partitions with Floppies only if going to Hard on boot + ; (Comment out swaps for Floppy-only operation) +; 1 A E +; 1 B F + ] + \ No newline at end of file diff --git a/Source/BPBIOS/bp33.dat b/Source/BPBIOS/bp33.dat new file mode 100644 index 0000000000000000000000000000000000000000..2463481ec531dea45e3729e0a1af99610dfe82aa GIT binary patch literal 11008 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp33bnkx.dat b/Source/BPBIOS/bp33bnkx.dat new file mode 100644 index 0000000000000000000000000000000000000000..8de61c304b1c1b11f72a2bcb6b76d13871da7981 GIT binary patch literal 12416 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp33n.dat b/Source/BPBIOS/bp33n.dat new file mode 100644 index 0000000000000000000000000000000000000000..69695a7ba34ffb6cc059137a4d5429016ddbb686 GIT binary patch literal 11904 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp33nbnk.dat b/Source/BPBIOS/bp33nbnk.dat new file mode 100644 index 0000000000000000000000000000000000000000..c2ab01c6a43ad940b03a2d6c7500051ed947c028 GIT binary patch literal 12544 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp34.dat b/Source/BPBIOS/bp34.dat new file mode 100644 index 0000000000000000000000000000000000000000..57932427425b74b9be5154364b55572e3549e8f0 GIT binary patch literal 11904 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 EPiM6#7XSbN literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp34t.dat b/Source/BPBIOS/bp34t.dat new file mode 100644 index 0000000000000000000000000000000000000000..1abf11c5daf9974929a86a1052a0ce759be1afde GIT binary patch literal 11904 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp34tbnk.dat b/Source/BPBIOS/bp34tbnk.dat new file mode 100644 index 0000000000000000000000000000000000000000..733f543600c86c082bd32b166eebd067da253ac6 GIT binary patch literal 12416 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


_Mi;Gb!2cLUzlnWW|&X&pgcE; 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp41.dat b/Source/BPBIOS/bp41.dat new file mode 100644 index 0000000000000000000000000000000000000000..fc3cb8c1e5e92e199bfb833ece4c9e9dd6d4f466 GIT binary patch literal 17792 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 a@9(GV_)OkzyR)2r{(hDJhW`IRf&U3%6n)?T literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp41n.dat b/Source/BPBIOS/bp41n.dat new file mode 100644 index 0000000000000000000000000000000000000000..0c01177bd639fca369f3e10a4e41eb3d8bc330c3 GIT binary patch literal 17920 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp41t.dat b/Source/BPBIOS/bp41t.dat new file mode 100644 index 0000000000000000000000000000000000000000..06c9dfdb95e45603c242ae47530fb83e2a5e2c8d GIT binary patch literal 17792 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/bp41x.dat b/Source/BPBIOS/bp41x.dat new file mode 100644 index 0000000000000000000000000000000000000000..d939741803e8ecc0410e68d1319d65043c0941b0 GIT binary patch literal 19712 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℞2+SiekH9D0 XX XX XX XX +; +; XX: 00=COM1 01=COM2 10=PIO 11=NULL +; +;+++++++++++++++++ D-X Designs Pty Ltd P112 Version ++++++++++++++++++ +; +; This configuration of the B/P Bios is for Dave Brooks' Project 112 Single +; board computer. Multifunction chips on the board provide the services +; needed by a CP/M BIOS. The primary chips and the functions provided are: +; +; Zilog Z80182 Z180 Core CPU, MMU, DMA +; ESCC #1 COM1 Serial Port w/handshake signals, RS-232 +; ESCC #2 (available on header, coded as expansion) +; ASCI0, ASCI1 (Serial async, available on header, expansion) +; CTC1 Optional 'heartbeat' clock, GP timer +; +; SMC FDC37C665 Enhanced 765-derivative Floppy Disk Controller +; COM2 - 16550-compatible Serial, RS-232 +; PAR1 - Centronics Parallel port (Printer) +; +; Dallas DS-1202 Primary Realtime clock +; Non-volatile battery-backed RAM (config data) +; +; 28F256 Flash ROM Boot code, device initialization +; (onboard programmable) +; 32/128/512 KB Static RAM +; +; Ver Date Revision Description +; --- --------- ------------------------ +; 1.3 28 Aug 01 - Scrubbed for GPL Release. HFB +; 1.2 - 30 Aug 97 - Expanded SCSI CDB length to 12 bytes for CDROM. HFB +; 1.1 - 11 May 97 - Added IDE Hard Drive instead of Normal SCSI, updated +; files to latest version. HFB +; 1.0 - 13 Aug 96 - Initial Release for P112 from YASBEC release. HFB +;***************************************************************************** + + NAME BPBIO + +FALSE EQU 0 +TRUE EQU NOT FALSE +NO EQU FALSE +YES EQU TRUE + ; << ****** SYSTEM SPECIFIC ****** >> + ; << Insert DEF-xxxx.LIB definition >> + INCLUDE DEF-DX.LIB ; << file for your configuration. >> + + ; << ****** SYSTEM SPECIFIC ****** >> + ; << Insert DEF-xxxx.LIB definition >> + INCLUDE DEF-WW.LIB ; << file for your configuration. >> + + CSEG +;..... +; Ascii Character Equates + +ETX EQU 03H ; End-of-Text +ACK EQU 06H ; Acknowledge +BELL EQU 07H ; Bell Character +CR EQU 0DH +LF EQU 0AH +XON EQU 11H ; X-On (Control-Q) +XOFF EQU 13H ; X-Off (Control-S) +ESC EQU 1BH + +; Miscellaneous Equates + +WRUAL EQU 2 ; DOS code for unallocated write + +LOCKF EQU LOW [NOT AUTOSL] ;Lock flag for format default +ALONE EQU FALSE ; Boot code equate + IF Z3 + MACLIB Z3BASE.LIB ; Include ENV definitions + ENDIF + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; BIOS Entry Jump Table - This MUST be in Common Memory +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + + CSEG + +BIOSJT: JP CBOOT ; 00 Cold Boot + JP WBOOT ; 01 Warm Boot + JP CONST ; 02 console input status * (IOP+12) + JP CONIN ; 03 console input * (IOP+15) + JP CONOUT ; 04 console output * (IOP+18) + JP LIST ; 05 list output * (IOP+21) + JP AUXOUT ; 06 aux out (punch) * (IOP+24) + JP AUXIN ; 07 aux in (reader) * (IOP+27) + JP HOME ; 08 seek track 0 + JP SELDSK ; 09 select logical drive + JP SETTRK ; 10 select track + JP SETSEC ; 11 select sector + JP SETDMA ; 12 set dma address for disk xfer + JP READ ; 13 disk read + JP WRITE ; 14 disk write + JP LISTST ; 15 list output status * (IOP+30) + JP SECTRN ; 16 logical -> physical sector xlate + +; --- <<< End of CP/M 2.2 Vectors >>> + + JP CONOST ; 17 Console Output Status + JP AUXIST ; 18 Aux Input Status + JP AUXOST ; 19 Aux Output Status + JP DEVTBL ; 20 CP/M 3 Device Table + JP DEVINI ; 21 Character Device Init (Near CP/M 3) + JP DRVTBL ; 22 DPH Pointer Table for A-P + JP 0 ; 23 RESERVED FOR MULTIO + JP FLUSH ; 24 Flush Deblocker + JP MOVE ; 25 Perform possible Inter-Bank Move + IF CLOCK + JP TIME ; 26 Get/Set RTC (Zsdos params) + ELSE + JP ISTRUE ; 26..return 0FFH (No Clock) if No code + ENDIF ;clock + JP SELMEM ; 27 Select Alternate Memory Bank + JP SETBNK ; 28 Select DMA Memory bank + JP XMOVE ; 29 Set Source/Destination Banks for Move + +; --- <<< End of CP/M 3 Vectors >>> + + JP RETBIO ; 30 Return BIOS Addresses + JP DIRDIO ; 31 Direct Disk I/O + JP STFARC ; 32 Set Bank for FRJP and FRCALL + JP FRJP ; 33 Jump to (HL) in Alternate Bank + JP FRCLR ; 34 Clear Stack switcher from Alt Bank Jumps + ; (used for error exits) + JP FRGETB ; 35 Load A,(HL) from Alternate Bank + JP FRGETW ; 36 Load DE,(HL) from Alternate Bank + JP FRPUTB ; 37 Load (HL),A to Alternate Bank + JP FRPUTW ; 38 Load (HL),DE to Alternate Bank + JP RETMEM ; 39 Return Current Active Memory Bank + +CPR EQU BIOSJT-800H-0E00H +DOS EQU BIOSJT-0E00H + +; End of BIOS Jump Table + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; Boot / Banked Routine Linkage +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + + IF BANKED + COMMON /BANK2/ +ROMJT: + IF INROM + JP INSYNC +INSYNC: JP BOOTER ; Cold start loader + ELSE + JP 0 ; Reserved + JP 0 + ENDIF ; Inrom +JDIRIO: JP DIRIO ; Low Level HDC/FDC Functions +JHDCIO: JP DIRIO ; Low Level HDC Functions (combined w/FDCIO) +JBREAD: JP BREAD ; BIOS Read +JBWRT: JP BWRT ; BIOS Write +JBSTRN: JP BSTRN ; BIOS Sectran + IF INROM + INCLUDE BOOTROM.Z80 ; Boot Routines + ENDIF ; Inrom + ENDIF ; Banked + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; C o n f i g u r a t i o n A r e a +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + ; << ****** HARDWARE SPECIFIC ****** >> + ; << Insert ICFG-xxx to initialize >> + INCLUDE ICFG-DX.Z80 ; << your computer's IO system >> + PAGE + ; << ****** Hardware Specific ****** >> + ; << Enter Low level Byte I/O driver >> + INCLUDE IIO-DX.Z80 ; << routines in file IIO-xxxx.Z80 >> + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; Cold Start Code +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + + DSEG + ; << ***** Hardware Specific ***** >> + ; << Insert the Cold boot routines >> + INCLUDE CBOOT-DX.Z80 ; << in file CBOOT-xx.Z80 >> + +; Deblocking Buffer Allocation + + IF [BANKED OR INROM] + COMMON /B2RAM/ + IF INROM +HSTBUF: DEFS INITCS ; Use a 1k buffer w/below + ELSE +HSTBUF EQU CBOOT0 ; Use CBOOT0 code for part of buffer w/below + ENDIF ;inrom + ELSE + DSEG +HSTBUF EQU CBOOT + ENDIF ;not banked + DEFS 1024-(INITCS) ; Use a 1 k buffer + +HSTSIZ EQU HSTBUF+1024 ; Added label for Hard Drive ext. interface + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; Disk Data Structures +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * + +MXFDIR EQU 255 ; Max number of dir entries-1 for floppy + +MXFALC EQU 880 ; If High Density or 8" drives can be handled, + ; set this for 880 (1.76 MB), otherwise the + ; value can be reduced to 400 (800 KB), the + ; maximum for 80 track, Double-Sided formats. + CSEG + IF BANKED + COMMON /BANK2/ + ENDIF +DPB: ; Marker for DPB start + ;.XLIST ; Don't print these due to size + IF AUTOSL + INCLUDE DPB.LIB ; Default selection of common DD formats + IF FLOPYH + INCLUDE DPB-H.LIB ; If "High-Density" Disk formats desired, + ENDIF + IF FLOPY8 + INCLUDE DPB-8.LIB ; If 8" or HD Floppy Disks can be handled, + ENDIF ; add default Autoselect DPB's + IF MORDPB + INCLUDE DPB2.LIB ; Additional assignable DPB's (4+4 unused) + ENDIF ;mordpb + + ELSE ;Not autosl + INCLUDE DPBRAM.LIB ; RAM-based DPB's, 1 per physical Format + ENDIF + +NRDPB EQU [$-DPB]/DPBSIZ ; Calc number of DPB's + + CSEG ; Hard & Ramdisk DPBs and DPHs go in Code Seg + ;.xlist + IF HARDDSK + ; << ****** Hardware Specific ****** >> + ; << Insert DPB Info for Hard Disk >> + INCLUDE DPBHD-WW.LIB ; << Drives as DPBHD-xx.LIB >> + ENDIF + ;.list + IF RAMDSK + ; << ****** Hardware Specific ****** >> + ; << Insert DPB Info for RAM Disk >> + INCLUDE DPBM-DX.LIB ; << in file DPBM-xxx.LIB >> + ENDIF + PAGE + INCLUDE DPH.LIB ; Disk parameter headers + ;.xlist + IF HARDDSK + INCLUDE DPHHD.LIB ; Insert DPH Info for Hard Disk Partitions + ENDIF + ;.list + IF RAMDSK + INCLUDE DPHM.LIB ; Insert DPH Info for RAM Disk + ENDIF + .LIST + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; Disk Driver Low - Level Function Links +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Direct Disk I / O +; Call with: Function Number in C, Driver number in B, +; Args in A, DE, HL +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + CSEG +DIRDIO: +; CALL PRINT +; DEFB '[DIRDIO',']'+80H + + IF BANKED + CALL BIOSTK + CALL GOSYSB ; Bank in the system bank + JP JDIRIO ; And jump to Banked-BIOS function + + COMMON /BANK2/ + ENDIF + +DIRIO: PUSH HL ; Save user's HL + PUSH AF ; ..and A reg for range checks + LD A,B + CP MAXDDA ; Legal Driver #? + JR NC,DIRIOX ; ..jump Error Exit if Not + PUSH BC + LD HL,DDIOTB + LD C,B ; Driver number + LD B,0 + ADD HL,BC + ADD HL,BC ; Index into table + ADD HL,BC + LD A,(HL) ; Max call number + INC HL + LD C,(HL) + INC HL + LD H,(HL) + LD L,C ; Service vector table address in HL + POP BC ; Requested call + DEC A ; Correct Max Call # for Testing + JP M,DIRIOX ; ..jump Error exit if 0 --> FF (No Calls) + CP C ; Greater than Maximum Function? + JR C,DIRIOX ; ..jump Error exit if so + PUSH BC ; Else Save BC + LD B,0 + ADD HL,BC + ADD HL,BC ; Add twice for Word index + LD B,(HL) + INC HL + LD H,(HL) + LD L,B ; Put vector in HL + POP BC ; Restore User's BC register + POP AF ; .Restore A and Flags + EX (SP),HL ; ..restore HL, Vector to TOS + RET ; Jump to Routine + +DIRIOX: POP AF ; Clear stack + POP HL + OR 0FFH ; Set Error return + RET ; ..and quit + +; Direct Disk Access Table Pointer Table + +DDIOTB: DEFB 0 + DEFW 00 ; No Driver 0 + DEFB MAXFFN + DEFW FDFUNC ; 1 is Primary Floppy Driver + IF HARDDSK + DEFB MAXHFN + DEFW HDFUNC ; 2 is Primary Hard Disk Driver + ENDIF ;harddsk + IF [RAMDSK AND NOT HARDDSK] + DEFB 0 + DEFW 00 ; (Dummy 2 if not installed) + ENDIF ;ramdsk and not harddsk + IF RAMDSK + DEFB 0 + DEFW 00 ; 3 is Primary RAM Disk Driver (No Functions) + ENDIF ;ramdsk + +MAXDDA EQU ($-DDIOTB)/3 ; Number of entries in pointer table + +; Floppy Drive Function Table and Numbers + +FDFUNC: DEFW STMODE ; 00 set mode + DEFW STSIZE ; 01 set drive size + DEFW STHDRV ; 02 set head and drive + DEFW STSECT ; 03 set sector #, size and eot + DEFW SPEC ; 04 specify srt, hlt, hut + DEFW RECAL ; 05 home the floppy + DEFW SEEK ; 06 seek track + DEFW SREAD ; 07 read + DEFW SWRITE ; 08 write + DEFW READID ; 09 read id + DEFW RETDST ; 10 return drive status & result ptr + DEFW FMTTRK ; 11 format a track +MAXFFN EQU [$-FDFUNC]/2 + +; Hard Disk Function Table and Numbers + + IF HARDDSK +HDFUNC: DEFW HDVALS ; 00 Set Xfer Address, Return Interface Parms + DEFW HDSLCT ; 01 Select Device (& Logical Unit w/SCSI) + DEFW HD_RW ; 02 Direct Hard Disk Driver +MAXHFN EQU [$-HDFUNC]/2 + ENDIF ;harddsk + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; Banked Memory Support Routines +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Bank Control Routines. Used only in Banked Systems +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + IF BANKED ; << ****** HARDWARE SPECIFIC ****** >> + ; << Enter the Inter-Bank Movement >> + IF HBIOS + INCLUDE IBMV-WW.Z80 ; << routines in IBMV-xxx.Z80 >> + ELSE + INCLUDE IBMV-DX.Z80 ; << routines in IBMV-xxx.Z80 >> + ENDIF + + ELSE ; If Not Banked, Use these hooks + +MOVE: LDIR + RET + +SETBNK: +SELMEM: +RETMEM: +XMOVE: +GOSYSB: +FRCLR: +STFARC: RET + +FRJP: JP (HL) + +FRGETB: LD A,(HL) + RET + +FRGETW: LD E,(HL) + INC HL + LD D,(HL) + DEC HL + RET + +FRPUTB: LD (HL),A + RET + +FRPUTW: LD (HL),E + INC HL + LD (HL),D + DEC HL + RET + + ENDIF ;(not) banked + PAGE +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +; Core BIOS Code +;* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Return BIOS Addresses +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +RETBIO: LD BC,BIOSJT ; Get address of bios base + LD DE,CONFIG ; Point to configuration area + LD HL,DEVCFG ; Point to Char IO Device Table + LD A,VERS ; Return BIOS Version + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Return DPH Table Address +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + INCLUDE UTIL.Z80 + +DRVTBL: LD HL,DPHTBL ; Point to DPH table + RET + + PAGE + INCLUDE BYTEIO.Z80 ; Con:, aux:, lst: redirection + PAGE + INCLUDE SELRWD.Z80 ; Physical driver link for disks + PAGE + INCLUDE DEBLOCK.Z80 ; Hstbuf deblocker + PAGE + INCLUDE SECTRAN.Z80 ; Sector translation + PAGE + IF AUTOSL + INCLUDE SELFLP2.Z80 ; Floppy disk select + ELSE + INCLUDE SELFLP1.Z80 + ENDIF + PAGE + INCLUDE FLOPPY.Z80 ; Hardware independent floppy routines + PAGE + ; << ****** Hardware Specific ****** >> + ; << This Driver is for the Standard >> + INCLUDE FDC-DX.Z80 ; << MicroSystems (SMC) FDC37C665 >> + PAGE + ; << ****** Hardware Specific ****** >> + ; << Enter routines for your timer >> + INCLUDE TIM-WW.Z80 ; << and clock in TIM-xxxx.Z80 >> + PAGE + + IF HARDDSK ; << ****** Hardware Specific ****** >> + IF SCSI ; << Enter driver routines for your >> + INCLUDE HARD-DX.Z80 ; << Hard Disk in HARD-xxx.Z80 >> + ENDIF + IF IDE + INCLUDE HARDIDE.Z80 + ENDIF + IF HDSK + IF HBIOS + INCLUDE HARDHB.Z80 + ELSE + INCLUDE HARDSIM.Z80 + ENDIF + ENDIF + PAGE + ENDIF + + IF RAMDSK ; << ****** Hardware Specific ****** >> + INCLUDE RAMD-DX.Z80 ; << Enter driver routines for RAM >> + PAGE ; << Disk in RAMD-xxx.Z80 >> + ENDIF + + ; << ****** Hardware Specific ****** >> + ; << Enter Warm Boot routines in >> + INCLUDE WBOOT-DX.Z80 ; << WBOOT-xx.Z80 >> + + ; << ****** Hardware Specific ****** >> + ; << HBIOS interface routines in >> + INCLUDE HBIOS.Z80 ; << HBIOS.Z80 >> +;..... +; Status bytes of general use placed at end of Data area + + DSEG + +HDONE: DEFS 1 ; HDC Flag 0=Ready, 1=Busy, 0FFH=Done +ERFLAG: DEFS 1 ; Disk Operation Error Code + DEFS 3 ; Reserved + +; Add Character IO buffers here to insure they are at end of DSEG + + IF BUFFA0 AND MORDEV AND NOT MOVCPM +COM4Q: DEFS 1 ; Char count in Queue + DEFS QSIZE ; 1 to 255 character type-ahead buffer + ENDIF + + IF BUFFA1 AND MORDEV AND NOT MOVCPM +COM5Q: DEFS 1 ; Char count in Queue + DEFS QSIZE ; 1 to 255 character type-ahead buffer + ENDIF + + IF (BUFFA0 OR BUFFA1) AND MORDEV AND NOT MOVCPM + DEFS 12 ; Stack for Buffered char IO routines +INTSP: DEFS 2 ; Storage for entry Stack Ptr + ENDIF + +; Flags Bytes for Com1/Com2 Flow Control + IF XONOFF +COM1WT: DEFS 1 ; B7=0 - Output Ok, B7=1 - Output Stopped +COM2WT: DEFS 1 ; B0=0 - Input Ok, B0=1 - Input Halted + IF ESCC_B AND MORDEV AND NOT MOVCPM +COM3WT: DEFS 1 ; Flags for Expansion devices + ENDIF + IF ASCI_0 AND MORDEV AND NOT MOVCPM +COM4WT: DEFS 1 + ENDIF + IF ASCI_1 AND MORDEV AND NOT MOVCPM +COM5WT: DEFS 1 + ENDIF + ENDIF ;XonOff + +PAOR: DEFS 1 ; Parallel Output Ready Flag + + IF [BANKED AND ZSDOS2] + COMMON /B2RAM/ ; Put this label in Banked Memory + ENDIF ; ..else in Dseg +BRAME: DEFS 2 ; Use as dynamic sizing label for Hard Drive + ; ALV buffers, and storage area for sizing. + ; ALV Buffers build up from here in memory + CSEG + +; Display warning if we are assembling for MOVCPM integration and the +; combined CSEG/Initialized DSEG size exceeds 1 or 2 Boot Records + +PRINTX MACRO %NN + .printx %NN + ENDM + +LIMIT EQU $-BIOSJT+INITCS + + IF MOVCPM AND LIMIT > 4480 + .printx + .printx **** BIOS too big (>4480) for Boot Tracks! **** + PRINTX %LIMIT + .printx + ELSE + IF MOVCPM AND LIMIT > 4352 + .printx + .printx ++++ BIOS exceeds (>4352) 2-Sector Boot Record ++++ + PRINTX %LIMIT + .printx + ENDIF + ENDIF + +NSECTS EQU ($+INITCS-BIOSJT)/128+1 + IF INROM + INCLUDE BOOTRAM.Z80 + ENDIF + END + \ No newline at end of file diff --git a/Source/BPBIOS/bpbld1.rsp b/Source/BPBIOS/bpbld1.rsp new file mode 100644 index 00000000..d2592279 --- /dev/null +++ b/Source/BPBIOS/bpbld1.rsp @@ -0,0 +1 @@ + Y \ No newline at end of file diff --git a/Source/BPBIOS/bpbld2.rsp b/Source/BPBIOS/bpbld2.rsp new file mode 100644 index 00000000..1650cb02 --- /dev/null +++ b/Source/BPBIOS/bpbld2.rsp @@ -0,0 +1 @@ + NY \ No newline at end of file diff --git a/Source/BPBIOS/bpbldzx.cmd b/Source/BPBIOS/bpbldzx.cmd new file mode 100644 index 00000000..e2609005 --- /dev/null +++ b/Source/BPBIOS/bpbldzx.cmd @@ -0,0 +1,29 @@ +@echo off + +rem Wrapper to run bpbuild under the zx emulator. +rem This cmd file works around an issue +rem bpbuild has when the input filename on the +rem command line is the same as the output filename. +rem Bpbuild is trying to rename the existing output file to +rem a .bak, but fails because the input file is open. +rem So, if an input filename is specified, we take +rem steps to work around this. + +setlocal + +set PATH=%PATH%;..\..\Tools\zx;..\..\Tools\cpmtools; + +set ZXBINDIR=../../tools/cpm/bin/ +set ZXLIBDIR=../../tools/cpm/lib/ +set ZXINCDIR=../../tools/cpm/include/ + +if .%1.==.. goto :skip + +if exist bpimg.$$$ del bpimg.$$$ +copy %1 bpimg.$$$ +zx bpbuild -bpimg.$$$ +del bpimg.$$$ +goto :eof + +:skip +zx bpbuild \ No newline at end of file diff --git a/Source/BPBIOS/bpbuild.com b/Source/BPBIOS/bpbuild.com new file mode 100644 index 0000000000000000000000000000000000000000..9ffe859eb710f9316ffdf1eea4974514f7be4f6d GIT binary patch literal 8960 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 Cat{^& literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/byteio.z80 b/Source/BPBIOS/byteio.z80 new file mode 100644 index 00000000..95e9488d --- /dev/null +++ b/Source/BPBIOS/byteio.z80 @@ -0,0 +1,144 @@ +;************************************************************************** +; BYTEIO. Character IO High-Level Routines. (MUST be in Common Memory) +; Calling parameters apply to both High and Low-Level routines. +; +; Output Routines - Enter: C = Character to be sent +; Exit : None +; +; Input Routines - Enter: None +; Exit : A = Character received from driver +; +; Status Routines - Enter: None +; Exit : A = 0FFH if I/O Ready, 0 if Not Ready +; +; Routines may Use: AF,DE. All other registers preserved/unaffected +; NOTE: Low-Level routines MUST preserve HL and BC. +; +; 1.1a- 26 Feb 93 - Remove Char Jump table. Integrate in IIO-xx. HFB +; 1.1 - 31 Aug 92 - General Release. Mod to work from other banks. HFB +; 1.0 - 3 Jul 92 - First General Release. HFB +; 0.0 - 12 Jun 91 - Initial Test Release. HFB +;************************************************************************** + +DEVINP EQU 10000000B ; Input data request +DEVIST EQU 11000000B ; Input status request +DEVOUT EQU 00000000B ; Output data request +DEVOST EQU 01000000B ; Output status request + +CONFLD EQU 0 ; Iobyte offset for CONsole field +AUIFLD EQU 2 ; Iobyte offset for AUX input field +AUOFLD EQU 4 ; Iobyte offset for AUX output field +LSTFLD EQU 6 ; Iobyte offset for LIST field + +IOBYTE EQU 0003H ; Address of CP/M 2.2 IOBYTE + + CSEG + +;..... +; Auxiliary Input + +AUXIN: LD A,DEVINP ; AUX IN (reader) + DEFB 11H ; ..Junk DE and fall thru +AUXIST: LD A,DEVIST ; AUX Input Status + OR AUIFLD ; Identify logical device + JR GODEV ; Go to redirection code + +;..... +; Auxiliary Output + +AUXOUT: LD A,DEVOUT ; AUX OUT (punch) + DEFB 11H ; ..Junk DE and fall thru +AUXOST: LD A,DEVOST ; AUX Output Status + OR AUOFLD ; Identify logical device + JR GODEV ; Go to redirection code + +;..... +; List (Printer) + +LIST: LD A,DEVOUT ; LIST Output (Printer) + DEFB 11H ; ..junk DE and fall thru +LISTST: LD A,DEVOST ; LIST Output Status + OR LSTFLD ; Identify logical device + JR GODEV ; Go to redirection code + +;..... +; Console + +CONOUT: LD A,DEVOUT ; CONsole Output + DEFB 11H ; ..Junk DE and fall thru +CONOST: LD A,DEVOST ; CONsole Output Status + DEFB 11H ; ..junk DE and fall thru +CONIN: LD A,DEVINP ; CONsole Input + DEFB 11H ; ..Junk DE and fall thru +CONST: LD A,DEVIST ; CONsole Input Status + ;..Fall thru to.. +;..... +; Redirection Code + +GODEV: PUSH HL ; Save HL through here + PUSH AF ; Save service type + AND 7 ; Save only shift count + LD L,A + IF BANKED + PUSH HL ; Save Regs used + PUSH BC + LD A,(TPABNK) ; IOByte always in TPA Bank + LD C,A ; .so set to access TPA + LD HL,IOBYTE ; ..point to IOByte + CALL FRGETB ; ...and fetch + POP BC ; Restore regs + POP HL + INC L ; Restore Zero Flag + DEC L ; ..as on Entry + ELSE + LD A,(IOBYTE) ; Get IOBYTE value + ENDIF + JR Z,GODEV2 ; If console selected +GODEV1: RRCA ; Shift device number into D0,D1 + DEC L ; .using L as counter + JR NZ,GODEV1 ; ..looping til shifted +GODEV2: AND 0011B ; Mask for device + ADD A,A ; .double count + LD L,A ; Save in L (00000dd0) + POP AF ; Get service type + AND 11000000B ; Mask input and status bits (tt000000) + OR L ; Add service request to device # (tt000dd0) + RLCA + RLCA + RLCA ; D0=0, D1-D2=service, D4-D5=device (00dd0tt0) + OR 00001000B ; Bypass Device Config/ID bytes (00dd1tt0) + LD HL,DEVCFG ; .offset from base of Device Config Table +VECTA: CALL ADDAHL ; Offset HL by A forming pointer in table + LD A,(HL) ; Fetch routine address + INC HL + LD H,(HL) + LD L,A ; ..in HL + EX (SP),HL ; Swap with (HL) on Stack top + +;..... +; Return A=False w/Flags Set + +ISFALSE: XOR A + RET + +;..... +; Print routine prints to console the Null or Zero-terminated string at (SP) + +PRINT: + EX (SP),HL ; Print inline 0 or Hi-bit terminated +PSTR: LD A,(HL) ; General purpose print 0 or Hi-bit + INC HL ; Terminated string pointed to by HL + OR A + JR Z,PSTRX ; Exit if null found in string + LD C,A + PUSH BC ; WW + RES 7,C ; WW + CALL CONOUT ; Send to console device + POP BC ; WW + BIT 7,C ; Test for Hi-bit terminator + JR Z,PSTR ; ..loop if Not finished +PSTRX: EX (SP),HL ; Else swap Ptr to next instr for entry HL val + RET ; ..and return to caller + +;========================== End of BYTEIO ================================ + \ No newline at end of file diff --git a/Source/BPBIOS/cboot-dx.z80 b/Source/BPBIOS/cboot-dx.z80 new file mode 100644 index 00000000..3e825fca --- /dev/null +++ b/Source/BPBIOS/cboot-dx.z80 @@ -0,0 +1,771 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::::::*********************** +; CBOOT. B/P BIOS Cold Boot Module. ** Hardware Specific ** +; This MUST be the Last Module in the BIOS because ** for prompts, Env ** +; it is overwritten by RAM Data. No Dflt Termcap. ** and Termcap Dflts ** +; - D-X Designs Pty Ltd P112 - *********************** +; +; 1.2 - 30 Aug 01 - Cleaned up for GPL release, Set Bank Numbers on boot +; (TPABNK only if MOVCPM) by reading Regs set by ROM. HFB +; 1.1 - 8 May 97 - Added code to activate ASCI channels. HFB +; 1.0 - 13 Aug 96 - Initial Release for P112. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + DSEG +;..... +; Cold boot entry. This code is executed only once and so may be +; overwritten subsequently by the BIOS. In Non-banked systems, this code +; is placed in the Host Buffer, HSTBUF, allowing up to 1024 bytes in the +; section, although much less will fit on the boot tracks. In Banked +; systems, a small resident part (up to 128 bytes) occupies the Directory +; Sector Buffer, DIRBUF, while the remainder is placed in the banked +; HSTBUF, allowing both sectors to be overwritten without penalty. +; To insure minimum disruption in assembling and linking the BIOS, this +; module must be one of the first linked to place HSTBUF/DIRBUF at the +; beginning of B2RAM and DSEG. + +CBOOT: DI ; Disable interrupt system +; IN0 A,(DDRA) ; Get Data Definition of Port A +; SET 4,A ; Bit 4 is Input for SCSI "Int" input +; OUT0 (DDRA),A ; and reset bits + +; LD A,(HICOMM) ; Set Common Bank start to Header locn +; OUT0 (CBAR),A + +; CALL FDRst ; Reset FDC Controller, Re-Initialize + ; (Needed in case ROM Timed out for HD Boot) +; CALL MOTOFF ; Turn Floppy motors Off, clear timer + +; XOR A ; Get a Byte of Zeros +; OUT0 (SCR),A ; and activate ASCI0/ASCI1 vs MIMIC + + LD HL,(IOBYT) ; Get IOBYTE, Default Drive & User + LD (3),HL ; Set values in TPA bank + +; Set BIOS Bank Numbers to the RAM base Number as set by Boot ROM. In-context +; RAM will be reflected in CBR which is base. We adjust other bank numbers +; based on configured differences, except for MaxBnk which remains as config'd. +; Since the bootable systems (MOVCPM set to YES) are not banked, the Fast Boot +; option should be OFF, and only the TPABNK will necessarily be Accurate. + +; IN0 C,(CBR) ; Read Current 4k base of RAM +; RR C ; divide +; RR C ; by +; RR C ; 8 for 32k Bank base +; LD HL,TPABNK +; LD B,(HL) ; Get configured TPA Bank # +; LD (HL),C ; (Store actual) +; IF NOT MOVCPM +; DEC HL +; LD A,(HL) ; Get Any User Bank +; SUB B ; (compute difference from TPA) +; JR C,NoUsrB ; ..jump if None +; ADD A,C ; Else Compute new User Bank # +; LD (HL),A ; (save) +;NoUsrB: INC HL ; advance to System Bank # +; INC HL +; LD A,(HL) ; fetch +; SUB B ; Compute diff from System Bnk to TPA Bnk +; ADD A,C ; add new base +; LD (HL),A ; (save) +; INC HL ; Advance to RAM Drive Start Bank # +; LD A,(HL) +; SUB B ; compute difference +; ADD A,C ; Add true base +; LD (HL),A ; (save) +; ENDIF ;~Movcpm. Max Bank # Stays as configured +; + + IF BANKED + LD SP,USP ; Set to User Stack in High memory + CALL HBX_INIT ; WW + CALL GOSYSB ; Turn on the System bank + XOR A + LD (BIOSTK),A ; Init bank switcher + LD (3),HL ; Set IOBYTE and Default DU in System bank + CALL CBOOT0 ; Execute main part of Cold Setup + LD A,(TPABNK) + CALL SELBNK ; Insure TPA is in context + ELSE + LD SP,80H ; Set stack in Low memory + CALL HBX_INIT ; WW + CALL CBOOT0 ; Execute main part of Cold Setup + ENDIF + + IF NOT MOVCPM + LD HL,003CH ; Point to ZMP Flag + LD (HL),0E5H ; say this is first time run + ENDIF + + IF FASTWB + ; Grab a copy of command processor from TPA and + ; cache it in (SYSBNK):100H. We assume that the + ; original copy of command processor is in high memory. + LD A,(TPABNK) ; Source bank is TPABNK + LD C,A ; Put it in C + LD A,(SYSBNK) ; Destination bank is SYSBNK + LD B,A ; Put it in B + CALL HBX_XCOPY ; Set banks for extended copy + LD HL,(CPADR) ; Copy from start of command processor + LD DE,100H ; .. to $100 in system bank + LD BC,(CPLEN) ; Length of command processor + CALL HBX_COPY ; Do it + + JP WBOOTV ; move it and commence execution + ELSE + JP GOZSYS ; Otherwise just go to Command Processor + ENDIF + + IF BANKED + COMMON /B2RAM/ + ENDIF + +;..... +; If this system is Banked and set for Zsdos2, then ALV Buffers are in the +; system bank and will be dynamically sized during Cold Boot. This permits +; BPCNFG to configure a generic IMG file for specific Hard Drive Partitions. + +CBOOT0: LD HL,BRAME ; Get end of banked RAM + LD (HISAV),HL ; and save for later use + IF HARDDSK + LD HL,DPHTBL ; Point to start of DPH Table + LD B,16 ; do all DPHs +DYNLP: LD E,(HL) + INC HL + LD D,(HL) ; Get the pointer for this one + INC HL ; advance to next + LD A,D ; Anything there? + OR E + JR Z,DYNCHK ; jump to end if Nothing + DEC DE ; Else back up Ptr to Driver + DEC DE + LD A,(DE) ; Get driver # + IF RAMDSK + DEC A + DEC A ; Hard Disk (Driver 2)? + JR Z,ADDSIZ ; ..jump if so + DEC A ; RAM Disk (Driver 3)? + ELSE + CP 2 ; Hard Disk (Driver 2)? + ENDIF ; Ramdsk + JR NZ,DYNCHK ; ..jump to end if Not +ADDSIZ: PUSH BC ; Save loop counter + PUSH HL ; and ptr to DPH + EX DE,HL + LD DE,12 ; Offset to DPB Ptr (+2 for Decs) + ADD HL,DE + LD E,(HL) + INC HL + LD D,(HL) ; Get Addr of this DPB + INC HL + INC HL + INC HL ; Advance to ALV Addr location + LD BC,(HISAV) ; get end of used RAM + LD (HL),C ; and save + INC HL + LD (HL),B ; in DPH + LD HL,5 + ADD HL,DE ; Advance to Size in DPB + LD E,(HL) + INC HL + LD D,(HL) ; and fetch Size-1 + INC DE ; Make = Size in Block + PUSH BC ; (save End Addr in BC) + LD B,3 +DVRAME: SRL D ; Divide by 2 + RR E + DJNZ DVRAME ; *3 = Div 8 + INC DE ; +1 + EX DE,HL + POP BC ; Restore Ram End + ADD HL,BC ; Add size to Starting Location + LD (HISAV),HL ; save for next drive/overflow check + POP HL ; Restore DPH ptr + POP BC ; and loop ctr +DYNCHK: DJNZ DYNLP ; Loop til all 16 tested + + ENDIF ;harddsk + + IF BANKED + LD DE,USP ; Point above critical Bios Ram storage + ELSE + LD DE,DIRBUF + ENDIF + IF Z3 + LD HL,(ENVADR) ; And top of memory + ELSE + LD HL,0FFFFH + ENDIF + SBC HL,DE ; Calculate # bytes to clear (CF already clr) + EX DE,HL ; Ptr to HL, Cnt to DE +Clr0: LD (HL),0 + INC HL + DEC DE + LD A,D + OR E + JR NZ,Clr0 ; ..loop til all cleared + +; In systems where we have enough space, we clear unused High Memory too + + IF NOT MOVCPM + LD HL,(ENVADR) ; Clear above the ENV as well + LD DE,100H ; Assuming a 2-record ENV + ADD HL,DE ; Are we already at the top of memory? + JR C,ATTOP ; ..bypass clearing if so + EX DE,HL ; Else we must calculate how much to clear + LD HL,MEMTOP ; From the TOP + SBC HL,DE ; subtract the start + LD C,L + LD B,H ; and use for count + LD L,E ; Copy Start to Source + LD H,D + INC DE ; dest is same + 1 + LD (HL),0 ; we fill with Zeros + LDIR ; Do it! +ATTOP: + ENDIF ; ~Movcpm + +; Initialize the ZCPR3 buffers + + IF NOT MOVCPM + LD HL,(ENVADR) ; Should we move our local ENV block? + LD A,H + OR L + JR NZ,BMOVE ; ..jump if we already have one + ENDIF ; (Always move Env if using MOVCPM type load) + LD HL,Z3ENV ; Else set up pointers + LD (ENVADR),HL + LD DE,ENV + EX DE,HL + LD BC,ENVEND-ENV ; count + LDIR ; and move + IF MOVCPM ; Instead of storing Termcap bytes, Zeroize + LD H,D + LD L,E ; Dupe dest addr + LD (HL),0 ; Clear current byte + LD BC,37-1 ; Set count to remaining Termcap area + INC DE ; Dest is next byte + LDIR ; move Zero along + ENDIF ;Movcpm +BMOVE: + IF NOT MOVCPM ; No need to set values on Boot Track System + LD DE,(ENVADR) ; Get pointer to ENV + IF HAVIOP + LD HL,0FH ; Set offset to IOP Addr in ENV + CALL CALCOF ; get the addr and size + LD (IOPPTR),HL ; and set addr + ENDIF ;haviop + LD HL,18H ; Set offset to Mult Comnd Line in ENV + CALL CALCOF ; get addr and size + LD (CLPTR),HL ; set addr + INC HL + INC HL + INC HL ; Advance to CL+3 + LD (CL3PTR),HL ; and set + INC HL ; Advance to CL+4 + LD (CMDSET),HL ; set addr in Command Line ptr + LD (CMDSET+2),A ; and CL Size byte + LD HL,09H ; Set offset to Path addr in ENV + CALL CALCOF ; get addr + LD (PTHPTR),HL ; and set + ENDIF ;Movcpm + IF FASTWB ; Do we restore CPR from Bank? + IF MOVCPM + LD DE,BIOSJT-1600H ; Get CPR Starting Addr + LD HL,0800H ; and Default Length + ELSE + LD HL,(ENVADR) ; Get pointer to ENV start + LD DE,3FH ; offset to CPR start + ADD HL,DE + LD E,(HL) ; and get CPR starting address + INC HL + LD D,(HL) + INC HL ; (advance to length) + LD H,(HL) ; Get length in blocks (*2 at this point) + LD L,0 ; convert to Word + SRL H ; Compute Blks * 128 + RR L ; to give HL = CPR length in bytes + ENDIF ;~Movcpm + +; ; +; ; SETUP FOR FASTWB +; ; +; ; BTTBL IS USED TO SAVE ORIGINAL CPR +; ; SARL IS USED TO RESTORE CPR +; ; +; ; 0-2: SRC ADDRESS (LLHHB) +; ; 3-5: DEST ADDRESS (LLHHB) +; ; 6-7: LEN (LLHH) +; ; +; ; SET TRANSFER LENGTH IN BTTBL AND SARL +; LD (BTTBL+6),HL ; Save length in boot block +; LD (SARL+6),HL ; and DMA WB block +; ; +; ; L=TPA BANK, H=SYS BANK +; LD HL,(TPABNK) ; Get TPA (L) and System (H) Banks +; ; +; ; CONVERT BANK:DE -> BHHLL, SAVE AS SRC IN BTTBL AND DEST IN SARL +; LD A,L ; Load TPA Bank # +; RL D ; Move MSB of Address to Carry +; ADC A,0 ; Add Carry to Bank # (in case cross banks) +; RRA ; shift for DMA Bank # +; LD (SARL+5),A ; save in Warm Boot DMA Block +; LD (BTTBL+2),A ; and initial move to bank +; RR D ; Move Bank # LSB (Carry) to MSB of Address +; LD (SARL+3),DE ; Save CPR logical address in WB DMA block +; LD (BTTBL),DE ; and initial move to bank +; ; +; ; CONVERT BANK:$0100 -> BHHLL, SAVE AS DEST IN BTTBL AND SRC IN SARL +; LD A,H ; Load System Bank # +; LD HL,100H ; Load Bank Address of CPR Image Start +; RL H ; get rid of MSB +; ; Since we know the MSB=0, bypass adc 0 +; RRA ; Shift for DMA Bank # +; LD (BTTBL+5),A ; save as initial dest bank byte +; LD (SARL+2),A ; and DMA Source Bank byte +; RR H ; Rotate Carry (Bank LSB) to MSB of Address +; LD (SARL),HL ; Save Source Addr in WB DMA block +; LD (BTTBL+3),HL ; and initial move block + + LD (CPLEN),HL ; Save command processor length + LD (CPADR),DE ; Save command processor address (in TPA) + + ENDIF ;fastwb + +; IF BANKED +; ; +; ; SETUP CPYVEC TO COPY IMAGE OF TPA BANK PAGE ZERO TO SYS BANK PAGE ZERO +; LD HL,0000 ; If we are banked, set to copy Page 0 +; LD A,(TPABNK) ; of TPA to System Bank +; OR A +; RRA ; Shift TPA Bank # +; LD (CPYVEC+2),A ; store in DMA Block +; RR H ; adjust Address by Bank LSB (Carry) +; LD (CPYVEC),HL ; and store +; LD H,0 +; LD A,(SYSBNK) +; RRA ; Shift System Bank # +; LD (CPYVEC+5),A ; store in DMA Block +; RR H ; adjust Address by Bank LSB (Carry) +; LD (CPYVEC+3),HL ; and store +; LD HL,40H ; Set length of move +; LD (CPYVEC+6),HL ; and store in DMA Block +; ENDIF ;banked + + LD (STKSAV),SP ; Save entry stack since we alter it here + LD A,(BLOCKE-BLOCK)/6 + LD SP,BLOCK +BLKMV: POP BC ; And number of bytes to move + POP HL ; Source + POP DE ; Get destination + LDIR + DEC A ; Another block moved + JR NZ,BLKMV ; Do more as required + + LD SP,(STKSAV) ; Get entry Stack Pointer back so we can return + +; All Buffers above BIOS have been cleared already at this point + + DEC A ; 0 --> FF + LD (Z3WHL),A ; Set the Wheel Byte + + ; Get and save the internal HBIOS physical disk + ; buffer address which is assumed to be in the + ; HBIOS bank. + LD B,19H ; Set buffer function call + LD HL,0 ; ... with address 0 to get HBIOS buf adr + CALL HBX_INVOKE ; ... to return internal HBIOS buffer adr + LD (HB_DSKBUF),HL ; Record the buffer address + + IF HAVIOP + LD HL,IOPRET + LD (BIOSJT+1),HL + ENDIF ;haviop + +; LD HL,INTTBL ; Set the Interrupt Vector +; LD A,H ; first the page +; LD I,A ; to CPU Register +; OUT0 (IL),L ; then the segment addr + + IF BANKED + CALL JDVINI ; Call directly because we are in High Stack + ELSE + CALL DEVINI ; Initialize the I/O system + ENDIF ; And any device specific ram + + IF [BANKED AND ZSDOS2] + LD DE,8000H ; If ALVs in Bank, size against Bank2 Top + ELSE + LD DE,(USRSP) ; else against base of User Space + ENDIF + LD HL,(HISAV) ; Load Highest RAM Address used + OR A + SBC HL,DE ; Is Needed Space > Limit? + JR C,MEMOK ; ..jump if So + + CALL PRINT ; Else Warn user + DEFB CR,LF,7,'++ Mem Ovfl +','+'+80H + +; Sign on the system + +MEMOK: + CALL PRINT + IF MOVCPM ; Space is critical for boot tracks + DEFB CR,LF,'P112 - ' ; Save all bytes possible + ELSE ; Otherwise sign on with complete name + DEFB CR,LF,'D-X Designs P112 - ' + ENDIF + DEFB 'B/P 50.00k Bios' ;**** Do NOT alter this string **** + + DEFB ' V',VERS/16+'0','.',VERS MOD 16+'0',' ' ; Vers in BCD + DATE + IF BANKED + DEFB ' (Banked) ' + ELSE + IF NOT MOVCPM + DEFB ' (Non-Banked) ' ; Nothing for boot track system + ENDIF + ENDIF + IF BANKED + DEFB ' with:',CR,LF,LF + DEFB ' ZCPR3+ Env' + IF CLOCK + IF DS1202 + DEFB CR,LF,' Dallas DS-1202 Clock, ' + IF CLKSET + DEFB 'with ' + ELSE + DEFB 'NO ' + ENDIF + DEFB 'Set' + ELSE + DEFB CR,LF,' ZSDOS Interrupt Clock' + ENDIF + ENDIF + DEFB CR,LF,' High-Density Floppy' + IF FDDMA + DEFB ' (DMA-driven IO)' + ELSE + DEFB ' (Polled IO)' + ENDIF + IF HARDDSK + IF SCSI + DEFB CR,LF,' SCSI Hard Disk Driver' + ENDIF + IF IDE + DEFB CR,LF,' GIDE Hard Disk Driver' + ENDIF + IF HDSK + IF HBIOS + DEFB CR,LF,' HBIOS Hard Disk Driver' + ELSE + DEFB CR,LF,' SIMH Hard Disk Driver' + ENDIF + ENDIF + IF HDDMA + DEFB ' (DMA-driven IO)' + ELSE + DEFB ' (Polled IO)' + ENDIF + ENDIF + IF FASTWB + DEFB CR,LF,' Warm Boot from RAM' + ENDIF + IF RAMDSK + DEFB CR,LF,' RAM Disk (M:)' + ENDIF + IF BIOERM + DEFB CR,LF,' Full Error Messages' + ENDIF + ENDIF ;Banked + DEFB CR,LF+80H + +;WW EI ; Turn Interrupts back on + RET ; ..and return + +;..... +; Offset to and get ENV Address and respective element size + +CALCOF: ADD HL,DE ; Add offset to Base ENV Addr + LD C,(HL) ; get low byte + INC HL + INC HL ; advance to size byte + LD A,(HL) ; get size + DEC HL ; Back down to Addr hi byte + LD H,(HL) ; and grab + LD L,C ; Ptr to Segment now in HL + RET ; return to caller + +; Block Move Parameters + +BLOCK: DEFW PATH-CMDSET ; # to move + DEFW CMDSET ; Source +CLPTR: DEFW Z3CL ; Destination + + DEFW 10 + DEFW AUTOCMD +CL3PTR: DEFW Z3CL+3 + + DEFW PATHE-PATH + DEFW PATH +PTHPTR: DEFW EXPATH + + IF HAVIOP + DEFW IOPLEN+2 + DEFW IOPENT +IOPPTR: DEFW IOP + ENDIF + + IF HARDDSK AND HDDMA AND (NOT IDE) + DEFW DMALEN + DEFW DMADAT + DEFW DMATBL + ENDIF + +BLOCKE EQU $ + +;..... +; Initial HD DMA Control Block data + + IF HARDDSK AND HDDMA +DMADAT: DEFW HSTBUF ; Physical sector address + DEFB 00 ; BNK2 SHR 1 if banked, BNK0 SHR 1 If not + DEFW DMAACK ; Dack port address + DEFB 0 + DEFW 400H ; Number of bytes to transfer (1Sct+slop=2Scts) +DMALEN EQU $-DMADAT + ENDIF + +CMDSET: DEFW Z3CL+4 ; Point to first character in command buffer + DEFB Z3CLS ; Command buffer size + DEFW 0 ; Clear the command line + +PATH: DEFB '$','$',1,15 ; Current, A15: + DEFB 0 ; End of initial path +PATHE EQU $ + +; Environment Descriptor for ZCPR34 + +ENV: JP 0 ; Leading jump (address is CBIOS when NZCOM) +ENV1: ; ZCPR3 enviornment descriptor ... + DEFB 'Z3ENV' ; Environment id + DEFB 90H ; Env type (=>80H means extended ENV). YASBEC + ; uses 90H to show User Area instead of Prt2 + DEFW EXPATH ; External path (path) + DEFB EXPATHS ; + DEFW RCP ; Resident command package (rcp) + DEFB RCPS ; + DEFW IOP ; Input/output package (iop) + DEFB IOPS ; + DEFW FCP ; Flow command package (fcp) + DEFB FCPS ; + DEFW Z3NDIR ; Named directories (ndr) + DEFB Z3NDIRS ; + DEFW Z3CL ; Command line (cl) + DEFB Z3CLS ; + DEFW Z3ENV ; Environment (env) + DEFB Z3ENVS ; + DEFW SHSTK ; Shell stack (sh) + DEFB SHSTKS ; + DEFB SHSIZE ; + DEFW Z3MSG ; Message buffer (msg) + DEFW EXTFCB ; External fcb (fcb) + DEFW EXTSTK ; External stack (stk) + DEFB 0 ; Quiet flag (1=quiet, 0=not quiet) + DEFW Z3WHL ; Wheel byte (whl) + DEFB 16 ; Processor speed (mhz) + DEFB 'P'-'@' ; Max disk letter + DEFB 31 ; Max user number + DEFB 1 ; 1 = Ok to accept DU:, 0 = Not Ok + DEFB 0 ; Crt selection () + DEFB 0 ; Printer selection () + DEFB 80 ; Crt 0: width + DEFB 24 ; # of lines + DEFB 22 ; # of text lines + +; In Extended ENV, CRT 1 is replaced by System Info + +;; DEFB 132 ; . CRT 1: Width +;; DEFB 24 ; # of lines +;; DEFB 22 ; # of text lines + +; The Drive Vector is a 16-bit word in which a "1" bit indicates that a drive +; is active in the system. The bits are arranged as: PONMLKJIHGFEDCBA. When +; stored in memory, it is in normal form with the Low byte stored first. + +E_DRVL DEFL [DRV_A & 1] + [DRV_B & 2] + [DRV_C & 4] + [DRV_D & 8] +E_DRVL DEFL E_DRVL + [DRV_E & 16] + [DRV_F & 32] + [DRV_G & 64] +E_DRVL DEFL E_DRVL + [DRV_H & 128] ; Low Byte Formed +E_DRVH DEFL [DRV_I & 1] + [DRV_J & 2] + [DRV_K & 4] + [DRV_L & 8] +E_DRVH DEFL E_DRVH + [DRV_M & 16] + [DRV_N & 32] + [DRV_O & 64] +E_DRVH DEFL E_DRVH + [DRV_P & 128] ; High Byte Formed + + DEFW E_DRVH * 256 + E_DRVL + DEFB 0 ; (Reserved) + + DEFB 80 ; Prt 0: width + DEFB 66 ; # of lines + DEFB 58 ; # of text lines + DEFB 1 ; Ff flag (1=can form feed) + +;========= Usurped Prt1 storage for Resident User Space Vectors ========= +;; DEFB 96 ; Prt 1: width +;; DEFB 66 ; # of lines +;; DEFB 58 ; # of text lines +;; DEFB 1 ; Ff flag (1=can form feed) + + DEFB USPCS ; Remaining Free User Space (recs) +USRSP: DEFW USPC ; Res. User Space base Address (xx00h/xx80h) + DEFB USPCS ; Size of Res. User Space in 128-byte recs + +;======================================================================== +; In Extended ENV, Printers 2 and 3 are gone, replaced by System Info + +;; DEFB 132 ; . PRT 2: Width +;; DEFB 66 ; # of lines +;; DEFB 58 ; # of text lines +;; DEFB 1 ; FF flag (1=can form feed) +;; DEFB 132 ; . PRT 3: Width +;; DEFB 88 ; # of lines +;; DEFB 82 ; # of text lines +;; DEFB 1 ; FF flag (1=can form feed) + DEFW CPR ; Ccp base address + DEFB [DOS-CPR]/128 ; Size of ccp in 128 byte records + DEFW DOS ; Bdos base address (xx00h or xx80h) + DEFB [BIOSJT-DOS]/128 ; Bdos buffer size in 128 byte records + DEFW BIOSJT ; Bios base address (nzbio if nzcom running) + DEFB 'SH ' ; Shell variable filename + DEFB 'VAR' ; Shell variable filetype + DEFB ' ' ; File 1 + DEFB ' ' ; + DEFB ' ' ; File 2 + DEFB ' ' ; + DEFB ' ' ; File 3 + DEFB ' ' ; + DEFB ' ' ; File 4 + DEFB ' ' ; + DEFB 0 ; Public drive area (zrdos +) + DEFB 0 ; Public user area (zrdos +) + ; Env 128 bytes long +;*************************************************************************** +; This TermCap Data for the New Z-System complies with VLIB4D specs and more +; fully describes the terminal and its capabilities. Edit the fields with +; values for your terminal characteristics, or use it as a template for an +; outboard definition loaded from the Startup file. + +ENV2: DEFB ' ' ; Terminal Name (13 bytes, space terminated) + + IF MOVCPM ; Dummies for boot track systems +B13: DEFB 0 +B14: DEFB 0 ; Bit 7 = Normal TCAP + ELSE +B13: DEFB GOELD-ENV2 ; Offset to GOELD in graphics section +B14: DEFB 10000000B ; Bit 7 = Extended TCAP, remainder undefined + ENDIF ;~Movcpm + +; B15 b0 Standout 0 = Half-Intensity, 1 = Reverse Video +; B15 b1 Power Up Delay 0 = None, 1 = 10-second delay +; B15 b2 No Wrap 0 = Line Wrap, 1 = No Wrap if char written +; to last character in line +; B15 b3 No Scroll 0 = Scroll, 1 = No Scroll if char written +; to last char in last line of diplay +; B15 b4 ANSI 0 = ASCII, 1 = ANSI + +B15: DEFB 00000000B ; Reverse Vid, Wrap, Scroll, ASCII + ; Additional single character cursor motion bytes + DEFB 'E'-'@' ; Cursor Up + DEFB 'X'-'@' ; Cursor Down + DEFB 'D'-'@' ; Cursor Right + DEFB 'S'-'@' ; Cursor Left + + IF NOT MOVCPM ; Omit in boot systems to save space + ; Instead, we simply zero remainder. + DEFB 0 ; CL Delay for Screen Clear + DEFB 0 ; CM Delay for Cursor Motion + DEFB 0 ; CE Delay for Clear to End-of-Line + ; Strings start here + DEFB 0 ; (CL) Home Cursor and Clear Screen + DEFB 0 ; (CM) Cursor Motion + DEFB 0 ; (CE) Clear to End-of-Line + DEFB 0 ; (SO) Reverse On + DEFB 0 ; (SE) Reverse Off + DEFB 0 ; (TO) Terminal Init + DEFB 0 ; (TE) Terminal De-init + ; Extensions to Standard Z3TCAP + DEFB 0 ; (LD) Delete Line + DEFB 0 ; (LI) Insert Line + DEFB 0 ; (CD) Clear from Cursor to End-of-Scr + ; Attributes setting parameters + DEFB 0 ; Set Attributes + DEFB 0 ; Attributes String + ; Read items from screen + DEFB 0 ; Report Cursor Pos'n (ESC Y Pn Pn) + DEFB 0 ; Read Line Under Cursor + +GOELD: DEFB 0 ; On/Off Delay + ; Graphics strings offset from Delay value. + DEFB 0 ; Graphics On + DEFB 0 ; Graphics Off + DEFB 0 ; Cursor Off + DEFB 0 ; Cursor On + ; Graphics Characters + DEFB '*' ; Upper-Left corner [*] + DEFB '*' ; Upper-right corner [*] + DEFB '*' ; Lower-Left corner [*] + DEFB '*' ; Lower-right corner [*] + DEFB '-' ; Horizontal Line [-] + DEFB '|' ; Vertical Line [|] + DEFB '#' ; Full Block (hashed block) [*] + DEFB 'X' ; Hashed Block (big X) [#] + DEFB '+' ; Upper Intersect (Upside down "T") [+] + DEFB '+' ; Lower Intersect ("T") [+] + DEFB '+' ; Mid Intersect (Crossing Lines) [+] + DEFB '+' ; Right Intersect ("T" rotated left) [+] + DEFB '+' ; Left Intersect ("T" rotated right) [+] + DEFB 0 + DEFB 0 + ENDIF ;~Movcpm +ENVEND: + +; IOP initial data + + IF HAVIOP +IOPENT: JP IOPEND + JP IOPEND + JP IOPEND + JP IOPEND + JP CONST + JP CONIN + JP CONOUT + JP LIST + JP AUXOUT + JP AUXIN + JP LISTST + JP IOPEND + JP IOPEND + JP IOPEND + JP IOPEND + JP IOPEND + DEFB 'Z3IOP' + DEFB 'DUMMY ' +IOPLEN EQU $-IOPENT +IOPEND EQU IOP+IOPLEN + XOR A + RET + ENDIF ;haviop + +BCODEE EQU $ + IF BANKED +INITCS EQU BCODEE-CBOOT0 ; Size of Banked (B2RAM) part of Init Code + ELSE +INITCS EQU BCODEE-CBOOT ; Size of Complete Init Code in DSEG + ENDIF + +STKSAV: DEFS 2 ; Storage for Pointer while moving +HISAV: DEFS 2 ; Storage for Hi-ALV address + + IF FASTWB + DSEG +BTTBL: DEFS 8 ; Initial WB DMA Block + ENDIF +;======================== End of CBOOT ============================= + \ No newline at end of file diff --git a/Source/BPBIOS/deblock.z80 b/Source/BPBIOS/deblock.z80 new file mode 100644 index 00000000..8e5fb245 --- /dev/null +++ b/Source/BPBIOS/deblock.z80 @@ -0,0 +1,414 @@ +;************************************************************************** +; DEBLOCK - Disk Deblocking Buffer Routines. (Based on CP/M Example code) +; +; 1.0 - 3 Jul 92 - First General Release. HFB +; 0.0 - 8 Jul 91 - Initial Test Release. HFB +;************************************************************************** + + CSEG +;..... +; Set DMA address given by registers B and C + +SETDMA: + LD (DMAADR),BC ; Save the address +; CALL PRINT +; DEFB '[SETDMA',']'+80H + RET + +;..... +; Set track given by BC. While the entire word is saved here, only the +; lower byte is used in Floppy, SCSI and RAM Drivers. + +SETTRK: + LD (SEKTRK),BC +; CALL PRTSTRD +; DEFB '[SETTRK$' +; CALL PRTHEXWORD +; CALL PRTSTRD +; DEFB ']$' + RET + +;..... +; Set sector given by register C. This Sector number is the physical number +; of the desired sector and assumes that SECTRAN has been called. This value +; should reflect the Sector Number returned from SECTRAN. While the entire +; word is saved here, only the lower byte is used in Floppy, SCSI and RAM. + +SETSEC: + LD (SEKSEC),BC +; CALL PRTSTRD +; DEFB '[SETSEC$' +; CALL PRTHEXWORD +; CALL PRTSTRD +; DEFB ']$' + RET + +;..... +; Home the selected drive + +HOME: +; CALL PRTSTRD +; DEFB '[HOME]$' + RET ; Done by SELDSK + +;..... +; Flush the host buffer to disk if any writes pending + +FLUSH: +; CALL PRTSTRD +; DEFB '[FLUSH]$' + LD A,(HSTWRT) ; Write pending? + OR A + RET Z ; ..quit if nothing pending + IF BANKED + CALL BIOSTK + CALL GOSYSB + ENDIF + JP WRITEHST ; Write host buffer to disk if so + +;..... +; Sector blocking and de-blocking routines. Drive numbers used in these +; routines are logical drives. + +READ: +; CALL PRTSTRD +; DEFB '[READ]$' + + IF BANKED + CALL BIOSTK + CALL GOSYSB + JP JBREAD + + COMMON /BANK2/ + ENDIF + +BREAD: LD A,1 ; Non-zero + LD (READOP),A ; Read operation + INC A ; Treat as un-allocated (=wrual) + LD (WRTYPE),A ; Save it +; JR ALLOC ; Go to common code + JP ALLOC ; Go to common code + + + CSEG +WRITE: +; CALL PRTSTRD +; DEFB '[WRITE]$' + + IF BANKED + CALL BIOSTK + CALL GOSYSB + JP JBWRT + + COMMON /BANK2/ + ENDIF + +BWRT: XOR A + LD (READOP),A ; Write operation + LD A,C ; Get write type from dos +; CALL PRTHEXBYTE + LD (WRTYPE),A ; Save it + CP WRUAL ; Unallocated write? + JR NZ,CHKUNA ; ..jump if Not. check for unallocated sector + +; Write to un-allocated sector, set parameters + +; CALL PRTSTRD +; DEFB '[SETPARMS]$' + LD A,(UCOUNT) ; Records/allocation group +; CALL PRTHEXBYTE + LD (UNACNT),A ; Unallocated count + LD HL,SEKDSK ; Selcted disk, track & sector for us + LD DE,UNADSK ; (unadsk=sekdsk) + LD BC,4 ; (unatrk=sektrk) + LDIR ; (unasec=cpmsec) + +CHKUNA: +; CALL PRTSTRD +; DEFB '[TP0]$' + + LD A,(UNACNT) ; Any unallocated records remaining? + OR A + JR Z,ALLOC ; ..jump if none remain +; CALL PRTSTRD +; DEFB '[TP1]$' + + +; More unallocated records remain. Check for any change. + + DEC A ; Decrement unallocated count + LD (UNACNT),A ; And save it + LD B,4 ; Compare four bytes + LD HL,UNADSK ; Compare Old Disk, Track & Sector + LD DE,SEKDSK ; .to New Disk, Track & Sector +SLP0: LD A,(DE) +; CALL PRTHEXBYTE + CP (HL) ; Same? +; LD A,(HL) ; WW +; CALL PRTHEXBYTE + JR NZ,ALLOC ; ..jump if not + INC HL ; Else advance to next + INC DE + DJNZ SLP0 ; ..and loop til done + +; Everything matches, anticipate the next sector + +; CALL PRTSTRD +; DEFB '[MATCH]$' + ;********************** + DEC HL ; **** WW **** + ;********************** + INC (HL) ; Unasec+1 + LD A,(CPMSPT) ; Max sectors per track + CP (HL) ; Compare them + JR NZ,NOOVF ; ..jump if not ready for new track yet + +; Overflow to next track + + LD (HL),0 ; Unasec = 0 + LD HL,(UNATRK) + INC HL + LD (UNATRK),HL ; Unatrk+1 + +; Match found. Pre-read not necessary. + +NOOVF: XOR A ; Indicate no pre-read required + JR ALLOC1 ; ..and jump to common code + +; Not an unallocated record. Requires pre-read + +ALLOC: +; CALL PRTSTRD +; DEFB '[ALLOC]$' + + + XOR A ; Clear acc + LD (UNACNT),A ; Start over + INC A +ALLOC1: LD (RSFLAG),A ; Force pre-read if a=1 + +; Read/Write common code + + XOR A ; Clear acc + LD (ERFLAG),A ; Start with no errors + LD A,(SEKSEC) ; Get logical sector number + CALL PHYSEC ; Get physical sector + LD (SEKHST),A ; Physical sector (rel 0) + +; Check host active + + LD HL,HSTACT ; Host active flag + LD A,(HL) ; Get it + LD (HL),1 ; Set it in any case + OR A ; Set flags + JR Z,FILHST ; Flush Host Buffer if needed, then Read + +; Host buffer is active. Same as seek buffer? + + LD B,3 ; Loop compare of Disk and Track + LD HL,HSTDSK ; Compare Old Logical Disk & Trk + LD DE,SEKDSK ; .to New Logical Disk & Trk +SLP1: LD A,(DE) + CP (HL) ; Same? + JR NZ,FILHST ; ..jump if not same + INC HL ; Else advance to next + INC DE + DJNZ SLP1 ; ..loop til done + +; Same track. Same host sector? + + LD A,(SEKHST) ; New physical sector + CP (HL) + JR Z,MATCH ; The same + +; Not a match. + +FILHST: CALL FLUSH ; Empty hstbuf if write pending + +; Fill the host buffer if necessary. + + LD HL,SEKDSK ; Hstdsk=sekdsk + LD DE,HSTDSK ; Hsttrk=sektrk + LD BC,3 + LDIR ; Move it + LD A,(SEKHST) ; Move the Sector too + LD (DE),A + INC DE + INC HL + INC HL ; Skip over logical sector + LD C,4 ; B=0 from above + LDIR ; Set Host DPH and DPB, physical sector + +; LD A,(SEKPDN) ; WW +; LD (HSTPDN),A ; WW + + LD A,(RSFLAG) ; Pre-read necessary? + OR A + CALL NZ,READHST ; Read a sector if so. + XOR A ; Clear acc + LD (HSTWRT),A ; Clear write pending flag + +; We have a match. + +MATCH: LD A,(SECMSK) ; Get the sector mask + LD B,A ; Save it + LD A,(SEKSEC) ; Get new sector + AND B ; Mask off the high bits + RRA + LD H,A ; *128 MSB + LD L,0 + RR L ; And LSB + +; HL now has relative host buffer address of seksec + + IF HBIOS +; +; Modified to use HBIOS host buffer +; + LD A,BID_HB ; HSTBUF is in HBIOS + LD C,A + IF BANKED + LD A,(DMABNK) ; Set Read Destination Bank + ELSE + LD A,(TPABNK) ; Set Read Destination Bank + ENDIF + LD B,A + LD A,(READOP) ; Direction? + OR A + JR NZ,OKBNKS ; ..jump if read + LD A,B ; Else reverse banks + LD B,C + LD C,A +OKBNKS: CALL HBX_XCOPY ; Set source & destination banks +; LD DE,HBBUF ; Host buffer address in HBIOS bank + LD DE,(HB_DSKBUF) ; Host buffer address in HBIOS bank + ADD HL,DE ; Point to the sector + LD DE,(DMAADR) ; User's buffer + LD BC,128 ; Number of bytes to transfer + LD A,(READOP) ; Direction? + OR A ; Set flags + JR NZ,RWMOVE ; ..jump if Read + +; Must be Write. Mark and change direction. + + INC A ; A = 1 + LD (HSTWRT),A ; Set write pending flag + EX DE,HL ; Swap source and destination + +; Move the data + +RWMOVE: CALL HBX_COPY ; Handle possible inter-bank move + + ELSE ; HBIOS + IF BANKED + IF INROM + LD A,(TPABNK) ; If bank in ROM, HSTBUF is in TPA + LD C,A + ELSE + LD A,(SYSBNK) ; If bank in RAM, HSTBUF is in System Bank + LD C,A + ENDIF + LD A,(DMABNK) ; Set Read Destination Bank + LD B,A + LD A,(READOP) ; Direction? + OR A + JR NZ,OKBNKS ; ..jump if read + LD A,B ; Else reverse banks + LD B,C + LD C,A +OKBNKS: CALL XMOVE ; Set source & destination banks + ENDIF + LD DE,HSTBUF ; Host buffer address + ADD HL,DE ; Point to the sector + LD DE,(DMAADR) ; User's buffer + LD BC,128 ; Number of bytes to transfer + LD A,(READOP) ; Direction? + OR A ; Set flags + JR NZ,RWMOVE ; ..jump if Read + +; Must be Write. Mark and change direction. + + INC A ; A = 1 + LD (HSTWRT),A ; Set write pending flag + EX DE,HL ; Swap source and destination + +; Move the data + +RWMOVE: CALL MOVE ; Handle possible inter-bank move + + ENDIF ; HBIOS + +; Data has been moved + + LD A,(WRTYPE) + DEC A ; Directory write? set zero flag + LD A,(ERFLAG) ; In case of error + RET NZ ; ..go home if not a directory write + +; This was a Directory Write. Write it now! + + OR A ; Check error flag + RET NZ ; ..exit here if any error + LD (HSTWRT),A ; Clear write pending flag + CALL WRITEHST ; Write to disk + LD A,(ERFLAG) ; .Load resulting status + RET ; ..return it to caller + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Blocking/De-blocking variables +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + DSEG ; These variables must ALWAYS be visable, so put here +;..... +; Parameters relating to what we need in the Buffer Next + +SEKSEC: DEFS 2 ; New skewed logical sector to seek + +; --- The Following Variables MUST be kept in this order --- +SEKDSK: DEFS 1 ; New disk +SEKTRK: DEFS 2 ; New track +CPMSEC: DEFS 2 ; New logical sector +SEKDPB: DEFS 2 ; DPB for host +SEKDPH: DEFS 2 ; DPH for host +SEKHST: DEFS 1 ; New host physical sector to seek +;----------------------------------------------------------- +; Parameters relating to what's in the Buffer Now + +; --- The Following Variables MUST be kept in this order --- +HSTDSK: DEFS 1 ; Current disk +HSTTRK: DEFS 2 ; Current track +HSTSEC: DEFS 1 ; Current physical sector +HSTDPB: DEFS 2 ; DPB for host +HSTDPH: DEFS 2 ; DPH for host + +HSTACT: DEFS 1 ; Host buffer active flag +HSTWRT: DEFS 1 ; Host buffer write pending flag +;----------------------------------------------------------- + +UCOUNT: DEFS 1 ; Number of logical records per alloc block +CPMSPT: DEFS 2 ; Logical sectors per track (byte) +SECSHF: DEFS 1 ; Sector shift factor +SECMSK: DEFS 1 ; Sector mask +DMAADR: DEFS 2 ; User's DMA buffer + + IF BANKED AND NOT INROM + COMMON /B2RAM/ ; These values only used internally, bank them! + ENDIF + +RSFLAG: DEFS 1 ; Read sector flag 0=skip, 1=read +READOP: DEFS 1 ; Read operation flag 1=read, 0=write +WRTYPE: DEFS 1 ; Write type 0=allocated, 1=dir, 2=unallocated + +;..... +; Parameters to track Pre-Read Requirements + +; --- The Following Variables MUST be kept in this order --- +UNADSK: DEFS 1 ; Current disk +UNATRK: DEFS 2 ; Current track +UNASEC: DEFS 1 ; Current record +;----------------------------------------------------------- + +UNACNT: DEFS 1 ; Unallocated record count + +;========================= End of DEBLOCK ================================= + \ No newline at end of file diff --git a/Source/BPBIOS/def-dx.lib b/Source/BPBIOS/def-dx.lib new file mode 100644 index 00000000..cac7c336 --- /dev/null +++ b/Source/BPBIOS/def-dx.lib @@ -0,0 +1,369 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Cleaned up for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '17 Jan 14' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU no ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU YES ; Is this a banked BIOS? +ZSDOS2 EQU YES ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU YES ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU no ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU NO ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer +;--- Character Device Section --- + +MORDEV EQU NO ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU no ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU false ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU false ; Include ASCI1 Driver? +BUFFA1 EQU false ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of interrupt typeahead buffers (if used) + ; ..must be 2^n with n<8 +RTSCTS EQU no ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU YES ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU YES ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU yes ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU NO ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU no ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU NO ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only + ; (Pick 1 of 3 options below) +SCSI EQU NO ; YES = Use SCSI Driver +IDE EQU NO ; YES = Use IDE Driver +HDSK EQU YES ; YES = Use SIMH HDSK Driver +HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU YES ; Hard Disk Physical Unit 2 +UNIT_2 EQU YES ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU no ; Set each of these equates for the drive and +DRV_B EQU no ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU no +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU yes +DRV_H EQU yes +DRV_I EQU yes +DRV_J EQU yes +DRV_K EQU yes +DRV_L EQU yes + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU yes +DRV_O EQU yes +DRV_P EQU no + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU NO ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU BID_USR ; First TPA Bank (switched in/out) 40000H +BNK1 EQU BID_HB ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 00H ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H +BNKM EQU BID_RAMM ; Maximum Bank # F8000H + ; With both on-board RAMs only (MEM1 or MEM2), + ; the maximum Bank number is 11 (0BH). + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 68H ;R Receiver Buffer +_THR EQU 68H ;W Transmit Holding Reg +_IER EQU 69H ;RW Interrupt-Enable Reg +_IIR EQU 6AH ;R Interrupt Ident. Reg +_FCR EQU 6AH ;W FIFO Control Reg +_LCR EQU 6BH ;RW Line Control Reg +_MCR EQU 6CH ;RW Modem Control Reg +_LSR EQU 6DH ;RW Line Status Reg +_MMSR EQU 6EH ;RW Modem Status Reg +_SCR EQU 6FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 68H ;RW Divisor LSB | wih DLAB +_DLM EQU 69H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/def-ww-mk4.lib b/Source/BPBIOS/def-ww-mk4.lib new file mode 100644 index 00000000..516bf3d8 --- /dev/null +++ b/Source/BPBIOS/def-ww-mk4.lib @@ -0,0 +1,80 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; HBIOS specific customizations +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros +; +; NOTE: Must make sure settings below match hardware and +; HBIOS configuration. +; +HBIOS EQU YES ; Use HBIOS functions +INTPXY EQU YES ; Internal HBIOS Proxy +HBLOC EQU 0FE00H ; Location of HBIOS proxy (if used) +; +; Set exactly one of the following to YES to specify platform +; +N8VEM EQU NO +ZETA EQU NO +N8 EQU NO +MK4 EQU YES +; +; Set either the following to YES (or both to NO for no clock code) +; +SIMHCLK EQU NO ; Direct SIMH clock access +HBCLK EQU YES ; HBIOS clock driver +; +; Set HB_HDDEV to appropriate hard disk driver +; +;HB_HDDEV EQU HBDEV_HDSK ; SIMH HDSK Driver +;HB_HDDEV EQU HBDEV_IDE ; IDE Driver +HB_HDDEV EQU HBDEV_SD ; SD Card Driver +; +; Set HB_MDDEV to appropriate memory disk driver +; +HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver +; +; RAM/ROM disk sizes expressed as count of 2K blocks +; +HB_RAMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +;HB_ROMBLKS EQU 448 ; 1024K - 128K reserved / 2K per block +; +; Layout of RAM banks +; + IF N8VEM OR ZETA +BID_RAMD EQU 80H +BID_RAMM EQU 8BH +BID_SYS EQU 8CH +BID_HB EQU 8DH +BID_USR EQU 8EH +BID_COM EQU 8FH + ENDIF + IF N8 +BID_RAMD EQU 80H +BID_RAMM EQU 9BH +BID_SYS EQU 9CH +BID_HB EQU 9DH +BID_USR EQU 9EH +BID_COM EQU 9FH + ENDIF + IF MK4 +BID_RAMD EQU 10H +BID_RAMM EQU 1BH +BID_SYS EQU 1CH +BID_HB EQU 1DH +BID_USR EQU 1EH +BID_COM EQU 1FH + ENDIF +; + IF N8 OR MK4 +HB_IODEV EQU HBCIO_ASCI + ELSE +HB_IODEV EQU HBCIO_UART + ENDIF +; + IF INTPXY +MEMTOP EQU 0FFDFH ; Reserve memory above this for HBIOS + ELSE +MEMTOP EQU HBLOC - 1 ; Reserve memory above this for HBIOS + ENDIF diff --git a/Source/BPBIOS/def-ww-sim.lib b/Source/BPBIOS/def-ww-sim.lib new file mode 100644 index 00000000..3d5a7fc8 --- /dev/null +++ b/Source/BPBIOS/def-ww-sim.lib @@ -0,0 +1,80 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; HBIOS specific customizations +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros +; +; NOTE: Must make sure settings below match hardware and +; HBIOS configuration. +; +HBIOS EQU YES ; Use HBIOS functions +INTPXY EQU YES ; Internal HBIOS Proxy +HBLOC EQU 0FE00H ; Location of HBIOS proxy (if used) +; +; Set exactly one of the following to YES to specify platform +; +N8VEM EQU YES +ZETA EQU NO +N8 EQU NO +MK4 EQU NO +; +; Set either the following to YES (or both to NO for no clock code) +; +SIMHCLK EQU NO ; Direct SIMH clock access +HBCLK EQU YES ; HBIOS clock driver +; +; Set HB_HDDEV to appropriate hard disk driver +; +HB_HDDEV EQU HBDEV_HDSK ; SIMH HDSK Driver +;HB_HDDEV EQU HBDEV_IDE ; IDE Driver +;HB_HDDEV EQU HBDEV_SD ; SD Card Driver +; +; Set HB_MDDEV to appropriate memory disk driver +; +HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver +; +; RAM/ROM disk sizes expressed as count of 2K blocks +; +HB_RAMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +;HB_ROMBLKS EQU 448 ; 1024K - 128K reserved / 2K per block +; +; Layout of RAM banks +; + IF N8VEM OR ZETA +BID_RAMD EQU 80H +BID_RAMM EQU 8BH +BID_SYS EQU 8CH +BID_HB EQU 8DH +BID_USR EQU 8EH +BID_COM EQU 8FH + ENDIF + IF N8 +BID_RAMD EQU 80H +BID_RAMM EQU 9BH +BID_SYS EQU 9CH +BID_HB EQU 9DH +BID_USR EQU 9EH +BID_COM EQU 9FH + ENDIF + IF MK4 +BID_RAMD EQU 10H +BID_RAMM EQU 1BH +BID_SYS EQU 1CH +BID_HB EQU 1DH +BID_USR EQU 1EH +BID_COM EQU 1FH + ENDIF +; + IF N8 OR MK4 +HB_IODEV EQU HBCIO_ASCI + ELSE +HB_IODEV EQU HBCIO_UART + ENDIF +; + IF INTPXY +MEMTOP EQU 0FFDFH ; Reserve memory above this for HBIOS + ELSE +MEMTOP EQU HBLOC - 1 ; Reserve memory above this for HBIOS + ENDIF diff --git a/Source/BPBIOS/def-ww.lib b/Source/BPBIOS/def-ww.lib new file mode 100644 index 00000000..3d5a7fc8 --- /dev/null +++ b/Source/BPBIOS/def-ww.lib @@ -0,0 +1,80 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; HBIOS specific customizations +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros +; +; NOTE: Must make sure settings below match hardware and +; HBIOS configuration. +; +HBIOS EQU YES ; Use HBIOS functions +INTPXY EQU YES ; Internal HBIOS Proxy +HBLOC EQU 0FE00H ; Location of HBIOS proxy (if used) +; +; Set exactly one of the following to YES to specify platform +; +N8VEM EQU YES +ZETA EQU NO +N8 EQU NO +MK4 EQU NO +; +; Set either the following to YES (or both to NO for no clock code) +; +SIMHCLK EQU NO ; Direct SIMH clock access +HBCLK EQU YES ; HBIOS clock driver +; +; Set HB_HDDEV to appropriate hard disk driver +; +HB_HDDEV EQU HBDEV_HDSK ; SIMH HDSK Driver +;HB_HDDEV EQU HBDEV_IDE ; IDE Driver +;HB_HDDEV EQU HBDEV_SD ; SD Card Driver +; +; Set HB_MDDEV to appropriate memory disk driver +; +HB_MDDEV EQU HBDEV_MD ; Memory Disk Driver +; +; RAM/ROM disk sizes expressed as count of 2K blocks +; +HB_RAMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +HB_ROMBLKS EQU 192 ; 512K - 128K reserved / 2K per block +;HB_ROMBLKS EQU 448 ; 1024K - 128K reserved / 2K per block +; +; Layout of RAM banks +; + IF N8VEM OR ZETA +BID_RAMD EQU 80H +BID_RAMM EQU 8BH +BID_SYS EQU 8CH +BID_HB EQU 8DH +BID_USR EQU 8EH +BID_COM EQU 8FH + ENDIF + IF N8 +BID_RAMD EQU 80H +BID_RAMM EQU 9BH +BID_SYS EQU 9CH +BID_HB EQU 9DH +BID_USR EQU 9EH +BID_COM EQU 9FH + ENDIF + IF MK4 +BID_RAMD EQU 10H +BID_RAMM EQU 1BH +BID_SYS EQU 1CH +BID_HB EQU 1DH +BID_USR EQU 1EH +BID_COM EQU 1FH + ENDIF +; + IF N8 OR MK4 +HB_IODEV EQU HBCIO_ASCI + ELSE +HB_IODEV EQU HBCIO_UART + ENDIF +; + IF INTPXY +MEMTOP EQU 0FFDFH ; Reserve memory above this for HBIOS + ELSE +MEMTOP EQU HBLOC - 1 ; Reserve memory above this for HBIOS + ENDIF diff --git a/Source/BPBIOS/def-z33.lib b/Source/BPBIOS/def-z33.lib new file mode 100644 index 00000000..49a3ba56 --- /dev/null +++ b/Source/BPBIOS/def-z33.lib @@ -0,0 +1,370 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Cleaned up for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '17 Jan 14' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU no ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU NO ; Is this a banked BIOS? +ZSDOS2 EQU NO ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU YES ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU NO ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU NO ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer + +;--- Character Device Section --- + +MORDEV EQU NO ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU NO ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU false ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU false ; Include ASCI1 Driver? +BUFFA1 EQU false ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of interrupt typeahead buffers (if used) + ; ..must be 2^n with n<8 +RTSCTS EQU no ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU YES ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU YES ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU yes ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU NO ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU no ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU NO ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only + ; (Pick 1 of 3 options below) +SCSI EQU NO ; YES = Use SCSI Driver +IDE EQU NO ; YES = Use IDE Driver +HDSK EQU YES ; YES = Use SIMH HDSK Driver +HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU YES ; Hard Disk Physical Unit 2 +UNIT_2 EQU YES ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU no ; Set each of these equates for the drive and +DRV_B EQU no ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU no +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU yes +DRV_H EQU yes +DRV_I EQU yes +DRV_J EQU yes +DRV_K EQU yes +DRV_L EQU yes + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU yes +DRV_O EQU yes +DRV_P EQU no + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU NO ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU BID_USR ; First TPA Bank (switched in/out) 40000H +BNK1 EQU BID_HB ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 00H ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H +BNKM EQU BID_RAMM ; Maximum Bank # F8000H + ; With both on-board RAMs only (MEM1 or MEM2), + ; the maximum Bank number is 11 (0BH). + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 68H ;R Receiver Buffer +_THR EQU 68H ;W Transmit Holding Reg +_IER EQU 69H ;RW Interrupt-Enable Reg +_IIR EQU 6AH ;R Interrupt Ident. Reg +_FCR EQU 6AH ;W FIFO Control Reg +_LCR EQU 6BH ;RW Line Control Reg +_MCR EQU 6CH ;RW Modem Control Reg +_LSR EQU 6DH ;RW Line Status Reg +_MMSR EQU 6EH ;RW Modem Status Reg +_SCR EQU 6FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 68H ;RW Divisor LSB | wih DLAB +_DLM EQU 69H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/def-z33bnk.lib b/Source/BPBIOS/def-z33bnk.lib new file mode 100644 index 00000000..6ff37488 --- /dev/null +++ b/Source/BPBIOS/def-z33bnk.lib @@ -0,0 +1,370 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Cleaned up for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '17 Jan 14' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU no ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU YES ; Is this a banked BIOS? +ZSDOS2 EQU NO ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU YES ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU no ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU NO ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer + +;--- Character Device Section --- + +MORDEV EQU NO ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU no ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU false ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU false ; Include ASCI1 Driver? +BUFFA1 EQU false ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of interrupt typeahead buffers (if used) + ; ..must be 2^n with n<8 +RTSCTS EQU no ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU YES ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU YES ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU yes ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU NO ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU no ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU NO ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only + ; (Pick 1 of 3 options below) +SCSI EQU NO ; YES = Use SCSI Driver +IDE EQU NO ; YES = Use IDE Driver +HDSK EQU YES ; YES = Use SIMH HDSK Driver +HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU YES ; Hard Disk Physical Unit 2 +UNIT_2 EQU YES ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU no ; Set each of these equates for the drive and +DRV_B EQU no ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU no +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU yes +DRV_H EQU yes +DRV_I EQU yes +DRV_J EQU yes +DRV_K EQU yes +DRV_L EQU yes + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU yes +DRV_O EQU yes +DRV_P EQU no + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU NO ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU BID_USR ; First TPA Bank (switched in/out) 40000H +BNK1 EQU BID_HB ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 00H ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H +BNKM EQU BID_RAMM ; Maximum Bank # F8000H + ; With both on-board RAMs only (MEM1 or MEM2), + ; the maximum Bank number is 11 (0BH). + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 68H ;R Receiver Buffer +_THR EQU 68H ;W Transmit Holding Reg +_IER EQU 69H ;RW Interrupt-Enable Reg +_IIR EQU 6AH ;R Interrupt Ident. Reg +_FCR EQU 6AH ;W FIFO Control Reg +_LCR EQU 6BH ;RW Line Control Reg +_MCR EQU 6CH ;RW Modem Control Reg +_LSR EQU 6DH ;RW Line Status Reg +_MMSR EQU 6EH ;RW Modem Status Reg +_SCR EQU 6FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 68H ;RW Divisor LSB | wih DLAB +_DLM EQU 69H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/def-z34.lib b/Source/BPBIOS/def-z34.lib new file mode 100644 index 00000000..4c690f65 --- /dev/null +++ b/Source/BPBIOS/def-z34.lib @@ -0,0 +1,370 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Cleaned up for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '17 Jan 14' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU no ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU NO ; Is this a banked BIOS? +ZSDOS2 EQU NO ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU YES ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU no ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU NO ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer + +;--- Character Device Section --- + +MORDEV EQU NO ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU no ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU false ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU false ; Include ASCI1 Driver? +BUFFA1 EQU false ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of interrupt typeahead buffers (if used) + ; ..must be 2^n with n<8 +RTSCTS EQU no ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU YES ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU YES ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU yes ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU NO ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU no ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU NO ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only + ; (Pick 1 of 3 options below) +SCSI EQU NO ; YES = Use SCSI Driver +IDE EQU NO ; YES = Use IDE Driver +HDSK EQU YES ; YES = Use SIMH HDSK Driver +HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU YES ; Hard Disk Physical Unit 2 +UNIT_2 EQU YES ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU no ; Set each of these equates for the drive and +DRV_B EQU no ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU no +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU yes +DRV_H EQU yes +DRV_I EQU yes +DRV_J EQU yes +DRV_K EQU yes +DRV_L EQU yes + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU yes +DRV_O EQU yes +DRV_P EQU no + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU NO ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU BID_USR ; First TPA Bank (switched in/out) 40000H +BNK1 EQU BID_HB ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 00H ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H +BNKM EQU BID_RAMM ; Maximum Bank # F8000H + ; With both on-board RAMs only (MEM1 or MEM2), + ; the maximum Bank number is 11 (0BH). + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 68H ;R Receiver Buffer +_THR EQU 68H ;W Transmit Holding Reg +_IER EQU 69H ;RW Interrupt-Enable Reg +_IIR EQU 6AH ;R Interrupt Ident. Reg +_FCR EQU 6AH ;W FIFO Control Reg +_LCR EQU 6BH ;RW Line Control Reg +_MCR EQU 6CH ;RW Modem Control Reg +_LSR EQU 6DH ;RW Line Status Reg +_MMSR EQU 6EH ;RW Modem Status Reg +_SCR EQU 6FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 68H ;RW Divisor LSB | wih DLAB +_DLM EQU 69H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/def-z34bnk.lib b/Source/BPBIOS/def-z34bnk.lib new file mode 100644 index 00000000..6ff37488 --- /dev/null +++ b/Source/BPBIOS/def-z34bnk.lib @@ -0,0 +1,370 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Cleaned up for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '17 Jan 14' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU no ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU YES ; Is this a banked BIOS? +ZSDOS2 EQU NO ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU YES ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU no ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU NO ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer + +;--- Character Device Section --- + +MORDEV EQU NO ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU no ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU false ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU false ; Include ASCI1 Driver? +BUFFA1 EQU false ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of interrupt typeahead buffers (if used) + ; ..must be 2^n with n<8 +RTSCTS EQU no ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU YES ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU YES ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU yes ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU NO ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU no ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU NO ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only + ; (Pick 1 of 3 options below) +SCSI EQU NO ; YES = Use SCSI Driver +IDE EQU NO ; YES = Use IDE Driver +HDSK EQU YES ; YES = Use SIMH HDSK Driver +HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU YES ; Hard Disk Physical Unit 2 +UNIT_2 EQU YES ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU no ; Set each of these equates for the drive and +DRV_B EQU no ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU no +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU yes +DRV_H EQU yes +DRV_I EQU yes +DRV_J EQU yes +DRV_K EQU yes +DRV_L EQU yes + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU yes +DRV_O EQU yes +DRV_P EQU no + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU NO ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU BID_USR ; First TPA Bank (switched in/out) 40000H +BNK1 EQU BID_HB ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 00H ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H +BNKM EQU BID_RAMM ; Maximum Bank # F8000H + ; With both on-board RAMs only (MEM1 or MEM2), + ; the maximum Bank number is 11 (0BH). + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 68H ;R Receiver Buffer +_THR EQU 68H ;W Transmit Holding Reg +_IER EQU 69H ;RW Interrupt-Enable Reg +_IIR EQU 6AH ;R Interrupt Ident. Reg +_FCR EQU 6AH ;W FIFO Control Reg +_LCR EQU 6BH ;RW Line Control Reg +_MCR EQU 6CH ;RW Modem Control Reg +_LSR EQU 6DH ;RW Line Status Reg +_MMSR EQU 6EH ;RW Modem Status Reg +_SCR EQU 6FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 68H ;RW Divisor LSB | wih DLAB +_DLM EQU 69H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/def-z41.lib b/Source/BPBIOS/def-z41.lib new file mode 100644 index 00000000..cac7c336 --- /dev/null +++ b/Source/BPBIOS/def-z41.lib @@ -0,0 +1,369 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Cleaned up for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '17 Jan 14' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU no ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU YES ; Is this a banked BIOS? +ZSDOS2 EQU YES ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU YES ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU no ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU NO ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer +;--- Character Device Section --- + +MORDEV EQU NO ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU no ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU false ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU false ; Include ASCI1 Driver? +BUFFA1 EQU false ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of interrupt typeahead buffers (if used) + ; ..must be 2^n with n<8 +RTSCTS EQU no ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU YES ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU YES ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU yes ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU NO ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU no ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU NO ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only + ; (Pick 1 of 3 options below) +SCSI EQU NO ; YES = Use SCSI Driver +IDE EQU NO ; YES = Use IDE Driver +HDSK EQU YES ; YES = Use SIMH HDSK Driver +HDDMA EQU NO ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU YES ; Hard Disk Physical Unit 2 +UNIT_2 EQU YES ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU no ; Set each of these equates for the drive and +DRV_B EQU no ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU no +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU yes +DRV_H EQU yes +DRV_I EQU yes +DRV_J EQU yes +DRV_K EQU yes +DRV_L EQU yes + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU yes +DRV_O EQU yes +DRV_P EQU no + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU NO ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU BID_USR ; First TPA Bank (switched in/out) 40000H +BNK1 EQU BID_HB ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU BID_SYS ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 00H ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU BID_RAMD ; First Bank for RAM disk 60000H +BNKM EQU BID_RAMM ; Maximum Bank # F8000H + ; With both on-board RAMs only (MEM1 or MEM2), + ; the maximum Bank number is 11 (0BH). + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 68H ;R Receiver Buffer +_THR EQU 68H ;W Transmit Holding Reg +_IER EQU 69H ;RW Interrupt-Enable Reg +_IIR EQU 6AH ;R Interrupt Ident. Reg +_FCR EQU 6AH ;W FIFO Control Reg +_LCR EQU 6BH ;RW Line Control Reg +_MCR EQU 6CH ;RW Modem Control Reg +_LSR EQU 6DH ;RW Line Status Reg +_MMSR EQU 6EH ;RW Modem Status Reg +_SCR EQU 6FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 68H ;RW Divisor LSB | wih DLAB +_DLM EQU 69H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/defbank b/Source/BPBIOS/defbank new file mode 100644 index 00000000..044fc09d --- /dev/null +++ b/Source/BPBIOS/defbank @@ -0,0 +1,367 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Cleaned up for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '30 Aug 01' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU no ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU yes ; Is this a banked BIOS? +ZSDOS2 EQU yes ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU yes ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU yes ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU YES ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer + +;--- Character Device Section --- + +MORDEV EQU yes ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU true ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU true ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU true ; Include ASCI1 Driver? +BUFFA1 EQU true ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of interrupt typeahead buffers (if used) + ; ..must be 2^n with n<8 +RTSCTS EQU yes ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU yes ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU no ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU yes ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU YES ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU yes ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU yes ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only +IDE EQU no ; YES = Use IDE Driver, NO = Use SCSI +HDDMA EQU yes ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU yes ; Hard Disk Physical Unit 2 +UNIT_2 EQU NO ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU yes ; Set each of these equates for the drive and +DRV_B EQU yes ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU yes +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU yes +DRV_H EQU yes +DRV_I EQU no +DRV_J EQU no +DRV_K EQU no +DRV_L EQU no + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU yes +DRV_O EQU yes +DRV_P EQU yes + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU no ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU 08H ; First TPA Bank (switched in/out) 40000H +BNK1 EQU 09H ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU 0AH ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 0BH ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU 0CH ; First Bank for RAM disk 60000H +BNKM EQU 1FH ; Maximum Bank # F8000H + ; With both on-board RAMs only (MEM1 or MEM2), + ; the maximum Bank number is 11 (0BH). + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 98H ;R Receiver Buffer +_THR EQU 98H ;W Transmit Holding Reg +_IER EQU 99H ;RW Interrupt-Enable Reg +_IIR EQU 9AH ;R Interrupt Ident. Reg +_FCR EQU 9AH ;W FIFO Control Reg +_LCR EQU 9BH ;RW Line Control Reg +_MCR EQU 9CH ;RW Modem Control Reg +_LSR EQU 9DH ;RW Line Status Reg +_MMSR EQU 9EH ;RW Modem Status Reg +_SCR EQU 9FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 98H ;RW Divisor LSB | wih DLAB +_DLM EQU 99H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/defboot b/Source/BPBIOS/defboot new file mode 100644 index 00000000..9bb8bf2c --- /dev/null +++ b/Source/BPBIOS/defboot @@ -0,0 +1,365 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::********************** +; B/P BIOS Configuration and Equate File. ** System Dependant ** +; - D-X Designs Pty Ltd P112 CPU Board - ********************** +; Tailor your system here. +; +; 30 Aug 01 - Adjusted values for GPL release. HFB +; 11 May 97 - Added GIDE and adjusted HD equates. HFB +; 5 Jan 97 - Reformatted to Standard. HFB +; 10 Jun 96 - Initial Test Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; BIOS Configuration Equates and Macros + +DATE MACRO + DEFB '30-08-01' ; Date of this version + ENDM + +;--- Basic System and Z-System Section --- + +MOVCPM EQU yes ; Integrate into MOVCPM "type" loader? + IF MOVCPM +VERS EQU 13H ; Version number in BCD (Hex) (Major/Minor) + ELSE +VERS EQU 21H ; Version number w/Device Swapping permitted + ENDIF +BANKED EQU no ; Is this a banked BIOS? +ZSDOS2 EQU no ; Yes = Banked Dos, No = CP/M 2.2 Compatible +INROM EQU NO ; Alternate bank in ROM? +MHZ EQU 18 ; Set to Speed in MHZ (6/9/12/16/18/24) +FASTWB EQU no ; Yes if restoring CPR from banked RAM + ; ..No if restoring from Drive A +Z3 EQU YES ; Include ZCPR init code? +HAVIOP EQU no ; Include IOP code into Jump table? + +;--- Memory configuration Section --- (Expansion Memory configured here) + +IBMOVS EQU YES ; Yes = Inter-bank Moves allowed (Z180/64180) + ; No = Include Common RAM transfer buffer + +;--- Character Device Section --- + +MORDEV EQU no ; YES = Include any extra Char Device Drivers + ; NO = Only use the 4 defined Char Devices +ESCC_B EQU false ; Include ESCC Channel B Driver? + ; The following two devices result in non-standard data rates + ; with the standard 16.00 MHz crystal in the P112. If a more + ; "standard" crystal is used (12.288, 18.432, 24.576 MHz etc) + ; is used, the ports become usable. + ; Driver code for ASCI0 and ASCI1 includes an option for + ; assembling Polled or Interrupt-driven buffered input. + ; Select the desired option for ASCI0 with the BUFFA0 flag, + ; and BUFFA1 for ASCI1. +ASCI_0 EQU false ; Include ASCI0 Driver? +BUFFA0 EQU false ; Use buffered ASCI0 Input Driver? +ASCI_1 EQU false ; Include ASCI1 Driver? +BUFFA1 EQU true ; Use buffered ASCI1 Input Driver? + +QSIZE EQU 32 ; size of COM1 and COM2 typeahead buffers + ; ..must be 2^n with n<8 +RTSCTS EQU yes ; Include RTS/CTS code on Serial Outputs? +XONOFF EQU no ; Include Xon/Xoff handshaking in Serial lines? + +;--- Clock and Time Section --- + +CLOCK EQU YES ; Include ZSDOS Clock Driver Code? +DS1202 EQU no ; Use Dallas DS-1202 instead of Interrupt RTC? +CLKSET EQU no ; Allow DS-1202 Clock Sets? (Error if No) +TICTOC EQU NO ;== NOT USED IN P112 ("heartbeat" count) + +;--- Floppy Diskette Section --- + +BIOERM EQU no ; Print BIOS error messages? +CALCSK EQU YES ; Calculate skew table? +AUTOSL EQU YES ; Auto select floppy formats? + ; If AUTOSL=True, the next two are active... +FDDMA EQU no ; Use DMA Control for Floppy Drive Transfers? +FLOPYH EQU yes ; Include "Hi-Density" Floppy Formats? +FLOPY8 EQU no ; Include 8" Floppy Formats? +MORDPB EQU NO ; Include additional Floppy DPB Formats? + +;--- RAM Disk Section --- + +RAMDSK EQU no ; YES = Make RAM-Disk Code, NO = No code made + +;--- Hard Disk Section --- + +HARDDSK EQU YES ; YES = Add Hard-disk Code, NO = Floppy Only +IDE EQU no ; YES = Use IDE Driver, NO = Use SCSI +HDDMA EQU no ; Use DMA-Controlled Hard Disk Data Transfers? + ; (DMA Not implemented for GIDE) +UNIT_0 EQU YES ; Hard Disk Physical Unit 1 +UNIT_1 EQU no ; Hard Disk Physical Unit 2 +UNIT_2 EQU NO ; Hard Disk Physical Unit 3 + +;--- Logical Drive Section --- + +DRV_A EQU yes ; Set each of these equates for the drive and +DRV_B EQU yes ; partition complement of your system. Assume +DRV_C EQU no ; that A-D are Floppies. +DRV_D EQU no +DRV_E EQU yes ; Assume that E-L and N-P are Hard Disk +DRV_F EQU yes ; Partitions +DRV_G EQU no +DRV_H EQU no +DRV_I EQU no +DRV_J EQU no +DRV_K EQU no +DRV_L EQU no + IF RAMDSK +DRV_M EQU yes ; This is Yes for RAM drive + ELSE +DRV_M EQU no ; This is for drive if No RAM Drive present + ENDIF +DRV_N EQU no +DRV_O EQU no +DRV_P EQU no + +;========== Configuration Unique Equates (P112) =========== +;>>>>>>>>>>>>>>>>>>>>>>>>>>> W A R N I N G <<<<<<<<<<<<<<<<<<<<<<<<<<<<< +;>>> Do NOT Alter these unless you KNOW what you're doing <<< +;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>><<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< + +REFRSH EQU NO ; Set to NO for only Static RAM, needed for + ; systems with dynamic RAMs. +NOWAIT EQU no ; Set to NO to use configured Wait States in + ; Hard Disk Driver. Yes to eliminate Waits. + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; For Z-180/HD64180 systems, The Bank numbers should reflect Physical +; memory in 32k increments. In P112, the ROM occupies the first 32k +; increment and is ambiguously addressed occupying 0-1FFFFH. The upper +; memory bounds (BNKU, BNK3 and BNKM) should be set for your configuration. + +BNK0 EQU 08H ; First TPA Bank (switched in/out) 40000H +BNK1 EQU 09H ; Second TPA Bank (Common Bank) 48000H +BNK2 EQU 0AH ; System Bank (BIOS, DOS, CPR) 50000H +BNKU EQU 0BH ; User Area Bank 58000H + ; (set to 0 to disable) +BNK3 EQU 0CH ; First Bank for RAM disk 60000H +BNKM EQU 1FH ; Maximum Bank # F8000H + +;=========== CPU-dependent Equates, Zilog Z-180/Hitachi HD64180 ========== + +CNTLA0 EQU 00H ; Control Port ASCI 0 +CNTLA1 EQU 01H ; Control Port ASCI 1 +STAT0 EQU 04H ; Serial port 0 Status +STAT1 EQU 05H ; Serial port 1 Status +TDR0 EQU 06H ; Serial port 0 Output Data +TDR1 EQU 07H ; Serial port 1 Output Data +RDR0 EQU 08H ; Serial port 0 Input Data +RDR1 EQU 09H ; Serial Port 1 Input Data +CNTR EQU 0AH ; HD64180 Counter port +TMDR0L EQU 0CH ; HD64180 DMA channel reg (low) +TMDR0H EQU 0DH ; HD64180 DMA channel reg (hi) +RLDR0L EQU 0EH ; CTC0 Reload Count, Low +RLDR0H EQU 0FH ; CTC0 Reload Count, High +TCR EQU 10H ; Interrupt Control Register +TMDR1L EQU 14H ; Timer Data Reg Ch1 (Low) +TMDR1H EQU 15H ; Timer Data Reg Ch1 (High) +RLDR1L EQU 16H ; Timer Reload Reg Ch1 (Low) +RLDR1H EQU 17H ; Timer Reload Reg Ch1 (High) +FRC EQU 18H ; Free-Running Counter +CCR EQU 1FH ; CPU Control Register (ZS8180/Z80182) +SAR0L EQU 20H ; DMA Channel 0 Register start (8 ports) +MAR1L EQU 28H ; DMA Channel 1 Register start (8 ports) +DSTAT EQU 30H ; DMA Status/Control port +DMODE EQU 31H ; DMA Mode Control port +DCNTL EQU 32H ; DMA/WAIT Control Register +IL EQU 33H ; Interrupt Segment Register +ITC EQU 34H ; Interrupt/Trap Control Register +RCR EQU 36H ; HD64180 Refresh Control register +CBR EQU 38H ; MMU Common Base Register +BBR EQU 39H ; MMU Bank Base Register +CBAR EQU 3AH ; MMU Common/Bank Area Register +OMCR EQU 3EH ; Operation Mode Control Reg +ICR EQU 3FH ; I/O Control Register + +; Some bit definitions used with the Z-180 on-chip peripherals: + +TDRE EQU 02H ; ACSI Transmitter Buffer Empty +RDRF EQU 80H ; ACSI Received Character available + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Extended Features of Z80182 for P112 + +WSGCS EQU 0D8H ; Wait-State Generator CS +ENH182 EQU 0D9H ; Z80182 Enhancements Register +PINMUX EQU 0DFH ; Interrupt Edge/Pin Mux Register +RAMUBR EQU 0E6H ; RAM End Boundary +RAMLBR EQU 0E7H ; RAM Start Boundary +ROMBR EQU 0E8H ; ROM Boundary +FIFOCTL EQU 0E9H ; FIFO Control Register +RTOTC EQU 0EAH ; RX Time-Out Time Constant +TTOTC EQU 0EBH ; TX Time-Out Time Constant +FCR EQU 0ECH ; FIFO Register +SCR EQU 0EFH ; System Pin Control +RBR EQU 0F0H ; MIMIC RX Buffer Register (R) +THR EQU 0F0H ; MIMIN TX Holding Register (W) +IER EQU 0F1H ; Interrupt Enable Register +LCR EQU 0F3H ; Line Control Register +MCR EQU 0F4H ; Modem Control Register +LSR EQU 0F5H ; Line Status Register +MDMSR EQU 0F6H ; Modem Status Register +MSCR EQU 0F7H ; MIMIC Scratch Register +DLATL EQU 0F8H ; Divisor Latch (Low) +DLATM EQU 0F9H ; Divisor Latch (High) +TTCR EQU 0FAH ; TX Time Constant +RTCR EQU 0FBH ; RX Time Constant +IVEC EQU 0FCH ; MIMIC Interrupt Vector +MIMIE EQU 0FDH ; MIMIC Interrupt Enable Register +IUSIP EQU 0FEH ; MIMIC Interrupt Under-Service Register +MMCR EQU 0FFH ; MIMIC Master Control Register + +; Z80182 PIO Registers + +DDRA EQU 0EDH ; Data Direction Register A +DRA EQU 0EEH ; Port A Data +DDRB EQU 0E4H ; Data Direction Register B +DRB EQU 0E5H ; Data B Data +DDRC EQU 0DDH ; Data Direction Register C +DRC EQU 0DEH ; Data C Data + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; ESCC Registers on Z80182 + +SCCACNT EQU 0E0H ; ESCC Control Channel A +SCCAD EQU 0E1H ; ESCC Data Channel A +SCCBCNT EQU 0E2H ; ESCC Control Channel B +SCCBD EQU 0E3H ; ESCC Data Channel B + +; [E]SCC Internal Register Definitions + +RR0 EQU 00H +RR1 EQU 01H +RR2 EQU 02H +RR3 EQU 03H +RR6 EQU 06H +RR7 EQU 07H +RR10 EQU 0AH +RR12 EQU 0CH +RR13 EQU 0DH +RR15 EQU 0FH + +WR0 EQU 00H +WR1 EQU 01H +WR2 EQU 02H +WR3 EQU 03H +WR4 EQU 04H +WR5 EQU 05H +WR6 EQU 06H +WR7 EQU 07H +WR9 EQU 09H +WR10 EQU 0AH +WR11 EQU 0BH +WR12 EQU 0CH +WR13 EQU 0DH +WR14 EQU 0EH +WR15 EQU 0FH + +; FDC37C665/6 Parallel Port in Standard AT Mode + +DPORT EQU 8CH ; Data Port +SPORT EQU 8DH ; Status Port +CPORT EQU 8EH ; Control Port + +; FDC37C665/6 Configuration Control (access internal registers) + +CFCNTL EQU 90H ; Configuration control port +CFDATA EQU 91H ; Configuration data port + +; FDC37C665/6 Floppy Controller on P112 (Intel 80277 compatible) + +DCR EQU 92H ; Drive Control Register (Digital Output) +MSR EQU 94H ; Main Status Register +DR EQU 95H ; Data/Command Register +DRR EQU 97H ; Data Rate Register/Disk Changed Bit in B7 + +_DMA EQU 0A0H ; Diskette DMA Address + +; FDC37C665/6 Serial Port (National 16550 compatible) + +_RBR EQU 98H ;R Receiver Buffer +_THR EQU 98H ;W Transmit Holding Reg +_IER EQU 99H ;RW Interrupt-Enable Reg +_IIR EQU 9AH ;R Interrupt Ident. Reg +_FCR EQU 9AH ;W FIFO Control Reg +_LCR EQU 9BH ;RW Line Control Reg +_MCR EQU 9CH ;RW Modem Control Reg +_LSR EQU 9DH ;RW Line Status Reg +_MMSR EQU 9EH ;RW Modem Status Reg +_SCR EQU 9FH ;N/A Scratch Reg. (not avail in XT) +_DDL EQU 98H ;RW Divisor LSB | wih DLAB +_DLM EQU 99H ;RW Divisor MSB | set High + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates for the National DP8490/NCR 5380 Prototype SCSI controller + + IF HARDDSK +NCR EQU 40H ; Base of NCR 5380 + +; 5380 Chip Registers + +NCRDAT EQU NCR ; Current SCSI Data (Read) + ; Output Data Register (Write) +NCRCMD EQU NCR+1 ; Initiator Command Register (Read/Write) +NCRMOD EQU NCR+2 ; Mode Register (Read/Write) +NCRTGT EQU NCR+3 ; Target Command Register (Read/Write) +NCRBUS EQU NCR+4 ; Current SCSI Bus Status (Read) +NCRST EQU NCR+5 ; Bus & Status Register (Read) + ; Start DMA Send (Write) +NCRINT EQU NCR+7 ; Reset Parity/Interrupt (Read) + ; Start DMA Initiator Receive (Write) +DMAACK EQU NCR+8 ; SCSI Dack IO Port (Read/Write) + +; Bit Assignments for NCR 5380 Ports as indicated + +B_ARST EQU 10000000B ; Assert *RST (NCRCMD) +B_AACK EQU 00010000B ; Assert *ACK (NCRCMD) +B_ASEL EQU 00000100B ; Assert *SEL (NCRCMD) +B_ABUS EQU 00000001B ; Assert *Data Bus (NCRCMD) + +B_BSY EQU 01000000B ; *Busy (NCRBUS) +B_REQ EQU 00100000B ; *Request (NCRBUS) +B_MSG EQU 00010000B ; *Message (NCRBUS) +B_CD EQU 00001000B ; *Command/Data (NCRBUS) +B_IO EQU 00000100B ; *I/O (NCRBUS) +B_SEL EQU 00000010B ; *Select (NCRBUS) + +B_PHAS EQU 00001000B ; Phase Match (NCRST) +B_BBSY EQU 00000100B ; Bus Busy (NCRST) + +B_MBSY EQU 00000100B ; Monitor Busy Flag (NCRMOD) +B_DMA EQU 00000010B ; DMA Mode of transfer (NCRMOD) + ENDIF ;harddsk + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Equates reflecting GIDE Base address from Address Jumpers (if GIDE added) +; Set the base GIDE equate to the jumper setting on the GIDE board. + + IF IDE +GIDE EQU 50H ; Set base of 16 byte address range + +IDEDOR EQU GIDE+6 ; Digital Output Register +IDEDat EQU GIDE+8 ; IDE Data Register (16-bit wide) +IDEErr EQU GIDE+9 ; IDE Error Register +IDESCnt EQU GIDE+0AH ; IDE Sector Count Register +IDESNum EQU GIDE+0BH ; IDE Sector Number Register +IDECLo EQU GIDE+0CH ; IDE Cylinder Number (Low) +IDECHi EQU GIDE+0DH ; IDE Cylinter Number (High) +IDESDH EQU GIDE+0EH ; IDE S-Drive-Head Register +IDECmd EQU GIDE+0FH ; IDE Command/Status Register + +CMDHOM EQU 10H ; Home Drive Heads +CMDRD EQU 20H ; Read Sector Command (w/retry) +CMDWR EQU 30H ; Write Sector Command (w/retry) +CMDVER EQU 40H ; Verify Sector(s) Command (w/retry) +CMDFMT EQU 50H ; Format Track Command +CMDDIAG EQU 90H ; Execute Diagnostics Command +CMDINIT EQU 91H ; Initialize Drive Params Command +CMDPW0 EQU 0E0H ; Low Range of Power Control Commands +CMDPW3 EQU 0E3H ; High Range of Power Control Commands +CMDPWQ EQU 0E5H ; Power Status Query Command +CMDID EQU 0ECH ; Read Drive Ident Data Command + ENDIF ;ide +;=================== End Unique Equates ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/diskdefs b/Source/BPBIOS/diskdefs new file mode 100644 index 00000000..937bfcf2 --- /dev/null +++ b/Source/BPBIOS/diskdefs @@ -0,0 +1,417 @@ +diskdef ibm-3740 + seclen 128 + tracks 77 + sectrk 26 + blocksize 1024 + maxdir 64 + skew 6 + boottrk 2 + os p2dos +end + +diskdef 4mb-hd + seclen 128 + tracks 1024 + sectrk 32 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 0 + os p2dos +end + +diskdef pcw + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 1 + os 3 +end + +diskdef pc1.2m + seclen 512 + tracks 80 + # this format uses 15 sectors per track, but 30 per cylinder + sectrk 30 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 0 + os 3 +end + +# CP/M 86 on 1.44MB floppies +diskdef cpm86-144feat + seclen 512 + tracks 160 + sectrk 18 + blocksize 4096 + maxdir 256 + skew 1 + boottrk 2 + os 3 +end + +diskdef cf2dd + seclen 512 + tracks 160 + sectrk 9 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 1 + os 3 +end + +#amstrad: values are read from super block (special name hardcoded) + +# Royal alphatronic +# setfdprm /dev/fd1 dd ssize=256 cyl=40 sect=16 head=2 +diskdef alpha + seclen 256 + tracks 40 + sectrk 32 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 2 + os 2.2 +end + +# Apple II CP/M skew o Apple II DOS 3.3 skew +diskdef apple-do + seclen 256 + tracks 35 + sectrk 16 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 3 + os 2.2 +end + +# Apple II CP/M skew o Apple II PRODOS skew +diskdef apple-po + seclen 256 + tracks 35 + sectrk 16 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 3 + os 2.2 +end + +# MYZ80 hard drive (only works with libdsk, because it has a 256-byte header) +diskdef myz80 + seclen 1024 + tracks 64 + sectrk 128 + blocksize 4096 + maxdir 1024 + skew 1 + boottrk 0 + os 3 +end + +# Despite being Amstrad formats, CPC System and CPC Data don't have an Amstrad +# superblock. You'll need to use libdsk to access them because the Linux +# and Windows kernel drivers won't touch them. +diskdef cpcsys + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 2 + os 3 +end +diskdef cpcdata + seclen 512 + tracks 40 + sectrk 9 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 0 + os 3 +end + +# after being read in with no sector skew. +diskdef nigdos + seclen 512 + # NigDos double sided disk format, 42 tracks * 2 sides + tracks 84 + sectrk 10 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 0 + # this format wastes half of the directory entry + logicalextents 1 + os 3 +end + +diskdef epsqx10 + seclen 512 + tracks 40 + sectrk 20 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef ibm-8ss + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef ibm-8ds + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef electroglas + seclen 512 + tracks 80 + sectrk 10 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 1 + os 3 +end + +# IBM CP/M-86 +# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 head=1 +diskdef ibmpc-514ss + seclen 512 + tracks 40 + sectrk 8 + blocksize 1024 + maxdir 64 + skew 1 + boottrk 1 + os 2.2 +end + +# IBM CP/M-86 +# setfdprm /dev/fd1 sect=8 dtr=1 hd ssize=512 tpi=48 +diskdef ibmpc-514ds + seclen 512 + tracks 80 + sectrk 8 + blocksize 2048 + maxdir 64 + skew 0 + boottrk 2 + os 2.2 +end + +diskdef p112 + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 256 + skew 1 + boottrk 2 + os 3 +end + +diskdef p112-old + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 128 + skew 1 + boottrk 1 + os 3 +end + +diskdef kpii + seclen 512 + tracks 40 + sectrk 10 + blocksize 1024 + maxdir 32 + skew 0 + boottrk 1 + os 2.2 +end + +# setfdprm /dev/fd0 dd sect=10 +diskdef interak + seclen 512 + tracks 80 + sectrk 20 + blocksize 4096 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end + +# RomWBW 512KB ROM (128KB reserved, 384KB ROM Disk) + +diskdef wbw_rom512 + seclen 512 + tracks 12 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# RomWBW 1024KB ROM (128KB reserved, 896KB ROM Disk) + +diskdef wbw_rom1024 + seclen 512 + tracks 28 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# UNA 512KB ROM (128KB reserved, 384KB ROM Disk) + +diskdef una_rom512 + seclen 512 + tracks 12 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# UNA 512KB ROM (128KB reserved, 896KB ROM Disk) + +diskdef una_rom1024 + seclen 512 + tracks 28 + sectrk 64 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 0 + os 2.2 +end + +# RomWBW 8MB Hard Disk, LU 0-3 +diskdef wbw_hd0 + seclen 512 + tracks 65 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 1 + os 2.2 +end + +diskdef wbw_hd1 + seclen 512 + tracks 130 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 66 + os 2.2 +end + +diskdef wbw_hd2 + seclen 512 + tracks 195 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 131 + os 2.2 +end + +diskdef wbw_hd3 + seclen 512 + tracks 260 + sectrk 256 + blocksize 4096 + maxdir 512 + skew 0 + boottrk 196 + os 2.2 +end + +# RomWBW 720K floppy media +diskdef wbw_fd720 + seclen 512 + tracks 160 + sectrk 9 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 4 + os 2.2 +end + +# RomWBW 1.44M floppy media +diskdef wbw_fd144 + seclen 512 + tracks 160 + sectrk 18 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end + +# RomWBW 360K floppy media +diskdef wbw_fd360 + seclen 512 + tracks 80 + sectrk 9 + blocksize 2048 + maxdir 128 + skew 0 + boottrk 4 + os 2.2 +end + +# RomWBW 1.20M floppy media +diskdef wbw_fd120 + seclen 512 + tracks 160 + sectrk 15 + blocksize 2048 + maxdir 256 + skew 0 + boottrk 2 + os 2.2 +end diff --git a/Source/BPBIOS/dpb-8.lib b/Source/BPBIOS/dpb-8.lib new file mode 100644 index 00000000..e4f36031 --- /dev/null +++ b/Source/BPBIOS/dpb-8.lib @@ -0,0 +1,106 @@ +;========================================================================== +; DPB-8.LIB +; This file contains Non-conflicting 8" Diskette formats for use in Auto- +; selecting disks during the logon sequence. The hardware MUST support the +; use of 8" (or so-called "Hi-Density") formats with the higher 500 kbps +; clock speeds with the exception of the IBM 3740 Single-Density format. +; Some computers such as the YASBEC and AMPRO Little Boards cannot operate +; at the 500 kbps rates and this file should not be included. +; See DPB.LIB for definitions of Format Type Bytes. +;..... +; IBM 3740 8-inch Single Density Disk Format + + DEFB 'IBM 3740 ',' '+80H ; Id - 10 bytes + DEFB DSK8+SS+SD ; Format type byte 0 + DEFB SPEED8+SEC128+ALC1K ; Format type byte 1 + DEFB 6 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 26 ; Physical sectors per track + DEFB 77 ; Physical tracks/side + + DEFW 26 ; Sectors per track + DEFB 3 ; Block shift factor + DEFB 7 ; Block mask + DEFB 0 ; Extent mask + DEFW 242 ; Disk size-1 + DEFW 63 ; Directory max + DEFB 0C0H, 0 ; Alloc 0,1 + DEFW 16 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 01,07,13,19,25,05,11,17 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 23,03,09,15,21,02,08,14 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 20,26,06,12,18,24,04,10 ; Physical sector +; 24 25 ; Logical Sector + DEFB 16,22 ; Physical sector + ENDIF + +;..... +; Bower 8" 1k-sctrs, SS/DD + + DEFB 'Bower 1kS','S'+80H ; Id - 10 bytes + DEFB DSK8+SS+DD ; Format type byte 0 + DEFB SPEED8+SEC1K+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 9 ; Physical sectors per track + DEFB 77 ; Physical tracks/side + + DEFW 72 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 336 ; Disk size-1 + DEFW 255 ; Directory max + DEFB 0F0H, 0 ; Alloc 0,1 + DEFW 64 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 01,02,03,04,05,06,07,08 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 09,00,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;..... +; Bower 1024-byte sctrs, DS/DD + + DEFB 'Bower DSD','D'+80H ; Id - 10 bytes + DEFB DSK8+TSBTL+DD ; Format type byte 0 + DEFB SPEED8+SEC1K+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 17 ; Starting sector number + DEFB 9 ; Physical sectors per track + DEFB 77 ; Physical tracks/side + + DEFW 72 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 683 ; Disk size-1 + DEFW 255 ; Directory max + DEFB 0F0H, 0 ; Alloc 0,1 + DEFW 64 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 17,18,19,20,21,22,23,24 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 25,00,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF +;======================= End of DPB-8.LIB =========================== + \ No newline at end of file diff --git a/Source/BPBIOS/dpb-h.lib b/Source/BPBIOS/dpb-h.lib new file mode 100644 index 00000000..e853f99e --- /dev/null +++ b/Source/BPBIOS/dpb-h.lib @@ -0,0 +1,146 @@ +;========================================================================== +; DPB-H.LIB +; This file contains Non-conflicting 3.5" and 5.25" Diskette formats for +; use in Auto-selecting disks during the logon sequence. The hardware MUST +; support the use of these so-called "Hi-Density" formats with a higher 500 +; kbps (same as used on 8" double-density disks) clock speeds. Some +; computers such as the YASBEC and AMPRO Little Boards cannot operate with +; these rates without hardware modifications and this file should not be +; included. See DPB.LIB for definitions of Format Type Bytes. +;..... +; D-X Designs Pty Ltd, P112 Board (IBM/MS-DOS Compatible) 3.5" HD Disk +; This format is: 18-512 byte Sectors/Track, Skew=2, 500 kbps, 300 rpm. + + DEFB 'D-X Desgn','1'+80H ; Id - 10 bytes + DEFB DSK3+DD+TSBTL ; Format type byte 0 + DEFB SPEED8+SEC512+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 18 ; Physical sectors per track + DEFB 80 ; Physical tracks/side + + DEFW 72 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 714 ; Disk size-1 + DEFW 127 ; Directory max + DEFB 0C0H, 0 ; Alloc 0, 1 + DEFW 32 ; Check size + DEFW 1 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 01,02,03,04,05,06,07,08 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 09,10,11,12,13,14,15,16 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 17,18,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;--- The following are NOT included in Boot Disk Images to save space.--- + IF NOT MOVCPM +;..... +; HD Bower/Cotrill 3.5" Format +; The format is: 11-1k Sectors/Track, Skew of 2 (linear R/W), 500kbps, 300rpm. +; A Sector offset of 64 (40H) is used to differentiate from other formats. +; NOTE: Parenthetical Numbers are for 1.60MB format. + + DEFB 'BP 3.5" H','D'+80H ; Id - 10 bytes + DEFB DSK3+DD+TSBTL ; Format type byte 0 + DEFB SPEED8+SEC1K+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 65 ; Starting sector number + DEFB 11 ; Physical sectors per track (10) + DEFB 80 ; Physical tracks/side + + DEFW 88 ; Sectors per track (80) + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 873 ; Disk size-1 (794) + DEFW 255 ; Directory max + DEFB 0F0H, 0 ; Alloc 0, 1 + DEFW 64 ; Check size + DEFW 1 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 65,70,66,71,67,72,68,73 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 69,74,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF +;..... +; Bower/Cotrill 5.25" High-Density Format +; The format is: 9-1k Sectors/Track, Skew of 2 (linear R/W), 500kbps, 360rpm. +; A Sector offset of 48 (30H) is used to differentiate from other formats. + + DEFB 'BP 5.25"H','D'+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBTL ; Format type byte 0 + DEFB SPEED8+SEC1K+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 49 ; Starting sector number + DEFB 9 ; Physical sectors per track + DEFB 80 ; Physical tracks/side + + DEFW 72 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 710 ; Disk size-1 + DEFW 255 ; Directory max + DEFB 0F0H, 0 ; Alloc 0, 1 + DEFW 64 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 49,54,50,55,51,56,52,57 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 53,00,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF +;..... +; IBM/MS-DOS Formatted 5.25" HD Disks +; This format is: 15-512 byte Sectors/Track, No Skew, 500 kbps, 360 rpm. + + DEFB 'IBM-HD 5"',' '+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBTL ; Format type byte 0 + DEFB SPEED8+SEC512+ALC2K ; Format type byte 1 + DEFB -1 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 15 ; Physical sectors per track + DEFB 80 ; Physical tracks/side + + DEFW 60 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 599 ; Disk size-1 + DEFW 255 ; Directory max + DEFB 0F0H, 0 ; Alloc 0, 1 + DEFW 64 ; Check size + DEFW 0 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 01,02,03,04,05,06,07,08 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 09,10,11,12,13,14,15,16 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 17,18,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + ENDIF ;~Movcpm +;======================= End of DPB-H.LIB =========================== + \ No newline at end of file diff --git a/Source/BPBIOS/dpb.lib b/Source/BPBIOS/dpb.lib new file mode 100644 index 00000000..c357de58 --- /dev/null +++ b/Source/BPBIOS/dpb.lib @@ -0,0 +1,168 @@ +;======= Disk Parameter Blocks ======= **************************** +; - Generic 3/5" formats - ** Hardware Dependant for ** +; The formats contained in this file will be ** Desired Disk Formats ** +; scanned when logging Floppy Disks. Other **************************** +; formats may be added in other files. +; +; 1.0 - 9 Jun 96 - Initial Release for P112. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; The B/P BIOS DPB's contain prefix information that provide data on the +; format. There is no "Native" format, so each disk MUST have these headers. + +; Format Type Byte 0 +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+--- Disk Size: 000=Fixed Disk, 001=8", 010=5.25", 011=3.5" +; | | +-+-+--------- Track Type: 000 = Single Sided 001 = (reserved) +; | | 010 = Sel by Sctr, Cont. 011 = Sel by Sctr, Sctr # Same +; | | 100 = S0 All, S1 All 101 = S0 All, S1 All - Reverse +; | | 110 = Sel by Trk LSB 111 = (reserved) +; | +----------------- Track 0 Side 0: 0 = Double Dens, 1 = Single Dens +; +------------------- 0 = Double Density, 1 = Single Density + +FIXDSK EQU 00000000B +DSK8 EQU 00000001B +DSK5 EQU 00000010B +DSK3 EQU 00000011B +SS EQU 00000000B +TSBSC EQU 00010000B ; Side Select by Sector Number, Cont Sect # +TSBSS EQU 00011000B ; Side Select by Sector Number, Same Sect # +TSBTM EQU 00100000B ; Side Select by Track - S0 All, S1 All +TSBTMR EQU 00101000B ; Side Select by Track - S0 All, S1 All Reverse +TSBTL EQU 00110000B ; Side Select by Track LSB +T0S0SD EQU 01000000B +DD EQU 00000000B +SD EQU 10000000B + +; Format Type Byte 1 +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+----- Sector Size: 000=128, 001=256, 010=512, 011=1024 bytes +; | | +-+-+----------- Allocation Size: 000=1k, 001=2k, 010=4k, 011=8k, 100=16k +; | +----------------- (Reserved) +; +------------------- 0 = Normal 5.25" Speed, 1 = 8" or Hi-Density Floppy + +SEC128 EQU 00000000B +SEC256 EQU 00000001B +SEC512 EQU 00000010B +SEC1K EQU 00000011B +ALC1K EQU 00000000B +ALC2K EQU 00001000B +ALC4K EQU 00010000B +ALC8K EQU 00011000B +ALC16K EQU 00100000B +SPEED5 EQU 00000000B +SPEED8 EQU 10000000B + +; NOTES on Skew Factors: Sector skew may be calculated or may be looked +; up using a lookup table. This is an assembly time option. The format +; Routines, however, need to have a skew factor entry for the purpose of +; formatting. If this skew factor is negative, this indicates that the +; sector numbers on the disk are to be skewed by ABS(Skew) at format time. +; When calculating skew for Read/Write, a negative number indicates the +; sectors are to be read without skew translation. + +;..... +; DS/QD AMPRO/SB180/ON + + DEFB 'Ampro DSQ','D'+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBTL ; Format type byte 0 + DEFB SPEED5+SEC1K+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 17 ; Starting sector number + DEFB 5 ; Physical sectors per track + DEFB 80 ; Physical tracks/side + +DPB00: DEFW 40 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 394 ; Disk size-1 + DEFW 255 ; Directory max + DEFB 0F0H, 0 ; Alloc 0, 1 + DEFW 64 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 17,18,19,20,21,00,00,00 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +DPBSIZ EQU $-DPB ; Total size of one DPB +DPHDSZ EQU DPB00-DPB ; DPB header size + +;--- The following are NOT included in Boot Disk Images to save space. --- + IF NOT MOVCPM +;..... +; DS/DD AMPRO/SB180/ON + DEFB 'Ampro DSD','D'+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBTL ; Format type byte 0 + DEFB SPEED5+SEC512+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 17 ; Starting sector number + DEFB 10 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + +DPB01: DEFW 40 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 1 ; Extent mask + DEFW 194 ; Disk size-1 + DEFW 127 ; Directory max + DEFB 0C0H, 0 ; Alloc 0, 1 + DEFW 32 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, Not 128 Byte record size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 17,18,19,20,21,22,23,24 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 25,26,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;..... +; D-X Designs Ptr Ltd, P112 Board, 5.25" DS/DD (IBM PC-compatible "360k") + + DEFB 'D-X Desgn','0'+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBTL ; Format type byte 0 + DEFB SPEED5+SEC512+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 9 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + + DEFW 36 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 1 ; Extent mask + DEFW 174 ; Disk size-1 + DEFW 63 ; Directory max + DEFB 080H, 0 ; Alloc 0, 1 + DEFW 16 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, Not 128 Byte record size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 01,02,03,04,05,06,07,08 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 09,00,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + ENDIF ;~Movcpm +;======================= End of DPB.LIB =========================== + \ No newline at end of file diff --git a/Source/BPBIOS/dpb2.lib b/Source/BPBIOS/dpb2.lib new file mode 100644 index 00000000..656334d3 --- /dev/null +++ b/Source/BPBIOS/dpb2.lib @@ -0,0 +1,258 @@ +;========= Additional Disk Parameter Blocks if MORDPB is True ========== +; See DPB.LIB for descriptions of Format Type Byte bit assignments. +;..... +; Teletek 8" DS/DD - STOCK + + DEFB 'TTek DSDD','1'+80H ; Id - 10 bytes + DEFB DSK8+DD+TSBTM+T0S0SD ; Format type byte 0 + DEFB SPEED8+SEC256+ALC2K ; Format type byte 1 + DEFB 6 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 26 ; Physical sectors per track + DEFB 77 ; Physical tracks/side + +DPB08: DEFW 52 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 493 ; Disk size-1 + DEFW 127 ; Directory max + DEFB 0C0H, 0 ; Alloc 0,1 + DEFW 32 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 01,07,13,19,25,05,11,17 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 23,03,09,15,21,02,08,14 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 20,26,06,12,18,24,04,10 ; Physical sector +; 25 26 ; Logical Sector + DEFB 16,22 ; Physical sector + ENDIF + +;..... +; Teletek 8" SS/DD + + DEFB 'TTek SSDD',' '+80H ; Id - 10 bytes + DEFB DSK8+SS+DD+T0S0SD ; Format type byte 0 + DEFB SPEED8+SEC256+ALC2K ; Format type byte 1 + DEFB 6 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 26 ; Physical sectors per track + DEFB 77 ; Physical tracks/side + +DPB09: DEFW 52 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 1 ; Extent mask + DEFW 242 ; Disk size-1 + DEFW 127 ; Directory max + DEFB 0C0H, 0 ; Alloc 0,1 + DEFW 32 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 01,07,13,19,25,05,11,17 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 23,03,09,15,21,02,08,14 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 20,26,06,12,18,24,04,10 ; Physical sector +; 25 26 ; Logical Sector + DEFB 16,22 ; Physical sector + ENDIF + +;..... +; Kaypro 4 format + + DEFB 'Kaypro 4 ',' '+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBSC ; Format type byte 0 + DEFB SPEED5+SEC512+ALC2K ; Format type byte 1 + DEFB 0 ; Skew factor + DEFB 0 ; Starting sector number + DEFB 10 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + +DPB10: DEFW 40 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 1 ; Extent mask + DEFW 196 ; Disk size-1 + DEFW 63 ; Directory max + DEFB 0C0H, 0 ; Alloc 0,1 + DEFW 16 ; Check size + DEFW 1 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 00,01,02,03,04,05,06,07 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 08,09,00,00,00,00,00,00 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 25 26 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;..... +; Kaypro 2 format + + DEFB 'Kaypro 2 ',' '+80H ; Id - 10 bytes + DEFB DSK5+SS+DD ; Format type byte 0 + DEFB SPEED5+SEC512+ALC1K ; Format type byte 1 + DEFB 0 ; Skew factor + DEFB 0 ; Starting sector number + DEFB 10 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + +DPB11: DEFW 40 ; Sectors per track + DEFB 3 ; Block shift factor + DEFB 7 ; Block mask + DEFB 0 ; Extent mask + DEFW 194 ; Disk size-1 + DEFW 63 ; Directory max + DEFB 0F0H, 0 ; Alloc 0,1 + DEFW 16 ; Check size + DEFW 1 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 00,01,02,03,04,05,06,07 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 08,09,00,00,00,00,00,00 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 25 26 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;..... +; RESERVED + + DEFB 'Unused ',' '+80H ; Id - 10 bytes + DEFB 0 ; Format type byte 0 + DEFB 0 ; Format type byte 1 + DEFB 0 ; Skew factor + DEFB 0 ; Starting sector number + DEFB 0 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + +DPB12: DEFW 0 ; Sectors per track + DEFB 0 ; Block shift factor + DEFB 0 ; Block mask + DEFB 0 ; Extent mask + DEFW 0 ; Disk size-1 + DEFW 0 ; Directory max + DEFB 0, 0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 0 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 25 26 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;..... +; RESERVED + + DEFB 'Unused ',' '+80H ; Id - 10 bytes + DEFB 0 ; Format type byte 0 + DEFB 0 ; Format type byte 1 + DEFB 0 ; Skew factor + DEFB 0 ; Starting sector number + DEFB 0 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + +DPB13: DEFW 0 ; Sectors per track + DEFB 0 ; Block shift factor + DEFB 0 ; Block mask + DEFB 0 ; Extent mask + DEFW 0 ; Disk size-1 + DEFW 0 ; Directory max + DEFB 0, 0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 0 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 25 26 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;..... +; RESERVED + + DEFB 'Unused ',' '+80H ; Id - 10 bytes + DEFB 0 ; Format type byte 0 + DEFB 0 ; Format type byte 1 + DEFB 0 ; Skew factor + DEFB 0 ; Starting sector number + DEFB 0 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + +DPB14: DEFW 0 ; Sectors per track + DEFB 0 ; Block shift factor + DEFB 0 ; Block mask + DEFB 0 ; Extent mask + DEFW 0 ; Disk size-1 + DEFW 0 ; Directory max + DEFB 0, 0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 0 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 25 26 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +;..... +; RESERVED + + DEFB 'Unused ',' '+80H ; Id - 10 bytes + DEFB 0 ; Format type byte 0 + DEFB 0 ; Format type byte 1 + DEFB 0 ; Skew factor + DEFB 0 ; Starting sector number + DEFB 0 ; Physical sectors per track + DEFB 40 ; Physical tracks/side + +DPB15: DEFW 0 ; Sectors per track + DEFB 0 ; Block shift factor + DEFB 0 ; Block mask + DEFB 0 ; Extent mask + DEFW 0 ; Disk size-1 + DEFW 0 ; Directory max + DEFB 0, 0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 0 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, NOT 128 Byte Record Size +; 01 02 03 04 05 06 07 08 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 09 10 11 12 13 14 15 16 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 17 18 19 20 21 22 23 24 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 25 26 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF +;---------------------- End of DPB2.LIB ------------------------------ \ No newline at end of file diff --git a/Source/BPBIOS/dpbhd-dx.lib b/Source/BPBIOS/dpbhd-dx.lib new file mode 100644 index 00000000..51d25901 --- /dev/null +++ b/Source/BPBIOS/dpbhd-dx.lib @@ -0,0 +1,317 @@ +;======= Hard Disk Parameter Blocks ======= + +; The B/P BIOS DPB's contain prefix information that provide data on the +; logical format. This table contains only DPB Data on Hard Disk Partitions. +; See DPB.LIB for definitions of bit equates used in all DPB files. + +; NOTE: For simplicity, the code always assumes a logical 16 512-byte sectors +; per track for SCSI interface. Translate the actual 17 or 18 sectors +; to an increased track count of 16 sector tracks. + +;..... +; Format Type Byte 0 (Fixed Disk Subset) +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+----- Disk Size 000 = Fixed Disk, remainder unused +; +-+-+-+-+----------- (unused) + +; All DPBs use the equate: FIXDSK EQU 00000000B from DPB.LIB + +; Format Type Byte 1 (Fixed Disk Subset) +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+----- Sector Size: 010 = 512 bytes assumed in driver +; | | +-+-+----------- Allocation Size: 000=1K, 001=2K, 010=4K, 011=8K, 100=16K +; | +----------------- (reserved) +; +------------------- 1 = High Speed. (0 Not Used) + +; Information in this byte is not used in the SCSI driver, but is simply +; maintained for future use and compatibility with other DPB access routines. + +; NOTE: No Skew Table is needed since Hard Disk Format is locked + +;..... +; These are some of the capacities and configurations used with different +; drives and controllers: + +; Shugart Adaptec Seagate +; 1610-3 /------- ACB-4000a ----------\ SCSI +; ST-212 SQ-312 SQ-312A SQ-306 ST-225 ST125N +; ------ ------ ------- ------ ------ ------ +; Size (MB) A=2.6 A=2.7 A=4.0 A=2.0 A=4.0 A=4.0 +; B=2.6 B=2.7 B=7.1 B=3.5 B=7.1 B=8.0 +; C=2.6 C=2.7 - - C=11.1 C=8.1 +; D=2.6 D=2.8 - - - - + +;..... +; Partition A. Conner CP-2045 Bower 4-Partition. + + IF DRV_E + DEFB 'CP-2045 ','A'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor (== Only the +/- sign used) + DEFB 1 ; Starting sector number + DEFB 16 ; Logical # sectors as defined in DPB + ; even though real layout is 17/18 physical + ; sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ0 EQU 2048 ; # of blocks in first Partition (498 trks) + + ; SQ-312 SQ312A SQ-306 ST-225 ST125N + ; ------ ------ ------ ------ ------ +DPB50: DEFW 64 ; Sctrs/Trk 64 64 64 64 64 + DEFB 5 ; Blk Shf Fctr 5 5 5 5 5 + DEFB 31 ; Block Mask 31 31 31 31 31 + DEFB 1 ; Extent Mask 1 1 1 1 1 + DEFW HSIZ0-1 ; Disk Size-1 683 995 495 995 995 + DEFW 511 ; Dir Max 767 767 767 767 767 + DEFB 0F0H,0 ; Alloc 0,1 0FC 0FC 0FC 0FC 0FC + DEFW 0 ; Check Size 0 0 0 0 0 + DEFW 2096 ; Trk Offset 2 2 2 2 2 + ENDIF + +;..... +; Partition B. Conner CP-2045, Bower 4-Partition. + + IF DRV_F + DEFB 'CP-2045 ','B'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ1 EQU 2500 ; # of blocks in Second Partition (1250 trks) + + ; SQ-312 SQ312A SQ-306 ST-225 ST125N + ; ------ ------ ------ ------ ------ +DPB51: DEFW 64 ; Scts/Trk 64 64 64 64 64 + DEFB 5 ; Blk Shf Fctr 5 5 5 5 5 + DEFB 31 ; Block Mask 31 31 31 31 31 + DEFB 1 ; Extent Mask 1 1 1 1 1 + DEFW HSIZ1-1 ; Disk Size-1 687 1766 875 1766 1599 + DEFW 1023 ; Dir Max 767 1023 767 1023 1023 + DEFB 0FFH,0 ; Alloc 0,1 0FC 0FF 0FC 0FF 0FF + DEFW 0 ; Check size 0 0 0 0 0 + DEFW 500 ; Track offset 344 500 250 500 500 + ENDIF + +;..... +; Partition C. Conner CP-2045, Bower 4-Partition. + + IF DRV_G + DEFB 'CP-2045 ','C'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ2 EQU 2500 ; # of blocks in third Partition (1250 tracks) + + ; SQ-312 SQ312A SQ-306 ST-225 ST125N + ; ------ ------ ------ ------ ------ +DPB52: DEFW 64 ; Scts/Trk 64 - - 64 64 + DEFB 5 ; Blk Shf Fctr 5 - - 5 5 + DEFB 31 ; Block Mask 31 - - 31 31 + DEFB 1 ; Extent Mask 1 - - 1 1 + DEFW HSIZ2-1 ; Disk Size-1 687 - - 2766 2639 + DEFW 1023 ; Dir Max 767 - - 1023 1023 + DEFB 0FFH,0 ; Alloc0,1 0FC - - 0FF 0FF + DEFW 0 ; Check size 0 - - 0 0 + DEFW 1750 ; Track offset 688 - - 1384 1300 + ENDIF + +;..... +; Partition D. Conner CP-2045, Bower 4-Partition. + + IF DRV_H + DEFB 'CP-2045 ','D'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ3 EQU 1912 ; # of blocks in Fourth Partition (956 tracks) + + ; SQ-312 SQ312A SQ-306 ST-225 ST125N + ; ------ ------ ------ ------ ------ +DPB53: DEFW 64 ; Scts/Trk 64 - - - - + DEFB 5 ; Blk Shf Fctr 5 - - - - + DEFB 31 ; Block Mask 31 - - - - + DEFB 1 ; Extent Mask 1 - - - - + DEFW HSIZ3-1 ; Disk Size-1 687 (701) - - - - + DEFW 1023 ; Dir Max 767 - - - - + DEFB 0FFH,0 ; Alloc 0,1 0FC - - - - + DEFW 0 ; Check size 0 - - - - + DEFW 3000 ; Track offset 1032 - - - - + ENDIF + +;---- The rest are dummies for the present. Fill with your needs ---- + + IF DRV_I + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ4 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB54: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ4-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + + IF DRV_J + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ5 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB55: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ5-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + + IF DRV_K + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ6 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB56: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ6-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + + IF DRV_L + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ7 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB57: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ7-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + +;<<< --- Drive M is used for RAM Drive --- >>> + + IF DRV_N + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ8 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB58: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ8-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + + IF DRV_O + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ9 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB59: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ9-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + + IF DRV_P + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ10 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB60: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ10-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + +;----------- End of Hard Disk DPBs ------------- + \ No newline at end of file diff --git a/Source/BPBIOS/dpbhd-ww.lib b/Source/BPBIOS/dpbhd-ww.lib new file mode 100644 index 00000000..3e22c38e --- /dev/null +++ b/Source/BPBIOS/dpbhd-ww.lib @@ -0,0 +1,330 @@ +;======= Hard Disk Parameter Blocks ======= + +; The B/P BIOS DPB's contain prefix information that provide data on the +; logical format. This table contains only DPB Data on Hard Disk Partitions. +; See DPB.LIB for definitions of bit equates used in all DPB files. + +; NOTE: For simplicity, the code always assumes a logical 16 512-byte sectors +; per track for SCSI interface. Translate the actual 17 or 18 sectors +; to an increased track count of 16 sector tracks. + +;..... +; Format Type Byte 0 (Fixed Disk Subset) +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+----- Disk Size 000 = Fixed Disk, remainder unused +; +-+-+-+-+----------- (unused) + +; All DPBs use the equate: FIXDSK EQU 00000000B from DPB.LIB + +; Format Type Byte 1 (Fixed Disk Subset) +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+----- Sector Size: 010 = 512 bytes assumed in driver +; | | +-+-+----------- Allocation Size: 000=1K, 001=2K, 010=4K, 011=8K, 100=16K +; | +----------------- (reserved) +; +------------------- 1 = High Speed. (0 Not Used) + +; Information in this byte is not used in the SCSI driver, but is simply +; maintained for future use and compatibility with other DPB access routines. + +; NOTE: No Skew Table is needed since Hard Disk Format is locked + +;..... +; Partition A. SIMH HDSK0, Slice 0 + + IF DRV_E + DEFB 'HDSK0:0 ','A'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor (== Only the +/- sign used) + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ0 EQU 2048 ; # of blocks in first Partition (1024 trks) + + ; + ; +DPB50: DEFW 64 ; Sctrs/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ0-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check Size + DEFW 16 ; Trk Offset + ENDIF + +;..... +; Partition B. SIMH HDSK0, Slice 1 + + IF DRV_F + DEFB 'HDSK0:1 ','B'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ1 EQU 2048 ; # of blocks in Second Partition (1024 trks) + + ; + ; +DPB51: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ1-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 1056 ; Track offset + ENDIF + +;..... +; Partition C. SIMH HDSK0, Slice 2 + + IF DRV_G + DEFB 'HDSK0:2 ','C'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ2 EQU 2048 ; # of blocks in third Partition (1024 tracks) + + ; + ; +DPB52: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ2-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc0,1 + DEFW 0 ; Check size + DEFW 2096 ; Track offset + ENDIF + +;..... +; Partition D. SIMH HDSK0, Slice 3 + + IF DRV_H + DEFB 'HDSK0:3 ','D'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ3 EQU 2048 ; # of blocks in Fourth Partition (1024 tracks) + + ; + ; +DPB53: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ3-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 3136 ; Track offset + ENDIF + +;..... +; Partition A. SIMH HDSK1, Slice 0 + + IF DRV_F + DEFB 'HDSK1:0 ','A'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor (== Only the +/- sign used) + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ4 EQU 2048 ; # of blocks in first Partition (1024 trks) + + ; + ; +DPB54: DEFW 64 ; Sctrs/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ4-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check Size + DEFW 16 ; Trk Offset + ENDIF + +;..... +; Partition B. SIMH HDSK1, Slice 1 + + IF DRV_G + DEFB 'HDSK1:1 ','B'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ5 EQU 2048 ; # of blocks in Second Partition (1024 trks) + + ; + ; +DPB55: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ5-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 1056 ; Track offset + ENDIF + +;..... +; Partition C. SIMH HDSK1, Slice 2 + + IF DRV_H + DEFB 'HDSK1:2 ','C'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ6 EQU 2048 ; # of blocks in third Partition (1024 tracks) + + ; + ; +DPB56: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ6-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc0,1 + DEFW 0 ; Check size + DEFW 2096 ; Track offset + ENDIF + +;..... +; Partition D. SIMH HDSK1, Slice 3 + + IF DRV_I + DEFB 'HDSK1:3 ','D'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ7 EQU 2048 ; # of blocks in Fourth Partition (1024 tracks) + + ; + ; +DPB57: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ7-1 ; Disk Size-1 + DEFW 511 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 3136 ; Track offset + ENDIF + +;<<< --- Drive M is used for RAM Drive --- >>> + + IF DRV_N + DEFB 'ROM ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +;HSIZ8 EQU 464 ; Number of blocks in Fourth Logical Drive +HSIZ8 EQU HB_ROMBLKS + +DPB58: DEFW 64 ; Scts/Trk + DEFB 4 ; Blk Shf Fctr + DEFB 15 ; Block Mask + IF ((HSIZ8 - 1) < 256) + DEFB 1 ; Extent Mask + ELSE + DEFB 0 ; Extent Mask + ENDIF + DEFW HSIZ8-1 ; Disk Size-1 + DEFW 255 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 0 ; Track offset + ENDIF + + IF DRV_O + DEFB 'RAM ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +;HSIZ9 EQU 192 ; Number of blocks in Fourth Logical Drive +HSIZ9 EQU HB_RAMBLKS + +DPB59: DEFW 64 ; Scts/Trk + DEFB 4 ; Blk Shf Fctr + DEFB 15 ; Block Mask + IF ((HSIZ9 - 1) < 256) + DEFB 1 ; Extent Mask + ELSE + DEFB 0 ; Extent Mask + ENDIF + DEFW HSIZ9-1 ; Disk Size-1 + DEFW 255 ; Dir Max + DEFB 0F0H,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 0 ; Track offset + ENDIF + + IF DRV_P + DEFB ' ',' '+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC512+ALC4K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 1 ; Starting sector number + DEFB 16 ; Logical Sectors per track + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +HSIZ10 EQU 2762 ; Number of blocks in Fourth Logical Drive + +DPB60: DEFW 64 ; Scts/Trk + DEFB 5 ; Blk Shf Fctr + DEFB 31 ; Block Mask + DEFB 1 ; Extent Mask + DEFW HSIZ10-1 ; Disk Size-1 + DEFW 1023 ; Dir Max + DEFB 0FFH,0 ; Alloc 0,1 + DEFW 0 ; Check size + DEFW 2 ; Track offset + ENDIF + +;----------- End of Hard Disk DPBs ------------- + \ No newline at end of file diff --git a/Source/BPBIOS/dpbm-dx.lib b/Source/BPBIOS/dpbm-dx.lib new file mode 100644 index 00000000..c88799a4 --- /dev/null +++ b/Source/BPBIOS/dpbm-dx.lib @@ -0,0 +1,41 @@ +;=========== RAM Disk Parameter Block =============************************ +; - D-X Designs Pty Ltd P112 - ** Hardware Dependent ** +; ************************ +; 1.1 - 28 Aug 01 - Cleaned up for GPL release. HFB +; 1.0 - 10 Jun 96 - Initial Release for P112 derived from YASBEC. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; The B/P BIOS DPB's contain prefix information that provide data on the +; logical format. This table contains only DPB Data on a RAM Disk. + +; Format Type Bytes 0 and 1 are configured in the same way as Hard Disks. +; See DPBHD-xx.LIB and DPB.LIB files for descriptions of these two bytes. + +; NOTE: No Skew Table needed since RAM Disk Format is locked and not needed + +;..... +; P112 RAM Disk Format assuming 32k for a single System bank + + DEFB 'D-X Desig','n'+80H ; Id - 10 bytes + DEFB FIXDSK ; Format type byte 0 + DEFB SPEED8+SEC128+ALC2K ; Format type byte 1 + DEFB -1 ; Skew factor (== Only the +/- sign used) + DEFB 0 ; Starting sector number + DEFB 32 ; Physical # sectors/trk (32=4k per 'track') + DEFB 0 ; Physical tracks/side (No Meaning in HD) + +MSIZ EQU 176 ; # of blocks in Drive (by Memory/Block size) + ; 2x128k = 80 (160k) - 64 (128k) w/User Bank + ; 1x512k = 192 (384k) - 176 (352k) w/User Bank + ; 2x512k = 448 (896k) - 432 (864k) w/User Bank +DPBRAM: DEFW 32 ; Sectors/Track + DEFB 4 ; Block Shift Factor (2k per block) + DEFB 0FH ; Block Mask + DEFB 0 ; Extent Mask + DEFW MSIZ-1 ; Disk Size-1 256 kB 512 kB 1024 kB + DEFW 128 ; Dir Max -or- 64 128 256 + DEFB 0C0H, 00 ; Alloc 0, 1 80H,0 0C0H,0 0F0H,0 + DEFW 0000 ; Check Size + DEFW 0000 ; Trk Offset from beginning of Ram Bank base + +;==================== End of RAM Disk DPB ==================== + \ No newline at end of file diff --git a/Source/BPBIOS/dpbram.lib b/Source/BPBIOS/dpbram.lib new file mode 100644 index 00000000..762b32a4 --- /dev/null +++ b/Source/BPBIOS/dpbram.lib @@ -0,0 +1,139 @@ +;================ Disk Parameter Blocks, Fixed Formats ==================== +; Generic File. +; +; 1.0 - 31 Aug 92 - General Release. HFB +; 0.1 - 3 Jan 92 - Initial Release. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; This file is used to define a fixed format for physical drives when No +; Autoselection is desired. Select the format(s) to remain resident in the +; executable code, delete the remaining to save space, and modify the DPH.LIB +; file to associate the drive DPHs to the DPB format data contained here. + +; The B/P BIOS DPB's contain prefix information that furnish +; information on the format. Since there is no "Native" format, +; each format MUST have these headers. + +; FORMAT TYPE BYTE 0 +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+--- Disk Size: 000=Fixed Disk, 001=8", 010=5.25", 011=3.5" +; | | +-+-+--------- Track Type: 000 = Single-Sided 001 = (reserved) +; | | 010 = Sel by Sctr, Cont 011 = Sel by Sctr, Sec # Same +; | | 100 = S0 All, S1 All 101 = S0 All,S1 All Rev +; | | 110 = Sel by Trk LSB 111 = (reserved) +; | +--------------- Track 0 Side 0: 0 = Double-Density, 1 = Single-Density +; +----------------- 0 = Double-Density, 1 = Single-Density + +FIXDSK EQU 00000000B +DSK8 EQU 00000001B +DSK5 EQU 00000010B +DSK3 EQU 00000011B +SS EQU 00000000B +TSBSC EQU 00010000B ; Side Select by Sector Number, Cont Sect # +TSBSS EQU 00011000B ; Side Select by Sector Number, Same Sect # +TSBTM EQU 00100000B ; Side Select by Track - S0 All, S1 All +TSBTMR EQU 00101000B ; Side Select by Track - S0 All, S1 All Rev +TSBTL EQU 00110000B ; Side Select by Track LSB +T0S0SD EQU 01000000B +DD EQU 00000000B +SD EQU 10000000B + +; Format Type Byte 1 +; ------------------ +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+--- Sector Size: 000=128, 001=256, 010=512, 011=1024 bytes +; | | +-+-+--------- Alloc Size: 000=1K, 001=2K, 010=4K, 011=8K, 100=16K +; | +--------------- (reserved) +; +----------------- 0 = Normal 5.25" Speed, 1 = 8" or Hi-Density Floppy + +SEC128 EQU 00000000B +SEC256 EQU 00000001B +SEC512 EQU 00000010B +SEC1K EQU 00000011B +ALC1K EQU 00000000B +ALC2K EQU 00001000B +ALC4K EQU 00010000B +ALC8K EQU 00011000B +ALC16K EQU 00100000B +SPEED5 EQU 00000000B +SPEED8 EQU 10000000B + +; Notes on Skew Factors: Sector Skew may be calculated or may be looked +; up using a Lookup Table. This is an Assembly-time Option. The Format +; routines, however, need to have a Skew Factor entry for the purpose of +; formatting. If this Skew Factor is Negative, This indicates that the +; Sector Numbers on the Disk are to be Skewed by ABS(Skew) at format time. +; When calculating Skew for Read/Write, a Negative Number indicates the +; Sectors are to be Read without Skew Translation. + +;WW CSEG +;..... +; DS/QD AMPRO/SB180/ON + + DEFB 'Ampro DSQ','D'+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBTL ; Format type byte 0 + DEFB SPEED5+SEC1K+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 17 ; Starting sector number + DEFB 5 ; Physical sectors per track + DEFB 80 ; Physical tracks/side + +DPBRA: DEFW 40 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 394 ; Disk size-1 + DEFW 255 ; Directory max + DEFB 0F0H, 0 ; Alloc 0,1 + DEFW 64 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical Size, Not 128 Byte record size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 17,18,19,20,21,00,00,00 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF + +DPBSIZ EQU $-DPB ; Total size of one DPB +DPHDSZ EQU DPBRA-DPB ; DPB header size + +;..... +; DS/DD AMPRO/SB180/ON + + DEFB 'Ampro DSD','D'+80H ; Id - 10 bytes + DEFB DSK5+DD+TSBTL ; Format type byte 0 + DEFB SPEED5+SEC512+ALC2K ; Format type byte 1 + DEFB -2 ; Skew factor + DEFB 17 ; Starting sector number + DEFB 5 ; Physical sectors per track + DEFB 80 ; Physical tracks/side + +DPBRB: DEFW 40 ; Sectors per track + DEFB 4 ; Block shift factor + DEFB 15 ; Block mask + DEFB 0 ; Extent mask + DEFW 194 ; Disk size-1 + DEFW 127 ; Directory max + DEFB 0C0H, 0 ; Alloc 0,1 + DEFW 32 ; Check size + DEFW 2 ; Track offset + IF NOT CALCSK +; NOTE: Sectors are Physical size, Not 128 Byte Record Size +; 00 01 02 03 04 05 06 07 ; Logical Sector + DEFB 17,18,19,20,21,22,23,24 ; Physical sector +; 08 09 10 11 12 13 14 15 ; Logical Sector + DEFB 25,26,00,00,00,00,00,00 ; Physical sector +; 16 17 18 19 20 21 22 23 ; Logical Sector + DEFB 00,00,00,00,00,00,00,00 ; Physical sector +; 24 25 ; Logical Sector + DEFB 00,00 ; Physical sector + ENDIF +;======================= End of DPBRAM.LIB =========================== + \ No newline at end of file diff --git a/Source/BPBIOS/dph.lib b/Source/BPBIOS/dph.lib new file mode 100644 index 00000000..72f39fef --- /dev/null +++ b/Source/BPBIOS/dph.lib @@ -0,0 +1,278 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::***************************** +; DPH Pointer Table ** Configuration Dependant ** +; (This table may be in Banked Memory) ***************************** +; +; All access to DPH's are done through this table. A Zero in this table +; indicates the logical drive does Not exist. The table is indexed by logical +; drive (e.g. A-P). To swap logical drives, exchange entries in this table. +; +; 1.0 - 31 Aug 92 - General Release. HFB +; 0.1 - 3 Jan 92 - Initial Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +DPHTBL: + IF DRV_E AND HARDDSK + DEFW DPH$50 ; Dph for Hard drive Partition E + ELSE + DEFW 00 + ENDIF + IF DRV_F AND HARDDSK + DEFW DPH$51 ; Dph for Hard drive Partition F + ELSE + DEFW 00 + ENDIF + IF DRV_G AND HARDDSK + DEFW DPH$52 ; Dph for Hard drive Partition G + ELSE + DEFW 00 + ENDIF + IF DRV_H AND HARDDSK + DEFW DPH$53 ; Dph for Hard drive Partition H + ELSE + DEFW 00 + ENDIF + + IF DRV_A + DEFW DPH$00 ; Dph for drive A (Floppy) + ELSE + DEFW 00 + ENDIF + IF DRV_B + DEFW DPH$01 ; Dph for drive B (Floppy) + ELSE + DEFW 00 + ENDIF + IF DRV_C + DEFW DPH$02 ; Dph for drive C (Floppy) + ELSE + DEFW 00 + ENDIF + IF DRV_D + DEFW DPH$03 ; Dph for drive D (Floppy) + ELSE + DEFW 0 ; Dph for drive D + ENDIF + + IF DRV_I AND HARDDSK + DEFW DPH$54 ; Dph for Hard drive Partition I + ELSE + DEFW 00 + ENDIF + IF DRV_J AND HARDDSK + DEFW DPH$55 ; Dph for Hard drive Partition J + ELSE + DEFW 00 + ENDIF + IF DRV_K AND HARDDSK + DEFW DPH$56 ; Dph for Hard drive Partition K + ELSE + DEFW 00 + ENDIF + IF DRV_L AND HARDDSK + DEFW DPH$57 ; Dph for Hard drive Partition L + ELSE + DEFW 00 + ENDIF + + IF DRV_M AND RAMDSK + DEFW DPH$90 ; Dph for RAM Drive M in DPHM-xx.Z80 + ELSE + DEFW 00 ; Dph for drive M + ENDIF ;ramdsk + + IF DRV_N AND HARDDSK + DEFW DPH$58 ; Dph for Hard drive Partition N + ELSE + DEFW 00 + ENDIF + IF DRV_O AND HARDDSK + DEFW DPH$59 ; Dph for Hard drive Partition O + ELSE + DEFW 00 + ENDIF + IF DRV_P AND HARDDSK + DEFW DPH$60 ; Dph for Hard drive Partition P + ELSE + DEFW 00 + ENDIF + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Disk Parameter Headers (DPH) for Drives MUST be in Common Memory +; +; The DPH's used have a two byte prefix which indicates the Physical +; Unit # and the Driver Number for the Drive. The Physical Unit Number +; is Controller specific, while the driver number is used to select +; which service routines are to be called to satisfy service requests. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +; Drive Type Byte +; --------------- +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+--- Disk Size: 000=Fixed Disk, 001=8", 010=5.25", 011=3.5" +; | | | | +--------- 0 = Single Sided, 1 = Double Sided +; | | | +----------- 0 = Normal Step, 1 = Double-Step Drive +; | | +------------- 0 = Motor Always On, 1 = Drive Motor Control needed +; | +--------------- 0 = Max Speed is Normal 5.25" (300rpm) +; | 1 = 8" and Hi-Density 5.25" Max Speed (360rpm) +; +----------------- 0 = Double-Density, 1 = Single-Density + +FIXDSK EQU 00000000B +DSK8 EQU 00000001B +DSK5 EQU 00000010B +DSK3 EQU 00000011B +SS EQU 00000000B +DS EQU 00001000B +DD EQU 00000000B +SD EQU 10000000B +DVSPDH EQU 01000000B +DVSPDL EQU 00000000B +MTR EQU 00100000B +NOMTR EQU 00000000B +DBLSTP EQU 00010000B +NODBLS EQU 00000000B + + CSEG + + IF DRV_A +XDPH00: DB LOCKF ; Format lock flag + DB DSK5+DS+DD+DVSPDL+MTR ; Disk drive type + DB 1 ; Driver id + DB 0 ; Physical drive number +DPH$00: DW 0 ; Skew table pointer + DW 0,0,0 ; Scratch area + DW DIRBUF ; Directory buffer pointer + IF AUTOSL ; For autoselection, we need RAM Space + DEFW DPB$00+DPHDSZ ; Ram area for DPB #0 + ELSE + DW DPBRA ; Pointer to current DPB for Drive 0 + ENDIF + DW CHK$00 ; Wacd for drive 00 + DW ALV$00 ; Alloc vector for 00 + +XDPHSZ EQU $-XDPH00 ; Calc for xdph size +XDPHOF EQU DPH$00-XDPH00 ; Offset from xdph to dph + ENDIF ;Drv_a + IF DRV_B +XDPH01: DB LOCKF ; Format lock flag + DB DSK5+DS+DD+DVSPDL+MTR ; Disk drive type + DB 1 ; Driver id + DB 1 ; Physical drive number +DPH$01: DW 0 ; Skew table pointer + DW 0,0,0 ; Scratch area + DW DIRBUF ; Directory buffer pointer + IF AUTOSL + DEFW DPB$01+DPHDSZ ; Ram space for DPB #1 + ELSE + DW DPBRB ; Pointer to current DPB for Drive 1 + ENDIF + DW CHK$01 ; Wacd for drive 01 + DW ALV$01 ; Alloc vector for 01 + ENDIF ;Drv_b + IF DRV_C +XDPH02: DB LOCKF ; Format lock flag + DB DSK5+DS+DD+DVSPDL+MTR ; Disk drive type + DB 1 ; Driver id + DB 2 ; Physical drive number +DPH$02: DW 0 ; Skew table pointer + DW 0,0,0 ; Scratch area + DW DIRBUF ; Directory buffer pointer + IF AUTOSL + DEFW DPB$02+DPHDSZ ; Ram space for DPB #2 + ELSE + DW DPBRA ; Pointer to current DPB for Drive #2 + ENDIF + DW CHK$02 ; Wacd for drive 02 + DW ALV$02 ; Alloc vector for 02 + ENDIF + IF DRV_D +XDPH03: DB LOCKF ; Format lock flag + DB DSK3+sS+DD+DVSPDl+MTR ; Disk drive type + DB 1 ; Driver id + DB 3 ; Physical drive number +DPH$03: DW 0 ; Skew table pointer + DW 0,0,0 ; Scratch area + DW DIRBUF ; Directory buffer pointer + IF AUTOSL + DEFW DPB$03+DPHDSZ ; Ram space for DPB #3 + ELSE + DW DPBRA ; Pointer to current DPB for Drive #3 + ENDIF + DW CHK$03 ; Wacd for drive 03 + DW ALV$03 ; Alloc vector for 03 + ENDIF ;Drv_d + +; Directory Buffer Allocation. Only One Directory Buffer is required. Since +; we want it to be the first item in DSEG, it must be placed here. + + DSEG + + IF BANKED +DIRBUF EQU CBOOT ; Resident Init code in here + ELSE +DIRBUF EQU $ + ENDIF + ORG DIRBUF+128 ; Directory buffer + +; If we are using autoselection of drives, we copy the XDPB/DPB structure +; for the identified format to RAM thereby allowing emulation of formats by +; installing data for the desired format and locking the DPH. For Non-auto- +; select, we simply point to the read-only structure defined in DPB.LIB. + + IF AUTOSL + IF DRV_A +DPB$00: DEFS DPBSIZ ; Size of XDPB+DPB + ENDIF + IF DRV_B +DPB$01: DEFS DPBSIZ + ENDIF + IF DRV_C +DPB$02: DEFS DPBSIZ + ENDIF + IF DRV_D +DPB$03: DEFS DPBSIZ + ENDIF + ENDIF ;autosel + + IF [BANKED AND ZSDOS2] + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +; Directory Check Buffers. Each Buffer MUST be NDE/4 Bytes long at minimum. +; Each Logical Drive with removable media MUST have its own check buffer. + + IF DRV_A +CHK$00: DEFS [MXFDIR/4]+1 ; Enough for 256 dir entries + ENDIF + IF DRV_B +CHK$01: DEFS [MXFDIR/4]+1 ; Enough for 256 dir entries + ENDIF + IF DRV_C +CHK$02: DEFS [MXFDIR/4]+1 ; Enough for 256 dir entries + ENDIF + IF DRV_D +CHK$03: DEFS [MXFDIR/4]+1 ; Enough for 256 dir entries + ENDIF + +; Allocation BitMap Buffers. Each MUST be NAB/8 Bytes at Minimum. +; Each Logical Floppy Drive MUST have an Allocation BitMap Buffer. + + IF DRV_A +ALV$00: DEFS [MXFALC/8]+1 ; Enough for 800 KB or 1.44 MB drives + ENDIF + IF DRV_B +ALV$01: DEFS [MXFALC/8]+1 ; Enough for 800 KB or 1.44 MB drives + ENDIF + IF DRV_C +ALV$02: DEFS [MXFALC/8]+1 ; Enough for 800 KB or 1.44 MB drives + ENDIF + IF DRV_D +ALV$03: DEFS [MXFALC/8]+1 ; Enough for 800 KB or 1.44 MB drives + ENDIF + +;======================= End of DPH.LIB ======================= + \ No newline at end of file diff --git a/Source/BPBIOS/dphhd.lib b/Source/BPBIOS/dphhd.lib new file mode 100644 index 00000000..7a666196 --- /dev/null +++ b/Source/BPBIOS/dphhd.lib @@ -0,0 +1,195 @@ +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Additional Disk Parameter Headers (DPH) for Hard Drives Generic File +; (MUST be in Common Memory) +; This data must match information contained in the DPB table for Hard Drives. +; +; 1.1 - 28 Aug 01 - Made generic module for GPL release. HFB +; 1.0 - 31 Aug 92 - General Release. HFB +; 0.1 - 3 Jan 92 - Initial release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; The Physical Drive Number byte (XDPH+3) is simply an index to the Physical +; Drive as specified in the ICFG-xx.Z80 file. Up to three physical drives +; may be defined in that section, the first byte of which defines the +; Physical/Logical Unit Address (Device & LUN for SCSI, Master/Slave for IDE), +; and a flag bit to specify whether or not the drive is physically present. +; See ICFG-xx.Z80 for a definition of the data. + + CSEG + IF DRV_E +XDPH50: DEFB TRUE ; Format lock flag (Lock First Hard Drive) + DEFB FIXDSK ; Disk drive type + DEFB 2 ; Driver ID + DEFB HB_HDDEV + 0 ; Physical drive [0..2] for this Partition +DPH$50: DEFW 0 ; Skew table pointer + DEFW 0,0,0 ; Scratch area + DEFW DIRBUF ; Directory buffer pointer + DEFW DPB50 ; Pointer to DPB for first partition/drive + DEFW 0 ; No Wacd for hard drive + DEFW ALV$50 ; Alloc vector for first Partition + ENDIF + IF DRV_F +XDPH51: DEFB TRUE ; --- Second Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_HDDEV + 0 +DPH$51: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB51 ; Pointer to DPB for second Partition/Drive + DEFW 0 + DEFW ALV$51 ; Alloc vector for second Partition/Drive + ENDIF + IF DRV_G +XDPH52: DEFB TRUE ; --- Third Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_HDDEV + 0 +DPH$52: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB52 ; Pointer to DPB for third Partition/Drive + DEFW 0 + DEFW ALV$52 ; Alloc vector for third Partition/Drive + ENDIF + IF DRV_H +XDPH53: DEFB TRUE ; --- Fourth Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_HDDEV + 0 +DPH$53: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB53 ; Pointer to DPB for fourth Partition/Drive + DEFW 0 + DEFW ALV$53 ; Alloc vector for fourth Partition/Drive + ENDIF + IF DRV_I +XDPH54: DEFB TRUE ; --- Fifth Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_HDDEV + 1 +DPH$54: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB54 ; Pointer to DPB for fifth Partition/Drive + DEFW 0 + DEFW ALV$54 ; Alloc vector for fifth Partition/Drive + ENDIF + IF DRV_J +XDPH55: DEFB TRUE ; --- Sixth Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_HDDEV + 1 +DPH$55: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB55 ; Pointer to DPB for sixth Partition/Drive + DEFW 0 + DEFW ALV$55 ; Alloc vector for sixth Partition/Drive + ENDIF + IF DRV_K +XDPH56: DEFB TRUE ; --- Seventh Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_HDDEV + 1 +DPH$56: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB56 ; Pointer to DPB for seventh Partition/Drive + DEFW 0 + DEFW ALV$56 ; Alloc vector for seventh Partition/Drive + ENDIF + IF DRV_L +XDPH57: DEFB TRUE ; --- Eighth Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_HDDEV + 1 +DPH$57: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB57 ; Pointer to DPB for eighth Partition/Drive + DEFW 0 + DEFW ALV$57 ; Alloc vector for eighth Partition/Drive + ENDIF +;<<< --- Drive M is for RAM Drive --- >>> + IF DRV_N +XDPH58: DEFB TRUE ; --- Ninth Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_MDDEV + 0 +DPH$58: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB58 ; Pointer to DPB for ninth Partition/Drive + DEFW 0 + DEFW ALV$58 ; Alloc vector for ninth Partition/Drive + ENDIF + IF DRV_O +XDPH59: DEFB TRUE ; --- Tenth Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB HB_MDDEV + 1 +DPH$59: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB59 ; Pointer to DPB for tenth Partition/Drive + DEFW 0 + DEFW ALV$59 ; Alloc vector for tenth Partition/Drive + ENDIF + IF DRV_P +XDPH60: DEFB TRUE ; --- Eleventh Hard Drive/Partition + DEFB FIXDSK + DEFB 2 + DEFB 2 +DPH$60: DEFW 0 + DEFW 0,0,0 + DEFW DIRBUF + DEFW DPB60 ; Pointer to DPB for eleventh Partition/Drive + DEFW 0 + DEFW ALV$60 ; Alloc vector for eleventh Partition/Drive + ENDIF + +; Allocation BitMap Buffers. Each MUST be # Alloc Blks/8 Bytes at Minimum. +; Each Logical Drive MUST have an Allocation BitMap Buffer. + + COMMON /RESVD/ ; Reserve space for BPBUILD + + IF DRV_E +ALV$50: DEFS HSIZ0/8+1 ; Space for First Logical Drive Alloc Blocks + ENDIF + IF DRV_F +ALV$51: DEFS HSIZ1/8+1 ; Space for Second Logical Drive Alloc Blocks + ENDIF + IF DRV_G +ALV$52: DEFS HSIZ2/8+1 ; Space for Third Logical Drive Alloc Blocks + ENDIF + IF DRV_H +ALV$53: DEFS HSIZ3/8+1 ; Space for Fourth Logical Drive Alloc Blocks + ENDIF + IF DRV_I +ALV$54: DEFS HSIZ4/8+1 + ENDIF + IF DRV_J +ALV$55: DEFS HSIZ5/8+1 + ENDIF + IF DRV_K +ALV$56: DEFS HSIZ6/8+1 + ENDIF + IF DRV_L +ALV$57: DEFS HSIZ7/8+1 + ENDIF +;<<< --- Drive M is RAM --- >>> + IF DRV_N +ALV$58: DEFS HSIZ8/8+1 + ENDIF + IF DRV_O +ALV$59: DEFS HSIZ9/8+1 + ENDIF + IF DRV_P +ALV$60: DEFS HSIZ10/8+1 + ENDIF + + DEFS 1024 ; WW + +;======================= End of DPHHD.LIB ========================= + \ No newline at end of file diff --git a/Source/BPBIOS/dphm.lib b/Source/BPBIOS/dphm.lib new file mode 100644 index 00000000..c58e7a1a --- /dev/null +++ b/Source/BPBIOS/dphm.lib @@ -0,0 +1,37 @@ +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Disk Parameter Header (DPH) for RAM Drive Generic File +; (MUST be in Common Memory) +; This data must match information contained in the DPB table for RAM drive. +; +; 1.1 - 28 Aug 01 - Revised to generic module for GPL release. HFB +; 1.0 - 31 Aug 92 - General Release. HFB +; 0.0 - 3 Jan 92 - Initial Release. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; This table is similar to the Hard Drive DPH table except that only one unit +; is supported, and the Physical Drive Number byte is ignored. + + CSEG + +XDPH90: DEFB TRUE ; Format lock flag (Lock RAM Drive) + DEFB FIXDSK ; Disk Drive Type + DEFB 3 ; Driver ID + DEFB 00000000B ; Physical Drive Number (ignored) +DPH$90: DEFW 0 ; Skew Table pointer + DEFW 0,0,0 ; Scratch area + DEFW DIRBUF ; Directory buffer pointer + DEFW DPBRAM ; Pointer to DPB for RAM Drive + DEFW 0 ; No Wacd for RAM drive + DEFW ALV$90 ; Alloc vector for RAM Drive + +; Allocation BitMap Buffers. MUST be # Alloc Blks/8 Bytes at Minimum. +; Each Logical Drive MUST have an Allocation BitMap Buffer. + + IF [BANKED AND ZSDOS2] + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +ALV$90: DEFS MSIZ/8+1 ; Space for RAM Drive Alloc Blocks + +;======================== End of RAM DPH ============================== \ No newline at end of file diff --git a/Source/BPBIOS/fdc-dx.z80 b/Source/BPBIOS/fdc-dx.z80 new file mode 100644 index 00000000..bff1f617 --- /dev/null +++ b/Source/BPBIOS/fdc-dx.z80 @@ -0,0 +1,1281 @@ +;::::::::::::::::::::::::::::::::::::::::::::****************************** +; Floppy Disk Routines ***** Hardware Dependent ***** +; - D-X Designs Pty Ltd P112 - ****************************** +; +; 1.3 - 26 Aug 01 - Cleaned up for GPL Release. HFB +; 1.2c- 12 May 97 - Cleaned up source, modified STSIZE Code (again). HFB +; 1.2b- 22 Apr 97 - Changed 5.25" Hi/Lo Speed controls. HFB +; 1.0a- 23 Mar 97 - (test) fixes. HFB +; 1.0 - 13 Aug 96 - Initial Release for P112 from YASMIO. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Floppy Units are accessed on the P112 using the on-board SMC FDC37C665. +; An optional assembly flag controls whether Polled or DMA-controlled IO is +; used in operation. The DMA mode does not use any Interrupts in this +; preliminary version, but instead polls the INT1* line as Bit 6 on Port C +; of the Z182. +; This software uses the following registers: + +; 0DE - Port C, Bit 6=INT1*, Bit 7=INT2* (DRC) + +; 090 - Configuration Control Port (CFCNTL) +; 091 - Configuration Data Port (CFDATA) + +; The Chip configuration must be altered only to change the polarity on the +; Density signal applied to Pin 2 on the Floppy Connectors. Optional code +; which may be used forces this lead Hi/Lo as required for different formats +; using two bits of Configuration Register #5. + +CR5 EQU 5 ; FDC/IDE setups + ;Bit 7 6 5 4 3 2 1 0 + ; | | | | | +-+-+- unused + ; | | | +-+------- 00 = Density Normal (tracks Data Rate) + ; | | | 01 = (reserved), 10 = Force "1", 11 = Force "0" + ; +-+-+----------- unused + +; 092 - Drive Control Register (Write Only) +; 7 6 5 4 3 2 1 0 +; | | | | | | +-+-- Drive (00=0, 01=1, 10=2, 11=3) +; | | | | | +------ 1 = Normal Opn, 0 = Reset Controller +; | | | | +-------- 1 = Enable DMA Pins, 0 = Disable DRQ,DAK,INT pins +; | | | +---------- 1 = Enable Drive 0 Motor +; | | +------------ 1 = Enable Drive 1 Motor +; | +-------------- 1 = Enable Drive 2 Motor +; +---------------- 1 = Enable Drive 3 Motor +; 093 - (Not Used) +; 094 - Data-Rate Select (Write) / Main Status Register (Read) +; 7 6 5 4 3 2 1 0 (Write) + +; 7 6 5 4 3 2 1 0 (Read) +; | | | | +-+-+-+-- Drives Seeking (0=B0 Set, 1=B1 Set,.. 3=B3 Set) +; | | | +---------- 1 = Command In Progress, 0 = Command Ended +; | | +------------ 1 = Non-DMA Execution, 0 = DMA Execution +; | +-------------- 1 = Read, 0 = Write +; +---------------- 1 = Request for Master, 0 = Internal Execution +; +; 095 - Data/Command Register (Read/Write) +; (Byte Writes/Reads) +; 096 - (Not Used) +; 097 - Data Rate Register (Write) / Disk Changed Bit (Read) +; 7 6 5 4 3 2 1 0 (Write) +; | | | | | | +-+-- 00=500 kb/s, RPM/LC Hi, 01=250/300 kb/s (RPM/LC Lo) +; | | | | | | 10=250 kb/s, RPM/LC Lo, 11=1000 kb/s (RPM/LC Hi/Lo) +; +-+-+-+-+-+------ (Not Used) +; +; 7 6 5 4 3 2 1 0 (Read) +; | +-+-+-+-+-+-+-- (Tri-State, used for HD Controller) +; +---------------- 1 = Disk Changed (latched complement of DSKCHG inp) +; +; 0A0 - DMA I/O Select Port (DMA configuration Only) + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; STMODE (Function 0) - Set the FDC mode for Read/Write operations. +; +; Enter : A = Single-Density Flag (0 = Double Dens, 0FFH = Single Dens) +; Return: Nothing +; Uses : AF All other Registers Preserved/Not Affected +; +; Assumes STSIZE and STSECT called first +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +STMODE: PUSH BC ; Save Regs + PUSH HL + CPL ; Flip Bits so 1=MFM, 0=FM + AND 01000000B ; keep only bit of interest + LD (MODE),A ; Set MT, MF, SK for Commands + LD B,A ; (for later) + LD A,(DRVSIZ) + DEC A ; becomes: 8"=0, 5"=1, 3"=2 + LD L,2 ; (prepare for 8") + JR Z,STMOD2 ; ..jump if 8" (same as HD) + DEC L ; Else set to 3/5" Low Speed (1) + LD A,(DRVSPD) + OR A ; Low Speed? + JR Z,STMOD2 ; ..jump if So + INC L ; Else bump to 2 for Hi-Speed + LD A,(DRVSIZ) + SUB 2 ; 5.25" Hi-Density? + JR Z,STMOD2 ; ..jump if So pointing to 8"/5.25"HD + LD L,8+GAP3HD-FM5G3 ; Else Offset to 3.5" HD Gaps + JR STMOD4 ; ..and set SecSize + +STMOD2: BIT 6,B ; MFM Set? + JR Z,STMOD3 ; ..jump if Not + SCF ; Else Set Carry if MFM +STMOD3: RL L ; Shift into LSB, Size * 2 + ADD HL,HL + ADD HL,HL ; Size * 8, MFM * 4 (only 1 matters) +STMOD4: LD A,(RSZ) + LD (NBYTS),A ; save in Comnd Blk + OR A + PUSH AF + ADD A,L ; Add Sector Size to computation + LD L,A ; and Store + POP AF + LD A,129 ; (Prepare default) + JR Z,STMOD1 ; ..jump if 128-byte Sectors (DTL=128) + XOR A ; Else DTL is 0FFH (0-->FF) +STMOD1: DEC A ; Correct DTL Value + LD (DTL),A ; set + LD A,L ; Xfer index to A + LD HL,FM5G3-8 ; No low speed on 8" + CALL ADDAHL ; Index into gap 3 table + LD A,(HL) + LD (GPL),A ; store Gap Length + POP HL + POP BC + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; STSIZE (Function 1) - Set Drive Size (3.5", 5.25", 8"), Drive Speed +; (High/Low) Capability, and a Boolean flag for whether Motor Control is +; needed by the Drive. +; +; Enter : A = Hi Speed Flag ( 0 = Normal, 0FFH = High Speed Capable) +; D = Motor Flag (0 = No Motor Control, 0FFH = Motor needed) +; E = Drive Size (0 = Hard, 001 = 8", 010 = 5.25", 011 = 3.5") +; Return: Nothing +; Uses : AF All other Registers Preserved/Not Affected +; +; Assumes STHDRV Called Previously. Call before calling STMODE. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +STSIZE: LD (DRVSPD),A ; Save Drive Speed Flag + OR A ; (set flag, 0=Normal, FF=Hi-Speed/Density) + LD A,E + LD (DRVSIZ),A ; Save Drive Size Byte + LD A,D + LD (FDMOT),A ; Set Drive Motor Needed flag + PUSH DE ; (Save Regs) + LD A,00000000B ; (Preset Hi 500 kbps, 3.5 & 5.25" Rate) + JR NZ,STSIZ2 ; ..jump if Hi-Density/Speed to Set + DEC E + DEC E ; 5.25" (010B -> 00)? + LD A,00000010B ; (Prepare for 250 kbps) + JR NZ,STSIZ2 ; ..jump if Not 5.25" w/Rate Set + PUSH HL + LD A,(HDR) ; Else use a routine from FLOPPY.Z80 to + CALL PHYSCL ; point to Physical Drive Byte (ICFG-xx) + BIT 6,(HL) ; Hi-Density capable? + POP HL + LD A,00000010B ; (Prepare for 250 kbps) + JR Z,STSIZ2 ; ..jump if No + LD A,00000001B ; Else set to 300 kbps (@360 rpm = 250kbps) +STSIZ2: OUT (DRR),A ; Set Rate in FDC Reg + LD D,A ; preserve Rate bits + IN0 A,(1FH) ; Read Cntrl Reg (B7=1 if Hi Speed) + RLA ; Speed to Bit Carry..Turbo? + LD A,(SPEED) ; (Get Processor Rate in MHz) + JR C,STSIZ8 ; ..jump if Turbo for longer delay + SRL A ; Else divide rate by 2 +STSIZ8: INC D + DEC D ; 500 kb/s (Hi-Speed) Rate (D=0)? + JR NZ,STSIZ9 ; ..jump if Not + LD A,1 ; Else minimum delay for "High-Speed" +STSIZ9: LD (DLYCNT),A ; save delay count + POP DE + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; STHDRV (Function 2) - Set Head and Drive for Disk Operations. +; +; Enter : A = Unit # in D0-D1, Head in D2 +; Return: Nothing +; Uses : AF All other Registers Preserved/Not Affected +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +STHDRV: LD (HDR),A ; Save the Combined Head/Drive Byte + PUSH BC ; Save Regs + LD B,A ; and the HDR byte + SRL A ; Move + SRL A ; Head to B0 + LD (HD),A ; and Save + LD A,(ACTIVE) ; Get current Activation Byte + IF FDDMA + AND 11111000B ; keep only motors and DMA Bit + ELSE + AND 11110000B ; If Polled, keep only motors + ENDIF + OR B ; add drive bit + POP BC ; Restore Regs + JP ACTIV8 ; ..exit saving new byte and activating FDC + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; STSECT (Function 3) - Set Sector Number, Sector Size and Last Sector # +; +; Enter : A = Physical Sector Number +; D = Sector Size (0=128, 1=256, 2=512, 3=1024) +; E = Last Physical Sector # on Side +; Return: Nothing +; Uses : AF All other Registers Preserved/Not Affected +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +STSECT: LD (SECT),A ; Set Sector Number + LD A,D ; Get sector size + LD (RSZ),A ; save for commands + LD A,E ; Get last sector number + LD (EOT),A ; save in Command Block + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; SPEC (Function 4) - Do a Specify Command, setting Step Rate and Head +; Load/Unload Time. Values are rounded up if not even increments. +; +; Enter : A = Step Rate (in mS; Bit 7 = 1 for 8" drive +; D = Head Unload Time (in mS) +; E = Head Load Time (in mS) +; Return: Nothing +; Uses : AF All other Registers Preserved/Not Affected +; +; Assumes STSIZE called previously to set DRVSPD variable. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SPEC: PUSH BC ; Save Regs + PUSH DE + AND 7FH ; Strip 8" Bit from Step Rate + +; At 250 kb/s MFM (125 kb/s FM), the times are doubled, so we must +; Divide the delays by two, else leave alone for 500 kb/s + + LD B,A ; Save the Step Rate + LD A,(DRVSPD) ; Get Speed (Data Rate) + OR A ; High Speed? + LD A,B ; (restore Step Rate) + JR NZ,SPEC0 ; ..jump if 500 kb/s (High Density) + + SRL A ; Divide Step Rate by 2 + ADC A,0 ; round Up for partial + SRL D ; Divide Head Unload Time by 2 + JR NC,SPEC11 ; ..jump if No Rounding Corr. + INC D +SPEC11: SRL E ; Divide Head Load Time by 2 + JR NC,SPEC0 ; ..jump if No Rounding Corr. + INC E ; Else Round +SPEC0: NEG ; Get 2's Complement of Step Rate + AND 0FH ; mask + LD B,A ; (save) + LD A,D ; Get Head Unload Time in mS + ADD A,0FH ; force Rounding up + JR C,SPEC00 ; ..jump if Overflow to Max + AND 0F0H ; Keep Time MOD 16 + JR NZ,SPEC3 ; ..jump if Not Zero +SPEC00: LD A,0F0H ; Else go to Maximum allowed +SPEC3: OR B ; Add in Step Rate + RLCA + RLCA + RLCA + RLCA ; Swap Nibbles + LD D,A ; put combined byte back in D + CALL WRDY ; Wait for RQM (hope DIO is Low!), retain Ints + LD A,03H ; Do an FDC Specify Command + OUT (DR),A + CALL WRDY + LD A,D ; first Rate Byte (Step Rate, HUT) + OUT (DR),A + CALL WRDY + LD A,E ; Get Head Load Time + ADD A,A ; Shift rate to B7..1 + IF NOT FDDMA ; (Bit 0 = 0 for DMA) + OR 1 ; Insure Non-DMA Operation + ENDIF + OUT (DR),A + POP DE ; Restore Regs + POP BC + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; RECAL (Function 5) - Recalibrate Drive (moves heads to track 0). +; +; Enter : Nothing +; Return: A = 0 if Ok, NZ if Error. Flags reflect A +; Uses : AF All other Registers Preserved/Not Affected +; +; NOTE: BC Must be preserved by this routine. +; Assumes STHDRV, SPEC, STSIZE and STMODE called first. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +RECAL: + CALL PRINT + DEFB '[RECAL',']'+80H + + + LD A,3 ; Give this 3 chances to Home +RECAL1: LD (RETRYS),A + PUSH BC ; Save needed regs + LD BC,2*256+7 ; Two bytes, Recalibrate = 7 + PUSH HL + CALL FDCMD ; execute Recalibrate + POP HL + IF NOT FDDMA + CALL FDCDN ; Clear Pending Ints, Wait for Seek Complete + AND 00010000B ; Homed? (B4=1 if No Trk0 found) + ENDIF + POP BC ; (restore regs) + JR Z,RECOK ; ..jump to Store if Ok + + LD A,(RETRYS) + DEC A ; Any trys left? + JR NZ,RECAL1 ; ..loop if So + DEC A ; Else set Error Flag (0-->FF) + RET + +RECOK: PUSH HL ; Save Regs + CALL IDXTRK ; Point to Current Drive in Track Array + XOR A ; get a Zero + LD (HL),A ; set Drive's Trk to 0 + POP HL ; Restore regs + RET ; and return + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; SEEK (Function 6) - Set the Track for disk operations and seek to it. +; +; Enter : A = Desired Track Number +; D = Verify flag (0=No, FF=Yes) +; E = Double-step Flag (E <> 0 for Double-step) +; Return: A = 0, Zero Flag Set (Z) if Ok, A <> 0 Zero Clear (NZ) if Error +; Uses : AF All other Registers Preserved/Not Affected +; +; Assumes STHDRV, SPEC, STSIZE and STMODE are called first. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SEEK: LD (TTRK),A ; Save Track to Seek + PUSH HL ; Save Regs used here + PUSH DE + PUSH BC + + CALL IDXTRK ; Point to Current Trk for Selected Drive + CP (HL) ; Is desired Track same as last logged? + JR NZ,SEEKNV ; ..jump if Not Same + INC D ; Else Set to No Verify (FF->0) +SEEKNV: LD A,E ; Get Double-step flag + LD (STEP2),A ; ..and save locally + + LD A,(MXRTRY) ; Get the maximum Count +SEEK1: LD (RETRYS),A ; save remaining Retry Count + LD A,E + OR A ; Double Step? + LD A,(TTRK) ; Restore Track # + JR Z,SEEK2 ; ..jump if No Double Step + ADD A,A ; Else double Track # +SEEK2: LD (TRK),A ; Save the Track # in Comnd Block + LD BC,3*256+0FH ; (3-byte Seek Command = 0FH) + PUSH HL + CALL FDCMD ; Execute the Seek + POP HL + IF FDDMA + OR A ; Insure flags set + ELSE + CALL FDCDN ; Clear Pending Int, wait for Seek Complete + AND 01000000B ; Set NZ if Abnormal Termination + ENDIF + JR NZ,SEEKER ; ..jump if Error Seeking + INC D ; Are we Verifying (FF -> 0)? + DEC D ; (Correct for Test, 0 -> FF) + CALL NZ,READID ; Read next ID Mark if So + JR Z,SEEKX ; ..exit if Ok + +SEEKER: LD A,(RETRYS) ; Else get trys remaining + DEC A ; Any left (80-track could need two)? + JR NZ,SEEK1 ; ..loop to try again if More + DEC A ; Else set Error Flag (0->FF) +SEEKX: LD E,A ; (Save status byte) + LD A,(TTRK) + LD (TRK),A ; Restore "Real" Track Number + JR NZ,SEEKXX ; ..jump if Error + LD (HL),A ; Else update Track in Index +SEEKXX: LD A,E ; Restore Status + OR A ; set flags + POP BC ; Restore Regs + POP DE + POP HL + RET + +;......................................................................... +; Actual Read or Write + +ACTRW: LD HL,(ACTDMA) ; Get actual DMA Addr + LD A,(RDOP) + OR A ; Read operation? + JR Z,SWRITE ; No, must be Write + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; SREAD (Function 7) - Read a Sector from the Floppy Disk. The Mode, +; Head/Drive, Track, and Sector must have already been set. +; +; Enter : HL --> Read Buffer +; Return: A = 0, Zero Set (Z) if Ok, A <> 0, Zero Clear (NZ) if Error. +; Uses : AF,HL. All other Registers Preserved/Not Affected +; +; Assumes STMODE, STHDRV, STSECT, SPEC and SEEK Called First. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SREAD: LD A,0110B ; Load 765 Read Command (06H) + IF FDDMA + PUSH AF ; Save Command + LD A,11001101B ; Set DMA Direction + ; |||||||+- ? + ; ||||||+-- MOD = Cycle Steal (ignored in I/O) + ; ||||++--- Source = I/O (fixed) + ; ||++----- Dest = Memory (Auto-Inc) + ; ++------- ? + ENDIF + JR RW ; ..and continue below + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; SWRITE (Function 8) - Write a Sector to the Floppy Disk. The Mode, +; Head/Drive, Track, and Sector must have already been set. +; +; Enter : HL --> Write Buffer +; Return: A = 0, Zero Flag Set (Z) if Ok, A <> 0 Zero Clear (NZ) if Errors +; Uses : AF,HL. All other registers Preserved/Not Affected. +; Assumes STMODE, STHDRV, STSECT, SPEC and SEEK Called First. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SWRITE: LD A,0101B ; Load 765 Write Command (05H) + IF FDDMA + PUSH AF ; Save Command + LD A,11110001B ; Set DMA Direction + ; |||||||+- ? + ; ||||||+-- MOD = Cycle Steal (ignored in I/O) + ; ||||++--- Source = Memory (Auto-Inc) + ; ||++----- Dest = I/O (fixed) + ; ++------- ? +RW: OUT0 (DMODE),A ; Set DMA Channel #0 direction + POP AF ; restore Rd/Wr Comnd + ELSE +RW: + ENDIF ;fddma + PUSH BC ; Save Regs + PUSH DE + IF FDDMA + CALL SFDMA ; Set DMA Transfer Regs + LD HL,MODE ; Pt to Mode Flag + OR (HL) ; add to Command + ELSE + LD C,A ; (Save Command) + LD A,(MODE) ; Get Mode Flag + OR C ; add Read/Write Command to Mode Flag + ENDIF ;fddma + LD C,A ; to Reg + LD B,9 ; Read/Write Comnds are 9 bytes + + LD A,(TSBSCF) ; Get Special Format Flag + OR A ; Special? + JR NZ,RW0 ; ..jump if Not + LD (HD),A ; Else Side 1 coded with Hd # 0 +RW0: LD A,(RSZ) ; Get Sector Size Code + LD (NBYTS),A ; and Set in Comnd Blk + + LD A,(EOT) ; Get Last Sctr # + PUSH AF ; (save for Exit) + LD A,(SECT) ; Get Desired Sector # + LD (EOT),A ; make last to Read only one Sector + + PUSH HL + CALL FDCMD ; Execute Read/Write + POP HL + + POP AF ; Restore Last Sctr # + LD (EOT),A ; to Comnd Blk + LD A,(ST1) ; Get Status Reg 1 + AND 34H ; Return Any Error Bits + POP DE ; Restore Regs + POP BC + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; READID (Function 9) - Read the first Valid Address Mark on a track. +; +; Enter : Nothing +; Return: A = 0 if Ok, NZ if Error. Flags reflect A +; Uses : AF All other Registers Preserved/Not Affected +; +; Assumes STHDRV, SPEC, STSIZE and STMODE called first. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +READID: LD A,(MODE) ; Get Command byte from block + OR 0AH ; or in Command + PUSH BC ; Save regs + LD B,2 ; two bytes in ReadID Command + LD C,A ; move Command to C + PUSH HL + CALL FDCMD ; Activate Controller + POP HL + LD A,(ST1) ; Get Status Reg 1 + AND 25H ; Keep only Error Bits + POP BC ; Restore regs + RET ; ..and quit + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; RETDST (Function 10) - Return the status of a drive. +; This routine reports a "765" Controller type instead of actual number. +; +; Enter : Nothing +; Return: A = Status byte +; BC = 765 (FDC Controller Type) +; HL = Address of Status Byte +; Uses : AF,BC,HL All other Registers Preserved/Not Affected +; +; Assumes STHDRV called first +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +RETDST: + IF FDDMA + CALL WRDY ; Wait for RQM to be Set + LD A,0100B ; Load Return Drive Status Command (04H) + OUT0 (DR),A ; send to FDC + CALL WRDY + LD A,(HDR) ; Get Drive and Head + OUT (DR),A ; send it too + CALL FDCIN0 ; Read Stat at Command End + ELSE + LD BC,2*256+04H ; 2-byte Return Drive Status Command + CALL FDCMD + ENDIF ;fddma + LD HL,ST0 ; Point to Status Byte (Reg 3 contents) + LD A,(HL) ; fetch it + LD BC,765 ; load Controller ID + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; FMTTRK (Function 11) - Format a complete track on one side of a Floppy +; Disk. The Mode, Head/Drive, Track, and Sector must have been set. +; +; NOTE: The contents of the Format Data Block varies between controllers, +; so RETDST should be called to determine the controller type before +; setting up data structures. +; +; Enter : D = Formatting Sctrs/Track value +; E = Formatting Gap 3 Byte Count +; HL = Pointer to Controller-dependent Format Data block +; Return: A = 0, Zero Flag Set (Z) if Ok, A <> 0 Zero Clear (NZ) if Errors +; Uses : All Primary Registers +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FMTTRK: PUSH DE ; Save for Later + IF FDDMA + LD A,11110001B ; Set DMA Direction + ; |||||||+- ? + ; ||||||+-- MOD = Cycle Steal (ignored in I/O) + ; ||||++--- Source = Memory (Auto-Inc) + ; ||++----- Dest = I/O (fixed) + ; ++------- ? + OUT0 (DMODE),A ; Set DMA Channel #0 direction + LD A,(TPABNK) ; Format Data comes from TPA Bank + IF BANKED + RL H ; Eliminate the MSB of DMA Addr + ADC A,0 ; offset bank # by 32k banks + RRA ; shift Bank LSB to Carry + RR H ; Move Bank # LSB (Carry) to Address MSB + ENDIF ;banked + LD (FDMAB+2),A ; Set the Bank Value + LD (FDMAB),HL ; and DMA Address for Bank in DMA Comnd Block + LD HL,_DMA ; Get DMA IO Port addr + LD (FDMAB+3),HL ; place in DMA Comnd Block + XOR A + LD (FDMAB+5),A ; and Null out rest of Dest + CALL STFDMA ; Set DMA for Format + + ELSE ;~fddma + IF BANKED + LD BC,(TPABNK) ; Get Source and Dest Banks + CALL XMOVE ; set them up + ENDIF + LD DE,HSTBUF ; Move the data to Host Buffer + LD BC,256 ; Two Sector's worth should be enough + CALL MOVE ; and move it + POP DE ; Restore SPT (D) and Gap3 (E) + ENDIF ;~fddma + LD A,(MODE) + OR 1101B ; set command to Format + LD C,A ; and place in Reg + LD HL,TRK + LD A,(RSZ) + LD (HL),A ; Place values in Command Block + INC HL + LD (HL),D + INC HL + LD (HL),E + INC HL + LD (HL),0E5H ; Set byte to write as Data + LD B,6 ; Six bytes in Format Command + IF NOT FDDMA + LD HL,HSTBUF + ENDIF + CALL FDCMD ; Execute ! + LD A,(ST1) ; Get Status + AND 92H ; Return Error bits in A + RET + +;============================================================================= +; FDCMD - Send Command to FDC +; Enter: B = # of Bytes in Command, C = Command Byte +; HL -> Buffer for Read/Write Data (If Needed) +; Exit : AF = Status byte +; Uses : AF,BC + +FDCMD: PUSH HL ; save regs + CALL MOTOR ; Insure motors are On + LD HL,COMND ; Point to Command Block + LD (HL),C ; command passed in C + LD C,DR ; Set Data Port Addr +OTLOOP: CALL WRDY ; Wait for RQM (hoping DIO is Low) (No Ints) + OUTI ; Output Command bytes to FDC + JR NZ,OTLOOP ; ..loop til all bytes sent + + POP HL ; Restore Transfer Addr + DI ; No Ints during IO to avoid data loss +FDCI1: + IF FDDMA + CALL FDCINT ; "Call" the Interrupt handler instead of Int + RET C ; ..quit if Timeout Error (C, A=FF) + LD A,(ST0) ; Else get first byte of Status + AND 0C0H ; check for Normal termination + RET ; ..return w/Error Flags set + ELSE + CALL WRDY + BIT 5,A ; In Execution Phase? + JR Z,FDCRES ; ..jump if Not to check result + BIT 6,A ; Write? + JR NZ,FDCI2 ; ..jump if Not to Read + OUTI ; Else Write a Byte from (HL) to (C) + JR FDCI1 ; and check for next + +FDCI2: INI ; Read a byte from (C) to (HL) + JR FDCI1 ; and check for next + +; Enter the Result Phase of the Command. Gather returned bytes + +FDCRES: +;WW EI ; Interrupts Ok now if in Result Phase + LD HL,ST0 ; Point to Status Result area +ISGO: CALL WRDY + BIT 4,A ; End of Status/Result? + RET Z ; ..return if So + BIT 6,A ; Another byte Ready? + RET Z ; ..return if Not + INI ; Else Read Result/Status Byte + JR ISGO ; ..loop for next + +;..... +; Check for Proper Termination of Seek/Recalibrate Actions by +; executing a Check Interrupt Command returning ST0 in A. + +FDCDN: PUSH HL ; Don't alter regs +;WW EI ; (Ints Ok Now) +FDCDN0: CALL WRDY ; Ready? (leave Ints alone) + LD A,08H ; Else Issue Sense Interrupt Status Comnd + OUT0 (DR),A + CALL WRDY + IN0 A,(DR) ; Get first Result Byte (ST0) + LD L,A + CP 80H ; Invalid Command? + JR Z,FDCDN0 ; ..jump to exit if So + CALL WRDY + IN0 A,(DR) ; Read Second Result Byte (Trk #) + LD A,L + BIT 5,A ; Command Complete? + JR Z,FDCDN0 ; ..loop if Not + POP HL + RET + ENDIF ;~fddma + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; MOTOR CONTROL. This routine performs final selection of the drive control +; latch and determines if the Motors are already spinning. If they are off +; and Motor control is needed, then the Motors are activated and the spinup +; delay time in tenths-of-seconds is performed before returning. +; +; Enter : Command byte in A +; Return: Head Delay bit set in Command in A if needed +; Uses : None. All Registers Preserved/Not Affected + +MOTOR: PUSH AF ; Save Reg + LD A,(FDMOT) + OR A ; Need Motor? + JR Z,MOTORX ; ..jump to exit if Not + + LD A,(MOTIM) ; Get remaining seconds + OR A ; Already On? + LD A,(MONTIM) ; (get Default On Time) + LD (MOTIM),A ; always reset +;WW EI ; Insure Ints are Active + JR NZ,MOTORX ; ..exit if Motors On..they will stay On + + LD A,(HDR) ; Get current Drive + IF FDDMA + OR 11111100B ; Set All Motors and DMA On, Cntrlr Active + ELSE + OR 11110100B ; Set All Motors On, DMA Off, Cntrlr Active + ENDIF + CALL ACTIV8 ; Do It! + LD A,(SPINUP) ; Get Spinup Time + LD (MTM),A ; to GP Counter +MOTOLP: LD A,(MTM) + OR A ; Up to Speed? + JR NZ,MOTOLP ; ..loop if Not +MOTORX: POP AF ; Restore Reg + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Hardware-Dependent Host Read/Write Routine linked to from FLOPPY module. +; This routine Reads/Writes data from HSTBUF trying up to MXRTRY times +; before giving up. If an error occurs after the next-to-last try, the +; heads are homed to force a re-seek. +; +; Enter: (RDOP Set for desired operation) +; Exit : A = 0, Zero Set if Ok, A <> 0, Zero Reset if Errors +; Uses : AF,HL +; +; RDOP is set to 1 for Read, 0 for Write, TTRK set with desired Track +; number, STHDRV, STSECT, STMODE, SPEC all called previously. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FHDRW: LD HL,HSTBUF ; Point to the host buffer + LD (ACTDMA),HL ; and set Memory Pointer + + LD (FRWSTK),SP + LD SP,FRWSTK ; Use Local Stack + LD A,(MXRTRY) ; Get the maximum retry count +RWF2: LD (RWRTRY),A + PUSH DE ; (Save Regs) + LD A,(STEP2) ; Get double-Step flag + LD E,A + LD D,0FFH ; (Verify needed) + LD A,(TTRK) ; and track + CALL SEEK ; Try to seek to the desired track + POP DE ; (Restore Regs) + CALL Z,ACTRW ; Call R/W if Seek succeeded + LD (ERFLAG),A ; Save error code in any case + JR Z,FHDRX ; ..jump to return if No Errors + + LD A,(RWRTRY) ; Get retry count + CP 2 ; Are we on Next to last try? + CALL Z,RECAL ; Return to Track 0 if so + LD A,(RWRTRY) ; and re-fetch try count + DEC A ; Do we have more retries left? + JR NZ,RWF2 ; ..jump to try again if more tries remain + + CALL ERROR ; Else print Error Bios Message +FHDRX: LD SP,(FRWSTK) ; Restore Entry Stack + RET ; and Exit + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Gap 3 Length Table +; Index is: ((Drive_Factor * 8) + (MFM * 4) + RSZ) - 8 +; Where Drive_Factor is based on Size and Speed as: +; 5.25"/3.5" Low Speed = 1 +; 8" (Speed Ignored) = 2 +; 3.5" High-Density Disks use special GAP3 Table, while 5.25" High- +; Density disks use 8" DD GAP3 values. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; 5.25"/3.5" Single-Density GAP3. 300 rpm, 125 kbps, FM + +FM5G3: DEFB 7 ; 128 + DEFB 5 ; 256 + DEFB 20 ; 512 + DEFB 27 ; 1024 + +; 5.25"/3.5" Double-Density GAP3. 300 rpm, 250 kbps, MFM + + DEFB 0 ; 128 + DEFB 9 ; 256 + DEFB 13 ; 512 + DEFB 27 ; 1024 + +; 8" Single-Density / 5.25" High-Speed GAP3. 360 rpm, 250 kbps, FM + + DEFB 7 ; 128 + DEFB 5 ; 256 + DEFB 27 ; 512 + DEFB 27 ; 1024 + +; 8" Double-Density / 5.25" High-Speed GAP3. 360 rpm, 500 kbps, MFM + +GAP5HD: DEFB 0 ; 128 + DEFB 15 ; 256 + DEFB 11 ; 512 + DEFB 17 ; 1024 + +; 3.5" Hi-Density GAP3. 300 rpm, 500 kbps, MFM + +GAP3HD: DEFB 0 ; 128 + DEFB 27 ; 256 + DEFB 27 ; 512 + DEFB 17 ; 1024 (27 if 10 spt) + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Error Printing Routine. This routine prints Error messages from the +; High-level Sector Read/Write routine when detected based on various +; parameters in the BIOS. +; Entering a Control-C after the message will cause a warm boot, anything +; else will ignore the error and return status to the caller. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +ERROR: + IF BIOERM + PUSH BC + PUSH DE + CALL PRINT + DEFB BELL,CR,LF + DEFC 'FDC Error, U' + LD A,(HDR) ; Get unit number + AND 3 + CALL PDEC ; ..in decimal + CALL PRINT + DEFC ' ' + + LD A,(COMND) ; Get the command byte + AND 3FH ; Else Mask Command + CP 0FH ; 765 type Seek? + JR NZ,ERR0 ; ..jump if Not + + CALL PRINT + DEFC 'Seek' + JR ERR4 + +ERR0: CP 05H ; 765 type Write? + JR NZ,ERR1 ; ..jump if Not + CALL PRINT + DEFC 'Wr' + JR ERR4 + +ERR1: CP 06H ; 765 type Read? + JR NZ,ERR2 ; ..jump if Not + CALL PRINT + DEFC 'Rd' + JR ERR4 + +ERR2: CALL PRINT + DEFC 'Comnd = ' + LD A,(COMND) + CALL PHEX + +ERR4: CALL PRINT + DEFC ', ' + LD HL,ST0 ; Point to Status Bytes + BIT 7,(HL) ; Abnormal Termination? + JR Z,ERR5 + CALL PRINT + DEFC 'AT' + JR ERR13 + +ERR5: BIT 4,(HL) ; Equipment Check? + JR Z,ERR6 + CALL PRINT + DEFC 'EC' + JR ERR13 + +ERR6: BIT 3,(HL) ; Not Ready? + JR Z,ERR7 + CALL PRINT + DEFC 'NR' + JR ERR13 + +ERR7: INC HL ; Point to ST1 + BIT 5,(HL) ; Data Error? + JR Z,ERR8 + CALL PRINT + DEFC 'DE' +ERR8: BIT 2,(HL) ; No Data? + JR Z,ERR9 + CALL PRINT + DEFC ' ND' +ERR9: BIT 1,(HL) ; Write Protect? + JR Z,ERR10 + CALL PRINT + DEFC ' NW' +ERR10: BIT 0,(HL) ; Missing Address Mark? + JR Z,ERR11 + CALL PRINT + DEFC ' MA' +ERR11: INC HL ; Point to ST2 + BIT 4,(HL) ; Wrong Cylinder? + JR Z,ERR12 + CALL PRINT + DEFC ' WC' +ERR12: CALL PRINT + DEFC ' (T=' + LD A,(TTRK) ; Get Track (Cyl) + CALL PDEC ; Print cylinder (track) + CALL PRINT + DEFC ' H=' + LD A,(HDR) + RRCA + RRCA + AND 0001B + CALL PDEC ; Print head + CALL PRINT + DEFC ' S=' + LD A,(SECT) + CALL PDEC ; Print sector + CALL PRINT + DEFC ')' + +ERR13: POP DE ; Restore Regs + POP BC + CALL CONIN ; Wait for any key + SUB 3 ; ^C (reboot)? + PUSH AF + CALL PRINT + DEFB CR,LF+80H ; Always echo crlf + POP AF + LD A,0FFH + RET NZ ; ..Return Bad Status if Not user abort + IF BANKED + JP ABORT + ELSE + RST 0 ; Vector thru loc 0 so wboot may be + ENDIF ; Intercepted by NZCOM, BGii, etc. + +;..... +; Print value in A as a Decimal number (0-99) + +PDEC: LD DE,10 ; We work in decimal +PD0: INC D + SUB E + JR NC,PD0 + LD E,A + LD A,D + DEC A ; Is the first digit a Zero? + JR Z,PD1 ; ..jump if so and Don't Print + ADD A,'0' + CALL OUTCHR +PD1: LD A,E + ADD A,'0'+10 + JR OUTCHR + +;..... +; Print value in A as two Hex digits + +PHEX: PUSH AF ; Print value in A as 2 Hex digits + RRCA + RRCA + RRCA + RRCA + CALL PHEX0 + POP AF +PHEX0: AND 0FH + ADD A,90H + DAA + ADC A,40H + DAA + ;..if Bioerm, fall thru to Outchr.. + ELSE + OR 0FFH ; Insure NZ + RET + ENDIF ;Bioerm + +OUTCHR: PUSH HL ; Print char in A to Console + PUSH DE + PUSH BC + LD C,A + CALL CONOUT + POP BC + POP DE + POP HL + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Point to Last Track Storage Location for the Current Drive +; Enter: None +; Exit : HL -> Last track storage for this drive +; Uses : HL + +IDXTRK: PUSH AF ; Save regs + LD A,(HDR) ; Get current drive/head + AND 0011B ; mask off head + LD HL,TRKARY ; Point to track storage block + CALL ADDAHL ; Point to the byte + POP AF ; restore regs + RET ; and return to caller + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Wait for FDC RQM to become Ready, and return DIO status in Zero Flag +; Pause before reading status port based on CPU Speed and Data Rate. + +WRDY: LD A,(DLYCNT) ; Get computed delay count +WRDY0: DEC A ; Done? + JR NZ,WRDY0 ; ..loop if Not +WRDYL: IN A,(MSR) ; Read Main Status Register + BIT 7,A ; Interrupt Present? + RET NZ ; Return if So + JR WRDYL ; Else Loop + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; D M A S U P P O R T R O U T I N E S +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + IF FDDMA +; Set DMA Channel #0 for Format + +STFDMA: PUSH AF ; Save regs + XOR A + OUT0 (DSTAT),A ; (No DMA or Interrupts) + LD L,D ; Get SPT value + LD H,0 ; extend to Word value + LD B,2 ; Multiply by 4 for Number of bytes +STDMA2: ADD HL,HL ; * 2 +STDMA3: DJNZ STDMA2 ; ..looping til done + LD (FDMAB+6),HL ; Save Number of bytes to transfer + LD HL,FDMAB ; Point to DMA Control block + LD BC,8*256+SAR0L ; 8 bytes from (HL).. + OTIMR ; to DMA Ch #0 Registers + LD A,01100011B ; Enable DMA on Ch #0 + ; |||||||+- DME + ; ||||||+-- ? + ; ||||++--- DMA Ints (Ch1, Ch0) + ; ||++----- Bit Write En * (Ch1, Ch0) + ; ++------- DMA Enable (Ch1, Ch0) + OUT0 (DSTAT),A ; Command! + POP AF ; Restore regs + RET + +;..... +; SFDMA - Set up DMA Channel #0 for Read/Write Operation. +; Number of sectors in Reg E is multiplied by Base Sector size to obtain +; the full number of bytes to transfer. +; Enter: HL -> Read/Write Buffer +; A = Read/Write Command + +SFDMA: PUSH AF ; Save Rd/Wr Command + XOR A + OUT0 (DSTAT),A ; Disable DMA/DMA Ints + IF BANKED + LD A,(SYSBNK) ; Set System Bank # + ELSE + LD A,(TPABNK) ; If Not Banked, Load TPA Bank # + ENDIF + RL H ; Place Address MSB in Carry + ADC A,0 ; offset Bank # by 32k banks + RRA ; shift Bank LSB to Carry + RR H ; Move Bank # LSB (Carry) to Addr MSB + LD C,A ; Save Bank # + LD DE,_DMA ; Get Floppy DMA IO Port Address + LD B,0 ; and Dummy Bank # + POP AF + PUSH AF ; Restore Rd/Wr Command + AND 00001111B ; keeping only low nibble + CP 0101B ; Write? + JR Z,SFDMA0 ; ..jump if So; CHL = Source, BDE = Dest + EX DE,HL ; Else + LD A,B ; Swap Source + LD B,C ; w/Dest + LD C,A +SFDMA0: LD (FDMAB),HL ; Save Source + LD A,C ; in Block + LD (FDMAB+2),A + LD (FDMAB+3),DE ; and Dest + LD A,B + LD (FDMAB+5),A + LD HL,0080H ; Set 1 Logical Sector Size for Calcs + LD A,(RSZ) ; Get Physical Sector Size (in 128-byte recs) + LD B,A + INC B ; (compensate for first DJNZ) + JR STDMA3 ; ..compute, set and activate + ENDIF ;fddma + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; FDCINT - Used in the P112 as a polled routine in default configuration +; with Interrupts disabled. This code is assembled if the FDDMA equate +; is set TRUE. If your system uses Interrupts, add any additional code +; to save Stack pointer and AF, and insure that it is in the CODE segment. +; NOTE: that the service routine MUST be in the Common Memory if Interrupts +; (instead of polling ) are used to prevent problems when banked. +; +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +;;-- CSEG + IF FDDMA +FDCINT: ; Set local stack if Needed, Disable Interrupts for local calls + PUSH BC + PUSH DE + PUSH HL + LD BC,0000 ; Inner loop timeout + LD D,30 ; Outer loop timeout + LD HL,ST0 ; Point to Status Area +Int00: IN0 A,(DRC) ; Read Port C + BIT 6,A ; Int1* active? + JR Z,Int01 ; ..jump if So + DEC BC ; Else count down + LD A,B + OR C + JR NZ,Int00 ; ..loop if Not timed out + DEC D ; Outer loop done? + JR NZ,Int00 ; ..loop if Not + SUB 1 ; Else set Carry, A=FF + LD (ST1),A ; Save Bad Status + CALL FDRst ; Reset the Controller + JR Int0X ; ..and Quit + +Int01: LD BC,DR ; Else Point BC to Data Port + CALL WRDYw0 + JR C,Int03 ; ..jump if Timeout +Int02: CALL WRDY + BIT 6,A ; Result phase over? + JR Z,Int03 ; ..jump if So to Exit + INI ; Read a byte from (C) to (HL) + INC B ; (correct B for above dec) + JR Int02 ; and check for next + +Int03: CALL WRDY + LD A,08H ; Sense Interrupt Status Comnd + OUT (DR),A + CALL WRDY + IN A,(DR) ; Get first Result Byte (ST0) + CP 80H ; Invalid Command? + JR Z,Int0X ; ..jump to exit if So + LD (ST0),A ; Else save Status Byte 0 + CALL WRDY + IN A,(DR) ; Read Second Result Byte (Trk #) + JR Int03 ; ..and loop + +Int0X: POP HL ; Restore Regs + POP DE + POP BC + ; Restore Stack if Needed +;WW EI ; Insure Interrupts are Enabled + RET + +;..... +; Alternate entry for code that generates no "Interrupt" + +FDCIN0: PUSH BC ; Save regs + PUSH DE + PUSH HL + LD HL,ST0 ; Put Status bytes here + JR Int01 ; ..and continue mainline code + ENDIF ;fddma + +; Wait for Interrupt maintaining watchdog timer + +WRDYw0: PUSH BC ; Save Regs + LD BC,0 ; Set Maximum count +WRDYw1: IN A,(MSR) ; Get Status + RLA ; Int bit to Carry + JR C,WRDYw2 ; ..quit if Int + DEC BC ; Else count down + LD A,B + OR C ; Timed Out? + JR NZ,WRDYw1 ; ..loop if Not + CALL FDRst ; Else Reset Controller +WRDYw2: CCF ; Set Carry appropriately + POP BC ; restore regs + RET + +;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + CSEG ;*** Remainder of Code MUST be in Main Memory *** + +;======================================================================== +; Reset the Floppy Disk Controller. Called from CBOOT in case of Hard +; Disk Boot which leaves the controller in a "hung" state, and locally +; if the Controller times out (often due to changing diskettes). + +FDRst: PUSH AF ; Save any status + XOR A + OUT (DCR),A ; Place Controller in Reset state + LD A,(ACTIVE) ; get current settings + AND 0FCH ; keep only motors, DMA and Ready + OUT (DCR),A ; and Restore + POP AF ; Restore Status + RET + +;======================================================================== +; Motor Off routine. Called from TIM-DX and SELFLP2 which forces +; Motors/Timer to be Off state so spinup delay is forced on next selection. + +;;ChgSpd: ; <<-- Required label for SELFLP2. Activate + ; label here if switching motor speed +MOTOFF: XOR A + LD (MOTIM),A ; Insure Motors Timed Out and show OFF + LD A,(ACTIVE) ; Get current settings + IF FDDMA ; + AND 00001111B ; strip of Motor bits + ELSE + AND 00000111B ; strip off Motor bits and DMA + ENDIF +ACTIV8: OR 00000100B ; (insure FDC out of Reset) + LD (ACTIVE),A ; save + OUT (DCR),A ; and Command! +ChgSpd: RET ; <<-- Activate label here if using 300 kb + ; for constant 360 rpm on 5.25" Drives + +;======================== RAM Storage Area ============================== + + IF BANKED + COMMON /B2RAM/ ; If banked, Local stack in Bank + ELSE + DSEG ; ..otherwise in Data Segment + ENDIF ; + + DEFS 30 ; Bios R/W Entry 15-level Local Stack +FRWSTK: DEFS 2 ; Storage for Entry Stack Pointer + + DSEG ; Place in Common memory + +; Add storage for DMA Control Block if using DMA Transfers + IF FDDMA +FDMAB: DEFS 2 ; Source Addr (16-bits) + DEFS 1 ; Source Bank + DEFS 2 ; Dest Addr (16-bits) + DEFS 1 ; Dest Bank + DEFS 2 ; Byte Count of transfer + ENDIF ;fddma + +; NOTE: Variables listed as (** Global **) are accessed by other modules and +; MUST exist as defined. + +COMND: DEFS 1 ; Storage for Command in execution +HDR: DEFS 1 ; Head (B2), Drive (B0,1) (** Global **) +TRK: DEFS 1 ; Track (t) +HD: DEFS 1 ; Head # (h) +SECT: DEFS 1 ; Physical Sector Number +NBYTS: DEFS 1 ; Bytes/Sector (n) +EOT: DEFS 1 ; End-of-Track Sect # +GPL: DEFS 1 ; Gap Length +DTL: DEFS 1 ; Data Length + +RSZ: DEFS 1 ; Bytes/Sector. Must be placed outside of the + ; Comnd Blk for FMTTRK to work. +; FDC Operation Result Storage Area + +ST0: DEFS 1 ; Status Byte 0 +ST1: DEFS 1 ; Status Byte 1 (can also be PCN) +ST2: DEFS 1 ; Status Byte 2 +RC: DEFS 1 ; Track # (** Global **) +RH: DEFS 1 ; Head # (0/1) +RR: DEFS 1 ; Sector # (** Global **) +RN: DEFS 1 ; Sector Size (** Global **) + +ACTDMA: DEFS 2 ; 16-bit DMA Address + +;-->>> Do NOT re-order the following two bytes !! <<<-- + +MTM: DEFS 1 ; Floppy Time down-counter +MOTIM: DEFS 1 ; Motor On Time Counter + +; DISK Subsystem Variable Storage + +FDMOT: DEFS 1 ; Motor on required flag +RDOP: DEFS 1 ; Read/write flag +RETRYS: DEFS 1 ; Number of times to try Opns +RWRTRY: DEFS 1 ; Number of read/write tries +DRVSPD: DEFS 1 ; Drive Speed +DRVSIZ: DEFS 1 ; Drive Size +STEP2: DEFS 1 ; <> 0 for Double Step (** Global **) +MODE: DEFS 1 ; Bit 6 = 1 if MFM, 0 = FM +ACTIVE: DEFS 1 ; Current bits written to Dev Contr Reg (DCR) +DLYCNT: DEFS 1 ; Delay value reading Main Status Reg +FSPT: DEFS 1 ; Format Sectors/Track value +TSBSCF: DEFS 1 ; 0=Hd always 0 (TSBSC) (** Global **) + +TTRK: DEFS 1 ; Storage for Track (** Global **) +TRKARY: DEFS 4 ; Track storage locations for four drives + +;=========================== End of FDC-DX ============================== + \ No newline at end of file diff --git a/Source/BPBIOS/floppy.z80 b/Source/BPBIOS/floppy.z80 new file mode 100644 index 00000000..3df68f99 --- /dev/null +++ b/Source/BPBIOS/floppy.z80 @@ -0,0 +1,252 @@ +;************************************************************************** +; Hardware Independent Floppy Drive Routines +; +; This module uses information from HSTDPH/HSTDPB and other HST values to +; access Floppy drives. It establishes physical parameters, performs +; logical to physical mapping of Track/Sector/Head information and links +; to Physical Read/Write routines in module FDC-xx. +; +; 1.4 - 23 Aug 01 - Cleaned up for GPL release. HFB +; 1.3 - 6 Aug 95 - Mod to handle Kaypro4 (Double-sided, continuous +; Sector #s w/Head = 0 on both side's Gap records. HFB +; 7 Jan 95 - Correct calcs for reversed Side 1 (Ken Owen fix) HFB +; 3 Jul 92 - First General Release. HFB +; 8 Jul 91 - Initial test release HFB +;************************************************************************** + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Read/Write Host Buffer +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Physical Write of "HSTSIZ" bytes from HSTBUF. Return Error Flag in ERFLAG +; and in Registers AF. This routine assumes that parameters are set as: +; HSTDSK = Host Disk #, HSTTRK = Host Track #, HSTSEC = Host Sect #. + +FWRITE: XOR A ; Get Write Clear value & RDOP Write Value + LD (HSTWRT),A ; say there is no pending Write + JR FRWHST ; and link with common code below + +; Physical Read of "HSTSIZ" bytes from HSTBUF. Return Error Flag in ERFLAG +; and in Registers AF. This routine assumes that parameters are set as: +; HSTDSK = Host Disk #, HSTTRK = Host Track #, HSTSEC = Host Sect #. + +FREAD: LD A,1 ; Set Read Value for RDOP + +; Linkage to FDC Dependent routines + +FRWHST: LD (RDOP),A + CALL FSETHD ; Sort out track, sector, and head + JP FHDRW ; Jump to hardware dependent r/w code + + PAGE +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; FSETHD - Routine to set the Head Number, Sector and Track for FDC +; Operation. This routine uses the "HST" values and DPH in order to +; set things up. This routine is Hardware Independent. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +FSETHD: LD C,0 ; Set head to 0 for now + LD HL,(HSTDPB) ; Get DPB pointer + DEC HL + LD B,(HL) ; Get # tracks per side + DEC HL ; Point to physical SPT + LD A,(HL) + LD (FDPSPT),A ; Save for FDC + DEC HL + LD A,(HL) + LD (FDSOFF),A ; Save sector offset + LD (FDS1OF),A ; For side 1 also + DEC HL + DEC HL ; Point to format byte 1 + BIT 7,(HL) + CALL SETTFZ ; Get high speed flag + LD (FDSPD),A ; Set speed for FDC + LD A,00000111B ; Mask for Sector Size + AND (HL) + LD (FDSECS),A ; Set Sector Size for FDC + DEC HL ; Point to Format Byte 0 + BIT 7,(HL) ; Test for Single-Density format + CALL SETTFZ + LD (FDSDEN),A ; Save Single-Density flag + LD A,(HSTTRK) ; Max track is 160 + AND A ; Set flags if Track 0 + LD E,A ; Put in E + JR NZ,FSETH1 ; If not Track 0 (always side 0) + BIT 6,(HL) + JR Z,FSETH1 ; Test for Track 0 Single-Density + LD A,0FFH + LD (FDSDEN),A ; Set to Single-Density if Trk 0 is SD + INC A + LD (FDSECS),A ; And force 128 byte sectors +FSETH1: LD A,(HSTSEC) + LD D,A ; So stick sector in D + LD A,00111000B ; Mask for Double-Side mode + AND (HL) + JR Z,SETHTS ; Skip if 1-sided + CP 00100000B ; Select Side-by-Sector? + JR C,SBYSEC ; ..jump if Yes + CP 00110000B ; Select by Track LSB? + JR Z,SBYTLS ; ..jump if Yes + CP 00101000B ; Select Side by Track MSB. Is Side 2 Reversed? + JR Z,REVTS2 ; ..jump if Yes + SUB 00010000B ; Select Side by Sector, Cont, Hd always 0? + LD (TSBSCF),A ; 0 if So (Save as flag in FDC-xx) + LD A,E ; Get Track + SUB B ; Is it Side 0? + JR C,SETHTS ; ..jump if Side 0 +UPTRK: LD E,A ; Else update Track +UPTRK1: DEC C ; Set Head 1 + JR SETHTS ; ..and exit + +REVTS2: LD A,E ; Get Track + SUB B ; Is it Side 0? + JR C,SETHTS ; ..jump if so +;; - Change from 2's complement to 1's complement per Ken Owen (Chameleon) +;; NEG ; Make Track negative + CPL ; Make Track Negative (1's complement) + ADD A,B ; Add to Tracks/Side to flip + JR UPTRK ; Update Head and Track, exit + +SBYTLS: SRL E ; Divide Track by 2, Carry is Head + JR NC,SETHTS ; ..jump if Head 0 + JR UPTRK1 ; Else set to Head 1 and exit + +SBYSEC: SUB 00010000B ; Test for Cont Sctr Numbers + CALL SETTFZ ; A=0 if Continuous, FF if Same + LD B,A ; save same Sect # front and back flag + INC HL + INC HL + INC HL + INC HL ; Point to physical SPT + SRL E ; Divide Track by 2 w/LSB going to Carry + JR NC,SETHTS ; ..jump if Head 0 (Even tracks) + DEC C ; Indicate Head 1 + INC B ; Test if Sector # Ok + JR Z,SETHTS ; ..jump if Sector Numbers same on both sides + ; Else Side 1 continues from Side 0 Sctr #s + LD A,(FDSOFF) ; Get starting Sector for Side 0 + ADD A,(HL) ; Add number of sectors on Side 0 + LD (FDS1OF),A ; save as first Sector on Side 1 + +; Track (E), Side(Head in C), and Sector(D) are now sorted out, Command the FDC + +SETHTS: LD HL,(HSTDPH) + DEC HL ; Point to Unit ID for drive + LD A,4 + AND C ; Mask head + OR (HL) ; Or with unit number + CALL STHDRV ; Set Head and Drive (and HDR variable) + DEC HL + DEC HL ; Point to Drive Type Byte + LD A,DBLSTP + AND (HL) ; Set NZ if Double-Step Enabled + LD (STEP2),A ; save in FDC module + LD A,E ; Get Track # + LD (TTRK),A ; save in FDC module + LD A,(FDS1OF) ; Get sector offset + LD B,A ; Save for later + IF CALCSK + ADD A,D ; Offset the Sector + ELSE + LD A,D ; Get Sector - already offset + ENDIF + PUSH AF ; Save Desired Sector # for more work + LD A,(FDPSPT) ; Get Sectors/Track (SPT) + DEC B ; Adjust SPT to Base 0 + ADD A,B ; .add sector Offset + LD E,A ; Save Last Sector number + LD A,(FDSECS) ; Get Sector Size + LD D,A + POP AF ; restore desired Sector # + CALL STSECT ; Set all Sector data + LD A,00000111B + AND (HL) ; Mask for Drive size + LD E,A + BIT 5,(HL) ; Test for motor required + CALL SETTFZ + LD D,A ; Save motor flag + LD A,(FDSPD) + CALL STSIZE ; Let FDC know Speed, Size, and Motor + LD A,(FDSDEN) ; Get SD/DD Mode + CALL STMODE ; set in FDC module + ;..fall thru to following and return to caller +; Gather parameters for this physical drive and set FDC module accordingly + +DOSPEC: LD A,(HDR) ; Get drive in lower 3 bits + PUSH DE ; save regs needed elsewhere + CALL SPCIFY ; and load registers for Specify command + CALL SPEC ; Set Step, Head Load and Unload times + POP DE + RET + +;..... +; Get drive parameters for Specify Command. +; Enter: Drive in bits 0,1 +; Exit : A = Step rate & Disk Size (B7=1 for 8", 0 for 5") +; D = Head Unload Time +; E = Head Load Time + +SPCIFY: CALL PHYSCL ; Get the physical Block for this drive + LD A,(HL) ; Get drive byte + AND 0111B ; mask for Drive size + DEC A ; set Zero flag if 8" + INC HL ; Advance to Step Rate + LD A,(HL) ; fetch + RES 7,A ; insure MSB clear for 5/3" + JR NZ,SPCIF0 ; Jump if Not 8" + SET 7,A ; else set MSB of Step for 8" +SPCIF0: INC HL + LD E,(HL) ; get HLT + INC HL + LD D,(HL) ; and HUT + RET + +;..... +; Index to proper Floppy Configuration bytes. Uses AF,HL. +; Enter with Physical Drive # in Bits 0,1 + + CSEG ; Must be in Common Memory + +PHYSCL: AND 0011B ; Mask out all but drive bits + LD L,A ; save copy for *5 calc + ADD A,A ; Calc table index *2 + ADD A,A ; *4 + ADD A,L ; *5 + LD HL,FDCSPEC ; Set table base addr + ;..fall thru to.. +; Routine to Add A to HL + +ADDAHL: ADD A,L ; Add A to LSB + LD L,A + RET NC ; Exit if no H adjustment + INC H ; Else had Carry, so add 1 to MSB + RET ; And exit + + + IF BANKED AND NOT INROM + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +FDSECS: DEFS 1 ; FDC sector size 0=128,1=256,2=512,3=1024 +FDSDEN: DEFS 1 ; FDC single density flag +FDSPD: DEFS 1 ; FDC high speed flag +FDPSPT: DEFS 1 ; FDC physical Sectors/Track +FDSOFF: DEFS 1 ; FDC first sector number offset side 0 +FDS1OF: DEFS 1 ; FDC first sector number offset side 1 +sbscflg: DEFS 1 ; Flag for SBSC operation + +;=========================== End of FLOPPY ================================ + \ No newline at end of file diff --git a/Source/BPBIOS/forlib.lib b/Source/BPBIOS/forlib.lib new file mode 100644 index 00000000..e69de29b diff --git a/Source/BPBIOS/hard-dx.z80 b/Source/BPBIOS/hard-dx.z80 new file mode 100644 index 00000000..1b52f009 --- /dev/null +++ b/Source/BPBIOS/hard-dx.z80 @@ -0,0 +1,620 @@ +;::::::::::::::::::::::::::::::::::::::::::::::::************************** +; Hard disk routines as implemented for the ** Hardware Dependent ** +; D-X Designs Pty Ltd P112 via an external ** for exact interface ** +; NCR/National 5380 Controller. These routines ************************** +; may be assembled to use Polled or DMA (no Interrupt) transfers without +; Arbitration depending on an equate in the DEF-DX.LIB assembly definition +; file. Direct driver IO routines to Select (SELHD), Read (HDREAD) and +; Write (HDWRIT) are all included here. Thanks to Terry Hazen for +; debugging the polled code while working on the YASBEC and Ampro versions. +;-------------------------------------------------------------------------- +; 1.3 - 22 Aug 01 - Cleaned source for GPL Release. HFB +; 1.2a- 15 Sep 97 - Corrected Data saves for Direct Device IO when +; flushing to/from other SCSI units, added Busy tests. HFB +; 1.2 - 17 Jul 96 - Initial P112 integration, deleted Xebec 1410/Shugart +; 1610-3 driver, selectable Polled/DMA modes. HFB +; 1.1 - 28 May 93 - Fixed Access to fast drives. JTH +; 0.0 - 9 Jul 91 - Initial Test Release HFB +;*************************************************************************** + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 0 - Set User Data Area Adress for Direct SCSI IO, Return +; Number of Bytes in the SCSI driver Command Block +; Enter: DE = Address of User Data Area +; Exit : A = Number of bytes available in the SCSI Command Block +; Uses : A,HL +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDVALS: LD (DATADR),DE ; Save the Users Data Area + LD A,CMDSIZ + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 1 - Set Physical Device bit and Logical Unit Number in SCSI +; Command Block (Byte 1, bits 7-5) from byte in A +; Enter: A = Device Byte (See ICFG-xx.Z80) +; Exit : A = Physical Device Bit of selected drive +; Uses : AF +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDSlct: LD (xUnit),A ; Save Dev/LUN byte for later + RET + +HDSlc0: PUSH BC ; Save regs + LD C,A ; and entry byte + AND 0E0H ; Mask off all but Logical Unit Number + LD (LUNSAV),A ; and save for execution + LD A,C ; Get byte back + AND 07H ; keeping only Physical Device bits + LD B,A ; Prepare for bit rotation + INC B ; by bumping count for initial value + XOR A ; Start with 0 byte + SCF ; and 1 bit in Carry +HDSLCZ: RLA ; Rotate bit around thru Carry + DJNZ HDSLCZ ; ..until properly positioned + LD (HDEVIC),A ; Save for future operations + POP BC ; Restore regs + RET + +;========================================================================= +; Select Hard Disk (SCSI Device and Unit) < Internal Bios routine > + +SELHD: LD A,(SEKPDN) ; Load Device and Unit # to select +SELHDA: LD C,A ; position for calculations + LD B,HDRV1-HDRV0 ; with size + MLT BC ; Calculate offset into table + LD HL,HDRV0 ; from first Physical drive + ADD HL,BC + LD A,(HL) ; Fetch Device/LUN byte + ld (iUnit),a ; save as internal unit # + CALL HDSlc0 ; setting variables for Device and LUN + CALL HDINIT ; Do the actual initialization + JP NZ,SELERR ; ..return Error if Bad + JP SETPARMS ; Else set parameters for DPH/DPB + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Initialize Xebec 1410/Shugart 1610-3 Controller for appropriate +; Drive Specs. Does Nothing if Owl, Adaptec or SCSI. +; <<-- Returns Error for Xebec/Shugart...deleted in 1.2. -->> +; Enter: HL -> Configuration block for desired drive (see ICFG-xx) +; Exit : A = 0, Zero Set (Z) if Ok, A <> 0, Zero Clear (NZ) if Error +; Uses : AF,BC,DE,HL +; NOTE : This routine uses the Physical drive parameters contained +; in ICFG-xx to determine some of the parameters. +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDINIT: LD A,(CNTRLR) ; Set Controller type + CP 2 ; Is it Xebec 1410/Shugart 1610-3? + JR NZ,HDINIS ; ..jump if Not to return Ok + DEFB 0F6H ; Fall thru w/"OR 0AFH" and return Error +HDINIS: XOR A ; Else signify this was done Ok + RET ; ..and quit + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Write to SCSI Hard Disk Drive < Internal BIOS Routine > +; Writes from HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. + +HDWRIT: XOR A + LD (HSTWRT),A ; Show No pending Write + + LD A,0AH ; Set the SCSI Write Command + DEFB 11H ; ..trash DE, fall thru to save + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Read from SCSI Hard Disk Drive < Internal BIOS Routine > +; Reads to HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. + +HDREAD: LD A,08H ; Set the SCSI Read Command + LD (HDCOMD),A ; save command in CDB + LD HL,(HSTDPH) ; Get pointer to desired DPH + DEC HL ; back up to Device # + LD A,(HL) ; and fetch + CALL SELHDA ; Select this device from A-Reg + + LD DE,HDCOMD+1 ; Point to second byte of Command Block + LD BC,4*256+0 ; Count = 4, MSB of Block # = 0 + LD HL,(HSTTRK) ; Get requested track +MUL16: ADD HL,HL ; Multiply C,H,L by 16 for 21-bit block # + RL C ; shifting overflow bit to C + DJNZ MUL16 ; ..and looping til * 16 + LD A,(DE) ; Get LUN/High Address + AND 11100000B ; keep only LUN + OR C ; and add in High 5 bits of Block # + LD (DE),A ; Store back in LUN/High Address + INC DE ; Pt to next + LD A,H ; Get middle Block # + LD (DE),A ; and save + INC DE ; Pt to next + LD A,(HSTSEC) ; Get Logical Host Sector # (4-bits) + ADD A,L ; add in Hi 4-bits of low Block # + LD (DE),A ; save lowest 8 bits of Block # + INC DE ; Pt to next + LD A,1 + LD (DE),A ; Set HDSIZ for 1 block + INC DE ; Pt to next + +; NOTE: Support for Xebec 1410/Shugart 1610-3 removed. They required a +; step rate byte to be stored at this point. + + XOR A ; Get a Zero + LD (DE),A ; Set in Command Block + +; Set Physical/Logical Unit numbers just prior to accessing the Drive + + LD A,(iUnit) ; Get internal unit data + CALL HDSlc0 ; set variables for Device and LUN + +; Try the Command specified. If errors returned (e.g. Attn assertion), +; read the SCSI Sense status and try the command again. + +RWSCSI: CALL HDRW0 ; Try a Normal Data Access + RET Z ; ..exitting if Ok + LD HL,sense ; Set Ptr to Sense Command Block + LD DE,snsDat ; and Sense Data Poiner + CALL HDRW1 ; Try a Sense Read, following thru to Dat Rd +HDRW0: LD DE,HSTBUF ; and Data Pointer for Normal Accesses +STSCSI: LD HL,HDCOMD ; Set Command Block Address +HDRW1: LD (HDCMDV),HL ; Save Command Block Address + LD (HDDATV),DE ; and Data Area Pointer + IF NOWAIT ; If Wait States not desired.. + IN0 A,(DCNTL) ; Get current settings + LD (WTSAVE),A ; save for exit + AND 11001111B ; Keep everything but IO Waits + OUT0 (DCNTL),A ; and set to No IO Wait States + ENDIF ;nowait + ;..fall thru to change phases on the SCSI bus + + CALL SCSI ; Do the Work + AND 00000010B ; Any errors? + LD (ERFLAG),A ; save resulting status here + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 2 - Direct SCSI driver. This routine performs the function +; described by the command in the HD Command Block with Data area +; addressed by DE. At the end of the function, 512 bytes of data are +; transferred from the Bios IO Buffer to the Users Space set by Fcn 0. +; +; Enter: DE = Pointer to User Command Descriptor Block +; HDCOMD contains pre-filled SCSI Command Block +; A = 0 if No Data to be Written, FF if User-supplied data to write +; Exit : H = Message Byte value +; L = Status Byte value +; A = Status byte, Flags set accordingly. +; Uses : AF,BC,DE,HL +; NOTE : Routine assumes the Command Block is properly configured for the +; desired function and device. Errors in phasing result in program +; exit and Warm Boot function, while Timeout returns 0FFH. +; For external access, It assumes the user has used Functions 0 and 1 to +; set the data transfer source/dest address and logical & physical drive. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HD_RW: PUSH AF ; Save User Data Flag + PUSH DE ; and ptr to User's CDB + CALL FLUSH ; Insure Host Buffer is Free + POP HL ; restore User CDB ptr to HL for move + IF BANKED + CALL SHDBNK ; Load Banks for transfer to System fm User + CALL XMOVE ; and Set + ENDIF ;Banked + LD DE,HDCOMD + LD BC,CMDSIZ ; Move Command Descriptor Block + CALL MOVE ; into SCSI Command area (6-12 bytes) + POP AF ; Restore Flag + OR A ; Any User data to write? + JR Z,DOSCS0 ; ..bypass move if not + IF BANKED + CALL SHDBNK ; Load for move from User's to System Banks + CALL XMOVE ; and Set + ENDIF ;Banked + CALL HDDMOV ; Set to move 512 bytes from User to Hstbuf + CALL MOVE ; Do It! +DOSCS0: LD A,(xUnit) ; Get External Device data + CALL HDSlc0 ; set variables for Device & LUN + + CALL RWSCSI ; Set Data Addr and do the operation + IF BANKED + CALL SHDBNK ; Load Bank Numbers + LD A,B ; Swap + LD B,C ; Source + LD C,A ; and Destination Banks + CALL XMOVE ; Set Source/Dest + ENDIF ;Banked + PUSH HL ; Save Status and Message bytes + CALL HDDMOV ; set Addresses and Length + EX DE,HL ; write back to User's area + CALL MOVE ; move without affecting status in A + POP HL ; Restore Status and Message bytes + LD A,L ; Load Status byte for checks + AND 1010B ; keeping only Check (3) and Busy (1) Bits + RET ; ..and quit + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Raw SCSI Driver + +SCSI: + IF HDDMA + LD (DATPTR),DE ; Save Pointer to Data Area + ENDIF + LD HL,LUNSAV ; Address LUN storage location + LD A,(HDUNIT) ; Get LUN/HiBlock byte from Command Blk + AND 1FH ; Strip off old LUN + OR (HL) ; add in New LUN + LD (HDUNIT),A ; save new byte + XOR A + OUT0 (NCRCMD),A ;1.1 Clear any previous Controller status + OUT0 (NCRMOD),A ;1.1 no Mode settings + OUT0 (NCRTGT),A ;1.1 nothing asserted + + IF HDDMA + DEC A ; 0 --> FF + LD (STATUS),A ; Set Initial timeout status + IN0 A,(NCRINT) ; Clear interrupts & Error Bits + ENDIF + + LD A,(HDEVIC) ; Get the Target Device address bit + OR 10000000B ; add Host initiator address bit + OUT0 (NCRDAT),A + IN0 A,(NCRCMD) ; Get Initiator Comnd Reg + OR B_ABUS ; Assert the Data Bus + OUT0 (NCRCMD),A + LD A,B_ASEL+B_ABUS ; Now Assert both Select and Data Bus bits + OUT0 (NCRCMD),A + +; Wait for 200-300 mS for Target to become Busy. The SCSI spec says 250 mS, +; but we don't know when the triggering will occur with our 100ms counter. +; We therefore set it for 300 mS which results in 200-300 mS w/250 on average. + + LD L,0FFH ; Preset Timeout Error Status + LD A,3 ; 3-100mS ticks + LD (MTM),A ; from Now! +BSYWT: LD A,(MTM) ; Get Current Count + OR A ; Have we timed out? + JR Z,TIMOUT ; ..exit to Error if So + IN0 A,(NCRBUS) ; Get the Current Bus Status + AND B_BSY ; Is it BSY? + JR Z,BSYWT ; ..loop if Not + ;..else fall thru.. + LD A,B_ABUS + OUT0 (NCRCMD),A ; Assert Bus w/o Select Command (or free) + XOR A ; get a Zero + OUT0 (NCRCMD),A ; then free the Data Bus + IF HDDMA + LD (HDONE),A ; Start by showing Not Done + ;..fall thru to wait for a Request on the SCSI bus + +RQWAIT: IN0 A,(NCRBUS) ; Get Bus status + AND B_REQ ; Bus Request yet? + JR Z,RQWAIT ; ..jump if Not and wait + +WtCall: CALL NZ,SCSINT ; Call the Interrupt to start transfer + LD A,(HDONE) ; Get Hard Drive Done flag + OR A ; Finished? + JR NZ,WtDonX ; ..exit if So + + IN0 A,(DRA) ; Else fetch Status (from Z182 Port A) + BIT 4,A ; Interrupt? + JR WtCall ; ..check & Read/Write SCSI if So + +WtDonX: LD HL,(STATUS) ; Else get Status and Message bytes +TIMOUT: + IF NOWAIT + LD A,(WTSAVE) ; Get entry Wait state settings + OUT0 (DCNTL),A ; and restore + ENDIF + LD A,L ; get Status Byte + OR A ; set flags + RET ; and return + ELSE ;Not hddma + LD (STATUS),A ; Assume Status is Ok + ;..fall thru to check SCSI Bus phase changes.. + ENDIF ;Not hddma + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; SCSINT - Interrupt routine for the NCR 5380/DP 8490 chip. +; +; This routine handles Interrupts generated by the SCSI controller on phase +; changes or loss of BSY signal meaning that the operation is complete. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + IF HDDMA +; CSEG ;<-- NOTE: If "True" Interrupts are used,this Vector + ; MUST be in Common Memory (CSEG) in case an + ; interrupt hits unexpectedly. Also, insert + ; code to save registers and set Local Stack. + +SCSINT: DI ; ..disable interrupts here for local calls + XOR A + OUT0 (NCRCMD),A ; Release the SCSI Bus + IN0 A,(NCRST) ; Get status + AND B_BBSY+B_PHAS ; Phase Match or Bus Busy? + JR Z,SCSIN0 ; ..jump if Not to continue + ;..else fall thru to Exit.. +; Exit here when we are done to set the Completed flag + +DISCSI: XOR A ; Turn off any SCSI operations + OUT0 (NCRMOD),A + OUT0 (NCRTGT),A + DEC A ; 0 --> FF + LD (HDONE),A ; Indicate Hard Disk Operation Complete + IN0 A,(NCRINT) ; Discard any pending 5380 Interrupts + IN0 A,(DSTAT) + AND 5FH ; Disable DMA1 Interrupts + OUT0 (DSTAT),A + EI + RET + +; Continue with Transaction + +SCSIN0: XOR A + OUT0 (NCRMOD),A ; Clear DMA mode + IN0 A,(NCRINT) ; Clear SCSI Interrupts + IN0 A,(DSTAT) + AND 5FH ; and Stop Z-180 DMA Ch #1 + OUT0 (DSTAT),A + LD A,B_MBSY+B_DMA ; Monitor Busy and Set DMA Mode + OUT0 (NCRMOD),A + ENDIF ;hddma +;..... +; Come here when phases change (Main Handler for Polled IO Mode) + +PHASE: IN0 A,(NCRBUS) ; Read the Bus Status + AND B_MSG+B_CD+B_IO ; keep the three phases we are interested in + RRCA ; Rotate Phase status bits + RRCA ; into B0-2 position for testing + OUT0 (NCRTGT),A ; Check for phase match + IF NOT HDDMA ; (only need this with Polled IO) + LD BC,NCRDAT ; with data going to/from this port (B=0) + ENDIF + LD HL,MESSAGE ; (Ph 7 input goes here) + CP 7 ; Are we in Phase 7 ? + JR Z,HDIN ; ..jump if so to Message In Phase + LD HL,(HDDATV) ; (Ph 0/1 IO From/To here) + OR A ; Are we in Phase 0 ? + JR Z,HDOUT ; ..jump to if so to Data Out Phase + DEC A ; Are we in Phase 1 ? + JR Z,HDIN ; ..jump to if so to Data In Phase + LD HL,(HDCMDV) ; (Ph 2 output from here) + DEC A ; Are we in Phase 2 ? + JR Z,HDOUT ; ..jump to if so to Command Out Phase + LD HL,STATUS ; (Ph 3 Input to here) + DEC A ; Are we in Phase 3 ? + JR Z,HDIN ; ..jump to if so to Status In Phase + ;..else fall thru +; Phases 4, 5 and 6 wind up here in an Error + + IF NOWAIT + LD A,(WTSAVE) ; Get entry Wait state settings + OUT0 (DCNTL),A ; and restore + ENDIF + CALL PRINT + DEFB CR,LF,' Phase Err',CR,LF+80H + IF HDDMA + CALL DISCSI ; Disable any ongoing DMA/SCSI operation + ENDIF ;..else fall thru to abort. Stack is reset so don't + ; worry about popping and restoring anything + IF BANKED + JP ABORT ; Use this error exit if banked + ELSE + RST 0 ; ..this exit if Non-banked + ENDIF ;banked + +;..... +; SCSI Input Routine (Polled IO) +; Enter with HL pointing to buffer, C addressing 5380 Data Port + + IF NOT HDDMA +HDIN: IN0 A,(NCRBUS) ; Check the Bus + BIT 5,A ; Do we have a REQuest? + JR NZ,HDIN1 ; ..jump if so to read it + AND B_BSY ; Is the Bus Busy? + JR NZ,HDIN ; ..loop if so + +HDEXIT: XOR A ; Else we are finished. Clean up & Quit + OUT0 (NCRCMD),A ; Clear Initiator Command Register + OUT0 (NCRTGT),A ; and Target Command Register + LD HL,(STATUS) ; Get Message (H) and Status (L) bytes +TIMOUT: + IF NOWAIT + LD A,(WTSAVE) ; Get entry Wait state settings + OUT0 (DCNTL),A ; and restore + ENDIF + LD A,L ; Get Status byte + OR A ; Set Return Status Ok if Status Byte = 0 + RET + +HDIN1: IN0 A,(NCRST) ; Get SCSI Status + AND B_PHAS ; Do the Phases Match? + JR Z,PHASE ; ..quit here if Not and clear + INI ; Get a byte from Port (C) to Memory at (HL) + INC B ; (correct B for decrement in INI) + LD A,B_AACK + OUT0 (NCRCMD),A ; ACKnowledge the byte + XOR A + OUT0 (NCRCMD),A ; clear *ACK bit + JR HDIN ; and back for more + +;..... +; SCSI Output Routine (Polled IO) +; Enter with HL pointing to buffer, C addressing 5380 Data Port + +HDOUT: LD A,B_ABUS ; Assert Data Bus + OUT0 (NCRCMD),A + IN0 A,(NCRBUS) ; Check the SCSI Bus + BIT 5,A ; Do we have a REQuest? + JR NZ,HDOUT1 ; ..jump if So to Send a byte + AND B_BSY ; Else is the Bus Busy? + JR NZ,HDOUT ; ..loop if so because we have more to go + JR HDEXIT ; Quit + +HDOUT1: IN0 A,(NCRST) ; Get current Status + AND B_PHAS ; Do we have a Phase Match? + JP Z,PHASE ; ..quit here if Not and clear + + OUTI ; Send a byte from (HL) to Port (C) + INC B ; (Correct B for decrement in OUTI) + LD A,B_AACK+B_ABUS + OUT0 (NCRCMD),A ; Set ACKnowledge and BUS bits + XOR A + OUT0 (NCRCMD),A ; clear *ACK and *BUS + JR HDOUT ; and back for more + ENDIF ;Not hddma + +;..... +; SCSI Input routine (DMA Controlled) +; Enter: HL = Address of Receive Buffer start + + IF HDDMA +HDIN: LD C,1010B ; Set for Edge Triggering and Read mode + CALL STDMA ; Set up Transfer and DMA Data + OUT0 (NCRINT),A ; Start DMA Initiator Rcv (bits don't care) + ;<-- NOTE: If using true Interrupts, restore local Stack Ptr + ; and preserved registers here + EI ; Interrupts Ok Now + RET + +;..... +; SCSI Output Routine (DMA Controlled) +; Enter: HL = Address of Send Buffer start + +HDOUT: LD C,1000B ; Set for Edge Triggering bit and Write mode + CALL STDMA ; Set up Transfer and DMA Data + LD A,B_ABUS ; Assert the Data Bus + OUT0 (NCRCMD),A + OUT0 (NCRST),A ; Start DMA Send (bits irrelevant) + ;<-- NOTE: If using true Interrupts, restore local Stack Ptr + ; and preserved registers here + EI ; Interrupts Ok Now + RET + +;..... +; STDMA - Set up DMA Channel 1 for a SCSI Read or Write operation. +; Enter: HL = Start Address of Buffer to Read/Write from/to +; C = Write (1x00B) or Read (1x10B) DMA1 Control bits +; ||++- Mem->IO ||++- IO->Mem +; |+--- DMA0-Sns |+--- DMA0-Sns +; +---- DMA1-Edge +---- DMA1-Edge + +STDMA: IN0 A,(DCNTL) ; Get DMA1 Control bits + AND 0F4H ; mask pertinent bits assuming a Write + OR C ; Add Edge Triggering bit and R/W mode + OUT0 (DCNTL),A ; and Command DMA Chan 1 + + IF BANKED + LD A,(SYSBNK) ; Get system Bank # + ELSE + LD A,(TPABNK) ; If Not Banked, load TPA Bank # + ENDIF ;banked + RL H ; Place Address MSB in Carry + ADC A,0 ; offset Bank # by 32k banks + RRA ; shift Bank LSB to Carry + RR H ; Move Bank # LSB (Carry) to Address MSB + LD (DMATBL+2),A ; Store Bank byte in DMA Block + LD (DMATBL),HL ; save Actual DMA Addr in Ctl Block + LD HL,DMATBL ; Point to DMA Control Block + LD BC,8*256+MAR1L ; Set for 8 bytes to DMA Channel 1 + OTIMR ; and output 8 bytes to 8 ports + IN0 A,(DSTAT) ; Get DMA Chan 1 Status + AND 57H ; set for No Terminating Interrupt + OR 81H ; enable DMA operation + OUT0 (DSTAT),A ; and Start the action! + RET + ENDIF ;hddma + +;..... +; Set registers for Whole Block Move + +HDDMOV: LD HL,(DATADR) ; Get ptr to User's Area + LD DE,HSTBUF ; Pt to local Host Buffer + LD BC,512 ; set length + RET ; ..and return + +;..... +; Set banks for Interbank move + + IF BANKED +SHDBNK: LD A,(USP-1) ; Get Source Bank Byte + RRA ; shift to + RRA ; + RRA ; Bank # + AND 1FH ; Mask off any Junk + LD C,A ; position + LD A,(SYSBNK) ; Get System Bank + LD B,A ; position it too + RET ; and return + ENDIF ;banked + +;..... +; SCSI Read Sense Command Data Block + +sense: DEFB 03H ; SCSI Sense Command + DEFB 0,0,0,SNSLEN,0 ; remainder of Sense Command Block + ; (data length set to available space) + IF BANKED + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +HDCMDV: DEFS 2 ; Storage for Current Command Data Block +HDDATV: DEFS 2 ; Storage for current Data Transfer Area +snsDat: DEFS 18 ; Storage for extended Sense Data Received +SNSLEN EQU $-snsDat +; SCSI Controller Command Block + +HDCOMD: DEFS 1 ; Command Byte +HDUNIT: DEFS 1 ; B7-5 = Unit #, remainder is Hi-Addr +HIBLK: DEFS 1 ; Mid-Addr Byte +LOBLK: DEFS 1 ; Lo-Addr Byte +HDSIZ: DEFS 1 ; Block Size to Read/Write (1=512 byte blk) +HDCTL DEFS 1 ; Control/Step Byte + DEFS 6 ; (pad for 12-byte Command Block) +CMDSIZ EQU $-HDCOMD ; Size of Command Block + + IF HDDMA +DATPTR: DEFS 2 ; Pointer to Data Area + ENDIF +DATADR: DEFS 2 ; Pointer to User Buffer Space (user bank) +HDEVIC: DEFS 1 ; Target Device address bit +LUNSAV: DEFS 1 ; Storage for LUN + +HDSTEP: DEFS 1 ; Step Rate Byte for Xebec/Shugart +INIBUF: DEFS 9 ; Buffer for Xebec/Shugart 1610-3 Init. + +; Z-180 DMA Control Block for SCSI Data Transfers + + IF HDDMA +DMATBL: DEFS 2 ; MAR1L, MAR1H + DEFS 1 ; MAR1B (Bank) + DEFS 2 ; DMAACK Output Port + DEFS 1 ; (unused) +NBYTES: DEFS 2 ; BCR1L, BCR1H + ENDIF ;hddma + +;<<--- WARNING! --- Do not re-order the following Two Bytes --->> + +STATUS: DEFS 1 ; Ending Status Byte +MESSAGE: DEFS 1 ; Ending Message Byte + +; IF HDDMA ;<-- If using True Interrupts, uncomment this + ; Section and add code to Interrupt Handler + ; to save registers here. +; DEFS 12 ; ..fill bytes and stack space +;INTSTK: DEFS 2 ; Storage for Stack Pointer +; ENDIF ;hddma + IF NOWAIT +WTSAVE: DEFS 1 ; Entry Wait State Setting + ENDIF +iUnit: DEFS 1 ; Bios Select Unit/LUN byte +xUnit: DEFS 1 ; Direct Access Unit/LUN byte + +;======================= End of HARD-DX =========================== + \ No newline at end of file diff --git a/Source/BPBIOS/hardhb.z80 b/Source/BPBIOS/hardhb.z80 new file mode 100644 index 00000000..56c257d8 --- /dev/null +++ b/Source/BPBIOS/hardhb.z80 @@ -0,0 +1,234 @@ +;::::::::::::::::::::::::::::::::::::::::::::::::************************** +; Hard disk routines as implemented for ** Hardware Dependent ** +; SIMH Altair80 ** for exact interface ** +; D-X Designs Pty Ltd P112. ************************** +;-------------------------------------------------------------------------- +; This file uses modifications of the definitions in ICFG-xx to reflect +; Physical and/or logical definitions for HBIOS drives. A controller type of +; 8xH signifies IDE/ATA drives, in which case the Drive byte at HDRVx is: +; 7 6 5 4 3 2 1 0 +; | | | | | | | +- Unit Number (0 = Master, 1 = Slave) +; | | | | +-+-+--- (reserved) +; | | | +--------- 1 = Active, 0 = Inactive +; +-+-+----------- (reserved) +; Additionally, the first byte of the Reduced Write Cylinder word is re- +; defined to be the number of physical/logical Sectors-Per-Track. +; These parameters are used to convert the Track & 16 Sector/Track format +; assumed in the B/P Bios definitions for Hard Drives into Track/Sector/Head +; Sector Number needed for IDE/ATA Data accesses. Direct driver IO routines +; to Select (SELHD), Read (HDREAD) and Write (HDWRIT) are all included here. +;-------------------------------------------------------------------------- +; 1.0 - 26 Aug 01 - Cleaned up source and included fixes from SCSI. HFB +; 0.2 - 28 Jun 97 - Added Home Drive, Retry Disable bit handling. HFB +; 0.1 - 25 Apr 97 - Initial Test Release HFB +;*************************************************************************** + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 0 - Set User Data Area Adress for Direct Disk IO, Return +; Number of Bytes in the driver Command Block (SCSI-"like") +; For IDE, a minimum of 6 Bytes is needed (Comnd,Trk(2),Sctr,Head,Drive) +; Enter: DE = Address of User Data Area +; Exit : A = Number of bytes available in the Command Block +; Uses : A,HL +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDVALS: LD (DATADR),DE ; Save the Users Data Area + LD A,CMDSIZ + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 1 - Set Drive bit Command Block from A +; Enter: A = Drive Byte +; Exit : A = Drive Bit in LSB (00/01H, for Master/Slave) +; Uses : AF +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDSLCT: AND 01H ; Strip any garbage + LD (hdUnit),A ; save in Command Block + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 2 - Direct SCSI driver. This routine performs the function +; described by the command in the HD Command Block with Data area +; addressed by DE. At the end of the function, 512 bytes of data are +; transferred from the Bios IO Buffer to the Users Space set by Fcn 0. +; +; Enter: DE = Pointer to User Command Descriptor Block +; HDCOMD contains pre-filled SCSI Command Block +; A = 0 if No Data to be Written, FF if User-supplied data to write +; Exit : H = Message Byte value +; L = Status Byte value +; A = Status byte, Flags set accordingly. +; Uses : AF,BC,DE,HL +; NOTE : Routine assumes the Command Block is properly configured for the +; desired function and device. Errors in phasing result in program +; exit and Warm Boot function, while Timeout returns 0FFH. +; For external access, It assumes the user has used Functions 0 and 1 to +; set the data transfer source/dest address and logical & physical drive. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HD_RW: CALL PANIC ; NOT IMPLEMENTED!!!! + RET + +;======================================================================== +; Select Hard Disk (Unit 0/1, Master/Slave) < Internal Bios routine > + +SELHD: ; SET DEVICE + +; CALL PRTSTRD +; DEFB '[SELHD]$' + + JP SETPARMS ; then set parameters for DPH/DPB + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Write to Hard Disk Drive < Internal BIOS Routine > +; Writes from HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. + +HDWRIT: + + XOR A + LD (HSTWRT),A ; Show no active writes pending + + JP HDSK_WRITE ; ..continue + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Read from Hard Disk Drive < Internal BIOS Routine > +; Reads to HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. +; The routine computes a sequential block number (as with SCSI) with +; the algorithm; Trk * 16 + Sector, then computes Head, Sector and Track +; using Physical characteristics (hdHds = Number_of_Heads, +; hdSPT = Sectors_per_Track) according to the algorithm: +; +; Sector := (Block# MOD hdSPT)+1 (* Quotient1 := Block# DIV hdSPT *) +; Head := Quotient1 MOD hdHds (* Quotient2 := Quotient1 DIV hdHds *) +; Track := Quotient2 + +HDREAD: + JP HDSK_READ + + IF BANKED + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +HRTrys: DEFS 1 ; Retry counter storage +hdUnit: DEFS 1 ; IDE Drive (0 = Master, 1 = Slave) +hdTrks: DEFS 2 ; Number of Tracks on IDE Drive +hdHds: DEFS 1 ; Number of Heads on IDE Drive +hdSPT: DEFS 1 ; Number of Sectors-Per-Track on IDE Drive + +; IDE Command Block for User Direct Driver Access + +hdComd: DEFS 1 ; Command Byte +hdBMap: DEFS 1 ; Bit Map (B6..0) of Following Bytes to Set +hdHead: DEFS 1 ; Head Number/Number of Heads in B3..0 +hdTrkH: DEFS 1 ; Hi-Track (Cylinder) Byte +hdTrkL: DEFS 1 ; Lo-Track (Cylinder) Byte +hdSec: DEFS 1 ; Sector Number +hdSCnt: DEFS 1 ; Sector Count +hdErr: DEFS 1 ; Error Reg Value +hdDigO: DEFS 1 ; Digital Output Reg Value +CMDSIZ EQU $-hdComd ; Size of Command Block + +DATADR: DEFS 2 ; Pointer to User Buffer Space (user bank) +;======================= End of HARDIDE =========================== + + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +; +;================================================================================================== +; HDSK DISK DRIVER +;================================================================================================== +; +; IO PORT ADDRESSES +; +HDSK_IO EQU 0FDH +; +HDSK_CMDNONE EQU 0 +HDSK_CMDRESET EQU 1 +HDSK_CMDREAD EQU 2 +HDSK_CMDWRITE EQU 3 +HDSK_CMDPARAM EQU 4 +; +; STATUS +; +HDSKRC_OK EQU 0 +; +; +; +HDSK_READ: +; CALL PRTSTRD +; DEFB '[HDSK READ]$' + + LD B,10H ; $10 IS HBIOS DISK READ + JR HDSK_RW +; +; +; +HDSK_WRITE: +; CALL PRTSTRD +; DEFB '[HDSK WRITE]$' + + LD B,11H ; $11 IS HBIOS DISK WRITE + JR HDSK_RW +; +; +; +HDSK_RW: + LD HL,(HSTDPH) ; GET ACTIVE DPH POINTER + DEC HL ; ADJUST TO POINT TO UNIT NUMBER + LD C,(HL) ; LOAD IT IN C FOR HBIOS CALL LATER + PUSH BC ; SAVE FUNCTION AND DEVICE FOR LATER + + LD DE,(HSTTRK) + LD HL,0 + LD B,4 ; PREPARE TO LEFT SHIT BY 4 BITS +HDSK_RW1: + SLA E ; SHIFT DE LEFT BY 4 BITS + RL D + RL L + RL H + DJNZ HDSK_RW1 ; LOOP TILL ALL BITS DONE + LD A,(HSTSEC) ; GET THE SECTOR INTO A + AND 0FH ; GET RID OF TOP NIBBLE FOR SAFETY + OR E ; COMBINE WITH E + LD E,A ; BACK IN E + + POP BC ; RECOVER FUNCTION AND DEVICE + CALL HBX_INVOKE + OR A + RET Z ; DONE IF NO ERROR + + XOR A + DEC A ; A=$FF TO SIGNAL ERROR + RET +; +;================================================================================================== +; HDSK DISK DRIVER - DATA +;================================================================================================== +; + IF BANKED + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + + +HDSK_PDN DEFS 1 ; PHYSICAL DEVICE + + + \ No newline at end of file diff --git a/Source/BPBIOS/hardide.z80 b/Source/BPBIOS/hardide.z80 new file mode 100644 index 00000000..d8f5822a --- /dev/null +++ b/Source/BPBIOS/hardide.z80 @@ -0,0 +1,469 @@ +;::::::::::::::::::::::::::::::::::::::::::::::::************************** +; Hard disk routines as implemented for ** Hardware Dependent ** +; Tilmann Reh's GIDE board adapted to the ** for exact interface ** +; D-X Designs Pty Ltd P112. ************************** +; Portions derived from GIDE.Z80 with tips from GIDETEST.PAS by Tilmann Reh. +;-------------------------------------------------------------------------- +; This file uses modifications of the definitions in ICFG-xx to reflect +; Physical and/or logical definitions for IDE drives. A controller type of +; 8xH signifies IDE/ATA drives, in which case the Drive byte at HDRVx is: +; 7 6 5 4 3 2 1 0 +; | | | | | | | +- Unit Number (0 = Master, 1 = Slave) +; | | | | +-+-+--- (reserved) +; | | | +--------- 1 = Active, 0 = Inactive +; +-+-+----------- (reserved) +; Additionally, the first byte of the Reduced Write Cylinder word is re- +; defined to be the number of physical/logical Sectors-Per-Track. +; These parameters are used to convert the Track & 16 Sector/Track format +; assumed in the B/P Bios definitions for Hard Drives into Track/Sector/Head +; Sector Number needed for IDE/ATA Data accesses. Direct driver IO routines +; to Select (SELHD), Read (HDREAD) and Write (HDWRIT) are all included here. +;-------------------------------------------------------------------------- +; 1.0 - 26 Aug 01 - Cleaned up source and included fixes from SCSI. HFB +; 0.2 - 28 Jun 97 - Added Home Drive, Retry Disable bit handling. HFB +; 0.1 - 25 Apr 97 - Initial Test Release HFB +;*************************************************************************** + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 0 - Set User Data Area Adress for Direct Disk IO, Return +; Number of Bytes in the driver Command Block (SCSI-"like") +; For IDE, a minimum of 6 Bytes is needed (Comnd,Trk(2),Sctr,Head,Drive) +; Enter: DE = Address of User Data Area +; Exit : A = Number of bytes available in the Command Block +; Uses : A,HL +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDVALS: LD (DATADR),DE ; Save the Users Data Area + LD A,CMDSIZ + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 1 - Set Drive bit Command Block from A +; Enter: A = Drive Byte +; Exit : A = Drive Bit in LSB (00/01H, for Master/Slave) +; Uses : AF +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDSLCT: AND 01H ; Strip any garbage + LD (hdUnit),A ; save in Command Block + RET + +;======================================================================== +; Select Hard Disk (Unit 0/1, Master/Slave) < Internal Bios routine > + +SELHD: LD A,(SEKPDN) ; Load Device and Unit # to select +SELHDA: LD C,A ; position for calculations + LD B,HDRV1-HDRV0 ; with size + MLT BC ; Calculate offset into table + LD HL,HDRV0 ; from first Physical drive + ADD HL,BC + LD A,(CNTRLR) ; Set Controller type + BIT 7,A ; Is it IDE/ATA? + JP Z,SELERR ; ..jump if Not to return Error + + LD A,(HL) ; Fetch Device/LUN byte + CALL HDSLCT ; setting variables for Device and LUN + ; Wait until Drive is ready or 10 Seconds + LD A,100 ; 100-100mS ticks +SelWt: CALL BsyWt ; Wait this long for Drive to come Ready + JP C,SELERR ; ..Error if Timeout + ; Else gather drive geometry specified in ICFG-xx + INC HL ; Advance to Number of Tracks Word + LD BC,4 ; Move Number of Tracks (Word) + LD DE,hdTrks ; Number of Heads (Byte) + LDIR ; and Sctrs/Trk to local storage +SetPmV: JP SETPARMS ; then set parameters for DPH/DPB + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Write to Hard Disk Drive < Internal BIOS Routine > +; Writes from HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. + +HDWRIT: XOR A + LD (HSTACT),A ; Show no active writes pending + + LD HL,7CH*256+CMDWR ; Set the IDE Write Command + JR HDRW ; ..continue + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Read from Hard Disk Drive < Internal BIOS Routine > +; Reads to HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. +; The routine computes a sequential block number (as with SCSI) with +; the algorithm; Trk * 16 + Sector, then computes Head, Sector and Track +; using Physical characteristics (hdHds = Number_of_Heads, +; hdSPT = Sectors_per_Track) according to the algorithm: +; +; Sector := (Block# MOD hdSPT)+1 (* Quotient1 := Block# DIV hdSPT *) +; Head := Quotient1 MOD hdHds (* Quotient2 := Quotient1 DIV hdHds *) +; Track := Quotient2 + +HDREAD: LD HL,7EH*256+CMDRD ; Set the IDE Read Command +HDRW: LD (hdComd),HL ; save + +; Prepare for Disk Read/Write by Preloading all Registers + + LD HL,(HSTDPH) ; Get pointer to desired DPH + DEC HL ; back up to Device # + LD A,(HL) ; and fetch + CALL SELHDA ; Select this device from A-Reg + LD BC,4*256+0 ; Count = 4, MSB of Block # = 0 + LD HL,(HSTTRK) ; Get requested track +MUL16: ADD HL,HL ; Multiply C,H,L by 16 for 21-bit block # + RL C ; shifting overflow bit to C + DJNZ MUL16 ; ..and looping til * 16 + LD A,(HSTSEC) ; Get Logical Host Sector # (4-bits) + ADD A,L ; add in Hi 4-bits of low Block # + LD L,A ; save back + LD A,(hdSPT) ; Get Sctrs-Per-Trk + LD E,A + CALL Divide ; Divide CHL by E + INC A ; Make Sctr # Base at 1 + LD (hdSec),A ; (save) + LD A,(hdHds) ; Get Number of Heads + LD E,A + CALL Divide ; Divide CHL (Quotient from above) by E + LD (hdHead),A ; (save) + LD A,H ; Swap + LD H,L ; Bytes + LD L,A ; in Track Word + LD (hdTrkH),HL ; save Quotient (Track, Hi & Lo) + LD A,0AAH + LD (hdErr),A ; Activate Retries in case Reading + LD A,1 + LD (hdSCnt),A ; Do only One Sector + + LD A,5 ; Give it a few tries +HDOps0: LD (HRTrys),A ; Save Count + CALL GoGIDE ; Try Read/Write Operation + RET Z ; ..quit if Ok + LD A,(HRTrys) ; Else + DEC A ; Any tries remaining? + JR NZ,HDOps0 ; ..loop if So + DEC A ; Else Return 0FFH + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 2 - Direct IDE/ATA driver. This routine performs the function +; described by the command in the HD Command Block with Data area +; addressed by DE. At the end of the function, 512 bytes of data are +; transferred from the Bios IO Buffer to the Users Space set by Fcn 0. +; The IDE/ATA Command Block layout is: +; +; Byte Format R/W/V Init RdID Power Diag PwrSet Home +; 0 [Command ] 50 20/30/40 91 EC E0/E1/E5 90 E2/E3 10 +; 1 [BitMap ] 70 7C/(7E) 74 40 00 00 04 40 +; 2 [Drv/Hd ] 0AnH 0AnH 0AnH-1 0AnH - - - 0An0 +; 3 [Cyl#(Hi)] CylHi CylHi CylHi - - - - - +; 4 [Cyl#(Lo)] CylLo CylLo CylLo - - - - - +; 5 [Sector# ] - Sctr - - - - - - +; 6 [Sctr Cnt] - SCnt NSecs - - - n*5Secs - +; 7 [Err Reg ] - (0AA) - - - - - - +; 8 [Dgtl Out] - - - - - - - - +; Rslts/Stat: Stat Stat Stat Stat SCnt Err - Stat +; Reg Reg Reg Reg Reg Reg Reg +; +; Enter: DE = Pointer to User IDE/ATA Command Block +; "hdComd" contains pre-filled Command Block +; A = 0 if No Data to be Written, FF if User-supplied data to write +; Exit : H = Error Byte value (If any) +; L = Status Byte value (If any) +; A = Status byte, Flags set accordingly. +; Uses : AF,BC,DE,HL +; NOTE : Routine assumes the Command Block is properly configured for the +; desired function and device. Timeout returns 0FFH, Unsupported +; command returns 7FH. +; For external access, It assumes the user has used Functions 0 and 1 to +; set the data transfer source/dest address drive number. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HD_RW: PUSH AF ; Save User Data Flag + PUSH DE ; and ptr to User's CDB + CALL FLUSH ; Insure Host Buffer is Free + POP HL ; restore User CDB ptr to HL for move + IF BANKED + CALL SHDBNK ; Load Banks for transfer to System fm User + CALL XMOVE ; and Set + ENDIF ;Banked + LD DE,hdComd + LD BC,10 ; Move a 10-byte block + CALL MOVE ; into the Command area + POP AF ; Restore Flag + OR A ; Any User data to write? + JR Z,HD_RW0 ; ..bypass move if not + IF BANKED + CALL SHDBNK ; Load for move from User's to System Banks + CALL XMOVE ; and Set + ENDIF ;Banked + CALL HDDMOV ; Set to move 512 bytes from User to Hstbuf + CALL MOVE ; Do It! +HD_RW0: CALL GoGIDE ; Set Data Addr and do the operation + PUSH HL ; save Status/Err + IF BANKED + CALL SHDBNK ; Load Bank Numbers + LD A,B ; Swap + LD B,C ; Source + LD C,A ; and Destination Banks + CALL XMOVE ; Set Source/Dest + ENDIF ;Banked + CALL HDDMOV ; set Addresses and Length + EX DE,HL ; write back to User's area + CALL MOVE ; move without affecting status in A + POP HL ; Restore Status/Err bytes for checks + LD A,L ; Get Status + OR A ; set flags + RET ; ..and quit + +;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ +; Raw GIDE Driver. Assumes Command in hdComd and Parms in Comnd Data Block + +GoGIDE: + IF NOWAIT ; If Wait States not desired.. + IN0 A,(DCNTL) ; Get current settings + LD (WTSAVE),A ; save for exit + AND 11001111B ; Keep everything but IO Waits + OUT0 (DCNTL),A ; and set to No IO Wait States + ENDIF ;nowait + +; Wait approximately 5 Seconds for Target to become Busy. + + LD L,0FFH ; Preset Timeout Error Status + LD A,50 ; 50-100mS ticks + CALL BsyWt ; Monitor Timeout while checking Busy Bit + JR C,TIMOUT ; ..Reporting Error if Timed Out + ;..else fall thru.. + LD HL,hdHead + LD A,(hdUnit) ; Get Drive # + ADD A,A ; Shift + ADD A,A ; Drive Bit + ADD A,A ; into + ADD A,A ; position + OR (HL) ; Add Head # bits + OR 0A0H ; and Fixed Bits + LD (HL),A + LD BC,IDESDH ; Set Port Address (GIDE+0EH) + DEC HL ; back ptr up to hdBMap byte + LD E,(HL) ; fetch + LD D,7 ; and set number of bytes + RL E ; Shift B7 out + +GoGID0: RL E ; Test bit to Carry + INC HL ; bump Byte ptr + JR NC,GoGID1 ; ..jump if No byte to write + LD A,(HL) ; Else get byte + OUT (C),A ; set IDE Register +GoGID1: DEC BC ; Down to next Register address + DEC D ; Finished? + JR NZ,GoGID0 ; ..loop if Not + + LD HL,HSTBUF ; Always IO to/from Host Buffer + LD BC,IDEDat ; Pre-load Data Reg Adr in C, 0 in B + LD A,(hdComd) ; Get Command Byte + CP CMDVER+2 ; Is it in the range w/retry bit? + JR NC,GoGID2 ; ..jump if Not + AND 0FEH ; Else Ignore Retry disable bit (B0) + CP CMDRD ; Read Sector? + JR Z,HRead + CP CMDWR ; Write Sector? + JR Z,HWrite + CP CMDVER ; Verify Sector(s)? + JR Z,HMisc + BIT 4,A ; Is it Home Comnd? + JR Z,HMisc + ;..else fall thru to error exit.. +GoGID2: CP CMDID ; Read ID Information? + JR Z,HRead + CP CMDDIAG ; Perform Diagnostics? + JR Z,HDiag + CP CMDINIT ; Initialize Drive Parameters? + JR Z,HInit + CP CMDPWQ ; Query Power Status? + JR Z,HPwrQ + CP CMDFMT ; Format Track? + JR Z,HWrite + CP CMDPW0 ; Low range of Power Set Commands? + JR C,GoGIDX ; ..jump if < 0E0H + CP CMDPW3+1 ; High Range of Power Set Commands? + JR C,HMisc ; ..jump if in [E0..E3] +GoGIDX: RES 7,L ; If Not legal Command, Return Error 7FH + POP AF ; (clear command from stack) +TIMOUT: + IF NOWAIT + LD A,(WTSAVE) ; Get entry Wait state settings + OUT0 (DCNTL),A ; and restore + ENDIF + LD A,L ; get Status Byte + LD (ERFLAG),A ; (store) + OR A ; set flags + RET ; and return + +;..... +; Read a Sector from the Disk, or Disk Parameters to the Buffer + +HRead: CALL Cmd_Wt ; Send Command in A, Return when Ready +HRead0: IN A,(IDECmd) ; Get Status + BIT 3,A ; Ready? + JR Z,HRead0 ; ..loop if Not + INIR ; Read 512 bytes + INIR ; in two-256 byte sequences +HdFini: CALL Wt_Rdy ; Wait for drive to become Ready +;; -- May need this with some Older Drives that send ECC bytes with no warning! +;; BIT 4,A ; DRQ Shifted? +;; JR Z,HdFnQ ; ..jump if Not +;; IN A,(IDEDat) ; Else Read data reg (ECC Bytes? +;; JR HdFini ; ..loop til no more data + +HdFnQ: IN A,(IDECmd) ; Restore byte + AND 10001001B ; Busy, DRQ, or Error? + JR Z,HdFnOk ; ..exit if Ok + LD A,02H ; Else Set Error status = 2 +HdFnOk: LD L,A ; store + IN A,(IDEErr) ; Get Any Error Status + LD H,A ; save + JR TIMOUT ; ..and exit thru common location + +;..... +; Write a 512-byte Sector to the Disk + +HWrite: CALL Cmd_Wt ; Send Command in A, Return when Ready +HWrit2: IN A,(IDECmd) + BIT 3,A ; Data Request? + JR Z,HWrit2 ; ..loop if Not + OTIR ; Else Write 512 bytes + OTIR ; in two-256 byte operations +HInit: CALL Wt_Rdy + JR HdFnQ ; ..and finish off above + +;..... +; Execute Drive Diagnostics + +HDiag: CALL Cmd_Wt ; Send Command in A, Return when Ready + IN A,(IDEErr) ; Read Status of Tests + JR HdFnOk ; ..exit with Status + +;..... +; Query Power Save Status + +HPwrQ: CALL Cmd_Wt ; Send Command in A, Return when Ready + IN A,(IDESCnt) ; Get Status (00=Running, FF=Stopped) + JR HdFnOk ; ..exit with Status + +;..... +; Miscellaneous Commands such as Set Various Power Control Features + +HMisc: CALL Cmd_Wt ; Send Command in A, Return When Ready + JR HdFnQ ; ..exit checking Status + +;================== SUPPORT ROUTINES ================== +; Divide 24-bit Number by 8-bit Number returning Quotient and Remainder +; Enter: CHL = 24-bit Unsigned Dividend +; E = 8-bit Unsigned Divisor +; Exit : CHL = 24-bit Quotient +; A = 8-bit Remainder +; Uses : AF,BC,HL + +Divide: LD B,24+1 ; 25 times thru Loop + XOR A ; Clear Remainder and Carry +Div: ADC A,A ; Shift Accum Left + Carry + SBC A,E ; Subtract Divisor + JR NC,Div0 ; ..jump if it Worked + ADD A,E ; Else restore Accum & Carry +Div0: CCF ; Flip Carry Bit + ADC HL,HL ; Shift any Carry into + RL C ; Dividend/Quotient + DJNZ Div ; ..loop til Done + RET + +;..... +; Wait for Drive to become Ready (With Timeout) +; Enter: A = Number of 100 mS increments to wait before timeout +; Exit : Carry Set (C) if Timeout, else Carry Clear (NC), Unit Ready +; Uses : MTM Timer variable, AF + +BsyWt: LD (MTM),A ; Set Timer value +BsyW0: LD A,(MTM) ; Get Current Count + OR A ; Have we timed out? + SCF ; (Set error flag in case) + RET Z ; ..exit w/Error flag if So + IN A,(IDECmd) ; Else Get the Busy Bit + RLA ; Is it BSY? + JR C,BSYW0 ; ..loop if So + RET ; else back to Caller, Carry Clear + +;..... +; Send command to the IDE Command Register, fall thru to wait for Ready Status + +Cmd_Wt: LD A,(hdComd) ; Get Command Byte in case bit stripped + OUT (IDECmd),A ; Start Operation + ;..fall thru to wait for Ready +;..... +; Wait for Drive to become Ready (No Timeout) +; Enter: None +; Exit : None +; Uses : AF + +Wt_Rdy: IN A,(IDECmd) ; Get Drive Status + RLA ; Ready? + JR C,Wt_Rdy ; ..loop if Not + RET + +;..... +; Set registers for Whole Block Move + +HDDMOV: LD HL,(DATADR) ; Get ptr to User's Area + LD DE,HSTBUF ; Pt to local Host Buffer + LD BC,512 ; set length + RET ; ..and return + +;..... +; Set banks for Interbank move + + IF BANKED +SHDBNK: LD A,(USP-1) ; Get Source Bank Byte + RRA ; shift to + RRA ; + RRA ; Bank # + AND 1FH ; Mask off any Junk + LD C,A ; position + LD A,(SYSBNK) ; Get System Bank + LD B,A ; position it too + RET ; and return + ENDIF ;banked + + IF BANKED + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +HRTrys: DEFS 1 ; Retry counter storage +hdUnit: DEFS 1 ; IDE Drive (0 = Master, 1 = Slave) +hdTrks: DEFS 2 ; Number of Tracks on IDE Drive +hdHds: DEFS 1 ; Number of Heads on IDE Drive +hdSPT: DEFS 1 ; Number of Sectors-Per-Track on IDE Drive + +; IDE Command Block for User Direct Driver Access + +hdComd: DEFS 1 ; Command Byte +hdBMap: DEFS 1 ; Bit Map (B6..0) of Following Bytes to Set +hdHead: DEFS 1 ; Head Number/Number of Heads in B3..0 +hdTrkH: DEFS 1 ; Hi-Track (Cylinder) Byte +hdTrkL: DEFS 1 ; Lo-Track (Cylinder) Byte +hdSec: DEFS 1 ; Sector Number +hdSCnt: DEFS 1 ; Sector Count +hdErr: DEFS 1 ; Error Reg Value +hdDigO: DEFS 1 ; Digital Output Reg Value +CMDSIZ EQU $-hdComd ; Size of Command Block + +DATADR: DEFS 2 ; Pointer to User Buffer Space (user bank) + IF NOWAIT +WTSAVE: DEFS 1 ; Storage for Entry Wait State Setting + ENDIF +;======================= End of HARDIDE =========================== + \ No newline at end of file diff --git a/Source/BPBIOS/hardsim.z80 b/Source/BPBIOS/hardsim.z80 new file mode 100644 index 00000000..ff42da65 --- /dev/null +++ b/Source/BPBIOS/hardsim.z80 @@ -0,0 +1,291 @@ +;::::::::::::::::::::::::::::::::::::::::::::::::************************** +; Hard disk routines as implemented for ** Hardware Dependent ** +; SIMH Altair80 ** for exact interface ** +; D-X Designs Pty Ltd P112. ************************** +;-------------------------------------------------------------------------- +; This file uses modifications of the definitions in ICFG-xx to reflect +; Physical and/or logical definitions for HBIOS drives. A controller type of +; 8xH signifies IDE/ATA drives, in which case the Drive byte at HDRVx is: +; 7 6 5 4 3 2 1 0 +; | | | | | | | +- Unit Number (0 = Master, 1 = Slave) +; | | | | +-+-+--- (reserved) +; | | | +--------- 1 = Active, 0 = Inactive +; +-+-+----------- (reserved) +; Additionally, the first byte of the Reduced Write Cylinder word is re- +; defined to be the number of physical/logical Sectors-Per-Track. +; These parameters are used to convert the Track & 16 Sector/Track format +; assumed in the B/P Bios definitions for Hard Drives into Track/Sector/Head +; Sector Number needed for IDE/ATA Data accesses. Direct driver IO routines +; to Select (SELHD), Read (HDREAD) and Write (HDWRIT) are all included here. +;-------------------------------------------------------------------------- +; 1.0 - 26 Aug 01 - Cleaned up source and included fixes from SCSI. HFB +; 0.2 - 28 Jun 97 - Added Home Drive, Retry Disable bit handling. HFB +; 0.1 - 25 Apr 97 - Initial Test Release HFB +;*************************************************************************** + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 0 - Set User Data Area Adress for Direct Disk IO, Return +; Number of Bytes in the driver Command Block (SCSI-"like") +; For IDE, a minimum of 6 Bytes is needed (Comnd,Trk(2),Sctr,Head,Drive) +; Enter: DE = Address of User Data Area +; Exit : A = Number of bytes available in the Command Block +; Uses : A,HL +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDVALS: LD (DATADR),DE ; Save the Users Data Area + LD A,CMDSIZ + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 1 - Set Drive bit Command Block from A +; Enter: A = Drive Byte +; Exit : A = Drive Bit in LSB (00/01H, for Master/Slave) +; Uses : AF +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HDSLCT: AND 01H ; Strip any garbage + LD (hdUnit),A ; save in Command Block + RET + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Function 2 - Direct SCSI driver. This routine performs the function +; described by the command in the HD Command Block with Data area +; addressed by DE. At the end of the function, 512 bytes of data are +; transferred from the Bios IO Buffer to the Users Space set by Fcn 0. +; +; Enter: DE = Pointer to User Command Descriptor Block +; HDCOMD contains pre-filled SCSI Command Block +; A = 0 if No Data to be Written, FF if User-supplied data to write +; Exit : H = Message Byte value +; L = Status Byte value +; A = Status byte, Flags set accordingly. +; Uses : AF,BC,DE,HL +; NOTE : Routine assumes the Command Block is properly configured for the +; desired function and device. Errors in phasing result in program +; exit and Warm Boot function, while Timeout returns 0FFH. +; For external access, It assumes the user has used Functions 0 and 1 to +; set the data transfer source/dest address and logical & physical drive. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +HD_RW: CALL PANIC ; NOT IMPLEMENTED!!!! + RET + +;======================================================================== +; Select Hard Disk (Unit 0/1, Master/Slave) < Internal Bios routine > + +SELHD: ; SET DEVICE + LD A,(SEKPDN) + LD (HDSK_DEVICE),A + JP SETPARMS ; then set parameters for DPH/DPB + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Write to Hard Disk Drive < Internal BIOS Routine > +; Writes from HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. + +HDWRIT: XOR A + LD (HSTACT),A ; Show no active writes pending + + JP HDSK_WRITE ; ..continue + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Read from Hard Disk Drive < Internal BIOS Routine > +; Reads to HSTBUF using HSTTRK and HSTSEC to build Block Number. +; NOTE: This routine uses physical drive characteristics from ICFG-xx. +; The routine computes a sequential block number (as with SCSI) with +; the algorithm; Trk * 16 + Sector, then computes Head, Sector and Track +; using Physical characteristics (hdHds = Number_of_Heads, +; hdSPT = Sectors_per_Track) according to the algorithm: +; +; Sector := (Block# MOD hdSPT)+1 (* Quotient1 := Block# DIV hdSPT *) +; Head := Quotient1 MOD hdHds (* Quotient2 := Quotient1 DIV hdHds *) +; Track := Quotient2 + +HDREAD: + JP HDSK_READ + + IF BANKED + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +HRTrys: DEFS 1 ; Retry counter storage +hdUnit: DEFS 1 ; IDE Drive (0 = Master, 1 = Slave) +hdTrks: DEFS 2 ; Number of Tracks on IDE Drive +hdHds: DEFS 1 ; Number of Heads on IDE Drive +hdSPT: DEFS 1 ; Number of Sectors-Per-Track on IDE Drive + +; IDE Command Block for User Direct Driver Access + +hdComd: DEFS 1 ; Command Byte +hdBMap: DEFS 1 ; Bit Map (B6..0) of Following Bytes to Set +hdHead: DEFS 1 ; Head Number/Number of Heads in B3..0 +hdTrkH: DEFS 1 ; Hi-Track (Cylinder) Byte +hdTrkL: DEFS 1 ; Lo-Track (Cylinder) Byte +hdSec: DEFS 1 ; Sector Number +hdSCnt: DEFS 1 ; Sector Count +hdErr: DEFS 1 ; Error Reg Value +hdDigO: DEFS 1 ; Digital Output Reg Value +CMDSIZ EQU $-hdComd ; Size of Command Block + +DATADR: DEFS 2 ; Pointer to User Buffer Space (user bank) + IF NOWAIT +;WTSAVE: DEFS 1 ; Storage for Entry Wait State Setting + ENDIF +;======================= End of HARDIDE =========================== + + + IF BANKED + COMMON /BANK2/ + ELSE + CSEG + ENDIF + +; +;================================================================================================== +; HDSK DISK DRIVER +;================================================================================================== +; +; IO PORT ADDRESSES +; +HDSK_IO EQU 0FDH +; +HDSK_CMDNONE EQU 0 +HDSK_CMDRESET EQU 1 +HDSK_CMDREAD EQU 2 +HDSK_CMDWRITE EQU 3 +HDSK_CMDPARAM EQU 4 +; +; STATUS +; +HDSKRC_OK EQU 0 +; +; +; +HDSK_READ: +; CALL PRTSTRD +; DEFB '[HDSK READ]$' + + LD A,HDSK_CMDREAD + JR HDSK_RW +; +; +; +HDSK_WRITE: +; CALL PRTSTRD +; DEFB '[HDSK WRITE]$' + LD A,HDSK_CMDWRITE + JR HDSK_RW +; +; +; +HDSK_RW: + LD (HDSK_CMD),A + + ; CLEAR RESULTS + XOR A ; A = 0 + LD (HDSK_RC),A ; CLEAR RETURN CODE + + ; INIT IF NEEDED + LD A,(HDSK_STAT) ; GET CURRENT STATUS + OR A ; SET FLAGS + CALL NZ,HDSK_RESET ; RESET IF NOT READY + +; ; SET SECTOR (IGNORES MSB) +; LD A,(HSTSEC) +; LD (HDSK_SEC),A + +; ; SET TRACK +; LD BC,(HSTTRK) +; LD (HDSK_TRK),BC + + ; BPBIOS DEFINES 16 SECTORS PER TRACK + ; CONVERT TO 256 SECTORS PER TRACK FOR SIMH DEFINITION + ; FIRST, DIVIDE TRACKS BY 16 SAVING REMAINDER IN TOP NIBBLE OF A + LD HL,(HSTTRK) + XOR A ; CLEAR A + LD B,4 ; ROTATE 4 BITS TO DIVIDE BY 4 +HDSK_RW0: + SRL H + RR L + RR A + DJNZ HDSK_RW0 + LD (HDSK_TRK),HL ; SAVE MODIFIED TRACK FOR HDSK I/O CALL + LD HL,HSTSEC ; POINT TO INCOMING SECTOR + OR (HL) ; COMBINE WITH SECTOR VALUE PASSED IN + LD (HDSK_SEC),A ; SAVE IT FOR HDSK I/O CALL + + ; SET TRANSFER ADDRESS + LD BC,HSTBUF + LD (HDSK_DMA),BC + + ; EXECUTE COMMAND + LD B,7 ; SIZE OF PARAMETER BLOCK + LD HL,HDSK_PARMBLK ; START ADDRESS OF PARAMETER BLOCK +HDSK_RW1: + LD A,(HL) ; GET BYTE OF PARAMETER BLOCK + OUT (0FDH),A ; SEND IT TO PORT + INC HL ; POINT TO NEXT BYTE + DJNZ HDSK_RW1 + + IN A,(0FDH) ; GET RESULT CODE + LD (HDSK_RC),A + OR A + JR Z,HDSK_OK + JR HDSK_ERR + +HDSK_ERR: + XOR A + DEC A ; A=$FF TO SIGNAL ERROR + LD (HDSK_STAT),A ; SAVE IT + RET + +HDSK_OK: + XOR A + RET +; +; +; +HDSK_RESET: + LD B,32 + LD A,HDSK_CMDRESET +HDSK_RESET1: + OUT (0FDH),A + DJNZ HDSK_RESET1 + + XOR A ; STATUS = OK + LD (HDSK_STAT),A ; SAVE IT + + RET +; +;================================================================================================== +; HDSK DISK DRIVER - DATA +;================================================================================================== +; + IF BANKED + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +HDSK_STAT DEFB 0 +HDSK_RC DEFB 0 +; +HDSK_PARMBLK: +HDSK_CMD DEFB 0 ; COMMAND (HDSK_READ, HDSK_WRITE, ...) +HDSK_DEVICE DEFB 0 ; 0..7, HARD DISK UNIT +HDSK_SEC DEFB 0 ; 0..255 SECTOR +HDSK_TRK DEFW 0 ; 0..2047 TRACK +HDSK_DMA DEFW 0 ; DEFINES WHERE RESULT IS PLACED IN MEMORY + + + + + \ No newline at end of file diff --git a/Source/BPBIOS/hbios.z80 b/Source/BPBIOS/hbios.z80 new file mode 100644 index 00000000..db1bc875 --- /dev/null +++ b/Source/BPBIOS/hbios.z80 @@ -0,0 +1,433 @@ +;:::::::::::::::::::::::::::::::::::::::***************************** +; HBIOS - HBios Interface Routines ***** Hardware-Specific ***** +; ***************************** +; +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; +; CHARACTER DEVICES (ONLY FIRST NIBBLE RELEVANT, SECOND NIBBLE RESERVED FOR UNIT) +; +HBCIO_UART EQU 000H +HBCIO_ASCI EQU 010H +HBCIO_VDU EQU 020H +HBCIO_CVDU EQU 030H +HBCIO_UPD7220 EQU 040H +HBCIO_N8V EQU 050H +HBCIO_PRPCON EQU 060H +HBCIO_PPPCON EQU 070H +HBCIO_CRT EQU 0D0H +HBCIO_BAT EQU 0E0H +HBCIO_NUL EQU 0F0H +; +; DISK DEVICES (ONLY FIRST NIBBLE RELEVANT, SECOND NIBBLE RESERVED FOR UNIT) +; +HBDEV_MD EQU 000H +HBDEV_FD EQU 010H +HBDEV_RF EQU 020H +HBDEV_IDE EQU 030H +HBDEV_ATAPI EQU 040H +HBDEV_PPIDE EQU 050H +HBDEV_SD EQU 060H +HBDEV_PRPSD EQU 070H +HBDEV_PPPSD EQU 080H +HBDEV_HDSK EQU 090H +; +HB_DEFBNK EQU BID_USR ; Default bank number +; +; LOCATION OF DISPATCH ENTRY IN HBIOS BANK +; +HB_DISPATCH EQU 0203H +; +; PLATFORM SPECIFIC CONSTANTS +; + IF N8 +N8_BASE EQU 80H ; BASE I/O ADDRESS BOARD PERIPHERALS (NON-CPU) +ACR EQU N8_BASE + 14H ; AUXILLARY CONTROL REGISTER +DEFACR EQU 1BH ; DEFAULT VALUE FOR ACR +CPU_BBR EQU 40H + 39H + ENDIF + + IF MK4 +CPU_BBR EQU 40H + 39H + ENDIF + + CSEG + + IF INTPXY + + DB 0 ; Prevents link error in BPBUILD + +HB_XFC EQU 0FFE0H +HB_XFCIMG EQU $ + + .PHASE HB_XFC +HB_CURBNK DB 0 +HB_PRVBNK DB 0 ; DEPRECATED!!! +HB_SRCADR DW 0 +HB_SRCBNK DB 0 +HB_DSTADR DW 0 +HB_DSTBNK DB 0 + DB 0,0,0,0,0,0,0,0 +HB_INVOKE JP HBX_INVOKE +HB_BNKSEL JP HBX_BNKSEL +HB_BNKCPY JP HBX_BNKCPY +HB_BNKCALL JP 0 ; HBX_BNKCALL (NOT IMPLEMENTED) + DB 0,0 ; RESERVED +HB_IDENT DW 0 ; HBX_IDENT + .DEPHASE + +HB_XFCSIZ EQU $ - HB_XFCIMG + + ELSE + +HBX_INVOKE EQU 0FFF0H +HBX_BNKSEL EQU 0FFF3H +HBX_BNKCPY EQU 0FFF6H +HBX_BNKCALL EQU 0FFF9H + +HB_CURBNK EQU 0FFE0H +;HB_PRVBNK EQU 0FFE1H +HB_SRCADR EQU 0FFE2H +HB_SRCBNK EQU 0FFE4H +HB_DSTADR EQU 0FFE5H +HB_DSTBNK EQU 0FFE7H + + ENDIF + +; +;================================================================================================== +; HBIOS INTERFACE +;================================================================================================== +; +HBX_INIT: + + IF INTPXY + + ; Copy HB_XFCIMG to target location + LD HL,HB_XFCIMG + LD DE,HB_XFC ; point to HBIOS comm block + LD BC,HB_XFCSIZ + LDIR + + ; Setup RST 08 vector + LD A,0C3H ; $C3 = JP + LD (08H),A + LD HL,HBX_INVOKE + LD (09H),HL + + ENDIF + + ; Init HB data fields + LD A,BID_USR + LD (HB_CURBNK),A + LD (HB_SRCBNK),A + LD (HB_DSTBNK),A + + RET + +HBX_SETBNK: + JP HBX_BNKSEL + +HBX_XCOPY: + LD A,C + LD (HB_SRCBNK),A + LD A,B + LD (HB_DSTBNK),A + RET + +HBX_COPY: + LD (HBX_STKSAV),SP ; Save current stack + LD SP,HBX_STACK ; Activate our private stack + CALL HBX_BNKCPY ; Do the work with private stack active + LD SP,(HBX_STKSAV) ; Back to original stack + RET + + IF INTPXY +; +; Enter at HBX_BNKSEL to set bank temporarily and avoid +; updating the "current" bank. +; +HBX_BNKSEL: + LD (HB_CURBNK),A + + IF N8VEM OR ZETA + OUT (MPCL_ROM),A + OUT (MPCL_RAM),A + ENDIF + + IF N8 + BIT 7,A + JR Z,HBX_ROM +; +HBX_RAM: + RES 7,A + RLCA + RLCA + RLCA + OUT0 (CPU_BBR),A + LD A,DEFACR | 80H + OUT0 (ACR),A + RET +; +HBX_ROM: + OUT0 (RMAP),A + XOR A + OUT0 (CPU_BBR),A + LD A,DEFACR + OUT0 (ACR),A + RET + ENDIF + + IF MK4 + RLCA + RLCA + RLCA + OUT0 (CPU_BBR),A + ENDIF + + RET +; +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; GETBNK - Get current memory bank and return in A. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; +HBX_GETBNK: + LD A,(HB_CURBNK) + RET +; +; Entry point HBX_BNKCPY is for use internally and +; assumes a valid stack already exists in upper 32K. +; +HBX_BNKCPY: + ; Save current bank to restore at end + LD A,(HB_CURBNK) + LD (HBX_CPYBNK),A + + ; Setup for copy loop + LD (HB_SRCADR),HL ; Init working source adr + LD (HB_DSTADR),DE ; Init working dest adr + LD H,B ; Move bytes to copy from BC... + LD L,C ; to HL to use as byte counter + +HBX_COPY2: ; Copy loop + LD A,L ; Low byte of count to A + AND 7FH ; Isolate bits relevant to 128 byte buf + LD BC,80H ; Assume full buf copy + JR Z,HBX_COPY3 ; If full buf copy, go do it + LD C,A ; Otherwise, BC := bytes to copy + +HBX_COPY3: + PUSH HL ; Save bytes left to copy + CALL HBX_COPY4 ; Do it + POP HL ; Recover bytes left to copy + XOR A ; Clear CF + SBC HL,BC ; Reflect bytes copied in HL + JR NZ,HBX_COPY2 ; If any left, then loop + + ; FIX: this should be done elsewhere!!! + LD A,HB_DEFBNK ; Default bank id + LD (HB_SRCBNK),A ; ... to source bank id + LD (HB_DSTBNK),A ; ... and destination bank id + + LD A,0FFH ; Load original bank ($FF is replaced at entry) +HBX_CPYBNK EQU $ - 1 + + JR HBX_BNKSEL ; Return via bank set + +HBX_COPY4: + ; Switch to source bank + LD A,(HB_SRCBNK) ; Get source bank + CALL HBX_BNKSEL ; Set bank without making it current + + ; Copy BC bytes from HL -> BUF + ; Allow HL to increment + PUSH BC ; Save copy length + LD HL,(HB_SRCADR) ; Point to source adr + LD DE,HBX_BUF ; Setup buffer as interim destination + LDIR ; Copy BC bytes: src -> buffer + LD (HB_SRCADR),HL ; Update source adr + POP BC ; Recover copy length + + ; Switch to dest bank + LD A,(HB_DSTBNK) ; Get destination bank + CALL HBX_BNKSEL ; Set bank without making it current + + ; Copy BC bytes from BUF -> HL + ; Allow DE to increment + PUSH BC ; Save copy length + LD HL,HBX_BUF ; Use the buffer as source now + LD DE,(HB_DSTADR) ; Setup final destination for copy + LDIR ; Copy BC bytes: buffer -> dest + LD (HB_DSTADR),DE ; Update dest adr + POP BC ; Recover copy length + + RET ; Done +; +;================================================================================================== +; HBIOS ENTRY FOR RST 08 PROCESSING +;================================================================================================== +; +; ENTRY POINT FOR BIOS FUNCTIONS (TARGET OF RST 08) +; +HBX_INVOKE: + LD (HBX_STKSAV),SP ; SAVE ORIGINAL STACK FRAME + LD SP,HBX_STACK ; SETUP NEW STACK FRAME + + LD A,(HB_CURBNK) ; GET CURRENT BANK + LD (HBX_INVBNK),A ; SETUP TO RESTORE AT EXIT + + LD A,BID_HB ; HBIOS BANK + CALL HBX_BNKSEL ; SELECT IT + + CALL HB_DISPATCH ; CALL HBIOS FUNCTION DISPATCHER + + PUSH AF ; SAVE AF (FUNCTION RETURN) + LD A,0FFH ; LOAD ORIGINAL BANK ($FF IS REPLACED AT ENTRY) +HBX_INVBNK EQU $ - 1 + CALL HBX_BNKSEL ; SELECT IT + POP AF ; RESTORE AF + + LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME + + RET ; RETURN TO CALLER + + ENDIF + +;================================================================================================== +; Load A,(HL) from Alternate Bank (in Reg C) +;================================================================================================== + +HBX_FRGETB: + LD (HBX_STKSAV),SP ; Save current stack + LD SP,HBX_STACK ; Activate our private stack + + LD A,(HB_CURBNK) ; Get current bank + LD (HBX_BNKSAV),A ; Save current bank + + PUSH BC + LD A,C + DI + + CALL HBX_BNKSEL + + LD C,(HL) + LD A,(HBX_BNKSAV) + + CALL HBX_BNKSEL + +;WW EI + LD A,C + POP BC + + LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME + RET + +;================================================================================================== +; Load DE,(HL) from Alternate Bank +;================================================================================================== + +HBX_FRGETW: + LD (HBX_STKSAV),SP ; Save current stack + LD SP,HBX_STACK ; Activate our private stack + + LD A,(HB_CURBNK) ; Get current bank + LD (HBX_BNKSAV),A ; Save current bank + + LD A,C + DI + + CALL HBX_BNKSEL + + LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,(HBX_BNKSAV) + + CALL HBX_BNKSEL + +;WW EI + + LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME + RET + +;================================================================================================== +; Load (HL),A to Alternate Bank (in Reg C) +;================================================================================================== + +HBX_FRPUTB: + LD (HBX_STKSAV),SP ; Save current stack + LD SP,HBX_STACK ; Activate our private stack + + PUSH AF + LD A,(HB_CURBNK) ; Get current bank + LD (HBX_BNKSAV),A ; Save current bank + POP AF + + PUSH BC + LD B,A + LD A,C + DI + + CALL HBX_BNKSEL + + LD (HL),B + LD A,(HBX_BNKSAV) + + CALL HBX_BNKSEL + +;WW EI + POP BC + + LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME + RET + +;================================================================================================== +; Load (HL),DE to Alternate Bank +;================================================================================================== + +HBX_FRPUTW: + LD (HBX_STKSAV),SP ; Save current stack + LD SP,HBX_STACK ; Activate our private stack + + LD A,(HB_CURBNK) ; Get current bank + LD (HBX_BNKSAV),A ; Save current bank + + LD A,C + DI + + CALL HBX_BNKSEL + + LD (HL),E + INC HL + LD (HL),D + DEC HL + LD A,(HBX_BNKSAV) + + CALL HBX_BNKSEL + +;WW EI + + LD SP,(HBX_STKSAV) ; RESTORE ORIGINAL STACK FRAME + RET + +;================================================================================================== +; +; PRIVATE DATA +; + + DSEG + +HB_DSKBUF DEFW 0 ; Address of physical disk buffer in HBIOS bank + +HBX_BNKSAV DEFB 0 ; Saved bank id during HBIOS calls +HBX_STKSAV DEFW 0 ; Saved stack pointer during HBIOS calls + DEFS 64 ; Private stack for HBIOS +HBX_STACK EQU $ ; Top of private stack + + IF INTPXY + +HBX_RETBNK DEFB 0 ; Bank to activate on return from BNKCPY + +HBX_BUF DEFS 80H ; Interbank copy buffer + + ENDIF diff --git a/Source/BPBIOS/ibmv-dx.z80 b/Source/BPBIOS/ibmv-dx.z80 new file mode 100644 index 00000000..baf06489 --- /dev/null +++ b/Source/BPBIOS/ibmv-dx.z80 @@ -0,0 +1,345 @@ +;:::::::::::::::::::::::::::::::::::::::***************************** +; IBMOVE - Inter-Bank Move Routines ***** Hardware-Specific ***** +; D-X Designs Pty Ltd P112 ***************************** +; +; 1.0a- 17 Aug 01 - Cleaned up for GPL Release. HFB +; 1.0 - 10 Jun 96 - Initial Release for P112 from YASBEC. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Move Data - Possibly between banks. This resembles CP/M 3, but +; usage of the HL and DE registers is reversed. +; Enter: HL = Source Address +; DE = Destination Address +; BC = Number of bytes to move +; Exit : None +; Uses : AF,BC,DE,HL +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +MOVE: +BNKCPY: + ; Save current stack & bank + LD (BCSSAV),SP ; Save current stack + LD SP,BCSTK ; Activate our private stack + IF BANKED + LD A,(CURBNK) ; Get the current bank + ELSE + LD A,(TPABNK) ; If not banked, assume TPA bank is active + ENDIF + PUSH AF ; Put on stack + + ; Setup for copy loop + LD (XBCSRC),HL ; Init working soruce adr + LD (XBCDST),DE ; Init working dest adr + LD H,B ; Move bytes to copy from BC... + LD L,C ; to HL to use as byte counter + + ; Copy loop +BNKCPY1: + INC L ; Set ZF to indicate... + DEC L ; if a partial page copy is needed + LD BC,100H ; Assume a full page copy, 100H bytes + JR Z,BNKCPY2 ; If full page copy, go do it + DEC B ; Otherwise, setup for partial page copy + LD C,L ; by making BC := 0L +BNKCPY2: + PUSH HL ; Save bytes left to copy + CALL BNKCPY3 ; Do it + POP HL ; Recover bytes left to copy + XOR A ; Clear CF + SBC HL,BC ; Reflect bytes copied in HL + JR NZ,BNKCPY1 ; If any left, then loop + + ; Restore entry bank & stack + POP AF ; Recover original bank + OUT (MPCL_RAM),A ; Set it + LD SP,(BCSSAV) ; Back to original stack + + ; Put source and dest bank back to default + LD HL,(TPABNK) ; Get TPA Bank # + LD H,L ; .to both H and L + LD (SRCBNK),HL ; ..set Source & Destination Bank # to TPA + + + RET ; Done + +BNKCPY3: + ; Switch to source bank + LD A,(SRCBNK) ; Get source bank + OUT (MPCL_RAM),A ; Set it + + ; Copy BC bytes from HL -> BUF + ; Allow HL to increment + PUSH BC ; Save copy length + LD HL,(XBCSRC) ; Point to source adr + LD DE,IBMVBF ; Setup buffer as interim destination + LDIR ; Copy BC bytes: src -> buffer + LD (XBCSRC),HL ; Update source adr + POP BC ; Recover copy length + + ; Switch to dest bank + LD A,(DSTBNK) ; Get destination bank + OUT (MPCL_RAM),A ; Set it + + ; Copy BC bytes from BUF -> HL + ; Allow DE to increment + PUSH BC ; Save copy length + LD HL,IBMVBF ; Use the buffer as source now + LD DE,(XBCDST) ; Setup final destination for copy + LDIR ; Copy BC bytes: buffer -> dest + LD (XBCDST),DE ; Update dest adr + POP BC ; Recover copy length + + RET ; Done + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Routine to Switch to Local Stack for Banked Operations +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +BIOSTK: DEFB 0 ; NOP if not currently in bank, + ; ..RET if we are + LD (USP-7),HL ; Save entry HL + POP HL ; Retrieve caller's return address from stack + LD (USP-5),HL ; ..and set in our stack for local return + DI ; No interrupts while we play with the stack + LD (USP),SP ; Save User's Stack Pointer + LD SP,USP-1 ; ..and point locally, saving 1 byte for Bank + PUSH AF ; Save entry A and Flags + LD A,(CURBNK) ; Get current bank + LD (USP-1),A ; ..and save for exitting + LD A,0C9H ; Disable other calls here + LD (BIOSTK),A ; ..by poking a RETurn at entry + POP AF ; Restore entry AF + LD HL,USRSTK ; Set banked return address + PUSH HL ; ..at USP-2 & 3 + LD SP,USP-7 ; Point stack pointer to do local return + POP HL ; .restoring entry HL + EI ; ..enabling interrupts + RET ; And return to caller + +; Restore User Stack and Bank Routine + +USRSTK: PUSH AF + LD A,(USP-1) ; Get bank control byte from entry + LD (CURBNK),A ; WW: I ADDED THIS, IS IT RIGHT??? + OUT (MPCL_RAM),A ; ..and make it current + XOR A + LD (BIOSTK),A ; Patch NOP back in at start of code + POP AF + LD SP,(USP) ; Restore user stack + RET ; And return to caller + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Restore Bank and Stack Ptr to Entry and Jump to (HL) +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRCLR: PUSH AF ; Save any entry in AF + LD A,(USP-1) ; Get bank control byte + OUT (MPCL_RAM),A ; .and make current + XOR A + LD (BIOSTK),A ; Patch NOP to enable stack switcher + POP AF + LD SP,(USP) ; Restore User Stack + JP (HL) ; ..and jump to vector + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Abort a Process (possibly in Alternate Bank) and Warm Boot +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +ABORT: LD SP,USP ; Insure stack is in Common Memory + LD A,(TPABNK) + CALL SELBNK ; Insure TPA in Context + XOR A + LD (BIOSTK),A ; Remove patch + RST 0 ; ..And Warm Boot + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Return Current Memory Bank in Context +; Entry: none +; Exit : A = Current Memory Bank +; Uses : AF +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +RETMEM: LD A,(CURBNK) + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Bank into context. Save all Registers. +; A = Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SELMEM: LD (USRBNK),A ; Update user bank + ;..fall thru to set specified bank.. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; SELBNK - Switch Memory Bank to Bank in A and show as current. +; Must preserve all Registers including Flags. +; All Bank Switching MUST be done by this routine +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SELBNK: PUSH AF ; Save regs +SELBN0: LD (CURBNK),A ; Save as current bank # + OUT (MPCL_RAM),A + POP AF ; restore regs + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Bank for DMA Xfer. Preserve All Registers +; A = Bank Number +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SETBNK: LD (DMABNK),A + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Banks for Inter-Bank Xfer. Save all Registers. +; B = Destination Bank, C = Source Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +XMOVE: LD (SRCBNK),BC + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Select System Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +GOSYSB: PUSH AF + LD A,(SYSBNK) ; Get system bank + JR SELBN0 ; ..and set + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Bank for FRJP and FRCALL (Reg A) +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +STFARC: LD (JPBNK),A + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Jump to (HL) in Alternate Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRJP: CALL BIOSTK ; Insure we are in a common stack + PUSH AF + LD A,(JPBNK) + CALL SELBNK ; Select the destination bank + POP AF + JP (HL) ; ..and go + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load A,(HL) from Alternate Bank (in Reg C) +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRGETB: + PUSH BC + LD A,C + DI + OUT (MPCL_RAM),A + LD C,(HL) + LD A,(CURBNK) + OUT (MPCL_RAM),A + EI + LD A,C + POP BC + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load DE,(HL) from Alternate Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRGETW: + LD A,C + DI + OUT (MPCL_RAM),A + LD E,(HL) + INC HL + LD D,(HL) + DEC HL + LD A,(CURBNK) + OUT (MPCL_RAM),A + EI + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load (HL),A to Alternate Bank (in Reg C) +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRPUTB: + PUSH BC + LD B,A + LD A,C + DI + OUT (MPCL_RAM),A + LD (HL),B + LD A,(CURBNK) + OUT (MPCL_RAM),A + EI + POP BC + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load (HL),DE to Alternate Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRPUTW: + LD A,C + DI + OUT (MPCL_RAM),A + LD (HL),E + INC HL + LD (HL),D + DEC HL + LD A,(CURBNK) + OUT (MPCL_RAM),A + EI + RET + +;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +;; Copy BC bytes from (SRCBNK):HL -> (DSTBNK):DE +;; through buffer to allow for inter-bank copies +;;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; +;XBNKCPY: +; LD (SRCBNK),BC +; RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + DSEG + +JPBNK: DEFS 1 ; Bank # for Far Jump or Call +USRBNK: DEFS 1 ; User's selected bank # +CURBNK: DEFS 1 ; Current bank # +SRCBNK: DEFS 1 ; Move Source Bank # +DSTBNK: DEFS 1 ; Move Destination Bank # +DMABNK: DEFS 1 ; Target bank # for disk xfers + DEFS 64 ; 32 level stack +USP: DEFS 2 ; User stack pointer +ASAVE: DEFS 1 ; Temp storage for User's A-Register + +; Z-180 DMA transfer block for inter-bank moves + +ISRC: DEFS 2 ; Source Segment address + DEFS 1 ; ..Source Bank in physical RAM +IDST: DEFS 2 ; Destination Segment address + DEFS 1 ; ..Destination Bank in physical RAM +ICNT: DEFS 2 ; Number of bytes to move + +; Working storage for BNKCPY + +XBCSRC: DEFS 2 +XBCDST: DEFS 2 + DEFS 32 +BCSTK: ; Temp stack for BNKCPY +BCSSAV: DEFW 2 ; To save original stack + +; The P112 does not need this buffer, but other versions might + + IF INROM OR [NOT IBMOVS] + DSEG +IBMVBF: DEFS 256 ; Inter-bank move buffer + ENDIF + +;======================= End of IBMV-DX =========================== + \ No newline at end of file diff --git a/Source/BPBIOS/ibmv-ww.z80 b/Source/BPBIOS/ibmv-ww.z80 new file mode 100644 index 00000000..ff73b0d9 --- /dev/null +++ b/Source/BPBIOS/ibmv-ww.z80 @@ -0,0 +1,211 @@ +;:::::::::::::::::::::::::::::::::::::::***************************** +; IBMOVE - Inter-Bank Move Routines ***** Hardware-Specific ***** +; for RomWBW HBIOS ***************************** +; +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Move Data - Possibly between banks. This resembles CP/M 3, but +; usage of the HL and DE registers is reversed. +; Enter: HL = Source Address +; DE = Destination Address +; BC = Number of bytes to move +; Exit : None +; Uses : AF,BC,DE,HL +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +MOVE: + JP HBX_COPY + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Routine to Switch to Local Stack for Banked Operations +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +BIOSTK: DEFB 0 ; NOP if not currently in bank, + ; ..RET if we are + LD (USP-7),HL ; Save entry HL + POP HL ; Retrieve caller's return address from stack + LD (USP-5),HL ; ..and set in our stack for local return + DI ; No interrupts while we play with the stack + LD (USP),SP ; Save User's Stack Pointer + LD SP,USP-1 ; ..and point locally, saving 1 byte for Bank + PUSH AF ; Save entry A and Flags + LD A,(CURBNK) ; Get current bank + LD (USP-1),A ; ..and save for exitting + LD A,0C9H ; Disable other calls here + LD (BIOSTK),A ; ..by poking a RETurn at entry + POP AF ; Restore entry AF + LD HL,USRSTK ; Set banked return address + PUSH HL ; ..at USP-2 & 3 + LD SP,USP-7 ; Point stack pointer to do local return + POP HL ; .restoring entry HL +;WW EI ; ..enabling interrupts + RET ; And return to caller + +; Restore User Stack and Bank Routine + +USRSTK: PUSH AF + LD A,(USP-1) ; Get bank control byte from entry + LD (CURBNK),A ; WW: I ADDED THIS, IS IT RIGHT??? + CALL HBX_SETBNK + XOR A + LD (BIOSTK),A ; Patch NOP back in at start of code + POP AF + LD SP,(USP) ; Restore user stack + RET ; And return to caller + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Restore Bank and Stack Ptr to Entry and Jump to (HL) +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRCLR: PUSH AF ; Save any entry in AF + LD A,(USP-1) ; Get bank control byte + LD (CURBNK),A ; WW: I ADDED THIS, IS IT RIGHT??? + CALL HBX_SETBNK + XOR A + LD (BIOSTK),A ; Patch NOP to enable stack switcher + POP AF + LD SP,(USP) ; Restore User Stack + JP (HL) ; ..and jump to vector + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Abort a Process (possibly in Alternate Bank) and Warm Boot +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +ABORT: LD SP,USP ; Insure stack is in Common Memory + LD A,(TPABNK) + CALL SELBNK ; Insure TPA in Context + XOR A + LD (BIOSTK),A ; Remove patch + RST 0 ; ..And Warm Boot + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Return Current Memory Bank in Context +; Entry: none +; Exit : A = Current Memory Bank +; Uses : AF +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +RETMEM: LD A,(CURBNK) + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Bank into context. Save all Registers. +; A = Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SELMEM: LD (USRBNK),A ; Update user bank + ;..fall thru to set specified bank.. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; SELBNK - Switch Memory Bank to Bank in A and show as current. +; Must preserve all Registers including Flags. +; All Bank Switching MUST be done by this routine +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SELBNK: PUSH AF ; Save regs +SELBN0: LD (CURBNK),A ; Save as current bank # + CALL HBX_SETBNK + POP AF ; restore regs + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Bank for DMA Xfer. Preserve All Registers +; A = Bank Number +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +SETBNK: LD (DMABNK),A + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Banks for Inter-Bank Xfer. Save all Registers. +; B = Destination Bank, C = Source Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +XMOVE: + JP HBX_XCOPY + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Select System Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +GOSYSB: PUSH AF + LD A,(SYSBNK) ; Get system bank + JR SELBN0 ; ..and set + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Set Bank for FRJP and FRCALL (Reg A) +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +STFARC: LD (JPBNK),A + RET + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Jump to (HL) in Alternate Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRJP: CALL BIOSTK ; Insure we are in a common stack + PUSH AF + LD A,(JPBNK) + CALL SELBNK ; Select the destination bank + POP AF + JP (HL) ; ..and go + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load A,(HL) from Alternate Bank (in Reg C) +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRGETB: + JP HBX_FRGETB + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load DE,(HL) from Alternate Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRGETW: + JP HBX_FRGETW + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load (HL),A to Alternate Bank (in Reg C) +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRPUTB: + JP HBX_FRPUTB + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Load (HL),DE to Alternate Bank +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +FRPUTW: + JP HBX_FRPUTW + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + DSEG + +JPBNK: DEFS 1 ; Bank # for Far Jump or Call +USRBNK: DEFS 1 ; User's selected bank # +CURBNK: DEFS 1 ; Current bank # +DMABNK: DEFS 1 ; Target bank # for disk xfers + DEFS 64 ; 32 level stack +USP: DEFS 2 ; User stack pointer +ASAVE: DEFS 1 ; Temp storage for User's A-Register + +;; Z-180 DMA transfer block for inter-bank moves +; +;ISRC: DEFS 2 ; Source Segment address +; DEFS 1 ; ..Source Bank in physical RAM +;IDST: DEFS 2 ; Destination Segment address +; DEFS 1 ; ..Destination Bank in physical RAM +;ICNT: DEFS 2 ; Number of bytes to move + +; The P112 does not need this buffer, but other versions might + + IF INROM OR [NOT IBMOVS] + DSEG +IBMVBF: DEFS 256 ; Inter-bank move buffer + ENDIF + +;======================= End of IBMV-DX =========================== diff --git a/Source/BPBIOS/icfg-dx.z80 b/Source/BPBIOS/icfg-dx.z80 new file mode 100644 index 00000000..e08421ca --- /dev/null +++ b/Source/BPBIOS/icfg-dx.z80 @@ -0,0 +1,187 @@ +;::::::::::::::::::::::::::::::::::::::::::******************************** +; I/O Configuration Area ****** Hardware Specific ****** +; - D-X Designs Pty Ltd P112 - ******************************** +; +; 1.2 - 22 Aug 01 - Cleaned up for GPL release. HFB +; 1.1 - 18 Apr 97 - Modified to Add GIDE Definitions. HFB +; 1.0 - 27 Jan 97 - Initial Release for P112. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +;*** * * * * * * * * * * W A R N I N G ! ! ! * * * * * * * * * * * * *** +;*** Do NOT alter any of the ordering or sizing of the following data *** +;*** locations or utilities will probably NOT function correctly! *** +;*** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *** + + CSEG +; Form Option Byte 1 + +OPT1 DEFL [BANKED AND 1] ; Bit 0 = unbanked/banked +OPT1 DEFL OPT1+[INROM AND 2] ; Bit 1 = Bank in RAM/Bank in ROM +OPT1 DEFL OPT1+[AUTOSL AND 4] ; Bit 2 = DPB Fixed/DPB Assignable +OPT1 DEFL OPT1+[BANKED AND ZSDOS2 AND 8] ; Bit 3 = ALV/CSV in Banked RAM +; Bit 7 is "Lock" flag for system loads +; If set to 1, LDSYS will not load a +; new system over the running one. + + DEFB 'B/P-DX' ; Six-char string for Text ID Matching + +CONFIG: +IOBYT: DEFB 10010100B ; LST:=PIO, AUX:=COM2, CON:=COM1 +SYSDRV: DEFB 0 ; System drive (a=0, b=1...) +OPTF1: DEFB OPT1 ; Option flags + +UABNK: DEFB BNKU ; Beginning of User Bank(s) if Banked System + ; (Ending Bank denoted by SYSBNK-1) +TPABNK: DEFB BNK0 ; TPA Bank Number if Banked System +SYSBNK: DEFB BNK2 ; Beginning of System Bank(s) if Banked System + ; (Ending Bank denoted by RAMBNK-1) +RAMBNK: DEFB BNK3 ; Base Bank Number for Ram Disk +MAXBNK: DEFB BNKM ; Highest permissible Bank Number +HICOMM: DEFB 80H ; Page address of start of high Common Memory +DPBSZ: DEFB DPBSIZ ; Size of DPB +NUMDPB: + IF BANKED + DEFB 0 ; Number of DPBs in Common RAM + DEFB NRDPB ; Number of Banked DPBs + ELSE + DEFB NRDPB ; Number of DPBs in Common RAM + DEFB 0 ; Number of Banked DPBs + ENDIF +DPBADR: + IF BANKED + DEFW 0 ; Pointer to dirst Common RAM XDPB + DEFW DPB ; Pointer to first XDPB in Alternate Bank + ELSE + DEFW DPB ; Pointer to first Common RAM XDPB + DEFW 0 ; Pointer to first XDPB in Alternate Bank + ENDIF + +AUTOCMD: DEFB 8,'ZEX Z41 ',0 ; Startup command for Z3 + +ENVADR: DEFW Z3ENV ; Pointer to the Environment Descriptor + +;------------ Banked User Area Control Information --------------- +; An existing User Area cannot exist in Bank 0 by decree. The User Area +; can therefore be used as a flag to determine whether such an area exists. +; The Bank Number is set in DEF-xx.LIB. To keep Page 0 equivalent free in +; the user bank, we offset values to 80H (it's just a good number). The +; top of each User Bank is 7FFFH as with all of the switched banks in +; a B/P Bios System. Banked applications should chain themselves together +; sequentially so that the end can be determined and space managed. + +UADAT: DEFB BNKU ; Flag for Banked User Area (0 if None) + DEFW 0080H ; Pointer to Start of User area in Bank + +;---------------- CPU Configuration Information ------------------ + +SPEED: DEFB MHZ ; Set to processor speed value in Configuration +WAITS: DEFB 00010010B ; Number of additional Memory & IO Wait states +; ||||++++--- # of IO Wait States (bits 3-0, only 1 & 0 used) +; ++++------- # of Memory Wait States (bits 7-4, only 5 & 4 used) + +RELOD0: DEFW 2560*MHZ ; 16-bit constant for counter/timer refresh + ; based on 50 mS Interrupts to Down Timer. + ; Use 2560 for 12.288/18.432MHz etc. Crystals, + ; 2500 for 16.000MHz Crystals. + +;-------- Physical Floppy Disk Configuration Information --------- +; The Physical Drive table consists of 5 bytes for each of 4 Floppy Drives +; thereby providing all necessary data to all types of controllers. +; +; 1 - Drive Characteristics Bits. The Bits have the following meanings: +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+---- Disk Size 000=Fixed; 001=8"; 010=5.25"; 011=3.5" (*) +; | | | | +---------- Single-Sided (0); Double-Sided (1) +; | | | +------------ (Reserved for Double-Step(1) in XDPH) +; | | +-------------- Drive Motor Control (1); Motor Always On (0) +; | +---------------- Max Speed is 5.25" (0); 8" & Hard Disk & Hi-Dens (1) +; +------------------ (Reserved for Single(1)/Double(0) Density in XDPH) +; (*) - 3.5" and 5.25" drives are treated the same for many formats with +; the drive bits being reduced to 010B in the BIOS code. +; 2 - Drive Step Rate (1 to 16 in increments of 1) in milliseconds +; 3 - Head Load Time (2 to 254 in increments of 2) in milliseconds +; 4 - Head Unload Time (16 to 240 in increments of 16) in milliseconds +; 5 - Number of Physical Tracks on Drive + +FDCSPEC: DEFB 6BH,3, 4,240,80 ; #1 (3"DSHD,3 mS Step,4mS HLT,255 mS HUT,80t) + DEFB 2AH,6,24,240,40 ; #2 (5"DS,6 mS Step,24mS HLT,255 mS HUT,40t) + DEFB 2AH,4,24,240,80 ; #3 (5"DS,4 mS Step,24mS HLT,255 mS HUT,80t) + DEFB 6AH,3, 4,240,80 ; #4 (5"DS,3 mS Step, 4mS HLT,255 mS HUT,80t) + +MONTIM: DEFB 100 ; Motor On Time (1 to 255) in tenths-of-seconds +SPINUP: DEFB 8 ; Spinup delay (1 to 255) in tenths-of-seconds +MXRTRY: DEFB 4 ; Maximum Number of retries on Floppy Opns + +IVCT: DEFW INTTBL ; Pointer to interrupt vectors + +;-------- Physical Hard Drive Configuration Information ---------- +; Hard Disk data begins w/Controller Type, followed by data for 3 drives. +; The first byte for each drive consists of a byte containing bit codes +; for SCSI Device, Logical Unit, and a bit indicating whether or not the +; drive is physically connected to the system. The configuration should +; match that contained in DPHHD-xx.LIB for Hard Drive partitions. +; Bit 7 6 5 4 3 2 1 0 +; | | | | | | | | +; | | | | | +-+-+-- Physical Device Number (0..6, 7 = Host) +; | | | | +-------- (reserved) +; | | | +---------- 1 = Drive Active, 0 = No Drive +; +-+-+------------ Logical Unit Number (usually 0 or 1) + +;..... +; The Controller Type Byte contains information needed to dictate the specific +; bytes to be used to communicate to a SASI/SCSI-connected Hard Drive. +; Additional bytes will be defined as needed, so please coordinate any +; extensions with the Authors to insure the generality of tools. + +CNTRLR: DEFB 80H ; Controller Types recognized are: + ; 0- Owl 5- Conner SCSI + ; 1- Adaptec ACB-4000A 6- Quantum SCSI + ; 2- Xebec 1410A/Shugart 1610-3 7- Maxtor SCSI + ; 3- Seagate SCSI 8- Syquest SCSI + ; 4- Shugart 1610-4 Minimal SCSI 80H- GIDE (IDE/ATA) + +; First drive (Parameters for Toshiba MK-1544 IDE) + +BITS DEFL 00000000B ; SCSI - Physical Device 0, Logical Unit 0 + ; IDE - Drive 0 = Master +BITS DEFL BITS+[UNIT_0 AND 10H] ; If active, set Bit 4 + +HDRV0: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 581 ; Number of Cylinders + DEFB 2 ; Number of Heads + DEFW 36 ; SCSI - Cylinder # to start reduced write + ; IDE - Number of Sectors Per Track + DEFW 0000 ; Cylinder # to start precompensation + DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) + +; Second drive (Parameters for Seagate ST-125N SCSI) + +BITS DEFL 00000001B ; SCSI - Physical Device 1, Logical Unit 0 + ; IDE - Drive 1 = Slave +BITS DEFL BITS+[UNIT_1 AND 10H] ; If active, set Bit 4 + +HDRV1: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 ; Syquest ST-125N + DEFB 4 + DEFW 0000 + DEFW 0000 + DEFB 0 + +; Third drive (Parameters for Miniscribe 8425 SCSI) + +BITS DEFL 00000010B ; Physical Device 2, Logical Unit 0 + ; IDE - (undefined) +BITS DEFL BITS+[UNIT_2 AND 10H] ; If active, set Bit 4 + + DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 + DEFB 4 + DEFW 615 + DEFW 300 + DEFB 2 + + DEFB 0,0,0,0,0 ; (Reserved) + +;======= End of Fixed Config ======== Device Config follows ======== + \ No newline at end of file diff --git a/Source/BPBIOS/icfg-z33.z80 b/Source/BPBIOS/icfg-z33.z80 new file mode 100644 index 00000000..ee827f3f --- /dev/null +++ b/Source/BPBIOS/icfg-z33.z80 @@ -0,0 +1,187 @@ +;::::::::::::::::::::::::::::::::::::::::::******************************** +; I/O Configuration Area ****** Hardware Specific ****** +; - D-X Designs Pty Ltd P112 - ******************************** +; +; 1.2 - 22 Aug 01 - Cleaned up for GPL release. HFB +; 1.1 - 18 Apr 97 - Modified to Add GIDE Definitions. HFB +; 1.0 - 27 Jan 97 - Initial Release for P112. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +;*** * * * * * * * * * * W A R N I N G ! ! ! * * * * * * * * * * * * *** +;*** Do NOT alter any of the ordering or sizing of the following data *** +;*** locations or utilities will probably NOT function correctly! *** +;*** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *** + + CSEG +; Form Option Byte 1 + +OPT1 DEFL [BANKED AND 1] ; Bit 0 = unbanked/banked +OPT1 DEFL OPT1+[INROM AND 2] ; Bit 1 = Bank in RAM/Bank in ROM +OPT1 DEFL OPT1+[AUTOSL AND 4] ; Bit 2 = DPB Fixed/DPB Assignable +OPT1 DEFL OPT1+[BANKED AND ZSDOS2 AND 8] ; Bit 3 = ALV/CSV in Banked RAM +; Bit 7 is "Lock" flag for system loads +; If set to 1, LDSYS will not load a +; new system over the running one. + + DEFB 'B/P-DX' ; Six-char string for Text ID Matching + +CONFIG: +IOBYT: DEFB 10010100B ; LST:=PIO, AUX:=COM2, CON:=COM1 +SYSDRV: DEFB 0 ; System drive (a=0, b=1...) +OPTF1: DEFB OPT1 ; Option flags + +UABNK: DEFB BNKU ; Beginning of User Bank(s) if Banked System + ; (Ending Bank denoted by SYSBNK-1) +TPABNK: DEFB BNK0 ; TPA Bank Number if Banked System +SYSBNK: DEFB BNK2 ; Beginning of System Bank(s) if Banked System + ; (Ending Bank denoted by RAMBNK-1) +RAMBNK: DEFB BNK3 ; Base Bank Number for Ram Disk +MAXBNK: DEFB BNKM ; Highest permissible Bank Number +HICOMM: DEFB 80H ; Page address of start of high Common Memory +DPBSZ: DEFB DPBSIZ ; Size of DPB +NUMDPB: + IF BANKED + DEFB 0 ; Number of DPBs in Common RAM + DEFB NRDPB ; Number of Banked DPBs + ELSE + DEFB NRDPB ; Number of DPBs in Common RAM + DEFB 0 ; Number of Banked DPBs + ENDIF +DPBADR: + IF BANKED + DEFW 0 ; Pointer to dirst Common RAM XDPB + DEFW DPB ; Pointer to first XDPB in Alternate Bank + ELSE + DEFW DPB ; Pointer to first Common RAM XDPB + DEFW 0 ; Pointer to first XDPB in Alternate Bank + ENDIF + +AUTOCMD: DEFB 8,'ZEX Z33 ',0 ; Startup command for Z3 + +ENVADR: DEFW Z3ENV ; Pointer to the Environment Descriptor + +;------------ Banked User Area Control Information --------------- +; An existing User Area cannot exist in Bank 0 by decree. The User Area +; can therefore be used as a flag to determine whether such an area exists. +; The Bank Number is set in DEF-xx.LIB. To keep Page 0 equivalent free in +; the user bank, we offset values to 80H (it's just a good number). The +; top of each User Bank is 7FFFH as with all of the switched banks in +; a B/P Bios System. Banked applications should chain themselves together +; sequentially so that the end can be determined and space managed. + +UADAT: DEFB BNKU ; Flag for Banked User Area (0 if None) + DEFW 0080H ; Pointer to Start of User area in Bank + +;---------------- CPU Configuration Information ------------------ + +SPEED: DEFB MHZ ; Set to processor speed value in Configuration +WAITS: DEFB 00010010B ; Number of additional Memory & IO Wait states +; ||||++++--- # of IO Wait States (bits 3-0, only 1 & 0 used) +; ++++------- # of Memory Wait States (bits 7-4, only 5 & 4 used) + +RELOD0: DEFW 2560*MHZ ; 16-bit constant for counter/timer refresh + ; based on 50 mS Interrupts to Down Timer. + ; Use 2560 for 12.288/18.432MHz etc. Crystals, + ; 2500 for 16.000MHz Crystals. + +;-------- Physical Floppy Disk Configuration Information --------- +; The Physical Drive table consists of 5 bytes for each of 4 Floppy Drives +; thereby providing all necessary data to all types of controllers. +; +; 1 - Drive Characteristics Bits. The Bits have the following meanings: +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+---- Disk Size 000=Fixed; 001=8"; 010=5.25"; 011=3.5" (*) +; | | | | +---------- Single-Sided (0); Double-Sided (1) +; | | | +------------ (Reserved for Double-Step(1) in XDPH) +; | | +-------------- Drive Motor Control (1); Motor Always On (0) +; | +---------------- Max Speed is 5.25" (0); 8" & Hard Disk & Hi-Dens (1) +; +------------------ (Reserved for Single(1)/Double(0) Density in XDPH) +; (*) - 3.5" and 5.25" drives are treated the same for many formats with +; the drive bits being reduced to 010B in the BIOS code. +; 2 - Drive Step Rate (1 to 16 in increments of 1) in milliseconds +; 3 - Head Load Time (2 to 254 in increments of 2) in milliseconds +; 4 - Head Unload Time (16 to 240 in increments of 16) in milliseconds +; 5 - Number of Physical Tracks on Drive + +FDCSPEC: DEFB 6BH,3, 4,240,80 ; #1 (3"DSHD,3 mS Step,4mS HLT,255 mS HUT,80t) + DEFB 2AH,6,24,240,40 ; #2 (5"DS,6 mS Step,24mS HLT,255 mS HUT,40t) + DEFB 2AH,4,24,240,80 ; #3 (5"DS,4 mS Step,24mS HLT,255 mS HUT,80t) + DEFB 6AH,3, 4,240,80 ; #4 (5"DS,3 mS Step, 4mS HLT,255 mS HUT,80t) + +MONTIM: DEFB 100 ; Motor On Time (1 to 255) in tenths-of-seconds +SPINUP: DEFB 8 ; Spinup delay (1 to 255) in tenths-of-seconds +MXRTRY: DEFB 4 ; Maximum Number of retries on Floppy Opns + +IVCT: DEFW INTTBL ; Pointer to interrupt vectors + +;-------- Physical Hard Drive Configuration Information ---------- +; Hard Disk data begins w/Controller Type, followed by data for 3 drives. +; The first byte for each drive consists of a byte containing bit codes +; for SCSI Device, Logical Unit, and a bit indicating whether or not the +; drive is physically connected to the system. The configuration should +; match that contained in DPHHD-xx.LIB for Hard Drive partitions. +; Bit 7 6 5 4 3 2 1 0 +; | | | | | | | | +; | | | | | +-+-+-- Physical Device Number (0..6, 7 = Host) +; | | | | +-------- (reserved) +; | | | +---------- 1 = Drive Active, 0 = No Drive +; +-+-+------------ Logical Unit Number (usually 0 or 1) + +;..... +; The Controller Type Byte contains information needed to dictate the specific +; bytes to be used to communicate to a SASI/SCSI-connected Hard Drive. +; Additional bytes will be defined as needed, so please coordinate any +; extensions with the Authors to insure the generality of tools. + +CNTRLR: DEFB 80H ; Controller Types recognized are: + ; 0- Owl 5- Conner SCSI + ; 1- Adaptec ACB-4000A 6- Quantum SCSI + ; 2- Xebec 1410A/Shugart 1610-3 7- Maxtor SCSI + ; 3- Seagate SCSI 8- Syquest SCSI + ; 4- Shugart 1610-4 Minimal SCSI 80H- GIDE (IDE/ATA) + +; First drive (Parameters for Toshiba MK-1544 IDE) + +BITS DEFL 00000000B ; SCSI - Physical Device 0, Logical Unit 0 + ; IDE - Drive 0 = Master +BITS DEFL BITS+[UNIT_0 AND 10H] ; If active, set Bit 4 + +HDRV0: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 581 ; Number of Cylinders + DEFB 2 ; Number of Heads + DEFW 36 ; SCSI - Cylinder # to start reduced write + ; IDE - Number of Sectors Per Track + DEFW 0000 ; Cylinder # to start precompensation + DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) + +; Second drive (Parameters for Seagate ST-125N SCSI) + +BITS DEFL 00000001B ; SCSI - Physical Device 1, Logical Unit 0 + ; IDE - Drive 1 = Slave +BITS DEFL BITS+[UNIT_1 AND 10H] ; If active, set Bit 4 + +HDRV1: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 ; Syquest ST-125N + DEFB 4 + DEFW 0000 + DEFW 0000 + DEFB 0 + +; Third drive (Parameters for Miniscribe 8425 SCSI) + +BITS DEFL 00000010B ; Physical Device 2, Logical Unit 0 + ; IDE - (undefined) +BITS DEFL BITS+[UNIT_2 AND 10H] ; If active, set Bit 4 + + DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 + DEFB 4 + DEFW 615 + DEFW 300 + DEFB 2 + + DEFB 0,0,0,0,0 ; (Reserved) + +;======= End of Fixed Config ======== Device Config follows ======== + \ No newline at end of file diff --git a/Source/BPBIOS/icfg-z34.z80 b/Source/BPBIOS/icfg-z34.z80 new file mode 100644 index 00000000..c5193f64 --- /dev/null +++ b/Source/BPBIOS/icfg-z34.z80 @@ -0,0 +1,187 @@ +;::::::::::::::::::::::::::::::::::::::::::******************************** +; I/O Configuration Area ****** Hardware Specific ****** +; - D-X Designs Pty Ltd P112 - ******************************** +; +; 1.2 - 22 Aug 01 - Cleaned up for GPL release. HFB +; 1.1 - 18 Apr 97 - Modified to Add GIDE Definitions. HFB +; 1.0 - 27 Jan 97 - Initial Release for P112. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +;*** * * * * * * * * * * W A R N I N G ! ! ! * * * * * * * * * * * * *** +;*** Do NOT alter any of the ordering or sizing of the following data *** +;*** locations or utilities will probably NOT function correctly! *** +;*** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *** + + CSEG +; Form Option Byte 1 + +OPT1 DEFL [BANKED AND 1] ; Bit 0 = unbanked/banked +OPT1 DEFL OPT1+[INROM AND 2] ; Bit 1 = Bank in RAM/Bank in ROM +OPT1 DEFL OPT1+[AUTOSL AND 4] ; Bit 2 = DPB Fixed/DPB Assignable +OPT1 DEFL OPT1+[BANKED AND ZSDOS2 AND 8] ; Bit 3 = ALV/CSV in Banked RAM +; Bit 7 is "Lock" flag for system loads +; If set to 1, LDSYS will not load a +; new system over the running one. + + DEFB 'B/P-DX' ; Six-char string for Text ID Matching + +CONFIG: +IOBYT: DEFB 10010100B ; LST:=PIO, AUX:=COM2, CON:=COM1 +SYSDRV: DEFB 0 ; System drive (a=0, b=1...) +OPTF1: DEFB OPT1 ; Option flags + +UABNK: DEFB BNKU ; Beginning of User Bank(s) if Banked System + ; (Ending Bank denoted by SYSBNK-1) +TPABNK: DEFB BNK0 ; TPA Bank Number if Banked System +SYSBNK: DEFB BNK2 ; Beginning of System Bank(s) if Banked System + ; (Ending Bank denoted by RAMBNK-1) +RAMBNK: DEFB BNK3 ; Base Bank Number for Ram Disk +MAXBNK: DEFB BNKM ; Highest permissible Bank Number +HICOMM: DEFB 80H ; Page address of start of high Common Memory +DPBSZ: DEFB DPBSIZ ; Size of DPB +NUMDPB: + IF BANKED + DEFB 0 ; Number of DPBs in Common RAM + DEFB NRDPB ; Number of Banked DPBs + ELSE + DEFB NRDPB ; Number of DPBs in Common RAM + DEFB 0 ; Number of Banked DPBs + ENDIF +DPBADR: + IF BANKED + DEFW 0 ; Pointer to dirst Common RAM XDPB + DEFW DPB ; Pointer to first XDPB in Alternate Bank + ELSE + DEFW DPB ; Pointer to first Common RAM XDPB + DEFW 0 ; Pointer to first XDPB in Alternate Bank + ENDIF + +AUTOCMD: DEFB 8,'ZEX Z34 ',0 ; Startup command for Z3 + +ENVADR: DEFW Z3ENV ; Pointer to the Environment Descriptor + +;------------ Banked User Area Control Information --------------- +; An existing User Area cannot exist in Bank 0 by decree. The User Area +; can therefore be used as a flag to determine whether such an area exists. +; The Bank Number is set in DEF-xx.LIB. To keep Page 0 equivalent free in +; the user bank, we offset values to 80H (it's just a good number). The +; top of each User Bank is 7FFFH as with all of the switched banks in +; a B/P Bios System. Banked applications should chain themselves together +; sequentially so that the end can be determined and space managed. + +UADAT: DEFB BNKU ; Flag for Banked User Area (0 if None) + DEFW 0080H ; Pointer to Start of User area in Bank + +;---------------- CPU Configuration Information ------------------ + +SPEED: DEFB MHZ ; Set to processor speed value in Configuration +WAITS: DEFB 00010010B ; Number of additional Memory & IO Wait states +; ||||++++--- # of IO Wait States (bits 3-0, only 1 & 0 used) +; ++++------- # of Memory Wait States (bits 7-4, only 5 & 4 used) + +RELOD0: DEFW 2560*MHZ ; 16-bit constant for counter/timer refresh + ; based on 50 mS Interrupts to Down Timer. + ; Use 2560 for 12.288/18.432MHz etc. Crystals, + ; 2500 for 16.000MHz Crystals. + +;-------- Physical Floppy Disk Configuration Information --------- +; The Physical Drive table consists of 5 bytes for each of 4 Floppy Drives +; thereby providing all necessary data to all types of controllers. +; +; 1 - Drive Characteristics Bits. The Bits have the following meanings: +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+---- Disk Size 000=Fixed; 001=8"; 010=5.25"; 011=3.5" (*) +; | | | | +---------- Single-Sided (0); Double-Sided (1) +; | | | +------------ (Reserved for Double-Step(1) in XDPH) +; | | +-------------- Drive Motor Control (1); Motor Always On (0) +; | +---------------- Max Speed is 5.25" (0); 8" & Hard Disk & Hi-Dens (1) +; +------------------ (Reserved for Single(1)/Double(0) Density in XDPH) +; (*) - 3.5" and 5.25" drives are treated the same for many formats with +; the drive bits being reduced to 010B in the BIOS code. +; 2 - Drive Step Rate (1 to 16 in increments of 1) in milliseconds +; 3 - Head Load Time (2 to 254 in increments of 2) in milliseconds +; 4 - Head Unload Time (16 to 240 in increments of 16) in milliseconds +; 5 - Number of Physical Tracks on Drive + +FDCSPEC: DEFB 6BH,3, 4,240,80 ; #1 (3"DSHD,3 mS Step,4mS HLT,255 mS HUT,80t) + DEFB 2AH,6,24,240,40 ; #2 (5"DS,6 mS Step,24mS HLT,255 mS HUT,40t) + DEFB 2AH,4,24,240,80 ; #3 (5"DS,4 mS Step,24mS HLT,255 mS HUT,80t) + DEFB 6AH,3, 4,240,80 ; #4 (5"DS,3 mS Step, 4mS HLT,255 mS HUT,80t) + +MONTIM: DEFB 100 ; Motor On Time (1 to 255) in tenths-of-seconds +SPINUP: DEFB 8 ; Spinup delay (1 to 255) in tenths-of-seconds +MXRTRY: DEFB 4 ; Maximum Number of retries on Floppy Opns + +IVCT: DEFW INTTBL ; Pointer to interrupt vectors + +;-------- Physical Hard Drive Configuration Information ---------- +; Hard Disk data begins w/Controller Type, followed by data for 3 drives. +; The first byte for each drive consists of a byte containing bit codes +; for SCSI Device, Logical Unit, and a bit indicating whether or not the +; drive is physically connected to the system. The configuration should +; match that contained in DPHHD-xx.LIB for Hard Drive partitions. +; Bit 7 6 5 4 3 2 1 0 +; | | | | | | | | +; | | | | | +-+-+-- Physical Device Number (0..6, 7 = Host) +; | | | | +-------- (reserved) +; | | | +---------- 1 = Drive Active, 0 = No Drive +; +-+-+------------ Logical Unit Number (usually 0 or 1) + +;..... +; The Controller Type Byte contains information needed to dictate the specific +; bytes to be used to communicate to a SASI/SCSI-connected Hard Drive. +; Additional bytes will be defined as needed, so please coordinate any +; extensions with the Authors to insure the generality of tools. + +CNTRLR: DEFB 80H ; Controller Types recognized are: + ; 0- Owl 5- Conner SCSI + ; 1- Adaptec ACB-4000A 6- Quantum SCSI + ; 2- Xebec 1410A/Shugart 1610-3 7- Maxtor SCSI + ; 3- Seagate SCSI 8- Syquest SCSI + ; 4- Shugart 1610-4 Minimal SCSI 80H- GIDE (IDE/ATA) + +; First drive (Parameters for Toshiba MK-1544 IDE) + +BITS DEFL 00000000B ; SCSI - Physical Device 0, Logical Unit 0 + ; IDE - Drive 0 = Master +BITS DEFL BITS+[UNIT_0 AND 10H] ; If active, set Bit 4 + +HDRV0: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 581 ; Number of Cylinders + DEFB 2 ; Number of Heads + DEFW 36 ; SCSI - Cylinder # to start reduced write + ; IDE - Number of Sectors Per Track + DEFW 0000 ; Cylinder # to start precompensation + DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) + +; Second drive (Parameters for Seagate ST-125N SCSI) + +BITS DEFL 00000001B ; SCSI - Physical Device 1, Logical Unit 0 + ; IDE - Drive 1 = Slave +BITS DEFL BITS+[UNIT_1 AND 10H] ; If active, set Bit 4 + +HDRV1: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 ; Syquest ST-125N + DEFB 4 + DEFW 0000 + DEFW 0000 + DEFB 0 + +; Third drive (Parameters for Miniscribe 8425 SCSI) + +BITS DEFL 00000010B ; Physical Device 2, Logical Unit 0 + ; IDE - (undefined) +BITS DEFL BITS+[UNIT_2 AND 10H] ; If active, set Bit 4 + + DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 + DEFB 4 + DEFW 615 + DEFW 300 + DEFB 2 + + DEFB 0,0,0,0,0 ; (Reserved) + +;======= End of Fixed Config ======== Device Config follows ======== + \ No newline at end of file diff --git a/Source/BPBIOS/icfg-z41.z80 b/Source/BPBIOS/icfg-z41.z80 new file mode 100644 index 00000000..e08421ca --- /dev/null +++ b/Source/BPBIOS/icfg-z41.z80 @@ -0,0 +1,187 @@ +;::::::::::::::::::::::::::::::::::::::::::******************************** +; I/O Configuration Area ****** Hardware Specific ****** +; - D-X Designs Pty Ltd P112 - ******************************** +; +; 1.2 - 22 Aug 01 - Cleaned up for GPL release. HFB +; 1.1 - 18 Apr 97 - Modified to Add GIDE Definitions. HFB +; 1.0 - 27 Jan 97 - Initial Release for P112. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +;*** * * * * * * * * * * W A R N I N G ! ! ! * * * * * * * * * * * * *** +;*** Do NOT alter any of the ordering or sizing of the following data *** +;*** locations or utilities will probably NOT function correctly! *** +;*** * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *** + + CSEG +; Form Option Byte 1 + +OPT1 DEFL [BANKED AND 1] ; Bit 0 = unbanked/banked +OPT1 DEFL OPT1+[INROM AND 2] ; Bit 1 = Bank in RAM/Bank in ROM +OPT1 DEFL OPT1+[AUTOSL AND 4] ; Bit 2 = DPB Fixed/DPB Assignable +OPT1 DEFL OPT1+[BANKED AND ZSDOS2 AND 8] ; Bit 3 = ALV/CSV in Banked RAM +; Bit 7 is "Lock" flag for system loads +; If set to 1, LDSYS will not load a +; new system over the running one. + + DEFB 'B/P-DX' ; Six-char string for Text ID Matching + +CONFIG: +IOBYT: DEFB 10010100B ; LST:=PIO, AUX:=COM2, CON:=COM1 +SYSDRV: DEFB 0 ; System drive (a=0, b=1...) +OPTF1: DEFB OPT1 ; Option flags + +UABNK: DEFB BNKU ; Beginning of User Bank(s) if Banked System + ; (Ending Bank denoted by SYSBNK-1) +TPABNK: DEFB BNK0 ; TPA Bank Number if Banked System +SYSBNK: DEFB BNK2 ; Beginning of System Bank(s) if Banked System + ; (Ending Bank denoted by RAMBNK-1) +RAMBNK: DEFB BNK3 ; Base Bank Number for Ram Disk +MAXBNK: DEFB BNKM ; Highest permissible Bank Number +HICOMM: DEFB 80H ; Page address of start of high Common Memory +DPBSZ: DEFB DPBSIZ ; Size of DPB +NUMDPB: + IF BANKED + DEFB 0 ; Number of DPBs in Common RAM + DEFB NRDPB ; Number of Banked DPBs + ELSE + DEFB NRDPB ; Number of DPBs in Common RAM + DEFB 0 ; Number of Banked DPBs + ENDIF +DPBADR: + IF BANKED + DEFW 0 ; Pointer to dirst Common RAM XDPB + DEFW DPB ; Pointer to first XDPB in Alternate Bank + ELSE + DEFW DPB ; Pointer to first Common RAM XDPB + DEFW 0 ; Pointer to first XDPB in Alternate Bank + ENDIF + +AUTOCMD: DEFB 8,'ZEX Z41 ',0 ; Startup command for Z3 + +ENVADR: DEFW Z3ENV ; Pointer to the Environment Descriptor + +;------------ Banked User Area Control Information --------------- +; An existing User Area cannot exist in Bank 0 by decree. The User Area +; can therefore be used as a flag to determine whether such an area exists. +; The Bank Number is set in DEF-xx.LIB. To keep Page 0 equivalent free in +; the user bank, we offset values to 80H (it's just a good number). The +; top of each User Bank is 7FFFH as with all of the switched banks in +; a B/P Bios System. Banked applications should chain themselves together +; sequentially so that the end can be determined and space managed. + +UADAT: DEFB BNKU ; Flag for Banked User Area (0 if None) + DEFW 0080H ; Pointer to Start of User area in Bank + +;---------------- CPU Configuration Information ------------------ + +SPEED: DEFB MHZ ; Set to processor speed value in Configuration +WAITS: DEFB 00010010B ; Number of additional Memory & IO Wait states +; ||||++++--- # of IO Wait States (bits 3-0, only 1 & 0 used) +; ++++------- # of Memory Wait States (bits 7-4, only 5 & 4 used) + +RELOD0: DEFW 2560*MHZ ; 16-bit constant for counter/timer refresh + ; based on 50 mS Interrupts to Down Timer. + ; Use 2560 for 12.288/18.432MHz etc. Crystals, + ; 2500 for 16.000MHz Crystals. + +;-------- Physical Floppy Disk Configuration Information --------- +; The Physical Drive table consists of 5 bytes for each of 4 Floppy Drives +; thereby providing all necessary data to all types of controllers. +; +; 1 - Drive Characteristics Bits. The Bits have the following meanings: +; D D D D D D D D +; 7 6 5 4 3 2 1 0 +; | | | | | +-+-+---- Disk Size 000=Fixed; 001=8"; 010=5.25"; 011=3.5" (*) +; | | | | +---------- Single-Sided (0); Double-Sided (1) +; | | | +------------ (Reserved for Double-Step(1) in XDPH) +; | | +-------------- Drive Motor Control (1); Motor Always On (0) +; | +---------------- Max Speed is 5.25" (0); 8" & Hard Disk & Hi-Dens (1) +; +------------------ (Reserved for Single(1)/Double(0) Density in XDPH) +; (*) - 3.5" and 5.25" drives are treated the same for many formats with +; the drive bits being reduced to 010B in the BIOS code. +; 2 - Drive Step Rate (1 to 16 in increments of 1) in milliseconds +; 3 - Head Load Time (2 to 254 in increments of 2) in milliseconds +; 4 - Head Unload Time (16 to 240 in increments of 16) in milliseconds +; 5 - Number of Physical Tracks on Drive + +FDCSPEC: DEFB 6BH,3, 4,240,80 ; #1 (3"DSHD,3 mS Step,4mS HLT,255 mS HUT,80t) + DEFB 2AH,6,24,240,40 ; #2 (5"DS,6 mS Step,24mS HLT,255 mS HUT,40t) + DEFB 2AH,4,24,240,80 ; #3 (5"DS,4 mS Step,24mS HLT,255 mS HUT,80t) + DEFB 6AH,3, 4,240,80 ; #4 (5"DS,3 mS Step, 4mS HLT,255 mS HUT,80t) + +MONTIM: DEFB 100 ; Motor On Time (1 to 255) in tenths-of-seconds +SPINUP: DEFB 8 ; Spinup delay (1 to 255) in tenths-of-seconds +MXRTRY: DEFB 4 ; Maximum Number of retries on Floppy Opns + +IVCT: DEFW INTTBL ; Pointer to interrupt vectors + +;-------- Physical Hard Drive Configuration Information ---------- +; Hard Disk data begins w/Controller Type, followed by data for 3 drives. +; The first byte for each drive consists of a byte containing bit codes +; for SCSI Device, Logical Unit, and a bit indicating whether or not the +; drive is physically connected to the system. The configuration should +; match that contained in DPHHD-xx.LIB for Hard Drive partitions. +; Bit 7 6 5 4 3 2 1 0 +; | | | | | | | | +; | | | | | +-+-+-- Physical Device Number (0..6, 7 = Host) +; | | | | +-------- (reserved) +; | | | +---------- 1 = Drive Active, 0 = No Drive +; +-+-+------------ Logical Unit Number (usually 0 or 1) + +;..... +; The Controller Type Byte contains information needed to dictate the specific +; bytes to be used to communicate to a SASI/SCSI-connected Hard Drive. +; Additional bytes will be defined as needed, so please coordinate any +; extensions with the Authors to insure the generality of tools. + +CNTRLR: DEFB 80H ; Controller Types recognized are: + ; 0- Owl 5- Conner SCSI + ; 1- Adaptec ACB-4000A 6- Quantum SCSI + ; 2- Xebec 1410A/Shugart 1610-3 7- Maxtor SCSI + ; 3- Seagate SCSI 8- Syquest SCSI + ; 4- Shugart 1610-4 Minimal SCSI 80H- GIDE (IDE/ATA) + +; First drive (Parameters for Toshiba MK-1544 IDE) + +BITS DEFL 00000000B ; SCSI - Physical Device 0, Logical Unit 0 + ; IDE - Drive 0 = Master +BITS DEFL BITS+[UNIT_0 AND 10H] ; If active, set Bit 4 + +HDRV0: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 581 ; Number of Cylinders + DEFB 2 ; Number of Heads + DEFW 36 ; SCSI - Cylinder # to start reduced write + ; IDE - Number of Sectors Per Track + DEFW 0000 ; Cylinder # to start precompensation + DEFB 0 ; Step Rate (0=3ms, 1=28us, 2=12us) + +; Second drive (Parameters for Seagate ST-125N SCSI) + +BITS DEFL 00000001B ; SCSI - Physical Device 1, Logical Unit 0 + ; IDE - Drive 1 = Slave +BITS DEFL BITS+[UNIT_1 AND 10H] ; If active, set Bit 4 + +HDRV1: DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 ; Syquest ST-125N + DEFB 4 + DEFW 0000 + DEFW 0000 + DEFB 0 + +; Third drive (Parameters for Miniscribe 8425 SCSI) + +BITS DEFL 00000010B ; Physical Device 2, Logical Unit 0 + ; IDE - (undefined) +BITS DEFL BITS+[UNIT_2 AND 10H] ; If active, set Bit 4 + + DEFB BITS ; Set Device, Unit, and Active bits + DEFW 615 + DEFB 4 + DEFW 615 + DEFW 300 + DEFB 2 + + DEFB 0,0,0,0,0 ; (Reserved) + +;======= End of Fixed Config ======== Device Config follows ======== + \ No newline at end of file diff --git a/Source/BPBIOS/iio-dx.z80 b/Source/BPBIOS/iio-dx.z80 new file mode 100644 index 00000000..00587930 --- /dev/null +++ b/Source/BPBIOS/iio-dx.z80 @@ -0,0 +1,332 @@ +;:::::::::::::::::::::::::::::::::::::::::::::::::************************* +; Byte I/O Routines *** Hardware Specific *** +; - D-X Designs Pty Ltd P112 - ************************* +; +; Several serial and parallel options exist on the P112, with two serial +; ports available at RS-232 signalling levels. The primary port defined here +; as COM1 uses SCC Channel A of the Z80182. A 16550-compatible serial port +; on the SMC FDC37C665 is used as COM2. Three other serial ports (the two +; ACSI ports in the Z180 core, and SCC Channel B) are available at TTL +; voltage levels on a single header and may be defined as COM3-5 if the pins +; from the Z182 are not otherwise used. +; This code supports the additional serial channels if the MORDEV equate +; is set to YES. If any of the three additional serial ports are defined +; (ESCC_B, ASCI_0, ASCI_1), then the System Configuration Register is set to +; Zero activating the additional signals in the conditions specified herein +; as activated by options in DEF-DX.LIB. +; A full Parallel port on the SMC FDC37C655 (in Normal Centronics mode) is +; used as the primary List (Printer) Device. +; +; NOTE: At the present time, it appears that port 0D9H (ENH182) cannot be set +; so ESCC operation at 24 MHz will occur at the full clock rate instead +; of being divided by Two as specified in Zilog documentation. Code +; managing ENH182 is commented out with ";;--" markers (HFB). +; +; 1.2 - 28 Aug 01 - Final scrub for GPL release. HFB +; 1.1a- 11 May 97 - Cleaned code, fixed added port accesses. HFB +; 1.1 - 25 Jan 97 - Revised ESCC Baud rate calcs, added COM3-5. HFB +; 1.0 - 19 Jun 96 - Initial Release for the P112 from YASBEC. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Place constants for Expansions here + + CSEG +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Byte Device Control Tables +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +DEVCFG: + +; The Clock Rate for the SCC channels on the Z80182 is based on a divider +; constant loaded in extended registers, the Processor Crystal frequency, +; and the setting of the divider in the SCC Register (1FH). +; +; NOTE: Divisor values are computed based on a compromise between the Crystal +; rates considered "standard" (6.144, 9.216, 12.288 MHz, etc) and the +; 16.000 MHz initially placed on the P112. Higher data rates (38.4 kbps +; and higher) may be out of tolerance, particularly at low CPU speeds. +; +; Clock rates for the serial port on the SMC 37C655 are based on a software +; programmable divider from the 24 MHz crystal driving the chip. + +COM1: DEFB 'COM1' ; 4-Char ID + DEFB 11101011B ; Baud Rate +; ||||++++--- Baud Rate setting (19.2 kbps) +; ++++------- Maximum Baud Rate (115.2 kbps) +; Rates are as: +; 0000 = None 0001 = 134.5 0011 = 50 0011 = 75 +; 0100 = 150 0101 = 300 0110 = 600 0111 = 1200 +; 1000 = 2400 1001 = 4800 1010 = 9600 1011 = 19200 +; 1100 = 38400 1101 = 76800 1110 = 115200 1111 = Fixed + + DEFB 11100001B ; Config Byte (In,Out,CTS/RTS control,1 Stop) +; |||||||+---------- Stop Bits 1 (1), 2 (0) +; ||||||+----------- Parity Enable (1), Disable (0) +; |||||+------------ Parity Even (1), Odd (0) +; ||||+------------- Data Bits 8 (0), 7 (1) +; |||+-------------- Xon-Xoff Handshake +; ||+--------------- CTS/RTS Handshake +; |+---------------- Input Device No (0), Yes (1) +; +----------------- Output Device No (0), Yes (1) + + DEFB 0FFH ; Input Data Mask + DEFB 0FFH ; Output Data Mask + + DEFW COM1OT ; COM 1 Byte Output + DEFW COM1OS ; COM 1 Output Status + DEFW COM1IN ; COM 1 Byte Input + DEFW COM1IS ; COM 1 Input Status + +COM2: DEFB 'COM2' ; 4-Char ID + DEFB 11101010B ; Baud Rate (115.2k Max, 9600 Set) + DEFB 11100001B ; Config Byte (In,Out,CTS/RTS control,1 Stop) + DEFB 0FFH ; Input Data Mask + DEFB 0FFH ; Output Data Mask + + DEFW COM2OT ; COM 2 Byte Output + DEFW COM2OS ; COM 2 Output Status + DEFW COM2IN ; COM 2 Byte Input + DEFW COM2IS ; COM 2 Input Status + +PIO1: DEFB 'PIO1' ; 4-Char ID + DEFB 00000000B ; Baud Rate (None) + DEFB 10000000B ; Config Byte (Output Only) + DEFB 0FFH ; Input Data Mask + DEFB 07FH ; Output Data Mask + + DEFW PIO1OT ; PIO Byte Output + DEFW PIO1OS ; PIO Output Status + DEFW PIO1IN ; PIO Byte Input + DEFW PIO1IS ; PIO Input Status + + IF MOVCPM OR [MORDEV AND NOT [ESCC_B OR ASCI_0 OR ASCI_1]] + DEFB 'NULL' ; 4-Char ID + DEFB 00000000B ; Baud Rate (None) + DEFB 11000000B ; Config Byte + DEFB 0FFH ; Input Data Mask + DEFB 0FFH ; Output Data Mask + + DEFW ISFALSE ; Null Output + DEFW ISTRUE ; Null Output Status + DEFW ISFALSE ; Null Input + DEFW ISTRUE ; Null Input Status + ENDIF + + DEFB 0 ; - End-of-Table marker +MAXBDV EQU [$-DEVCFG-1]/[COM2-COM1] ; Number of Character Devices Defined + +DEVTBL: LD HL,DEVCFG ; BYTE device table + RET ; CP/M-3 device init + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; COM1 Drivers +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + IF HBIOS +; Uses HBIOS +;..... +; COM1 Input Status Test + +COM1IS: + PUSH BC + PUSH DE + PUSH HL + LD BC,0200H + HB_IODEV ; Func=$02 (IS), Device/Unit=HB_IODEV + CALL HBX_INVOKE + POP HL + POP DE + POP BC + RET + +;..... +; COM1 Input Routine +; Remain in Loop until Char ready, then Return Char in A + +COM1IN: + PUSH DE + PUSH HL + LD BC,0000H + HB_IODEV ; Func=$00 (IN), Device/Unit=HB_IODEV + CALL HBX_INVOKE + LD C,E + POP HL + POP DE + RET + +;..... +; COM1 Output Status Test + +COM1OS: + PUSH BC + PUSH DE + PUSH HL + LD BC,0300H + HB_IODEV ; Func=$03 (OS), Device/Unit=HB_IODEV + CALL HBX_INVOKE + POP HL + POP DE + POP BC + RET + +;..... +; COM1 Output Routine (Byte to Send in C) + +COM1OT: + PUSH BC + PUSH DE + PUSH HL + LD E,C ; Character to E + LD BC,0100H + HB_IODEV ; Func=$01 (OT), Device/Unit=HB_IODEV + CALL HBX_INVOKE + POP HL + POP DE + POP BC + RET + + ELSE +;..... +; COM1 Input Status Test + +COM1IS: IN A,(_LSR) ; Input Status Reg Byte + RRA ; Rcv Rdy Bit[0] -> Carry + SBC A,A ; A=00 if Not Ready, FF if Char received + RET + +;..... +; COM1 Input Routine + +COM1IN: CALL COM1IS ; Char Ready? + JR Z,COM1IN ; ..loop if Not + IN A,(_RBR) ; Else Read Receive Buffer + LD C,A ; Save byte + LD A,(COM1+6) ; .get mask + AND C ; ..apply it + RET + +;..... +; COM1 Output Status Test + +COM1OS: + IN A,(_LSR) ; Read Status Reg + AND 20H ; Mask Bit of interest + RET Z ; ..return if nothing valid + OR 0FFH ; Else set flags for Ready + RET + +;..... +; COM1 Output Routine + +COM1OT: CALL COM1OS ; Test if ready + JR Z,COM1OT ; ..loop if not + LD A,(COM1+7) ; Get output mask + AND C ; apply + OUT (_THR),A ; and send char to Xmt Holding Reg + RET + + ENDIF + + PAGE +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; COM2 Drivers +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Uses generic 16550 UART +;..... +; COM2 Input Status Test + +COM2IS: IN A,(_LSR) ; Input Status Reg Byte + RRA ; Rcv Rdy Bit[0] -> Carry + SBC A,A ; A=00 if Not Ready, FF if Char received + RET + +;..... +; COM2 Input Routine + +COM2IN: CALL COM2IS ; Char Ready? + JR Z,COM2IN ; ..loop if Not + IN A,(_RBR) ; Else Read Receive Buffer + LD C,A ; Save byte + LD A,(COM2+6) ; .get mask + AND C ; ..apply it + RET + +;..... +; COM2 Output Status Test + +COM2OS: + IN A,(_LSR) ; Read Status Reg +SOSTV: AND 20H ; Mask Bit of interest +RETST: RET Z ; ..return if nothing valid +ISTRUE: OR 0FFH ; Else set flags for Ready + RET + +;..... +; COM2 Output Routine + +COM2OT: CALL COM2OS ; Test if ready + JR Z,COM2OT ; ..loop if not + LD A,(COM2+7) ; Get output mask + AND C ; apply + OUT (_THR),A ; and send char to Xmt Holding Reg + RET + + PAGE +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Parallel I/O Drivers +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; Uses "Standard" Parallel Centronics mode of SMC37C655 (output only) +;..... +; Parallel Input Status Test + +PIO1IS: JR ISTRUE ; Not implemented + +;..... +; Parallel Input Data fetch + +PIO1IN: JP ISFALSE ; Not implemented + +;..... +; Parallel Output Status Test + +PIO1OS: JP ISTRUE ; Not implemented + +;..... +; Parallel Output Routine + +PIO1OT: JP ISFALSE ; Not implemented + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +;:: I n t e r r u p t T a b l e :: +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; The Z80182 Interrupt Vector table is placed here on a 32-byte +; boundary for internal peripherals. + + DEFS 32-[$-BIOSJT AND 31] ; Align +INTTBL: + DEFW BADINT ; FDC Controller w/Ints (FDCINT if Real Ints) + DEFW BADINT ; Parallel output port (INTPIO if Real Ints) + DEFW TIMER ; Timer0 + DEFW BADINT ; Timer1 + DEFW BADINT ; DMA Channel 0 + DEFW BADINT ; DMA Channel 1 + DEFW BADINT ; Clocked Serial IO + DEFW BADINT ; ASCI 0 if Not Interrupt/Mordev + DEFW BADINT ; ASCI 1 if Not Interrupt/Mordev + +; Error trap for unimplemented Interrupts + +BADINT: CALL PRINT + DEFC CR,LF,'Bad Int.' + JP WBOOT + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +;:: D e v i c e I n i t i a l i z a t i o n :: +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG +DEVINI: + IF BANKED + CALL BIOSTK + CALL GOSYSB + JP JDVINI + COMMON /BANK2/ +JDVINI: + ENDIF + + RET ; WW diff --git a/Source/BPBIOS/license.txt b/Source/BPBIOS/license.txt new file mode 100644 index 00000000..1644e370 --- /dev/null +++ b/Source/BPBIOS/license.txt @@ -0,0 +1,337 @@ +General Public License: Free Software Foundation + + +Version 2, June 1991 + +Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 +Mass Ave, Cambridge, MA 02139, USA + +Everyone is permitted to copy and distribute verbatim copies +of this license document, but changing it is not allowed. + +Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + +TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + +1. This License applies to any program or other work which contains + a notice placed by the copyright holder saying it may be distributed + under the terms of this General Public License. The "Program", below, + refers to any such program or work, and a "work based on the Program" + means either the Program or any derivative work under copyright law: + that is to say, a work containing the Program or a portion of it, + either verbatim or with modifications and/or translated into another + language. (Hereinafter, translation is included without limitation in + the term "modification".) Each licensee is addressed as "you". + Activities other than copying, distribution and modification are not + covered by this License; they are outside its scope. The act of + running the Program is not restricted, and the output from the Program + is covered only if its contents constitute a work based on the + Program (independent of having been made by running the Program). + Whether that is true depends on what the Program does. + +2. You may copy and distribute verbatim copies of the Program's + source code as you receive it, in any medium, provided that you + conspicuously and appropriately publish on each copy an appropriate + copyright notice and disclaimer of warranty; keep intact all the + notices that refer to this License and to the absence of any warranty; + and give any other recipients of the Program a copy of this License + along with the Program. You may charge a fee for the physical act of + transferring a copy, and you may at your option offer warranty + protection in exchange for a fee. + +3. You may modify your copy or copies of the Program or any portion + of it, thus forming a work based on the Program, and copy and + distribute such modifications or work under the terms of Section 1 + above, provided that you also meet all of these conditions: + + 1. You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + 2. You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + 3. If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + + These requirements apply to the modified work as a whole. If + identifiable sections of that work are not derived from the Program, + and can be reasonably considered independent and separate works in + themselves, then this License, and its terms, do not apply to those + sections when you distribute them as separate works. But when you + distribute the same sections as part of a whole which is a work based + on the Program, the distribution of the whole must be on the terms of + this License, whose permissions for other licensees extend to the + entire whole, and thus to each and every part regardless of who wrote it. + Thus, it is not the intent of this section to claim rights or contest + your rights to work written entirely by you; rather, the intent is to + exercise the right to control the distribution of derivative or + collective works based on the Program. + In addition, mere aggregation of another work not based on the Program + with the Program (or with a work based on the Program) on a volume of + a storage or distribution medium does not bring the other work under + the scope of this License. + +4. You may copy and distribute the Program (or a work based on it, + under Section 2) in object code or executable form under the terms of + Sections 1 and 2 above provided that you also do one of the following: + + 1. Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + 2. Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + 3. Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + + The source code for a work means the preferred form of the work for + making modifications to it. For an executable work, complete source + code means all the source code for all modules it contains, plus any + associated interface definition files, plus the scripts used to + control compilation and installation of the executable. However, as a + special exception, the source code distributed need not include + anything that is normally distributed (in either source or binary + form) with the major components (compiler, kernel, and so on) of the + operating system on which the executable runs, unless that component + itself accompanies the executable. + If distribution of executable or object code is made by offering + access to copy from a designated place, then offering equivalent + access to copy the source code from the same place counts as + distribution of the source code, even though third parties are not + compelled to copy the source along with the object code. + +5. You may not copy, modify, sublicense, or distribute the Program + except as expressly provided under this License. Any attempt + otherwise to copy, modify, sublicense or distribute the Program is + void, and will automatically terminate your rights under this License. + However, parties who have received copies, or rights, from you under + this License will not have their licenses terminated so long as such + parties remain in full compliance. + +6. You are not required to accept this License, since you have not + signed it. However, nothing else grants you permission to modify or + distribute the Program or its derivative works. These actions are + prohibited by law if you do not accept this License. Therefore, by + modifying or distributing the Program (or any work based on the + Program), you indicate your acceptance of this License to do so, and + all its terms and conditions for copying, distributing or modifying + the Program or works based on it. + +7. Each time you redistribute the Program (or any work based on the + Program), the recipient automatically receives a license from the + original licensor to copy, distribute or modify the Program subject to + these terms and conditions. You may not impose any further + restrictions on the recipients' exercise of the rights granted herein. + You are not responsible for enforcing compliance by third parties to + this License. + +8. If, as a consequence of a court judgment or allegation of patent + infringement or for any other reason (not limited to patent issues), + conditions are imposed on you (whether by court order, agreement or + otherwise) that contradict the conditions of this License, they do not + excuse you from the conditions of this License. If you cannot + distribute so as to satisfy simultaneously your obligations under this + License and any other pertinent obligations, then as a consequence you + may not distribute the Program at all. For example, if a patent + license would not permit royalty-free redistribution of the Program by + all those who receive copies directly or indirectly through you, then + the only way you could satisfy both it and this License would be to + refrain entirely from distribution of the Program. + If any portion of this section is held invalid or unenforceable under + any particular circumstance, the balance of the section is intended to + apply and the section as a whole is intended to apply in other + circumstances. + It is not the purpose of this section to induce you to infringe any + patents or other property right claims or to contest validity of any + such claims; this section has the sole purpose of protecting the + integrity of the free software distribution system, which is + implemented by public license practices. Many people have made + generous contributions to the wide range of software distributed + through that system in reliance on consistent application of that + system; it is up to the author/donor to decide if he or she is willing + to distribute software through any other system and a licensee cannot + impose that choice. + This section is intended to make thoroughly clear what is believed to + be a consequence of the rest of this License. + +9. If the distribution and/or use of the Program is restricted in + certain countries either by patents or by copyrighted interfaces, the + original copyright holder who places the Program under this License + may add an explicit geographical distribution limitation excluding + those countries, so that distribution is permitted only in or among + countries not thus excluded. In such case, this License incorporates + the limitation as if written in the body of this License. + +10. The Free Software Foundation may publish revised and/or new versions + of the General Public License from time to time. Such new versions will + be similar in spirit to the present version, but may differ in detail to + address new problems or concerns. + Each version is given a distinguishing version number. If the Program + specifies a version number of this License which applies to it and "any + later version", you have the option of following the terms and conditions + either of that version or of any later version published by the Free + Software Foundation. If the Program does not specify a version number of + this License, you may choose any version ever published by the Free Software + Foundation. + +11. If you wish to incorporate parts of the Program into other free + programs whose distribution conditions are different, write to the author + to ask for permission. For software which is copyrighted by the Free + Software Foundation, write to the Free Software Foundation; we sometimes + make exceptions for this. Our decision will be guided by the two goals + of preserving the free status of all derivatives of our free software and + of promoting the sharing and reuse of software generally. + +NO WARRANTY + +12. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN + OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES + PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED + OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS + TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, + REPAIR OR CORRECTION. + +13. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR + REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, + INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING + OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED + TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY + YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE + POSSIBILITY OF SUCH DAMAGES. + +END OF TERMS AND CONDITIONS + +How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + +one line to give the program's name and an idea of what it does. +Copyright (C) 19yy name of author + +This program is free software; you can redistribute it and/or +modifyneral Public License +as published by the Free Software Foundation; either version 2 +of the License, or (at your option) any later version. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with this program; if not, write to the Free Software +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + +Gnomovision version 69, Copyright (C) 19yy name of author +Gnomovision comes with ABSOLUTELY NO WARRANTY; for details +type `show w'. This is free software, and you are welcome +to redistribute it under certain conditions; type `show c' +for details. + +The hypothetical commands `show w' and `show c' should show +the appropriate parts of the General Public License. Of course, the +commands you use may be called something other than `show w' and +`show c'; they could even be mouse-clicks or menu items--whatever +suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + +Yoyodyne, Inc., hereby disclaims all copyright +interest in the program `Gnomovision' +(which makes passes at compilers) written +by James Hacker. + +signature of Ty Coon, 1 April 1989 +Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. + \ No newline at end of file diff --git a/Source/BPBIOS/movp112.com b/Source/BPBIOS/movp112.com new file mode 100644 index 0000000000000000000000000000000000000000..4111164743342ed2179f7b559d2440638afa369c GIT binary patch literal 15360 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 DSk)s8 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/myterm.z3t b/Source/BPBIOS/myterm.z3t new file mode 100644 index 0000000000000000000000000000000000000000..8c905b969b2a59cae35f9804dd249960aeaa0661 GIT binary patch literal 128 zcmZ>9byf%qF*GnxfB;qr7GWb+X6a~a59w$lF9zvo)lAhCYt 00) Is the Format Locked? + JR Z,SELDK0 ; ..jump if so + PUSH HL ; Else save pointer + LD A,(SEKPDN) ; Get physical drive back + CALL PHYSCL ; Point to Physical Drive Config bytes + LD E,(HL) ; Get Characteristics for This Drive to E + POP HL ; and ptr to Drive Type Byte + LD A,(HL) ; Get the Byte again + AND 90H ; mask all but Double-Step & Double Dens + OR E ; Add in Physical characteristics + LD (HL),A ; Save back in DPH +SELDK0: LD (SEKDVT),A ; Save Drive Type Byte locally + POP DE ; Restore new mount flag + + + BIT 0,E ; New mount? + JR NZ,SETPARMS ; Set params if old mount + +; We are selecting a probably-changed disk. Be sure the Host Buffer is +; updated with the latest stuff. + + LD A,(HSTDSK) + SUB C ; See if this disk is in the host buffer + JR NZ,SELDSK0 ; If it isn't, keep what's there active + LD HL,HSTACT + LD (HL),A ; Else mark host buffer as unused + INC HL + LD (HL),A ; And cancel any pending writes + +; Note: this will never happen from DOS as the directory write during file +; Close will properly flush the buffer. However, programs doing direct BIOS +; calls could exit with a write still pending. This is also true if DOS had +; a write file open and warm booted for any reason. the only safe thing to do +; in either case is to cancel the write on The assumption the disk has changed. + +; Links to Physical Drivers + +SELDSK0: XOR A ; Offset for select + DEFB 21H ; Trash HL and fall thru +READHST: LD A,2 ; Offset to read + DEFB 21H ; Trash HL and fall thru +WRITEHST: + LD A,4 ; Offset to write + AND A ; Test if seek or host drive required + LD HL,(HSTDPH) ; Assume host drive for now + JR NZ,SELDSK1 ; Go if we assumed correctly + LD HL,(SEKDPH) +SELDSK1: DEC HL + DEC HL + LD B,(HL) ; Save driver number + LD HL,DVRVCT ; Point to vector table + CALL ADDAHL ; Offset to routine + LD A,B ; Get driver number + ADD A,A ; *2 + ADD A,B ; *3 + ADD A,A ; *6 to index to proper entry + PUSH HL ; Save HL on Stack for return + JP VECTA + +; Routine Vector Table + +DVRVCT: DEFW SELERR ; Driver 0 Select + DEFW ISTRUE ; Driver 0 Read + DEFW ISTRUE ; Driver 0 Write + + DEFW SELFLP ; Driver 1 Select (Floppy) + DEFW FREAD ; Driver 1 Read + DEFW FWRITE ; Driver 1 Write + + IF HARDDSK + DEFW SELHD ; Driver 2 Select (Hard Drive) + DEFW HDREAD ; Driver 2 Read + DEFW HDWRIT ; Driver 2 Write + ELSE + DEFW SELERR ; Driver 2 Select (Dummy if No Hard Drive) + DEFW ISTRUE ; Driver 2 Read + DEFW ISTRUE ; Driver 2 Write + ENDIF ;harddsk + + IF RAMDSK + DEFW SELRAM ; Driver 3 Select (RAM Drive) + DEFW RAMRD ; Driver 3 Read + DEFW RAMWR ; Driver 3 Write + ELSE + DEFW SELERR ; Driver 3 Select (Dummy if No RAM Drive) + DEFW ISTRUE ; Driver 3 Read + DEFW ISTRUE ; Driver 3 Write + ENDIF ;ramdsk + +SELERR: LD HL,0 ; Send null DPH pointer back to caller + RET + +;..... +; Set parameters for currently selected drive on Old or New mount. +; Set: CPMSPT, SEKSD, SEKSPD, SECSHF, SECMSK, UCOUNT, SEKFMT, +; Skew pointer in DPH +; Info source is DPB for drive obtained via DPHTBL + +SETPARMS: LD A,(SEKDSK) ; Get Logical Drive being selected + CALL GETDPH ; Return DPH pointer in DE + LD HL,0AH ; Get offset to DPB pointer in DPH + ADD HL,DE + LD A,(HL) + INC HL + LD H,(HL) ; Fetch DPB pointer for selected format + LD L,A + PUSH HL ; Save DPB pointer + IF CALCSK + LD BC,-4 ; Point to Skew Factor + ELSE + LD BC,0FH ; Point to Skew Table at end of DPB + ENDIF + ADD HL,BC ; Point to skew + EX DE,HL ; Put DPH pointer in HL + LD (HL),E + INC HL + LD (HL),D ; Save as Skew Table pointer in DPH + DEC HL + EX DE,HL ; DPH pointer back to DE + POP HL ; Restore DPB pointer + LD A,(HL) ; Fetch logical Records per Track + LD (CPMSPT),A ; Save for deblocking logic + LD (SEKDPH),DE + LD (SEKDPB),HL + LD BC,-5 ; Back up + ADD HL,BC ; to Format Byte 1 + LD A,(HL) ; Get it. + DEC HL + LD L,(HL) ; get Format Byte 0 also + LD H,A + PUSH AF ; (save Format Byte 1) + LD A,L ; Move Format Byte 0 + AND 00111000B ; mask + SUB 00010000B ; Set special case of 0=Side-by-Sctr Cont + LD (TSBSCF),A ; save in FDC-xx + POP AF ; (restore byte 1) + AND 00111B ; Mask for Physical Sector Size + LD (SECSHF),A ; Save as Sector Shift count + CALL PWR2MSK ; Convert to 2 ** N-1 mask + LD (SECMSK),A ; Save result as Sector Mask + LD A,00111000B ; Mask for Alloc Size + AND H + RRA + RRA + RRA ; Put into low nibble + CALL PWR2MSK ; Calculate 2 ** N-1 + INC A ; Now 2 ** N = Number of K per Alloc + RLA + RLA + RLA ; Mult by 8 records/K + LD (UCOUNT),A ; Save number of Records per Alloc Block + EX DE,HL ; Put DPH address back in HL + RET ; And return to caller + +;..... +; Routine to set the A register to True (0FFH) or False (0) +; Depending on the state of the Z-Flag + +SETTFZ: LD A,0 ; Load logical false + RET Z ; Return if false + DEC A ; Else set true to 0FFH + RET ; And exit + +;..... +; Routine to create mask of 2**N-1, where N is passed in A. Returns +; Mask in A, B=0. + +PWR2MSK: AND A ; Screen case of a=0 + LD B,A ; (Use Shift Count to create mask) + RET Z ; Done if a=0 + XOR A ; Clear mask +SPRM1: SCF ; Get a set bit to roll in + RLA ; Shift into LSB of Mask + DJNZ SPRM1 ; Loop until required bits set + RET + +;..... +; Routine to return the DPH Pointer in DE for the Logical drive in A + +GETDPH: ADD A,A ; Form table index value + LD HL,DPHTBL ; Point to DPH header table + CALL ADDAHL ; Index into table + LD E,(HL) + INC HL + LD D,(HL) ; DPH pointer for logical drive in DE + RET + + IF BANKED + COMMON /B2RAM/ + ELSE + DSEG + ENDIF + +; RAM Storage + +SEKPDN: DEFS 1 ; Physical drive number to use +HSTPDN: DEFS 1 ; WW +SEKDVT: DEFS 1 ; Drive type byte for selected drive + +;============================= End of SELRWD ============================== + \ No newline at end of file diff --git a/Source/BPBIOS/tim-dx.z80 b/Source/BPBIOS/tim-dx.z80 new file mode 100644 index 00000000..7b15f523 --- /dev/null +++ b/Source/BPBIOS/tim-dx.z80 @@ -0,0 +1,415 @@ +;:::::::::::::::::::::::::::::::::::::::*************************** +; Time-handling Routines ** Machine-Dependant ** +; D-X Designs Pty Ltd, P112 *************************** +; +; This module incorporates provisions for an interrupt-driven clock, or +; the Dallas DS-1202 Real Time Clock for obtaining Time and Date Info. +; +; 1.0 - 18 Jul 96 - Initial Release. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +; This code module should handle all Time-related segments, to include +; Interrupt handlers for Real Time update, motor timeouts, user down- +; counter and any necessary time format conversion routines. + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; TIMER +; This routine keeps the Real Time Clock, Diskette Time Out +; counter, and General-Purpose down-counters. An interrupt is +; generated every 50 mS by the Z-182 Programmable Interrupt Timer +; and used to update parameters. Every other interrupt (100 mS +; intervals) is used to update the 100 mS counters and Time string +; if using Interrupt-driven Time and Date. +; Enter: No parameters needed (Interrupt) +; Exit : None +; Uses : None. All registers preserved. Decrements MTM, User and BIOS +; general-purpose counter bytes every 100 mS. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +; Come here every 50 milliseconds from Programmable Reload Timer 0 + +TIMER: DI ; Don't Interrupt from here + LD (TIMSTK),SP ; Save entry Stack Pointer + LD SP,TIMSTK ; ..set up Local Interrupt Stack + PUSH HL + PUSH AF ; Save the registers + + IN0 A,(TCR) + IN0 A,(TMDR0L) + IN0 A,(TMDR0H) ; Clear the interrupt + + LD HL,FLAG50 ; Point to 50 mS Flag + LD A,(HL) ; fetch + XOR 01H ; and toggle LSB + LD (HL),A ; Re-save + JR NZ,TDONE ; ..exit if Odd 50 mS Tick + + LD HL,DCNTR ; Adjust User GP Down-Counter + DEC (HL) + + LD HL,MTM ; Adjust Bios GP Down-Counter + DEC (HL) + + INC HL ; Point to Motor On-timer (MOTIM) + LD A,(HL) + OR A ; Already Timed Out? + JR Z,TIMER0 ; ..jump if So + DEC (HL) ; Else count down + CALL Z,MOTOFF ; turning Motors Off if timed out +TIMER0: + +; Adjust the Interrupt-driven Real Clock (if no Real Time Clock exists). +; This "Clock" maintains Date and Time in a DateStamper(C) compatible +; string per ZSDOS specifications. + + IF CLOCK AND [NOT DS1202] + LD HL,TENTHS ; 100ms counter + INC (HL) ; Bump Tenths-of-Seconds + LD A,(HL) ; get the value + SUB 10 ; Subtract limit value (in decimal times 2) + JR NZ,TDONE ; jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Seconds + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 60H ; Subtract limit value + JR NZ,TDONE ; ..jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Minutes + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 60H ; Subtract limit value + JR NZ,TDONE ; ..jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Hours + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 24H ; Subtract limit value + JR NZ,TDONE ; ..jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Day + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + PUSH DE ; Save regs + PUSH AF + EX DE,HL + LD HL,DPM-1 ; Point to days per month table indexed base 1 + DEC DE ; back up to Months byte + LD A,(DE) + INC DE ; move ptr back + CP 10 ; >Sept? + JR C,TIMER1 ; ..jump if Not + SUB 6 ; Else convert BCD to binary +TIMER1: CALL ADDAHL ; Offset into table based on Month + POP AF ; Get current day count + CP (HL) ; Time for new month? + EX DE,HL ; (put regs back) + POP DE + JR C,TDONE ; ..exit here if not time + LD (HL),1 ; Else start out on first of month + DEC HL ; back down to month + + LD A,(HL) ; Get month + INC A ; Bump + DAA ; in BCD + LD (HL),A ; and save + SUB 13H ; Time for new year? + JR C,TDONE ; ..exit if not + LD (HL),1 ; Else start at month 1 (Jan) + DEC HL ; back up to Years byte + + LD A,(HL) ; Get Year + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 99H ; Time for next century? + JR NZ,TDONE ; ..exit if not + LD (HL),A ; Else save 0 year + + ENDIF ;Clock & Not DS1202 + +TDONE: POP AF + POP HL ; Restore registers + LD SP,(TIMSTK) ; and Stack Pointer + EI ; allow Ints again + RET + + IF CLOCK AND [NOT DS1202] ; Table of Days-per-Month +DPM: DEFB 31H+1, 28H+1, 31H+1 ; January, February, March + DEFB 30H+1, 31H+1, 30H+1 ; April, May, June + DEFB 31H+1, 31H+1, 30H+1 ; July, August, September + DEFB 31H+1, 30H+1, 31H+1 ; October, November, December + ENDIF ;Clock & Not Ds1202 + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; TIME - Set or Return the time string as defined for ZSDOS. If Reading, +; The Six digit BCD ZSDOS Clock string is copied to the location +; addressed by Register pair DE. As an enhancement, the tenths-of-seconds +; value is returned in Reg D. If Setting the Clock, the RTC clock string +; will be set from the 6 bytes addressed by DE. +; +; ENTER: C - 0 to Read the Clock, Non-0 (1 recommended) to Set the Clock +; DE = Pointer to receive 6-byte Time/Date on Read, Source for Set +; +; EXIT : E = Original contents of Target Seconds field +; D = Tenths of Seconds field +; HL = Pointer to Target Seconds field +; A = 1 for success, 0 if Unable to Set or Read +; BC = Address of User General-Purpose Down-Counter +; +; NOTE: The Wall Clock string is arranged as BCD digits with Tenths- +; of-Seconds byte appended. The entire string is: +; +; YR MO DA HH MM SS TT +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + IF CLOCK AND DS1202 +; Dallas DS-1202 Clock Interface on the D-X Designs Pty Ltd P112. +; Read the Clock to a buffer area in Memory. Seven bytes (Six used) are +; read in burst mode from the clock chip, one bit at a time via three bits +; from one of the Z-182 parallel ports. When Setting the clock from this +; code fragment, the DOW is forced to 01H, which will probably be invalid. +; The Clock is accessed serially (LSB first) one byte at a time with a +; command byte being written to begin the Read/Write. Burst Mode is used +; with a 0BFH byte for Reading, 0BEH for Writing as the Command. Clock +; Setting clears the Write Protect bit before setting, and resets the chip +; to Read-Only when finished. The Entire Date/Time String is eight bytes +; read as: +; +; Sec Min Hour Day Mon DOW Year WProt +; (12/24) (MSB) +; +; In this implementation, the DOW field is not used, and the 12/24 hour bit +; is always set to 24-hour mode by setting the MSB to 1. + +RTCRst EQU 2 ; DS-1202 Reset\ Bit +RTCClk EQU 1 ; DS-1202 Clock Bit +RTCDat EQU 0 ; DS-1202 Data IO Bit + +TIME: DI ; NO INTERRUPTS in This Routine + LD (TIMSTK),SP ; Save Entry Stack Ptr + LD SP,TIMSTK ; and Set Local Stack + LD A,C ; Get Clock Operation Flag + OR A ; Is it a Write? + PUSH AF ; (save) + CALL CSETUP ; Set Clock to Read, returning BC->DRA Port + LD DE,5 ; (above also moved ptr to HL) + ADD HL,DE ; offset to Seconds Field + POP AF ; (restore Write flag) + IF CLKSET + JR NZ,TIMSET ; ..jump if Write and Set allowed + ELSE + LD A,00 ; (preset Error Condition) + JR NZ,NOCLOK ; ..jump to Error if Set Not allowed + ENDIF + LD E,(HL) ; Else Read, so fetch orig contents + PUSH DE ; (Save for Exit) + PUSH HL ; (and preserve ptr) + +; Command the DS-1202 for Burst Read of Clock + + LD A,0BFH ; Load the Burst Clock Read Command + CALL Wr1202 ; and Send it + +; Read the Clock Data. D still 0 from above Load, use as Byte Index + +RdTim0: PUSH HL ; Save Ptr + LD E,8 ; Gather 8 bit for a byte +RdTim1: IN A,(C) ; Read Port + RES RTCClk,A ; Clock LO + OUT (C),A ; Set + NOP ; (settle) + IN A,(C) ; Read Bit to LSB + RRCA ; Data Bit to Carry + RR L ; to MSB of Accum + RLCA ; restore Parallel Port bits + SET RTCClk,A ; Clock HI + OUT (C),A ; Set + DEC E ; Byte Done? + JR NZ,RdTim1 ; ..jump if Not + + LD E,L ; Else Get Byte + POP HL ; Restore Ptr to Dest + LD A,D ; Get Index + CP 5 ; Day-Of-Week? + JR Z,RdTim2 ; ..jump if So, bypassing save + LD (HL),E ; Save value in output string + DEC HL ; back down to previous byte in output +RdTim2: INC D ; increment index + CP 6 ; Did we just save Year? + JR NZ,RdTim0 ; ..get another byte if So + CALL CClose ; Else Deselect Clock + POP HL ; Restore Ptr + POP DE ; Orig Seconds content (and 0 Tenths) +ClkExt: LD A,01H ; Set Good Exit +NOCLOK: LD SP,(TIMSTK) ; Restore entry Stack + LD BC,DCNTR ; Get Address of User Down-Counter + EI ; Ints Ok now + RET ; and Quit + +;..... +; Set the Clock if code assembly option set +; Enter: BC = DRA Address +; D = 0 (used as count of bytes written) +; HL -> Seconds of ZSTime string + + IF CLKSET +WrTim: LD A,8EH + CALL Wr1202 ; Turn Write Protect OFF + XOR A + CALL Wr1202 ; by clearing MSB of Time+6 + CALL CClose ; then terminate Clock Access + CALL COpen ; Start Clock access again +WrTim0: LD A,D ; Get Index 0..7 of Write String + CP 8 ; At End? + JR Z,WrTimX ; ..quit if So + CP 6 ; Year or WrProtect? + JR C,WrTim1 ; .jump if Not + JR Z,WrTim2 ; ..jump if Year + LD A,80H ; Else Write Protect On since last byte + JR WrTim3 ; ..do It! + +WrTim1: CP 5 ; DOW? + LD A,01H ; (set default if So) + JR Z,WrTim3 ; ..set if So +WrTim2: LD A,(HL) ; Else Get Byte from ZSTime String + DEC HL ; back up for Next Byte +WrTim3: CALL Wr1202 ; Write Byte to Clock + INC D ; bump index of bytes written + JR WrTim0 ; ..continue til Done + +WrTimX: CALL CClose ; Terminate Clock Access + JR ClkExt ; ..and Exit + ENDIF + +;..... +; Set up DS-1202 interface from Z80182 Parallel port +; Entry: None +; Exit : BC -> Data Port w/Clk at bits 0-2 +; Uses : AF,BC,DE + +CSETUP: EX DE,HL ; Move Pointer to HL +COpen: LD BC,DDRA ; Address Parallel Port A Control + IN A,(C) ; Read Settings + SET RTCDat,A ; Data Line to Input + OUT (C),A ; and Set + INC BC ; Address Parallel Port A (DRA) + IN A,(C) ; Fetch settings + RES RTCClk,A ; Clk LO to Start + OUT (C),A ; (set) + SET RTCRst,A ; Clear Reset to HI + OUT (C),A ; (set) + RET + +;..... +; Write the Byte in A to the clock (used for Command) +; Entry: BC -> Data Port (DRA) +; Exit : None +; Uses : AF,E + +Wr1202: PUSH HL ; Save Regs + LD L,A ; Store byte + LD E,8 ; set bit count + IN0 A,(DDRA) ; Fetch Def'n Reg contents + RES RTCDat,A ; Data Line to Output + OUT0 (DDRA),A ; (set) +Wr120L: IN A,(C) ; Read Parallel Port + RES RTCClk,A ; Clk LO + OUT (C),A ; (set) + SRL A ; (clear LSB) + RR L ; Data Byte LSB to Carry + RLA ; then to Parallel Port LSB + OUT (C),A ; (set) + SET RTCClk,A ; Clk HI + OUT (C),A ; (set) + DEC E ; Eight Bits Sent? + JR NZ,Wr120L ; ..loop if Not + + IN0 A,(DDRA) + SET RTCDat,A ; Set Port to Data IN + OUT0 (DDRA),A + POP HL ; Restore Regs + RET + +;..... +; Deselect the Clock for Exit +; Enter: BC -> Z80182 Parallel Port A +; Exit : None +; Uses : AF + +CClose: IN A,(C) ; Fetch Parallel Port + SET RTCClk,A ; Clk to HI + OUT (C),A + RES RTCRst,A ; Reset Active LO + OUT (C),A + RET + + ENDIF ;Clock & Ds1202 +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + IF CLOCK AND [NOT DS1202] ; Not Dallas, make Intrpt Code + +TIME: LD A,C ; Get Clock Operation Flag + LD BC,5 ; and set up for ZSDOS Read/Write + LD HL,YEAR ; Pointing to Clock String + OR A ; Is it a Read? + JR Z,TIMES ; ..jump it so + EX DE,HL ; Else swap pointers for write +TIMES: DI ; disable Interrupts + LDIR ; and move 5 bytes of 6 bytes (.1 Sec = 7) + LD C,(HL) ; Get the Seconds byte + INC HL ; bump to 1/10th Seconds + LD H,(HL) ; and Get + EI ; Re-enable Interrupts + EX DE,HL ; Swap pointers + LD E,(HL) ; Preserve original Sec field contents in E + LD (HL),C ; and store the Seconds byte (.1 Sec in D) + LD BC,DCNTR ; Get Address of User Down-Counter + LD A,01 ; Set Ok exit value of 1 + RET + + ENDIF ;Clock & Not Ds1202 + IF NOT CLOCK ; If No Clock.. + XOR A ; Set Error Return + RET ; and exit + + ELSE + DSEG + +; Real Time Clock Buffer + IF NOT DS1202 ; Don't need this if D-X Designs P112 +YEAR: DEFS 1 ; Year - packed BCD + DEFS 1 ; Month - packed BCD + DEFS 1 ; Day - packed BCD + DEFS 1 ; Hour - packed BCD + DEFS 1 ; Minute - packed BCD + DEFS 1 ; Seconds - packed BCD +TENTHS: DEFS 1 ; Tenths of Seconds - Binary (Int, else..) + ENDIF + ENDIF ;Clock + +;..... +; Save some space in the Common RAM Area for a local stack + + DSEG +DCNTR: DEFS 1 ; User 100 mS General-Purpose Down-Counter +FLAG50: DEFS 1 ; Flag for dividing 50mS to 100mS ticks + DEFS 12 ; We use 6 levels of stack (worst case) +TIMSTK: DEFS 2 ; Store the entry Stack pointer here + CSEG ; End up by restoring CSEG + +;=========================== END of TIM-DX ================================== + \ No newline at end of file diff --git a/Source/BPBIOS/tim-ww.z80 b/Source/BPBIOS/tim-ww.z80 new file mode 100644 index 00000000..2d772ef5 --- /dev/null +++ b/Source/BPBIOS/tim-ww.z80 @@ -0,0 +1,323 @@ +;:::::::::::::::::::::::::::::::::::::::*************************** +; Time-handling Routines ** Machine-Dependant ** +; D-X Designs Pty Ltd, P112 *************************** +; +; This module incorporates provisions for an interrupt-driven clock, or +; the Dallas DS-1202 Real Time Clock for obtaining Time and Date Info. +; +; 1.0 - 18 Jul 96 - Initial Release. HFB +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + +; This code module should handle all Time-related segments, to include +; Interrupt handlers for Real Time update, motor timeouts, user down- +; counter and any necessary time format conversion routines. + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; TIMER +; This routine keeps the Real Time Clock, Diskette Time Out +; counter, and General-Purpose down-counters. An interrupt is +; generated every 50 mS by the Z-182 Programmable Interrupt Timer +; and used to update parameters. Every other interrupt (100 mS +; intervals) is used to update the 100 mS counters and Time string +; if using Interrupt-driven Time and Date. +; Enter: No parameters needed (Interrupt) +; Exit : None +; Uses : None. All registers preserved. Decrements MTM, User and BIOS +; general-purpose counter bytes every 100 mS. +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +; Come here every 50 milliseconds from Programmable Reload Timer 0 + +TIMER: DI ; Don't Interrupt from here + LD (TIMSTK),SP ; Save entry Stack Pointer + LD SP,TIMSTK ; ..set up Local Interrupt Stack + PUSH HL + PUSH AF ; Save the registers + + IN0 A,(TCR) + IN0 A,(TMDR0L) + IN0 A,(TMDR0H) ; Clear the interrupt + + LD HL,FLAG50 ; Point to 50 mS Flag + LD A,(HL) ; fetch + XOR 01H ; and toggle LSB + LD (HL),A ; Re-save + JR NZ,TDONE ; ..exit if Odd 50 mS Tick + + LD HL,DCNTR ; Adjust User GP Down-Counter + DEC (HL) + + LD HL,MTM ; Adjust Bios GP Down-Counter + DEC (HL) + + INC HL ; Point to Motor On-timer (MOTIM) + LD A,(HL) + OR A ; Already Timed Out? + JR Z,TIMER0 ; ..jump if So + DEC (HL) ; Else count down + CALL Z,MOTOFF ; turning Motors Off if timed out +TIMER0: + +; Adjust the Interrupt-driven Real Clock (if no Real Time Clock exists). +; This "Clock" maintains Date and Time in a DateStamper(C) compatible +; string per ZSDOS specifications. + + IF CLOCK AND [NOT DS1202] + LD HL,TENTHS ; 100ms counter + INC (HL) ; Bump Tenths-of-Seconds + LD A,(HL) ; get the value + SUB 10 ; Subtract limit value (in decimal times 2) + JR NZ,TDONE ; jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Seconds + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 60H ; Subtract limit value + JR NZ,TDONE ; ..jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Minutes + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 60H ; Subtract limit value + JR NZ,TDONE ; ..jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Hours + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 24H ; Subtract limit value + JR NZ,TDONE ; ..jump to exit if no rollover + LD (HL),A ; Else save a zero + DEC HL ; back down time string + + LD A,(HL) ; Get Day + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + PUSH DE ; Save regs + PUSH AF + EX DE,HL + LD HL,DPM-1 ; Point to days per month table indexed base 1 + DEC DE ; back up to Months byte + LD A,(DE) + INC DE ; move ptr back + CP 10 ; >Sept? + JR C,TIMER1 ; ..jump if Not + SUB 6 ; Else convert BCD to binary +TIMER1: CALL ADDAHL ; Offset into table based on Month + POP AF ; Get current day count + CP (HL) ; Time for new month? + EX DE,HL ; (put regs back) + POP DE + JR C,TDONE ; ..exit here if not time + LD (HL),1 ; Else start out on first of month + DEC HL ; back down to month + + LD A,(HL) ; Get month + INC A ; Bump + DAA ; in BCD + LD (HL),A ; and save + SUB 13H ; Time for new year? + JR C,TDONE ; ..exit if not + LD (HL),1 ; Else start at month 1 (Jan) + DEC HL ; back up to Years byte + + LD A,(HL) ; Get Year + INC A ; bump + DAA ; in BCD + LD (HL),A ; and save + SUB 99H ; Time for next century? + JR NZ,TDONE ; ..exit if not + LD (HL),A ; Else save 0 year + + ENDIF ;Clock & Not DS1202 + +TDONE: POP AF + POP HL ; Restore registers + LD SP,(TIMSTK) ; and Stack Pointer +; EI ; allow Ints again + RET + + IF CLOCK AND [NOT DS1202] ; Table of Days-per-Month +DPM: DEFB 31H+1, 28H+1, 31H+1 ; January, February, March + DEFB 30H+1, 31H+1, 30H+1 ; April, May, June + DEFB 31H+1, 31H+1, 30H+1 ; July, August, September + DEFB 31H+1, 30H+1, 31H+1 ; October, November, December + ENDIF ;Clock & Not Ds1202 + +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; TIME - Set or Return the time string as defined for ZSDOS. If Reading, +; The Six digit BCD ZSDOS Clock string is copied to the location +; addressed by Register pair DE. As an enhancement, the tenths-of-seconds +; value is returned in Reg D. If Setting the Clock, the RTC clock string +; will be set from the 6 bytes addressed by DE. +; +; ENTER: C - 0 to Read the Clock, Non-0 (1 recommended) to Set the Clock +; DE = Pointer to receive 6-byte Time/Date on Read, Source for Set +; +; EXIT : E = Original contents of Target Seconds field +; D = Tenths of Seconds field +; HL = Pointer to Target Seconds field +; A = 1 for success, 0 if Unable to Set or Read +; BC = Address of User General-Purpose Down-Counter +; +; NOTE: The Wall Clock string is arranged as BCD digits with Tenths- +; of-Seconds byte appended. The entire string is: +; +; YR MO DA HH MM SS TT +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + IF CLOCK AND DS1202 + + IF SIMHCLK +SIMHPORT EQU 0FEH +READCLOCK EQU 7 +WRITECLOCK EQU 8 +PARBLOCKSIZE EQU 6 + +TIME: + EX DE,HL ; GET DE TO HL + LD A,C + OR A + JR NZ,WRCLK +; +GETTIM: LD A,READCLOCK + OUT (SIMHPORT),A + LD BC,256*(PARBLOCKSIZE-1)+SIMHPORT ; B := 5, C := 0FEH + INIR + LD E,(HL) ; Save original seconds in E + INI ; READ SECONDS + DEC HL + LD A,1 ; Set OK status return + LD BC,DCNTR ; Get Address of User Down-Counter + RET +; +WRCLK: LD A,WRITECLOCK + OUT (SIMHPORT),A + LD A,L + OUT (SIMHPORT),A + LD A,H + OUT (SIMHPORT),A + LD A,1 + LD BC,DCNTR ; Get Address of User Down-Counter + RET + ENDIF ; SIMHCLK + + IF HBCLK + +TIME: + LD A,C + OR A + JR NZ,WRCLK +; +RDCLK: + PUSH DE ; Save the final destination + LD HL,TIMBUF ; Point HL to temp buf + LD B,20H ; HBIOS function to read RTC + CALL HBX_INVOKE ; Do it + LD HL,TIMBUF ; Setup HL as source + POP DE ; And recover final destination + LD BC,5 ; Copy first 5 bytes + LDIR ; Do it + LD A,(DE) ; Now get the original seconds value to A + INC BC ; Setup to copy last byte, BC := 1 + LDIR ; Do it + EX DE,HL ; Set HL to seconds dest for return + DEC HL ; Decrement to point back at seconds value + LD D,0 ; Tenths is always zero + LD E,A ; Get original seconds value + + LD BC,DCNTR ; BC must point to countdown timer on return + LD A,1 ; Signal success + + RET +; +WRCLK: + EX DE,HL ; Make incoming DE the copy source in HL + LD DE,TIMBUF ; We are copying to time buffer + LD BC,6 ; For 6 bytes + LDIR ; Do it, time buffer now ready + LD HL,TIMBUF ; Point to time buffer + LD B,21H ; Set clock function + CALL HBX_INVOKE ; Do it via HBIOS + + LD BC,DCNTR ; BC must point to countdown timer on return + LD A,1 ; Signal success + + RET + + ENDIF ; HBCLK + + ENDIF ;Clock & Ds1202 + + JP ISTRUE ; Handle fall thru if no clock driver + + + IF HBCLK +TIMBUF DEFS 6 + ENDIF + +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + IF CLOCK AND [NOT DS1202] ; Not Dallas, make Intrpt Code + +TIME: LD A,C ; Get Clock Operation Flag + LD BC,5 ; and set up for ZSDOS Read/Write + LD HL,YEAR ; Pointing to Clock String + OR A ; Is it a Read? + JR Z,TIMES ; ..jump it so + EX DE,HL ; Else swap pointers for write +TIMES: DI ; disable Interrupts + LDIR ; and move 5 bytes of 6 bytes (.1 Sec = 7) + LD C,(HL) ; Get the Seconds byte + INC HL ; bump to 1/10th Seconds + LD H,(HL) ; and Get +; EI ; Re-enable Interrupts + EX DE,HL ; Swap pointers + LD E,(HL) ; Preserve original Sec field contents in E + LD (HL),C ; and store the Seconds byte (.1 Sec in D) + LD BC,DCNTR ; Get Address of User Down-Counter + LD A,01 ; Set Ok exit value of 1 + RET + + ENDIF ;Clock & Not Ds1202 + IF NOT CLOCK ; If No Clock.. + XOR A ; Set Error Return + RET ; and exit + + ELSE + DSEG + +; Real Time Clock Buffer + IF NOT DS1202 ; Don't need this if D-X Designs P112 +YEAR: DEFS 1 ; Year - packed BCD + DEFS 1 ; Month - packed BCD + DEFS 1 ; Day - packed BCD + DEFS 1 ; Hour - packed BCD + DEFS 1 ; Minute - packed BCD + DEFS 1 ; Seconds - packed BCD +TENTHS: DEFS 1 ; Tenths of Seconds - Binary (Int, else..) + ENDIF + ENDIF ;Clock + +;..... +; Save some space in the Common RAM Area for a local stack + + DSEG +DCNTR: DEFS 1 ; User 100 mS General-Purpose Down-Counter +FLAG50: DEFS 1 ; Flag for dividing 50mS to 100mS ticks + DEFS 12 ; We use 6 levels of stack (worst case) +TIMSTK: DEFS 2 ; Store the entry Stack pointer here + CSEG ; End up by restoring CSEG + +;=========================== END of TIM-DX ================================== + \ No newline at end of file diff --git a/Source/BPBIOS/util.z80 b/Source/BPBIOS/util.z80 new file mode 100644 index 00000000..ac30ecb7 --- /dev/null +++ b/Source/BPBIOS/util.z80 @@ -0,0 +1,340 @@ +;:::::::::::::::::::::::::::::::::::::::***************************** +; UTIL - N8VEM Utility Routines ***** Hardware-Specific ***** +; ***************************** +; +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; + CSEG ; Put the following areas in Code Segment (initialized RAM) +; +;================================================================================================== +; UTILITY FUNCTIONS +;================================================================================================== +; +; +CHR_CR EQU 0DH +CHR_LF EQU 0AH +CHR_BS EQU 08H +CHR_ESC EQU 1BH +; +;__________________________________________________________________________________________________ +; +; UTILITY PROCS TO PRINT SINGLE CHARACTERS WITHOUT TRASHING ANY REGISTERS +; +PC_SPACE: + PUSH AF + LD A,' ' + JR PC_PRTCHR + +PC_PERIOD: + PUSH AF + LD A,'.' + JR PC_PRTCHR + +PC_COLON: + PUSH AF + LD A,':' + JR PC_PRTCHR + +PC_COMMA: + PUSH AF + LD A,',' + JR PC_PRTCHR + +PC_LBKT: + PUSH AF + LD A,'[' + JR PC_PRTCHR + +PC_RBKT: + PUSH AF + LD A,']' + JR PC_PRTCHR + +PC_LT: + PUSH AF + LD A,'<' + JR PC_PRTCHR + +PC_GT: + PUSH AF + LD A,'>' + JR PC_PRTCHR + +PC_LPAREN: + PUSH AF + LD A,'(' + JR PC_PRTCHR + +PC_RPAREN: + PUSH AF + LD A,')' + JR PC_PRTCHR + +PC_ASTERISK: + PUSH AF + LD A,'*' + JR PC_PRTCHR + +PC_CR: + PUSH AF + LD A,CHR_CR + JR PC_PRTCHR + +PC_LF: + PUSH AF + LD A,CHR_LF + JR PC_PRTCHR + +PC_PRTCHR: + CALL COUT + POP AF + RET + +NEWLINE: + CALL PC_CR + CALL PC_LF + RET +; +; PRINT A CHARACTER REFERENCED BY POINTER AT TOP OF STACK +; USAGE: +; CALL PRTCH +; DB 'X' +; +PRTCH: + EX (SP),HL + PUSH AF + LD A,(HL) + CALL COUT + POP AF + INC HL + EX (SP),HL + RET +; +; PRINT A STRING AT ADDRESS SPECIFIED IN HL +; STRING MUST BE TERMINATED BY '$' +; USAGE: +; LD HL,MYSTR +; CALL PRTSTR +; ... +; MYSTR: DB "HELLO$" +; +PRTSTR: + LD A,(HL) + INC HL + CP '$' + RET Z + CALL COUT + JR PRTSTR +; +; PRINT A STRING DIRECT: REFERENCED BY POINTER AT TOP OF STACK +; STRING MUST BE TERMINATED BY '$' +; USAGE: +; CALL PRTSTR +; DB "HELLO$" +; ... +; +PRTSTRD: + EX (SP),HL + PUSH AF + CALL PRTSTR + POP AF + EX (SP),HL + RET +; +; PRINT A STRING INDIRECT: REFERENCED BY INDIRECT POINTER AT TOP OF STACK +; STRING MUST BE TERMINATED BY '$' +; USAGE: +; CALL PRTSTRI(MYSTRING) +; MYSTRING DB "HELLO$" +; +PRTSTRI: + EX (SP),HL + PUSH AF + LD A,(HL) + INC HL + PUSH HL + LD H,(HL) + LD L,A + CALL PRTSTR + POP HL + INC HL + POP AF + EX (SP),HL + RET +; +; PRINT THE HEX BYTE VALUE IN A +; +PRTHEXBYTE: + PUSH AF + PUSH DE + CALL HEXASCII + LD A,D + CALL COUT + LD A,E + CALL COUT + POP DE + POP AF + RET +; +; PRINT THE HEX WORD VALUE IN BC +; +PRTHEXWORD: + PUSH AF + LD A,B + CALL PRTHEXBYTE + LD A,C + CALL PRTHEXBYTE + POP AF + RET +; +; CONVERT BINARY VALUE IN A TO ASCII HEX CHARACTERS IN DE +; +HEXASCII: + LD D,A + CALL HEXCONV + LD E,A + LD A,D + RLCA + RLCA + RLCA + RLCA + CALL HEXCONV + LD D,A + RET +; +; CONVERT LOW NIBBLE OF A TO ASCII HEX +; +HEXCONV: + AND 0FH ;LOW NIBBLE ONLY + ADD A,90H + DAA + ADC A,40H + DAA + RET +; +; PRINT A BYTE BUFFER IN HEX POINTED TO BY DE +; REGISTER A HAS SIZE OF BUFFER +; +PRTHEXBUF: + CP 0 ; EMPTY BUFFER? + JP Z,PRTHEXBUF2 + + LD B,A +PRTHEXBUF1: + CALL PC_SPACE + LD A,(DE) + CALL PRTHEXBYTE + INC DE + DJNZ PRTHEXBUF1 + JP PRTHEXBUFX + +PRTHEXBUF2: + CALL PC_SPACE + LD DE,STR_EMPTY + CALL WRITESTR + +PRTHEXBUFX: + RET +; +; OUTPUT A '$' TERMINATED STRING +; +WRITESTR: + PUSH AF +WRITESTR1: + LD A,(DE) + CP '$' ; TEST FOR STRING TERMINATOR + JP Z,WRITESTR2 + CALL COUT + INC DE + JP WRITESTR1 +WRITESTR2: + POP AF + RET +; +; PANIC: TRY TO DUMP MACHINE STATE AND HALT +; +PANIC: + PUSH HL + PUSH DE + PUSH BC + PUSH AF + LD DE,STR_PANIC + CALL WRITESTR + LD DE,STR_AF + CALL WRITESTR + POP BC ; AF + CALL PRTHEXWORD + LD DE,STR_BC + CALL WRITESTR + POP BC ; BC + CALL PRTHEXWORD + LD DE,STR_DE + CALL WRITESTR + POP BC ; DE + CALL PRTHEXWORD + LD DE,STR_HL + CALL WRITESTR + POP BC ; HL + CALL PRTHEXWORD + LD DE,STR_PC + CALL WRITESTR + POP BC ; PC + CALL PRTHEXWORD + LD DE,STR_SP + CALL WRITESTR + LD HL,0 + ADD HL,SP ; SP + LD B,H + LD C,L + CALL PRTHEXWORD + + ;RST 38 + + HALT + + JP 0 +; +;================================================================================================== +; CONSOLE CHARACTER I/O HELPER ROUTINES (REGISTERS PRESERVED) +;================================================================================================== +; +; OUTPUT CHARACTER FROM A +COUT: + PUSH AF + PUSH BC + PUSH DE + PUSH HL + LD C,A + CALL CONOUT + POP HL + POP DE + POP BC + POP AF + RET +; +STR_PANIC DB "\r\n\r\n>>> FATAL ERROR:$" +STR_AF DB " AF=$" +STR_BC DB " BC=$" +STR_DE DB " DE=$" +STR_HL DB " HL=$" +STR_PC DB " PC=$" +STR_SP DB " SP=$" +; +;================================================================================================== +; MEMORY BANK MANAGEMENT +;================================================================================================== +; +MPCL_RAM EQU 78H ; BASE IO ADDRESS OF RAM MEMORY PAGER CONFIGURATION LATCH +MPCL_ROM EQU 7CH ; BASE IO ADDRESS OF ROM MEMORY PAGER CONFIGURATION LATCH +; +;================================================================================================== +; DATA +;================================================================================================== +; +STR_EMPTY DEFB "$" +; +;:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: +; +; DSEG ; Put the following areas in Data Segment (uninitialized REAM) +; +;======================= End of UTIL ============================== diff --git a/Source/BPBIOS/wboot-dx.z80 b/Source/BPBIOS/wboot-dx.z80 new file mode 100644 index 00000000..cb648265 --- /dev/null +++ b/Source/BPBIOS/wboot-dx.z80 @@ -0,0 +1,191 @@ +;:::::::::::::::::::::::::::::::::::::::************************************ +; Warm Boot Routine *** Machine Dependant for Moves *** +; - D-X Designs Pty Ltd P112 - *** and custom load formatting *** +; ************************************ +; 1.0 - 12 Jun 96 - Initial Release for P112 from YASBEC. HFB +;::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: + + CSEG + +WBOOT: + IF BANKED + LD A,(TPABNK) ; Get TPA Bank # in case currently in Bank + CALL SELMEM ; ..and make current + LD SP,USP ; Set stack in high memory + ELSE + LD SP,80H ; Use space below default buffer + ENDIF + + IF FASTWB + ; Restore command processor from + ; cache in (SYSBNK):100H. We assume that the + ; command processor lives in high memory. + LD A,(SYSBNK) ; Source bank is SYSBNK + LD C,A ; Put it in C + LD A,(TPABNK) ; Destination bank is TPABNK + LD B,A ; Put it in B + CALL HBX_XCOPY ; Set banks for extended copy + LD HL,100H ; Copy from start of cache in SYS + LD DE,(CPADR) ; .. to location of command processor in TPA + LD BC,(CPLEN) ; Length of command processor + CALL HBX_COPY ; Do it + +WBOOTV: + XOR A ; Indicate "A" logged as Host Disk + LD (HSTDSK),A ; ..by showing Host Disk already logged + ELSE + IF BANKED + LD SP,USP ; If banked, use stack in high common memory + CALL GOSYSB ; Disk routines are in banked memory + ELSE + LD SP,EXTSTK+32 ; Place default stack up high + ENDIF + + LD A,0FFH ; Insure the default drive is logged + LD (HSTDSK),A ; ..by unlogging the Host Disk + LD A,(SYSDRV) + LD C,A ; Select system disk + LD E,0 ; Declare new mount + CALL SELDSK ; We're going to use the system disk + LD BC,0 + CALL SETTRK ; Set track 0 + LD BC,10H*256+1 ; B sectors remaining, C first sector + LD DE,0 ; DE beginning track + +; Note that we begin by reading track 0, sector 1 since sector 0 +; contains the cold start loader, which is skipped in a warm start + + LD HL,CPR ; Base of CP/M (initial load point) +LOAD1: PUSH DE ; Load a Sector, Save Current Track + PUSH BC ; Save sectors remaining and next sector + PUSH HL ; Save DMA address + LD (DMAADR),HL ; ..in deblocker + LD HL,(SEKDPH) + LD E,(HL) + INC HL + LD D,(HL) ; Get sector XLATE address + CALL SECTRN ; Skew sector as needed + LD (SEKSEC),HL ; Save Sector # directly in deblocker + +; Drive = 0, track set, sector set, DMA address set + + CALL READ + OR A ; Any errors? + JR NZ,WBOOT ; Retry the entire boot if an error occurs + +; No error, move to next sector + + POP HL ; Recall DMA address + LD DE,128 ; DMA=DMA+128 + ADD HL,DE ; New DMA address is in H,L + POP BC ; Recall NSECTS and current sector + POP DE ; Recall current track + DEC B ; Sectors=sectors-1 + JR Z,GOZSYS ; Go to Z-System if all have been loaded + +; More sectors remain to load, check for track change + + INC C ; Increment sector count + LD A,(CPMSPT) ; Max sector +1 + CP C ; Have we reached the end? + JR NZ,LOAD1 ; If not + +; End of current track, go to next track + + INC DE ; Track=track+1 + LD C,0 ; First sector on next track + +; Save register state, and set new track + + LD (SEKTRK),DE ; Save track directly + JR LOAD1 ; For another sector + ENDIF ;fastwb + +; End load operation, set parameters & go to Z-System + +GOZSYS: LD BC,80H ; Default DMA address is 80H + CALL SETDMA + + LD A,0C3H ; C3 is a JMP instruction + LD (0),A ; For JMP to WBOOT + LD (5),A ; For JMP to BDOS + LD HL,BIOSJT+3 ; Wboot entry point + LD (1),HL ; Set address field for JMP at 0 + LD HL,(ENVADR) ; Get the pointer to the ENV + LD DE,43H ; Offset to high byte of Dos Start + ADD HL,DE + LD D,(HL) ; Load Dos start + DEC HL + LD E,(HL) + EX DE,HL ; Put Dos in HL + LD BC,6 ; .offset to Entry + ADD HL,BC + LD (6),HL ; ..and set Address field of jump at 5 to BDOS + EX DE,HL + DEC HL ; Back down to CCP entry + DEC HL + LD D,(HL) ; Get the vector + DEC HL + LD E,(HL) + PUSH DE ; Save CCP entry address + + IF BANKED + ; Copy vectors from TPA page zero to SYS page zero + LD BC,(TPABNK) ; C := TPABNK, B := SYSBNK + CALL XMOVE ; Set source/dest banks for copy + LD HL,0 ; Source address is zero + LD DE,0 ; Destination address is zero + LD BC,40H ; Copy 40H bytes + CALL MOVE ; Do it + LD A,(TPABNK) ; Set all Bank regs to TPA + LD (DMABNK),A + + CALL SELMEM ; Insure TPA in context (also set USRBNK) + XOR A + LD (BIOSTK),A ; Init bank switcher + ENDIF + LD A,(4) ; Get current disk number + LD C,A ; Send to the CCP +; EI ; Enable the interrupt system +; EX DE,HL ; ..put destination in HL + POP HL ; Restore CCP entry address + + JP (HL) ; Go to Z-System for further processing + +;..... +; Common DMA move sequence placed here in CSEG for Common access +; Enter with HL pointing to a DMA definition block + + IF [BANKED OR FASTWB OR RAMDSK] +DMAMOV: LD BC,8*256+SAR0L ; Send 8 bytes to Ports SAR0L + OTIMR + LD A,00000010B ; Set DMA Mode control to Burst Mode + OUT0 (DMODE),A + LD A,40H ; Enable DMA0 + OUT0 (DSTAT),A ; ..and move the block + RET + ENDIF + + IF [Z3 AND HAVIOP] +; Aux Jump Table so IOP's can find routines. After Cold Boot, the +; address of this table is placed in BIOSJT+1. + +IOPRET: JP CONST + JP CONIN + JP CONOUT + JP LIST + JP AUXOUT + JP AUXIN + JP LISTST + ENDIF + + DSEG ; Put the following areas in Data Segment + +; Command processor address and length used when saving +; and restoring cached copy. + IF FASTWB +CPADR DEFS 2 ; Command processor address +CPLEN DEFS 2 ; Command processor length + ENDIF ;fastwb +;========================= End of WBOOT ============================ + \ No newline at end of file diff --git a/Source/BPBIOS/z33.zex b/Source/BPBIOS/z33.zex new file mode 100644 index 00000000..a51c0093 --- /dev/null +++ b/Source/BPBIOS/z33.zex @@ -0,0 +1,2 @@ +IOPINIT +LDR SYS.RCP,SYS.NDR,SYS.FCP,WW.Z3T \ No newline at end of file diff --git a/Source/BPBIOS/z34.rel b/Source/BPBIOS/z34.rel new file mode 100644 index 0000000000000000000000000000000000000000..0e9d52365dce2737f4fe80afa872417b0c7302ba GIT binary patch literal 2816 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 AhyVZp literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/z34.zex b/Source/BPBIOS/z34.zex new file mode 100644 index 00000000..a51c0093 --- /dev/null +++ b/Source/BPBIOS/z34.zex @@ -0,0 +1,2 @@ +IOPINIT +LDR SYS.RCP,SYS.NDR,SYS.FCP,WW.Z3T \ No newline at end of file diff --git a/Source/BPBIOS/z3base.lib b/Source/BPBIOS/z3base.lib new file mode 100644 index 00000000..397ecd97 --- /dev/null +++ b/Source/BPBIOS/z3base.lib @@ -0,0 +1,128 @@ +; B/P Bios System Z3 Definition File. + +; This file is adapted from the basic Z3BASE.LIB configuration file used for +; most ZCPR33 systems. It has added the new definitions for the Resident +; User Space defined in B/P Bios descriptions. +;========================================================================= +;== NOTE: The Starting Address of the User Space marks the lower == +;== base of memory and MUST be entered. B/P Bios Utilities use == +;== this address to locate many portions of the operating system. == +;========================================================================= +; To change your systems definition, first sketch out the memory map in the +; comment table, then set the equates to reflect the memory map, doing any +; required calculations for element sizes and required spaces. As an +; alternative, just leave this file alone and configure everything with +; the utilities provided. + +; FFE0 - FFFF 32 Bytes HBIOS Reserved +; FFB0 - FFDF 48 Bytes ZCPR3 External Stack +; FF00 - FFAF 176 Bytes Multiple Command Line Buffer +; FE00 - FEFF 256 Bytes Environment Descriptor +; Bytes 00H-7FH: Z3 Parameters +; Bytes 80H-FFH: Z3 TCAP +; FDFF 1 Byte Wheel byte +; FDF4 - FDFE 11 Bytes Path (5 elements) +; FDD0 - FDF3 36 Bytes ZCPR3 External FCB +; FD80 - FDCF 80 Bytes ZCPR3 Message Buffers +; FD00 - FD7F 128 Bytes ZCPR3 Shell Stack +; FC00 - FCFF 256 Bytes Named Directory Buffer +; FA00 - FBFF 512 Bytes Flow Command Package +; F200 - F9FF 2.0 KBytes Resident Command Package +; EC00 - F1FF 1.5 KBytes IO Package +; E900 - EBFF .75 KBytes Resident User Space + +; The remainder is for the Operating System. Exact sizes vary depending +; primarily on the Number and sizes of Hard Drive Partitions, but may be: + +; D100 - EBFF 5.0 KBytes B/P BIOS (unbanked version) +; C300 - D0FF 3.5 KBytes ZSDOS 1.0 BDOS +; BB00 - C2FF 2 KBytes ZCPR 3.3 Command Processor +; 0100 - BAFF ~46 KBytes Transient Program Area +; 0000 - 00FF 256 Bytes Standard CP/M Buffers +;======================================================================== + +FALSE EQU 0 +TRUE EQU NOT FALSE + +YES EQU TRUE +NO EQU FALSE + +; The External Stack is placed in the very top position in memory. It is +; mandatory for B/P Bios and ZCPR 3.3. + +;EXTSTK EQU 0FFD0H ; ZCPR3 External Stack +EXTSTK EQU 0FFB0H ; ZCPR3 External Stack +EXTSTKS EQU YES + +; The Multiple Command Line Buffer is placed in the Top Page of Memory to +; place it above the Environment. It is mandatory for ZCPR 3.3. + +Z3CL EQU 0FF00H ; ZCPR3 Command Line Buffer +;Z3CLS EQU 208-5 ; Size of Command Line Buffer-5 +Z3CLS EQU 176-5 ; Size of Command Line Buffer-5 + +; The ZCPR3 External Environment Descriptor is mandatory B/P Bios & ZCPR 3.3. +; The Environment Descriptor MUST begin on an even Page Boundary (xx00H). + +Z3ENV EQU 0FE00H ; Environment Descriptors +Z3ENVS EQU 2 ; Size of Env Descriptor in 128-Byte Blks + +; The ZCPR3 Wheel Byte is mandatory for ZCPR 3.3. + +Z3WHL EQU 0FDFFH ; Wheel Byte Address +Z3WHLS EQU YES + +; The Path is mandatory for ZCPR 3.3. + +EXPATH EQU 0FDF4H ; External Path starting Address +EXPATHS EQU 5 ; (Path Size = EXPATHS*2 + 1 = 11 bytes) + ; This defines 5 2-byte Path Elements + +; The ZCPR3 External FCB is mandatory for ZCPR 3.3. + +EXTFCB EQU 0FDD0H ; 36-Byte ZCPR3 External FCB +EXTFCBS EQU YES + +; The ZCPR3 Message Buffers are mandatory for ZCPR 3.3. + +Z3MSG EQU 0FD80H ; 80-Byte ZCPR3 Message Buffer +Z3MSGS EQU YES + +; Shell Stack definition. Set SHSTKS to 0 to eliminate Shell Stack + +SHSTK EQU 0FD00H ; Shell Stack Starting Address +SHSTKS EQU 4 ; Number of SHSIZE-Byte Shell Stack entries +SHSIZE EQU 32 ; (Stack Size = SHSTKS * SHSIZE = 128 Bytes) + +; ZCPR3 Named Directory Buffer definition. Set Z3NDIRS to 0 to eliminate +; the named directory buffer. + +Z3NDIR EQU 0FC00H ; Start of Named Directory Buffer +Z3NDIRS EQU 14 ; Number of Named Directory Elements + ; (NDIR Size = Z3NDIRS * 18 + 1 = 253 Bytes) + +; Flow Command Package definition. Set FCPS to 0 to eliminate FCP + +FCP EQU 0FA00H ; Start of Flow Command Package +FCPS EQU 4 ; (FCP Size = 128 * FCPS = 512 Bytes) + +; Resident Command Processor Definition. Set RCPS to 0 to eliminate RCP + +RCP EQU 0F200H ; Start of Resident Command Processor +RCPS EQU 16 ; (RCP Size = 128 * RCPS = 2 kBytes) + +; IO Package definition. Set IOPS to 0 to eliminate IOP + +IOP EQU 0EC00H ; Start of IO Package +IOPS DEFL 12 ; (IOP Size = 128 * IOPS = 1.5 kBytes) + +;========================================================================= +; Resident User Space Definition. Set USPCS to 0 to eliminate USPC. +; The USPC Value marks the Lower Limit of Reserved Common High Memory and +; MUST BE PRESENT! + +USPC EQU 0E900H ; Start of Resident User Space (MANDATORY) +USPCS EQU 6 ; (USPC Size = 128 * USPCS = 0.75 kBytes) + +;--- End of Z3BASE.LIB --- + \ No newline at end of file diff --git a/Source/BPBIOS/z41.zex b/Source/BPBIOS/z41.zex new file mode 100644 index 00000000..385be293 --- /dev/null +++ b/Source/BPBIOS/z41.zex @@ -0,0 +1,2 @@ +IOPINIT +LDR SYS.NDR,SYS.FCP,WW.Z3T \ No newline at end of file diff --git a/Source/BPBIOS/z41.zrl b/Source/BPBIOS/z41.zrl new file mode 100644 index 0000000000000000000000000000000000000000..ed10dfadce1be4513b38abe9c9947ac8e1928b10 GIT binary patch literal 6912 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 I|1W?42b(p@&Hw-a literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/zcpr33.bin b/Source/BPBIOS/zcpr33.bin new file mode 100644 index 0000000000000000000000000000000000000000..984d1ba6b33dc1404671cf9f0a17e6336ff08516 GIT binary patch literal 2048 zcmaJ?U2Ggz6~42(9*TAumBzg~FtrNKuK38@ckuui{@6u1sTm zuJHcM7XEwFL zBK@^vt7n6-`r}{(hl%`0{j^`5#^K&GKHZh=iPH}pbvLt3s4Y}0$Wi!F577@Dbyy!P z23XY$WaImKI+!E#Q1>d`X*NHm*ZctEc>hXqArOaNevlQME0%tfhHxAI%NlV;nC1%1 z6uGK60J*e?);MG)O!~H?3UQL?5O34Ro!05^zVbIKUVjZh>vuBr=MIhqA(bb?hzth` z3MfMIuZ)laxgN%0ZPBm3RXu>^>J(O3x_hc0DCd0BRuceb>1tX+zJh)32-xiO7l?zn6DnKB_-EQ=*1&+Fblpz|*l5A0 zJ!Lq}g&}0!K-v=-Z-B5W@LjmF-g_n^y@+;V0_d0Lv%OLp78U6zvLMptGfRGCbN@<_ z{v{jecmPbqTccmgsjam-EYi8!+O~eF7*9~!*@CRp@BUyn(5K1HkS+YxAkP z`i9>0ZTy`wtIhT>_X!NPLt;)#{i1@;h@D{xTX#>wEN zYr&hV8?!FM;79ISSqRO-Mgh=MoSQ(Io32Uh%J#-d`Z;Io6Zs#&9pOH2txQ``p;otD zptO*b|2``S@?S0OBcJVeLWF&;Aj%&Ll6*_K0Mx8lb07ww142SB7|mG$%a^2ZKnUSm zlDRyfb=QQOAmM)w*p*?Fw1O+vZR4)~Kuh0AA{#e!;iZy%rP!P0IA_sH65NPp8dM?NFM2*}?Ze zJ}^hW?WmnnxT!26ZV_6A{x+Y7{)3iNkk8mEN|7dqVW(kmpn~%Kw85G(C&Z*s6ChQ> zO_MOLAy;Sz6fa9o5O%+JY_-o-zJVkW$vm55h(pL`EM6bF1|_xx(zW&0^w>30zDe)o zA4134CdcdYjp&I#pvpeg;Yh(h=tX0YMp(YJQm!N@%Jf;bd~@m$)lIsw?6)r~=+qU{BENWGt76et{7A zD)7}~sH$zo7}pNrYk4Cohm1DhGA-s)cgj>u*X6K+ICieIn9(P*AScREcf?cbvQi@+w!A-xpzNX{#(SYrKP)HxLvMF>S1}!#w0- zZtzBHv7D){E1zfb$#p=UOj8eMA%J{kf=sctBJ`mGec4ej(=R!AoV5cmfyucLgi|pf z`#rosd%HMKKGP%4Lg}o- RDzC85lkR@%Q~ZAn{{f6JiOv83 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/zcpr33.rel b/Source/BPBIOS/zcpr33.rel new file mode 100644 index 0000000000000000000000000000000000000000..f9f24ee8f8ffe0eaef5fcde485cea0da6cfceeb6 GIT binary patch literal 2304 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 F_#gh+m`MNt literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/zcpr33.rel.sav b/Source/BPBIOS/zcpr33.rel.sav new file mode 100644 index 0000000000000000000000000000000000000000..7c0a2567317e7d184145252a650170ae13fe22df GIT binary patch literal 2560 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 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/zs203.zrl b/Source/BPBIOS/zs203.zrl new file mode 100644 index 0000000000000000000000000000000000000000..11be02dd0bc0d634f1f707e9d6a4d56e8e789ad8 GIT binary patch literal 6912 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 BoWTG9 literal 0 HcmV?d00001 diff --git a/Source/BPBIOS/zsdos.zrl b/Source/BPBIOS/zsdos.zrl new file mode 100644 index 0000000000000000000000000000000000000000..e43d1b0a8839c0cb5cf21c35ac0fd3be3536966e GIT binary patch literal 4224 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 literal 0 HcmV?d00001 diff --git a/Source/Clean.cmd b/Source/Clean.cmd index 60d6a7fd..e87ccc0b 100644 --- a/Source/Clean.cmd +++ b/Source/Clean.cmd @@ -7,4 +7,6 @@ pushd ZCPR && call Clean.cmd && popd pushd ZCPR-DJ && call Clean.cmd && popd pushd ZSDOS && call Clean.cmd && popd +pushd BPBIOS && call Clean.cmd && popd + pushd BIOS && call Clean.cmd && popd diff --git a/Tools/Win32 Disk Imager/QtCore4.dll b/Tools/Win32 Disk Imager/QtCore4.dll new file mode 100644 index 0000000000000000000000000000000000000000..991dd19a022d09ece0646f1de70538162b72f093 GIT binary patch literal 2537472 zcmeFadwdgB`ahnw0Rlu4r9fA!qSgz7N|jxS#icd`%B31;3#e345fyQ*Fww5GrI?b;7JC;rdh z&s46iP|(cEAs7z<;#iY|5FJdl`KO*a?F!`zyw(2RA;+GN-}8urV&+iZWr@2&Vv`Im1SoPXw(vu87D$`SZ8_@tEF(xU?OIcHY2m%0H9?e6wd=g*1U<;987z`{Bx6J@ZBs6gUU&Z7rzOc1XE` zl;;269k{iCGk7pf8Ko*YcFpHj zN8~s(pF_3hM8BGsX;T}6JDBfUygIi&w9U1+KGYl-71|SUYDWmb)&)l9Zc|(ItM^@c zS=nl*4c*iLy68Xe$h18nO4KU@BS^8?o*?|ulG`$E(X;R;u1B*HiA4N){Uzo`d-CPQ z=xeALu{n{FTOVJp-)u9+TUsZE|9Nmn7GbPo+js!X0@xc+ZC!9*+HdL`WqZF;{(P2i z3@85qA7~ojw?8>#Ms(5nnYIbQ?9~x;u@@;s$UGzlcQ}xIB$N9C0%A2hYzFXuM9rdM zGeYZ>TqGUw6q*=oG;uo19*q<>@q4R@?!*+TB%0SX)?Itg;2H6!!*xVN{L^qpSkh5v zJUTs@4V`H;^usU{7B(bdSl0-2)lFqvU$Tu!Byctmr1|~Y7>8Ei9I!T2Up?wgV0v!u zws>DHe~Kqkovuc_X11rX>P&saZ|s_Kn_U}e*9uEQ>jEuWS9M5E!arD>XdhTGMJsY> zu#9on2`l)8l<$x$c+iL7sQ67qse43hv0!t9HCBC&>5Dh+cQPS8qmAI291u$O zpM`w3!g5euhm?0E`y?MZwNeNMC(v=!oB0^g%e_%WZTkMHz!7S5aE(*20QgS@8cH2T zLTus&mrc+RE#!b^W?yKDlNSVxj{2v|7Rgu}7zQL!{D{O;esU35&=f^5w5X@ZZPR?a zIfo`xXZ~87-=q2=ZEiZysm;&FS#2JyGTP)&`)dIQCRI5G7#)9aUkE{fZMSu^+t~fP z4ma9fK5y8Jh}SRh<}HywljYA8`7>3}z&nj^P2Owq|8@9(2L8X^7V*v$g$&HAQ!wfw zIniMRyQ@Tn#19gW5n%Vf^fC(`D;i}sTQsbg7pw>6eqE3L7N9cxi$8d5P9^3P-Wkhow#r+AR;5w1CZ1X68*I4DLl zE&AwUbCiYe4HiQ8>+{l}Om@2db}So!Dy!WT=pWjq)RFzdo-`YO^8rZ5cKxE=d(bYQ zqWAr|uMM3CBVDHAl`WY$xzF^a-fQWXJtJEBVb=WKEg344_FCUzk+MrV>4H+l1sGD7hWnXxm`g+Hz(^$~Aj=Y(;xj=y8N?sao+ zBtA?xrmbG=hXq2u9QaNjn_gT+ua;z@fP;@8ZUJ}k!OE+u24Up~*-Pdjk`A_zxLtQj$8Cr!S7_sXmb#}FMtybEu4_QJk z(~8!5iZ&}JsNV$-W>g=oRjt(mo4;R{QoyL05!kE-Hfx1WU8%EYly1;7@AZ^!R{H2L zb_Z+>{+LnSBlyWr>W4=4=ADTiVD8%bKvyjt?2`ou0Op8rCY!d0gKLHfZ5Ad={siAU z{*lmOptn?luyATBuD1oc*Hl3AbV(G9gXtwTT5vV_K6>=}K2Y?A40bOlbAk&6qvVq5 znrIGC(}Aa!0Z+Bt0??R(eZ$i5Xv)7XO_zoAk%i>Ywd?xWvwJFBea{G+8-V2t^xbi()Q3M*CJNYOI~*C%HJ}lhl8u_o)46&y!5~iy7F@7fL-bb z4F}VM2NTM5p*^iN@BXHjE&jHF&0u38(>_=WYzk8qn6|}Vo*o8G zNfLICuD^-&vBeY&lyaAP)J@|>S}9(;R_+h&QTj*nrT#ayIAsaip13EG2p&vVe#4h} zBiuH%%%E;;o7UGx8wnW;A%fzq5J-5Q!a|^8MIb5b{`LO8_(Aq}WU`;0Xwc{<2mK^7 zc6rg0=rhVE^lAT(`kZxWpZB3bqtBIOa%<4lR-cN|XIM#*7qsNzPR_AwUcc&V_w01l zzD9=gP9^XCjgQ4s)Y4|Hcp3zYR$QW%Zr3L!g8S24xA()GQfK=^30G|t1xdM;Z7|b( zZJKu`s~?R5^hf-DaOGm(wqR9zx~q0A%7Q|!+H08I4YOV?$#EELm+%kOd~Fa59<8)Z zE1!J4XVHf2e44W_u}oh(EJhW0+7ja7mvBfd6Nu*Le} z8P0j2Yt5YNY=I&U|F@X6u>qW+Vj_k<0{OL~?Ql$w%a_<>slV?6^SQ!JzHMo-7)pR{ zx%H}dit3#lTOr@0qtJPLMOf>G3h=VjrkXj|+5*>d)}ADYQ<1HeZVzn=oUfH`C~!Sj z+U$C+$+OxO+KL9IhuO{I?*Ys|WP7fceA~={wC_iHtxOMAZBKKBp2CafYX&Yt58^T2 zAnI>ua@pdGObB9^Vps@BRJGZZV}M6U6-$u!lw`;Rq+$-9Im@uMD6_>p4_5folwJ{^ zV=6r8burIYMB^w#>1|QI&IHdIzMxe{EA#_#eOL^r7sY&{81RLbR*06q-GY`3naj{g zO_dXxLG{5$B(2uPpH2E(LS##L*ylbF%ji?eUN|1wWp=H~367pGc-Qc})drwuQ9FQ; z^J4x90Lb-R1329iaou?bp_?;V^G;KJ+tqy!?EMiliQHE_Ew6a0t5y>gOTfw)P<3~G zR02ixThr7zQ#|jwYIiWZt6C{EQo=t3?d18kE0zl~?mJM&i|T;^VE;VtWM!ZwchO!q z+2e<3EncTaVzV&paA9D(cIo8MHmEBqHzB2C-%FaS?}pa7=HDiOo`L~Ev`-7wSCr#N z2;JbmgmS8kOmI}3_}kT@HW(GCVvC)`_Hz@lkI`D#8a5^c(lIw=p@Yb@DjRvRPh|g^ zue~sS_w+C#ObgM@Eo={R-k?F5!?0%i{Mf~&Hq^`+Y*TvF%*nU8YQH4N?+l#Xzh+LZ zO&Qnf9lGV4E$do8`M7P*8lNk)4A~R64$BFyu`{i8%bqn|T%lKx+R~-|nISW_RDCgB z^L??(IUVHLazp#JvbHTZe4z!}C^yIUSBrC?R%RMzIu&9Cw5)T${?MlCsfgo!w|9$L zv^{=mSlyMj9uiAfuJvF@t$0v@T0F?8QRp1-qh~$hI3?%VwGm+mKf5+&vNoXvQN*_} zW#g+`TUuLWexxU2Nm| zjAS&=q#g&*q;I>ahFrDlsL9MemhwgPp_iO3ct9;{Nq9M*VSl%XLHRbbowI***(PXZ zn>DW!lMvCJ!0&42^Z}SZ0CqU1r)ge?*+~FuP~hzK6EH8bbE3cL)uVb+i8j#h@Os+W}~b2N5HG)3#;15Zk(0|6m0+}aH?p&7A;@+s2Lkk(zn4Jm8+?2&@$*YbTh-u1v*gGV@oX9r*m_8oG^+9Y?--a!KU41Wg#Yk1eo>Vx&tMFeQ0(Z@v1 zS18Z*^0959^h+#iDFJuqG&{62bgxU>C>$-x|^U zb1BUuuUa&}#%jLZX#S12If^xA^U5EzKzq!IrY!;iw(s@|o{QZD6_uL4#Yq1FW*}ha z$nV{Wk(UwM7HiYE6$&Jov=kl0R^ku3X055H6%Qrzy{uA>4){B=O|^763w1@yD5RAxkH5%vUP0t1Iu8+~SZ_9u zl;uphkttirbq&BID|Sf-x1#mikdmDf-@(p{DRb>2yFhjxG%_%=;~Nt*fb9X+2P6;P2}rIaBoBbrfaEhV z{1}~FJbjSD@Ej(Yoyb}$+fsMME|CRGSEdL~mZX$r$(zkyR|@|`ZHO%wHDYvcW2XRS z*l#i(2L`r9*T;p8A!hE@y|gS$`!1Vy0{qR(?Vi~sN*O#m*dma3aG)+wXP3a)pc_w@ zXP8JlM-4dDDp;^$kt^2y3&>V3m=271jX?i2_Q86tOnm?#uS1016d3KkN8 zebqDlDw)pr!Dv><0|OTO=Xj@(FvsK&ZDM6KWpMYQ)7Wt+bZEaLn3ZAFw}5{fEFW73 zKGa5G;j={T8hg!rnT8j}nnliJygY8cOvTF*^Tm&s`Ft^b?XIyu;x(Kc@m6?Xv8$P8 z^35O_H=%bDI7TaWY9pPVW+mI>b+~H(N**x+W5|MPtbGwlIxIj)&GWYPvgvaQ>F(*? z5lpFjsSo_w_KqQaSehP${|D_%*bwT_yoIK)4;+CP&COQ-j#g=rdJFgDyVI0Q4MTV+ z+M_cfjqsbOUQ1#0>vPjT#;!D6W8!US}{att8HscdU=cM#X7spn>UrKF7*riJ%gXV z8C+j8-``WN+^kz|w;A;rf2vu7V&>Yi`71pfEkC)&T=SRY8nd~s%%#!}>&hG}xt@j5 z1P5}}G3L55*B>yN{QgYda5I*Cq3D6s20n@fRhht*nP-t^tf?NHYQ#%~51hKzyA-{= zd=$F;)wSMDpAfGme-5LZEzQ!3umQnI6x_c7jc5>akm!g^6tzYFxPZY(iafwN6EBEZ zXhm%>*PZIP95;lZG=U(D-}9^c495$IMIYFQu`X5)j~~w%bLL}Vb3N@?u_dO5$*sz9 z9R8IzV_l6!4p~uD1E87SnebB!JlYH#*U9IN7rzNdOgMmBTzpbYnKXMZGjkEW5N*q z>=qcrO%dCm@nRK@KUk7TAEmm^Whosjpzi-E((W8@ZGeRp<--W-@Hp4Rk_-TKe++_0EE_#41ReK)0U+d zM@4CK;)iqB;{am#*cnluMQjSF^=ecn3 zKyRgZ?r)&ol;ObxT?1d$ZGH@!VeYLP_9%YtM1H1nb?`u+z{a}FM+VP`-3riy2aZ+- z%sapcTHuvB$Kyz*2B{myr;G6fI@V2o7%$_PJRc3lXp+?p4pD`9s;qco7j;^ii+ED`baKLyIRM~{yY3EP8f(-^<&ja@mOcPh`*N8%Ns zXuHSPHg_(#FFkOir>L#Usjl9*-&5LFc|Bl+ZboRMO{i!v{IREi5qoRtg-Tyk6qyB< zLt$fPhFZDOy~o!My>B8N)C#s8MCj5;h$X&&)?lo&9WdHrGcX?Tnv*a1b%=Q*`vkva zA~hQN3~o|6%BhWPTj^!A3HEp%jd3pCJtbuwoLWrChc5M~ZbCm6n;L0dU{jAFM>)sE zlE`V;D8g0>zeFEgV?dc$a8}YzkGt3x`u|JUfO~s#e{#vM9o{S6)P(2XD)1;umbZw!8tzrgoiux)to)0*yUyEo7Gy{FGER|EAgb4!xCR|~BA{z(M7xAaf>EOl}p^v>w%+;rVJl#FamWPHw4o8VGzba~zXa-9=pJ*eP7ew!g6+Efky=I% z3jE@IZ-v|DX;O}f1gVhtPd+Wp%{C=7fz6_mC5iwMtsT}@4cP~Kxyq^CPThcL9%8g5 z`XZqyirRCxg*C@$Og*uvC=>+d0cGTpBOu{vdD$=3?QgkJH$${QcOThr1l=~T)u!jY z$~sZ_c5^U~AYZ1K!&%4_YYGb|k2=`I1JNmVE&)q@+OZ|)f4pZYqXt`_=3P|*(CZg? z=LFl{46d!2@0}CzmLthF?}_>RVP=ra4o1Fsjs$C%gMSe*ALJ7~8vdL2#8UCgnor=# ztjXtyASbgUK~5U}iv(B52h^;SPpJ7Sp3ItjjtIgtTc85JdaxdUiS3mu(viOgZ~O6o zBuMIYRK16?1~@5Gd37-!wshqUU~O+XA1C2a?hhkpo*xAZgPk6p1P-<6BKDUx zvzhO11V0FMFbZa=ls_WKDR^)TWKdTrgT>T)JIy1L~m7(LdAX!&aN$L)mm{b4|-( z+q}SN^M{G4aEc9k7XQ5e$^YXY&@9P6NdbqzrgpI!R@}!BEA+R!GLhX!B!DiD_vto`%BkSLa##8)VBAN(KW9_ zx99648nJbBRj|=Lprv77hMrlYXNK{gy0PIC2UeNz<4#+z5AnD9>O*^~&ro;8yM@&c zu#|M-#{If|g6?c=O_NJtT<-D(KGQGG+Pf+3gV3J2?|I5rDaEZBhUcV=(Iptaoq@p$ zr4~IMk2JDx6A)n&PUZxCM6=t|sGJmp?*7|S->LPk~X6qf4SLQmUAd)L| zGpeekaWw3LB8&F@eub_Up> z^-*$3uu1HKN#dk0@*_TG;RjgTIb6S^1}_40W%qN6TuuV`5W8EP+Ed4F-c{w)%bSkw z-oWr$N4k?7X$-9>SnWuw9xEZyNAj3Q3UwBu32o$Q+QdPr-2|Hk3lrHI(A6jwo5CJi z;_0m|5g$nj*oCQ(3j0dJ{siFBe9N`c6{)zCu$yer+kk!U)daw;P0Z{FKvqWp+UEm+ zZFKUQ3=SQMid5Hsx(I6#V(--uBV|5P;ycW}BN3mIu*#^A*gw(^8#KjcplF(G-|OYH z9UgF-_6!H|3Q7hW%Z0#1SN~uKJEhSoBT$9U{1_gxlNAV+}Bvmu;NHF;ViY5t=#fWt8XRdf}AtTk(?N&Ug;V?QOqmf zN(fpzJkg zOEsCPAZe4NoQzQ8_G`@$I3`*-C4b6y)!qxj1S9SN2O17!==KM7dl3Jrs~bLbq&4%$ zoz|?|y{eDvHd^Us)mNvMzGfSQ{zMVhwrn>PL@!H;Iyta2F-@zPDL!g2EW1PvpTKxHMOe>L0k#OlZ(l3ve5T| zk1d8vV06IMF;`$VfL5Fi0EYBxgPt+i^`8LVsIIreTI7K zk06*@wNh;vu#akZNR2*ZCH_BZ-R&F`8cqZGiScQ?s$04D+X4HxiF={JwOT}I3H_Xp*EUbFq!K9n;iJ5@O5;#hzYdz8t3N1osATKF1-bnF&N zYSTh|=yIv1c8-RmZX`h#ASM0@WU!E*+~g?)^W_k0W?Ts*rc856E6kAIV1zuBvCdkV zWoQaQa*Bpfrk_>Dh!=?%p@h5hTHrrEBcvVH0)@)PTHr-o3%r?Yfj4n2a3)F!-)^;bQlzskA1Ph_`F1st;CKlG^o>er2n;UmR?j(S-Bb2Q$SNQ z)M9(E!J+D6jSoX019}BGl*%2zsVDKYC88t*%CQ7WwtD-eZd+@HwuIwsO}A_iSM9|B zkg#HMR8Rs7mEfDNmM%2G3WQ1j^95Lf62zDQ%RrAY1)r-Xisoyj3scZ3*v`V@LKILZXQ!Q&>@GKJWukzZRKn zX$Z$4`FfWo_&WN}pTIdyS*jR;CSNp0L;tYr}DCUua-C|IzuPsrSM#j>G z`)p46uPebXW~?tr2e7qlX$ld1 z%L&JBG%L6)l>#QP=5)IXkZ8W86np|qY-oa>B>G1aM%bsADbG)a93%2fw$=pVV`6nG zLOu(l1S_={Kxjpb!2*T~BYlHNCpD)VDX++qMJ?=Lypi~%OqB2sGZMo_Vm$|Ss*yMc ziBhKuT{wurb>V2}F9@Tdo3Rl=80hBOr>k~8XpempB6Ux`6FTcpOgW4Jk3sd@12aKd z_=Siyjn+$=-P+KLl;h1nJ!J$nQhRjA4_49A_F%o+vs&q-A z_8W}nW2gNF=OfM7Z?Fhkqz%6}>#=$)?Z9L-X)4d#(+sY^D0ha)C7<+uJlz!5ZwU;aeYV| z=tDUthrt@k3vNdW-myDE3zFtqzVNBFAfvy;)aM(mQ`XQ0Sbs#?AK!-A^%dkh+p%4T zxy?N#yTPkYE!f72aJGnZC=*N(v#HaMzzLiefTND~?{M;|pr7EOVOXBV5e@ABsu!Kr zJOuNmvEdze?)Q>>Sj_fkVTJFwS4eAl9;u5K*sdPOy90)qvRiFYH|B2I`(4AQSdVPa zm}uA1aptNyZ?awKrLNX&dDx@08gGGJT2-6o$}4mPqS{4v?IwqcODf8pT2)J4wF4(X zM?2M`&04inD{AqqXb&785l99m5Z-UY zUko>4n$WbDOsafnP=L#S%6gczk`^G0Kp?d{(EZ6@UA9SlsDvS)il+H?W-+FNq#!^S zH8gI8NgPGZPok~;4TAqossKR~^&ko^;R&pn9m?xfuaO;0T@=c8*~U|L_wVDf)gnlI z0l@FTEAX->KZ_X2IZs088!NKp4FZh0lSN*AfdfZhfyGH|=-7sEj~E(N3LsqY2!i14cHPs^iU*Y(VHgw!CI##fJ**2|{6)b#@hU!kS6u{c^4IDxuW7wr?Ca|hyBxw%PU0o1LC zsjWhPa^J!WSlg7mDA#Mnx?mLDMz<70Vu^LZ8zIQB5#cr*@fXs8P(=g-$|sUTK2b2p zr#AeMXCndB%=wt>fs~%c8n+Bl=8i}IVA9XelX9*zd>#wFcflv@Vr2@xN4W;uQrDVL_<&GQ5DJHgW9|JhVjjN3dcnw zYE_#WXqVC#!3|$1p}6!>I9@2WKAJ-L_|$`+M_IDkA!qFbyZS1{i24FWHs%DRc6MqF zmrP3*$4t8!0f3;fQxkg~6Y}gFcrx>^;K{|0VGbF&3{td_r@GCAL58YhJ)P_&jJ+xo z-cV}b0N7xi2frl~BX)2aw=NIn{^1)LGk`3yE2WGX_!%=8%b3AP#tbgt?i+csn)0q2 zJot%>j={;hn{yc!lH3hP*W8d+V@?CJ1En)AQA3gwNW zzNUF}`?3|%tu>>y>c;9%{>IE<9hZYb6noG|LVB*Z9UAm=7NqXV zG0qy-eZRBDbuHR5#x)PAM!bLCj)ypTHNL(bq9OWR2G)ka@wKn-85*kp$-m@8qCKvK|$G}JZ@ zjY$d4LtK;qL2Uf2<(V{L%|OZF)LzJi_uP6<6WY$e69!`)`BKL0@rBa@r4S=SsfTy3 z5~mSz_}n6&v-rFn&k#O%+9Xl~xMzZI8yb`52Absz4!mx&u~FqOSZm`ZJ)~XnCXT;6 zi1}%((3xWi4Wa0_=Wt}vwkzfK&i+j6Lh~zMs)It~iWj5Y%&Wvk&-Mw}=ox+<@vCp8 zE(B@0&die@o%QBS%BYvtdg*2y1&mGt zI4G;R^ZGE=Ra=NM>MX3qa0`3L*J)rWwwsRC450bMCtWtbURo#IXpG=YoFXu?t{)AP z0OC)Flbs2l1JiH(Uf)Wfdbq3ha`e-LMN`A&9*(j#Rg1xDs|2e_lhakZjUdypbJaHU zQK)vxNnP$3n=}_kGcems zqXlDcLr2d6tWr->p8Oz4DV5Aqg_*!3WV~^PvGy{wCr5feN4o2yL}KDz-%>f!sc;%{ z_vpU+iLOb7z{##!OwF$-8LSz+pJ6IF&Tsjc9B0vX4(i5gjx&HIesR#16WRZR7$;6{ zb{ywR$)^5dHD%b&zdX(?%7pU~AzkZ|b>yv)jyxU%p~S+`Of}NvTWH&va7l~$DJG%K zlW;;Z{s3kOrtCQYAvtAl;4mxPqOaJMc;Wo(;EUe@cw&oLtiYL9kmb@Rvn#CsmCk2b z&S4Ao?@?A=4P&Se&$ks|8M;|5a0FSYkfcef?8C##@Bs%|~s~6#UMH{TUv=({<;? z&`i@ce_yRIb2`q>E*gz@*PEMyU!}X=T!#bm>8f?8{?$7%z5&SBCOUaF;vA>C5AKUA zBn}@IIJHSUpo;aJvhPjW2fE;qg4`lt+HM75u%ob(XK6j9g} zx|rmJfRkWeZdC9hHU5k^o+HH`0qQ0Dioa>b$auF)Ik<3Ofg^d}5`6$<CdOUMAvBBi1JO^ryzoDp2fY zH+b+@&&fRV*JSKWtOa5(1;#MOnK#Cv*eB!8!$|%VG(^ww5(KZ_cr{r*69%QViKD+Z zrd+!iM!9pqR!?))k@|=XyEbAT?xEpjn6wM*Ir%Fg@W$c9L~ecOeeAe5?nW6i`|0l> zrs<}h>+QUkp2gP1K13nutIAkV1jk>Q{-%{~?eP$27){d`8q<#v%icP}APq-uO%V)^ zvN?yAP4PVype6eH2->@3dGk)jyubgi>`aYT^B%qOj_2T-yw|5m_$>Rr=2?uVD~I2~ zXa45}(kK1fK+B%h9K0IqVu!kOKnw0E?NJA&PRMZAhzHzy<=-;lA;RPQQX8CicHn!x zs{&O#EmUU|WDg_0JR*I7~&yQ=nM}$Hw&b*3B=*)uUN7`L~FLng?k5JAJ?jHqS;hHFn z&=pUUS0sz$tS$m8u=UARuR`^ct3D8t5hY)NQ4n8C>kVYXFnON&!% zJ(Wn{Y|9hI4uwSB5f<`@=$8@aamXCZU}Yo%7v9! zTcCd3g^r^7h~o_XDh^{L*FUmJV^b0V)Jt*`xL*6nuve=thp9Ml62;Tm>boY*6~IQ) z_ST)>=}4JSY479co#YwYashgsMU7|MD$A%sY$ts_}69($W0>p6-Lf3o~#v4 z9qlQcru3wuH{g@kcYmXmmy45M85cV9N*37zt(w0=OeGAOx4(HBaj$!Pofr>f+z_mY zEbuw!`}S&H1)SAQEKUV*$Mz83$BasYUZ9jIAs?a$Qyu}njmJxuB@+3{U{l5#sVBdb zNYqsAwFO=d&he)OUSKlM8KTLUif{wZeYxRd3g5pC6PW8(#*&ns%qIK!ssZa!%S>6x zGw=(1?)kpY#3?&N&Z!&sZpH| z&gvweh%@_W4Z>}~k&zfd2+`!nz2{h6>4nw0Yq z!YEb(yKt|jG!j&Ag~!)k*-aZe4a4e--MVgI$^>*0PG12g6AEE@#5Z6)P!R0L$EiDD zsLR)T#j7iH3pkSsg78ymg2Gg2ypu*;zbDS;iCmMu%$~_?2Az^J5}YaSj?anI)UYx9 z1J_{*&}&r$+h}l5xUTJ=Iz|oGuneT?c;}db;~gGj#H7cB);tCy2XklgdJi%pr%dcanA!qoVgea4N#hQEY)1&V z*#=kID&_K5BifSf^baP|aOgOZt{fLi1db9-3egiwJZH2iB@t)KX2eafusKAql`QoZ zMiypXoyZHc^E$|nNgVB-qQt8VXA*}r15BB;9Ncc<6L!(H=xppC-=={kyeoWLLAl(lR45n&I%yVap?PS+ zysYY>ztnzVr}iCeAN4$0m1|9TXZ4Sk%c1__%Tni#3<{gWs=6Ni#)pN4O;~c9-2}}T z54UiF?^4 z{_diGO!+ALJDUA@j-UIwIUUKv(gwv?YXMyR!A@fpHUsE3!E$gtjdOj_`<#B!m(PWf z5`iQk97qs0A!jQ{cUM1<6*t|PV}FbRSsd-QD z9bj&^A1BsQpcit?zRzdhjmeHJ-z|$B!>%zbgSQdt1{fCw{ zZ3y6_mb5tIcLqKzfAlZQ|GWNIBx8PvuBy;8me#54=(r|N+Zu+d$q!Ws9AU{9STrmJ zx#au%b1)2Wow0*m&qeehgVouS%}El*g?1J3`yn%n6>z$35+9a`%X<2(1>9__n7supcGO zBKWnVJ+Z#hhOwKSe1I~hP7rxAwFIsYfWw6X7oa6ov}6*8ixdVM2?U{;7W59qGtPad!@4Qv5q&p;RPrwuM*!o^IuSIQH^4>$O}8BCUB@}|ncq*q|G zUe%8CQP`USSYZv|HfL(@3u}R%4&|%15-Ye2pbtP0wI!4qbWPO+}CD zS3Q8%MpBm@j^T_#x4#3P6SwjH0o0@si`GlvDe<~{wP=IYkBESju8nRqrrjT%@Md@; zJHYn@;M=cNdW!k=9j?fqJ6A0BFna6Ia0RMT4f><)Lih~x-O5?$5l4zlDqf*0x-&LH2>vqn;rUBfMhU;Liz!3&z3XUZxlW<3wG6A>4 zC`G{o-IT)M0f*vEv6BIOKJP(0N(ecw!M8`F5SUb;(R7moG0uJ{*+aX~u8mgI9@E2x zW)|DpmloK>qnC_mw@3dB(^OWMaqG_dyPUn|G%t1&Ig7MqdyJ~lKSKMzEJF` zF^6P~!M)0iF+evvx$}-QlQ)h!=(ai;`!)op@jV4yPK=5DVK>zaUe2P3`?c>AogFpe4#Hs<)?37H*iR48Eke}|8ViNyk8dor$Xgq-~}_Z{#- z6c_w0aW3>TxQO8Gh;hP`M@9VzHyJ*bv5!@F<9j*tOBTx*$3?>HKSL|#_0xTEl|O#Y z@-(|12EE1Z7qpq@o#J}5(|c+@dBZGAd=vIMOse3{wD`IdnSI!}QGV_oe(TKBgay7| zj2%6GkAOJv{u@H59~wIndSRRq>#+h;u0;{xSf8li8z;HjVpT-=NN_baH1ssI!q9KA zs8-60&CJiAXjm)F%!$rD7E>kyzkZ_Ps$GDZ!PU-4I=crcli?7OR30xyvfU2uhBzTf zx2<&Hx)^wM1~dpWoo|K15M?0U6B7pKyJ~rDj#26MyUEM0`4f@Uv2tZ&aLqVFj;qaL zMJlVR0A`Zt7T^h?+#Ky6NXMoct+ZJ=0v{|;3muVsCvt5ncC7bP-D)>&qLL_Z>VBuV z7Ax#}b3$Knx|1+pJ_{?DLQ6Z0T@417W@QUxj8x)!2b$tO_SsN#3S8GQN>B1u^lPkS zG67N8EU2pAXy<99ClvFE5Lsj!7f|O@#Ahn z2s|Pr5@_dOM|07UXO0qh1D`}P_RGwhqi_R_a(XfeRZ=#gD5GJQv&fzhtK=0A<9;E5fqw&&J(6kYD7uhZDCcZG#X*XiXjVZHEw6{8*Y0JAzQI7P? zaZv6$^8=d_zV`UrI6I54Y`AK3Faa!>INVSag?@ej~0@8C{egm&H|u*(y%T-1=f zNgd8Tcw#k+3qRJbOT!G=fGvhFLypGI$-dBUN1Eoq?&u6y<=FWKgF(o&6kZ?1fGz@6 zSdf5aj8GFdwNc)IVv_-zxB&KJViFrTFT_>%1u2RKap#kA_kbq3mM*G&IFT5cQpEE? zWm`%p^8tip!X^TUN8WjrQXDOQlDi46lMNSdsikcQqMr-?^*;uscmH>soX%u#Ud_ggdtC z5+}$~$6KjWf~N;Q_4Pt_Moe8X3eA2cYG1k3E$r%UJV8S9G#;OPyTu&QvKNxAT$Qb`v5 z6G-+(O2e^Ps4eUi!v>0ETsv3Bi?00`5SsfJZaJ}Yyoklt#k?pa=bE{HL8cG1(tp;r z8iyjXw_lGJ^*^+1ioIV0%0&Np5)@sdAe8Y<$vOA_x9$D=Yel@M)85Yxwq~a&(WH+s z=&r<3hbU3j2>>2CYC{iek2Ss_%L@*eH#~ zHX>tP0hX}fKQle)*VtY({TiWbQ+*LPvi`MwL3b}m^+gt|!nPJRIb)a5CA_;uEhvYN zdI!u&rY1@ODp6F)UVW!Q1xgucw;rPz5&c6G9A6Bs$%MATC%{O693Ck{_E7jqv ztmgoBV{?9cS8L1u`*%^_@1`~K4pIeOJCEsvL&o&zUH|1V?YiSIW8#j=j$^tU?u7xp zJ2|GbL20%{V`DuTT3>_S!3$JQx6^^dFmp7YMc`;bwtwL zmHc?J*xOxT99ptu)vx6nGA=vVmS)v4(>6wBDtvrX=4CfTGely?wDiNI*$P z`e#*cmNMJBK(v>a+Mc=RNo;LHtFWhkp%dIqDGf#g7b3W$`m>F(N;^n=ukJURKYP#W z{>l+5ZV&!gEzAyn>Q)3TWJX|jaD9JKGgyBb{GxTSwK!2@#D4f~Ot7EF>#po>?LJYx z*q$PSO*+0{2$69|ogH7v$gwHMYF>AqHw&L%~B3QyT1{l5#tqAF`59Oiw>wrVz4Llwb z%g1t!xcWne{hXZ^@x0tqjPy+T!>A_27`%aO zeEooc0!#Ru!)XL`m}p@Tix?<+120Y9aj5TSs<1hk3nvc!Z}zd}$@cN$wt4>dsypdmCWx|$AvCJXI*Hz}l zpN(&de?(u*(%oGtz@QbU0<`GIS(LV>ddkLK6|no&%do3iY|4;pm3Q}*f^Z}NvGkCT z*&W)tr*m7=57X92qpkgk-m)!YKJtUFho{?6U?NGkruYA+bgLCDq|&YHz+a+U_K1In zZl^D_=++NI#2g@D)|{P6w;9_y(d~pwEV^AN^OAHkFImcC6Yq*_Bb8 zv)$P4J85cQH#T|&>-&>=FAC$!SEal6tWHxhd6c1ax3SzZ2JJ&G2KSvNg35#WRdB@8 ze7gaWE#AO`w8DnD`7AIo_$&ROL3i?FhrWliZ%s|(6wdl0?aGi2#>!aHxuH}#q9q&;_pO5_1d2YF0!iFkHL_y>NBKkzLV=M~W z)gN6iZA=;V`KO7FAcK2}PZWso_f+(5$|*A@h%dYw2j}iRLyq^v4t)#u3Ck@4F#-zIN)9EW5&_(MVLS~y>h;rUouBE&whN%`doa=8dn_*h%_Y9 zgNcN4eJD}U#Z$F;?kTv6U~wM|@M@CbDw5$rBGsI0@nfMf98@#9pW#Swp*T?f*AGNBHjC|~k{yq< zW??jfeKBID3N`b|?>TM}>`czXHP)Q?2FE1`_pSRo!A;AA3(thUf8cn%Tx=paKrEW@ z1q-wL!>EV)&og>3iYq&f;u}(n!(37OCffEx_~&$M-bqt<4~jm;Lk zzc=7r|6>ZgIA3WR;xxf=Y*HL;+Da*S3646rYTxCfcXIMbWfQqdD&jYXQ=kuyE`%NL z9RXR1n^cCFB?BjE#UnI){bRM#9kJ1TJOqBECU>F%1|L7UFas?QLABh}YB^f*5LvAU z#&Vc?e?~psD~31&8p!xO)Tt$X@F=KUB2opPd=4}Ucb!T&*4rh%V{WKq@UpP*o_rQZ z*G>no;ObjBt}j7(-77>$3Aoef?4O&h&R!|DI{Ol-IF3b5s9(sgtN91m|5dEXk%lOi2M8R!oU1Ui5*PX3T?QCy0{x zSPjJjKbA;+c4rVU8Das4v|u9RxFMwh_Y_y*1YKHSpwZP&d1ye)`1_Iq>dkp%CuxR) z2Ap?>7=Js5wyV+w>>7U^e-1y*M!hGXLeKGgP~VgVvw-6_@c&%#1sg*eJbhXwE-)eX zO#!$BDMaT9dwZwc8vqm)+qD8Xd|APLZl#;a?z6<~diXX#Y|bt%-z?Q9_{BkJUlJu= z!!e2396hT5cmiGKjuCJkG6=z2x8Zzdw2M))0VNIny9b9V;`6L&^(9^j?d&~(R@ef< z&KSl;7N`m=T{VI|T(ysqHYoQ!ar=)n6`vnPUIk7xx>bJ`=fx_N(971c&{MDW0@l_> zZ-ss7+uW5^t6J!n__jxUZ5<6?v2zhkVLbhIA*3LyAwq9XMCBYd`QRJ93__=9q7UX0 zDb_w0xjq#W_kGF5E%h0@EnY8;*Nf4DL9|_`V9-En^$&v6W3oW|WMHP%vWJ9!1yjpw zuc;Vk3-kjUIXF&?Mqpwij9O%><^H6v)Y+CXzFm#3Uad)?FeIxJm&l_b%gPWFXBN2` z)2J}pVMzRzf5;Rm64&F+LNzY;M7w#f5Y;Ub)$QqMGUAJZ9f8Ol@@Ho!d{YYnY~cH8 z?nsn%HQ!DP->0(Ofv*$a5b=iQ7jk-fHSulQS*XKSPX04+yg|$pVe5&n_{p0=zIcr& z7ggt;EcvYGZlGM;&l$jXG~%DAjqz5=cZcFGLQDgexg@hSJ17tAfw{p?_XpS8;T)T~ zas45~8Mg2o23sd{pr3$455ZP8_SqPmgtK9Sk6LjjQ2d<~K04FF)gx%az}2}YNnAC4 zXX5IN(vG-7JOFVLOwPmjHS*hug1<>F6K|N0y#li$`Ps%%7%9u-1l#&jDq4Wpe}joe zetlT9oFeEC<~#%~UFKM5fxeV@dFx5w~x5yLs`by zBMYFOsXGjQKK~=}7s};yB_H zb+I|dl!x+j-{zj8WiYn50+T|I^;86sR=;6(a*lt2DP_vP{)YVf)}&8h0_hXq1qrw< z{%%qRP6dq?AZBQ|2d>(ol1%eUS49K2rci1@=_=m$!8^5}G2BT+2*q&Xs#MxYMEt9Y zVG*|)9-3*yRMMAK=Y}#eQ{h$i#;C?W{Fw^tT0b)|!kIsIC;ePy#A8|#&f98J- zKt01H_-d`?5b+p~zM9*K2>+H3*qZ;J(cnqcGiWd!9AWr?Cylgd;1{Wa2A|v_Y0w9skPu;W;R|-d z8)T5-13vaBXwbn2{A{pA13%c>=DdB&xlSt2HJCMcTZ@?u zWnhZuPRer%&tULkqr?YBMO-vwO~P6aWIG#fT}g$(KJmqkkR2^@Gt;eE+AOg#Q@V~1 zvE=mvgoh*u%ew*uHLwET)rk03{cP7u*kHsbDrvq|$?n%1Sh&pU9=kcP%vzpQmSr{U z^@kN4c#Z6JVHeRWV!7B%Eg>zKtorVkx6;Xzc4EjM8dWsrnOAmAH~ReQISv_q++a2I z6D$O}Nn~De;k-KM+iNIIKwdi%#IeeMbrj3vey0{(KEya6i)=&@ zTrVrWEzb8`yyHwFp02@D+CDX8Bh($RZPJ-tb>~<^>{|>sRF0=^9P#T4>n&kzRotl_ z302~`6WZxMN{UOgTP+bLBPwl z96<)gcqHH{tog8;0AYCkzYuV~Nx-x5ga(i%R^;#&3FY7~|3yNl;cq9FjM-wG2 zuxn?dN%nU7UuhSJU3!9y;`Xl6;aH#P9ANg}h%el%;p`KexXo~phP@Dn4rUO*V)Mag zI2gXk!3@Qd@VP?6@Wg+SP`-S?(+E8M(qPPX%oQwNIzmHj3fg& z<^B7?DYptJoB940-~Z0lAKxmzzsUDf1aigAcTe(t0pCS0EOIxJ;(wCJ;QMVXvYV4o z%#(}IwGj!5X2RqfmJ?MzgRG5kdYp|+xJ}}D(?|&1_hqFfKCgqh9*H-`cf`MnN8?|_ zpTqLpU*dm`KP}gt=j~WQ4wm6i>?#m3bVPb+5PA-}Y7wG9bXx>@6ECBnSA>>ap*N5Y zw&{pU#0v=|x2NnIurs4Ttm-rH{L{x6Yw{+qKtH+CJ6{YxdhdO9+XC^(JE(WCWivP@ zZ&m5O93-}ab7JPh)2%u*GRLp}p(-5_;PBRu;Pl8AUiCql-3*@RXa&!U{lr3whbTl? z{_&^DNqiHW0jaxZ` z&_+Q$tdZ(LN5>>tGRk&WD-eQqLbybYxx^(NW3PiB;o~o4!Y50})5Kh3a%?3i#hKF5 z2Hs3b4`YrpyC=-H=`14$%|I37lnX<~DO>E% z0DcgY-(Zlywcd9{w_C_Zu$VW-reOUa+rUAG#*&X=ix*)A zh>y(EKWxXKq(5jJh$vkQG_*+Pa3j8sVMvNM+>#n&J|;DYST_6=Na4^}(7-I9Y1Pl=q+QtXn2J|4-F6gZ|LB@8(0 zxU0CvW-g)NoAtcxX$X1b+AZRwLAyR_avib1)76mf8HJN3$3Xq@JB>Hvm@Dt5c5uL` zhrKt^erQgcG&Qsd7_R;^J||GMOl_Jj&hU|s^N~H$6KJ3NO?;s+vc<|x?8s>tW7DW< zSZjdcEz>rlXgD%zGHI5Qyhy;C3TJ%_;dF(lR#OUkSUP_h~lf_5$saJtppKoN#{*a0?*O=m)dL_+i>qbH z5@#epJ=mU8k~F|B8|(R5OfwdjWcfCT`FtgJRC-o=XWR{i$+o4NEBc)?jZ9!)OQBpTj@O?6-qO1|hmaW2a&`R;%ZJqIhdVy96ivE$jR^n*_9ihUjCM7Co`9KLT74>p#t z{!eH0u_Yma4Pnp8CSyEAf<&lIeVeHxaIfP?aM}j4CT(MyP75D`G1HB8 zvpUMnxb>(^4If_~m1S5mRqfLF2Teq$$DGMdV@*&OU_P|e^=tG7XkPh1=xX#~=nsPr zBk=2 zO|bKesA7jZ>!swgsW94LKDXIZW+eL)Nfr!#djalf@bANMMzeoh5{x}ffPN{CI=`|R zf8=)1i2UfTac;aRAD_L=&tw@hJBv6s;Ux|JH`>8kmd`QY?@qS6ARjO0n0VI9p1a9} z-FT65gk#RP=j9t%5MvhnJs6~wnOfm6oJGG-n>;kM?T;mDljd84DxRJ4`_TI2-CE&p z&&KK_@`>SyMN+1vSB%G`6#Q9rpbGTg4RUh^+ z(Sqd-*m2|Tw|l-*y5x=DJ@*)O#QAH+2EVlj4{ zX=C>R#%Bf=?^fT9F99u~mvDv|_izZmfYbOS%!T*~xcdh(6)Y9#BDV74bI-{lHWcxA z?SXB$&+o(F8V9XAvn}8WCu_m(3=%?)Zibw|N0S|tQ!I$nrL=9#Is$c0qrSm-MQ+}Z z(O0{~k=EeZQrTS{!_pYDx+VU-R)AEQ!afBJW|{}F-C6~ZDfhbQ)pjhyX!%2UmLFm& zQiBc8*sWZ;3SWlB?FJKuhBj4PtlO6el=@a`!+Gy{(F%SiJFrZxS_*uPxXYgBTdH*T zOy2EUxBvz5-C_+Nk#(Ls2H&4j11p336M-#SV426aN^$7^-6&W+3gMx6SG}rEty%$T z=A^}dUx!oHH;#lv8&A%_z4*beoJxi|d3SLCPfD*y0gWtMq(B%M*rtT*qj3s+j9tA% z992g~`EqNrzNrd$iws+I=7b&ASa z;P+BT#w>htZE4<3yIr9y@G|ewxd_J_+HeOk?{Mdp`MUH})(no2odh1#N|(hS1{-J>h~WqBC#3VMF?`00Gdp1ACMHYl`H45-MgdJw@lKQI z!W{z7W#XF-CdiL%9NRhV)_ z@c1h5csY3dD|T459H07DoyU&};?v$`D>@&``BuiS$GVdP z*CB0EMsZu@=(JsGvBR^vax{L_onUu|x_V%7ma%G}`j$mU2-9*Iqz&ID{(scH3wTsT z(mp;U9{%f1>AA|F79t&Y6T3s?%4w~!~}c2g*tS*JjrDgt53)6D&W zUnoz*lspYn^3)Fe7#!vZjs;qgyQohp!v6*XT5=+>hE(T>xJwQdr4-}NUEgJ%Uy*BJ z+q_=EDfK)>WF$PGdc#SIf?8d!lq;xB`x>Eza0P)X@YL|WYo~n^ho0QiStQrAGh2hC z{|jU=jY>7=1a_Nwm?dHn_ciVz)Oa5b^WZ>ziv9%~Y2zG_TdxDhg*$1v_C4-b+q)k` zD6%g?6`Bh-iTPkFwYD{Po3_Zf7#P6{Ksj%u50S-%$#HeRSz%}G*arN&>7GT6J3ejP zGSa^xeU$~@T;D0rgA4enZ^^m-pYav5PiB&=cAM%2AB6+*-h$Kra6fpFj&U9^7S12; zOLFUd;dBWtkmtfY1bgc^S)tvFrED>D&O{xk{9PNBU*x0Tgb7F-?qBCsZjKz9Hr4;zYSE83pH*(qqR zt$NAAGk`Xpe50NSkF#(6jY%+F5OkMH)H#&J-%(tKb0+r>fzq#`B@kNB829l96>`+BL>_lP2Z?8byN~bl<%&NUa*vHQ#q^8`A{kDM}}I z=_{O-3|d__%GUr|4UDIic9o3aHcmo{z)6A19t1ZCCYl)w8rv9hB^q>m1$2C|EEb-- z@OT&wqBq=46@%}OFg=b=B*270h-S9g%6@dDGG z93wy~-Vk^W?`ER`RO7ve*WnZsnvHy;`f$`XmoxCdYO{UIHY4qi+-735%{@4Q6w_ua zbh{YDFuNU3x9hkS6-&3*FSF?O^hZKB6Q0mZ^9nUS0yQ*m3Om0D5DYyx8+8>`6i97c zlHuacQz%ABHXN`cd!hvft7gqu_SV`Q8*Q^&w9Q1TP1!Wywb}i)fjh0HKgW3|P$$~- zy0!65SB#Y&M|LQEsP5$^Zy0^uf>AK~`s9sPUqh(XdS9<;-r%HW4d$B-M(<3|oTS#0 zvM%hQ>}q|X8~gzZzs!zf^K4IW<717#1QV+i&sKRM_Z(Nc!SRu-K2rLrbJ6^ONrB_m z>UkgaaV9r$tGxaAtJ2#a|EJrvS+Zjy+q>ZY=}WjDF{nA5OjfD#4p$$!3eFh*s>B9J zrFX1dn=^<~BX9;|&qd%&qIbZ|wW2otPI?k*0^&S$4YvZh$~}%x(6rrna~j@Q_N_^e z!j6g_OE@6^hxC~A#D9k#Ndl)8dURN-=yC39lODf-bfm{#eu7e6@y4Qu>??aGWhBl$ z&b-31jP^ZPWoc0t+hx4Ztp-Gg-!W7Gr=v4C&ehkObkaC1!)jpqe|-~@1NYN%?2k3# z0Di%S;O5}Ce#LY8+x#7aHGBsDhy%QV@k|MgOF>p_-zlLix__~bRQr;H`|OxfuK)FM zX!2S8P-aJVd1y4YXEy8@UXirJo4RG)j-6lEA6T31pMbC5sIPfD>UPwT-y(@+JL(9w zSF2$233fDL?wGtc$?PI?iQ;lPruD+ysT$a^g-yI3`(t@zDdbq>Xfoxf1)b_hC;!|o zwy{Dd1m}dZ>v-`SY_)O8eZ9_;aGgz*PGc0Eat%6-DV~#W(kWNbDW7~F8aL=jbXu;@ ze~fe*gEBj^mxo3Vvgnj)(aBxPJ3uX3;et>6RP-8qbb2k9)Bgr;An3zc>g%m+!oM~CNpmX-7W7u ziZ+n7Vp$7G=hQGK1j9Hz`xEDASJU9)&XS4ncB~ z5vTJADN|3%z*m%4E}gBQ8!3j4kWNJzA4{|Ddr`{lZdRCJgyURP8mYi zwXUR0eP~>6Ym~_hjvn3`WkhYP9}dc7uc|w~7CXB;yqR0WBC+n0wX`<9lR{lK*2B$p zAC6DMVwnV1VjL={Ys`xmJd9pJQ^?{nRU5uK3AlP{d|k@|di+KN4gv3OHv5451~kqD zk%tIskOI{^3aT68DO!aUHv@&c0AZyk@FiYPxJ%!{vlw0BF6HeZ;m7f(ELbC%1(9R( zyrGWu<9fBA(gx;X0J0EgxS7ybsp6N6Iuv3oMhp zD%=glL)q_z&jeiTBPkZ@fN`dlKleRYCSmG%ZghZ8oWTU-08*T3`1gx)p-Wx) zZa5U8z7lwdItMW@fR})C-s@I7u-}C8#(EyY4_{c9%1oynps=$AW$#)?-$r!bA!J*W zi3=+g%vf6`l$g=hcY)xl;&}Z%LK(P6x*PJZ#q0xefERBB;o1fht&W+tfx;yPJ8iUU z^u?P{j{8s8hM@@o#1uu$_8I44l)d)Y%5uS=Ux2c>j05(a<@q^ey6TquB z;7vE+T^|SUhA2FTf(JVpCy0^O(j+~W`~FiyNZ*PWvcx#jGo*$)_8n`wV%%fa^#1{j z^`A9^q1HKA1B1!hN*;ckTbET5`Cg^fljtZe+`;L*d(d3KzY3AyGv>-SDydCPM#s_! zN_pF$UCOdOxC&eN^mr4fJgUOLl0zKW_EWw=&}7u)P}U@*T~EyN_01~mJIs|h%;Mb% z<484>xWdOmGhLcvfK|woHFIt|I0AV#A+0VK=~&d6EJL=q-!{W)$Jj;lwpkit;ua5I%{#4o}UGbjEi&OcIO_(QeyW-fX zd_Qw4b9c2L=`L9Y5^@)X+Z+XTvT&=_SHu*q#hsVhm_=~e*9Sk-#@wBp_DjVt3CJ{i zI(F-v@OQ(F>g&Gopq6}3=)8=p9P@wF?sPQP*egoc&EEk&=v!2etRs@W0FGu%$nNtK zuqy~j;3Tat1ycpN3AY`&xZ47^z^d`+x8Yn4FUF<-+W0AaJJ|xYcYKZVOofnF$8O!6 zo?z2=e2Zt`@CpQoHni~H=n{^!-_)65S^iBta8U6j}={-1w81&ABk0%vLx6vBj z6sixLB;{(!%DvEd<;=)7z+f2Q-1}+D)NA9W%HY)Nw_tFzag#aKl$^yi?<9Wx;s&gZ zfODQIPCG1F>eppSeaIT2U6I2uGnxM1dK2@`^2isF2I^qSvXMuy7|7^tJ_SuBUgs@N zh7yWtW&Fz=$atOH>CLi8{_SJbLC>cEGGTH(zpMtr3l4F~mw-4O%8G~7;;GFaF}dK8 zPuN=QF#H+goxTd*!JY&loeKS1<6M06c!vAA!C`qoJxc)E$IizDeH& z&FknhX={%g^@8(Y2=GXU5NE$0UQhlJ@6qFL82p2Ia$UGT%CthGof}LVJs=Z&Tuf7s z0j<)g6m5`39yCB2waT94*e9zpP$uO z{Mm4Z#h>S2ulV!ts(6$?2W7_c=R01DKTmi)mOo{_GNc&%$*H6L_2_=0?vs3ySnwLI z5jDxh(6)#Pf9WpK`;$S}n48)!aO9`dhc2BI8ipkL9W?}`LjiPH1Wn0jTsd*I_$1q_ zOaHvl-=GbYP0GYu9ig_K3V#vjxq^m_u`c)G5|knX)1;tgTAs{%2izr`rGk^3)N$QJ z#f_NMl<8_3F_*Jutp4`9g0oym^nvmMNE|BY=B@=%-HFbK!Yn!LqcX!4lhksvW zH*nBqPx5s1zZ9N{9=Sgp)-BW2`cHLAkiLvf!MrjEcXMt=Hx9)0qT1gn%!4utD)!3p zosj>9w*24A5mkT>_r_yf2!B3Ht_c*?+pyPOP;bu19F7}ag&#xWl9p8|9xuQXLk}dI z8kp2T;YEMqrVt>xv`6?KLIcXHsWhhSbU7nq|96TQB)>QGT_T4UNlk9Vef@#BDx zbouwagHMmY)?Km%Uo`JzUJZ4UG0$O;sR~d1H^v#@00`@+xvwR+Ql{y*m@?Y<*OFyp z7))}1-vnC|?n-JlhPdVTQf{SN-mue)Z81@A+=MarRgIld5@Rg1M>I4J<2f=ox)4yr zNgY$}XI!ZjR}Q&mgqZ>3c!3dl%Hn(RpLwSm@qUA}SyQn`Gj1w7Y2A?pJ@nDX=pltwP*CyzYSMdVGpYIK!x4k#dO-Me0u5YBL663-Msyj&`$?Zu*6;sntArV z=Q#y*|M6F1?T0Zu2Y?GWkklvNU9t-c6P7s{cp9ffXS=FKaQ$L~PoK7t)56QBEkRVwy{pE+SS%jdT9LUwjc zbS!a`K)%ae!U54n!)~nQ&0JXFi^YiRvN;mV*ICRl2F#HjS43SRR%#Uy9)OlpJg{^P zcz{O-^J+=!YtMu>guiJ6XoN%lf}Ven+R|c>BqnPIvgTaib(gH6y^-U{#j$zl&(b&e zQ*C`Y!+*sO$VW73ReN*`F)HkBb0>flY$?}lHVt#?Q3`VeeQz`3aZu$lHnP2^R>mPqCL05Ma-`WKSmA9Iu> zr%2Oix%KEAxG7+g#3vN$dI85$7}v_x5c$;N;nRU4`C;=*1`jLSE~c$sZ0l;Y)r8w% zm@EtSb`q95;djr6w!B>)t7Fps9GG}i}AA|3tuOARS>LYxUV0-E7=ykpk~25F}Qu_MIQm2fG`gW zKMn4$%8_Emy*2KVxp>y{u9?~!qj%TLcR>?TEZn7oQJ7Y6c1;wuf|>(af?5_)$PRy2^5{s1vOt9+WFL)RZEL-By(H0@aUp-Hy9kQxj)iHD!lWzGg7xp)0a(HM311CZ9gYg? zO@!tfs9q8a>(wZ%7oxB}{HuwVvG(x05TYW!3g{xF8qN1zO7~ue<_cB+_H0P?l?_vC~@j)1G z_olrfZWSl4y~7mby9NP8)EoX>C9^T})s4YD5KmK<5jTw0Ks3oOm*5NGm$<$^bM4kf zZNI4ejKZtP@(-YoaP-=wlj;L|TG|a-15u&N;k#3F+}}u72o4+e-xJX+iuV6fQMCSf z@teumN{rwX7c+X&4i>mP{$ZR4o|n%aPb5ScXKlh%Y!tE-3_bG-P{X0Jv_jDqRG)|_ z*%}mamnLDf&?&}nxsdO zmk=*b5Gocxu1%u_;0FT_D;3NB!%AiTd$DT)Nk(gO%Z1479>Xmbf|nWyHa*)yehoW9 zWLI)q2S7cAnP=8a%x1G@vTHkuU30^*`fL<61l3T)k@Z%iTWb|n7O_#TEy~MQ^7eVUE1;0YS51oA;X1B}aI7?Z@Hwm6ivwlfm1sYU*pP;!CHtL=&vmN%Dw2uRa z>^K{wV$y);BD#t`}#8UWr4jf2nF8TbWr@5|tKluN`df}HH$E>}mIq_loR0W?;kRoj5;llgR% zS_Mi$@`Gwq-c6kp|4w(G+fkN`77m!lxVF%5dk5y@I2^DcMxAkD2M1HAIB-xPG^&3v ztAB7bQtc;M7y$pP96@jY@JLXVW2fxEo=y^Oo3GiF}8{@!}^w= z$4|#vV`FFxh#)wkRq>4!x%55|I+E>CazYX~)$_4i3-QN!m*BEVaqT;0wM@51jb1!f z79rT}8~!Nv`x;Ek9I*jOcHcF!;a&?J21s0kR^!UFKc#O=$E9z3wBaXmj%*r#m*coS zUZc!ySgd;X&8=6rgf2u22ikOn0)yBp4GVsc)pf>v!4(y<^FWHub%6AXA>QxvCWTs( z@eM%Ws3boXr;A014=3L4iiHP14zyYl{Te-Bqx0NG=rX6_r{S)^efjKgEsqp5V9E*l z>qCweoZ)&5q2E3_(c#>O<5f1lG!ZpW3>zh`6(QV2J&f@WTJmd1DU^P|2%C=_&oh$! z9iGX5arnCD1P`UH#+8LX;6e$E22TyC-phG?W3!?n1x};v?J%-QJJ($bbYyLu&jy!2 z-`;^8H2f~QmnL1MHph-mBC&SW{4NKwTnYZOGwyU2of%xc@sQ`sqEv7RQ|Zug=oAkm z+%FIptU_)2lYQEdDb>A)kjHtKqI+#gfo|~|*c8@l@Y1}_*s+ve)5Nx<$JCWVR$o}F9nY{V*F1TXxG_sZBq4v;a z`|S|4hr|!4XY@Ji|BQdeY+@3Z9#gIjpM4Ntj%=sD82=1`MmGK7_-Ak)*z~*NpOJNS z#%;&6fk!s|3iBCxNaC#vTr&TI2YQN-ANm_CZ9w0GpK42)9ph~q9;L4ee!cHS z*fc5NI37w=jswtvc<<^BF{VdNRRqXyQE|aq0u#4h%sL8s5Al6@HG1Vgy4sl0gE2g? z?&8@ArtQ=gnZ@bcG8T6{2IuOdO=-|)uXWh8qU|!Z4Mv{B$qrk->3MFV2Q7QM$@jji zpx>+?!>B|d#h|Lv?SytV@WykikkgFzGx+xW-dNsUzu)jxDj&eldB`vG8pl=L>eC5j zA`kI594!{Gjq2wp(5$|kO?5sl&rJBod^01GrCr2W^?MaHN92u^_I5LqX6%VnRs5#Kk+a-skg;^%Rf@lEqTS%n=-!PAG5*! ze84|ZJ5w)3cb>I@%F$ScsYYWG7zEvti|m(hMp@c{ z^Qg>b`$i%K&p|`NVNrwUoBF)DA7fosUW&h(zt+S~@E9nXYs(CWZLB$guNXzVYE8xC z4=J6bKMK&{IbayTEZ+%Ok=M$~Z{_EUW#v!t^O-UbAv_614E=LGt1y2ri8DB#W=Z&d zj9Z!JuQSoWr=uLTIf0A?9{DC7X95pCOljZM7ET0^V3k41ws=Ac9zG7Apho8h0a>!@ z?Z%Tx15W?eM}9QN9`Qge27a|xki_*s18Hi=gywHxbFY2?s!f6YDT2ag-hwKaNXqjN zC^R6Jk{p~ms_g7qt*Blw1|GNJ#bq?{0g?8rQt8lE)5{@i#W?j7tM#u02$RUZi(@#! z*SocmJuw$}MfJVh+SUfoBA-*gE6jSI1bzRe{1%^ZC;omEztOkw86+X~eU1K+lS;To z=HD9qE#nuuR((GxN!?we`{7MR8O?}ys?o1g4)jG?cyxnP05xZk!_`i^~H z=*wXTLds7JaUB~&;Ij%y$5sg32`}=GNZ?+uL}CeiMJ$1b#1c5QH3FCCLon+#+Olh+Yn~`W?1|2K-1H-vpT>GWR>XI|s|?GBr&Gl1LQ{U@f**BTDO(J2q2Ohq z>}9`GcEj7MY&Vo0+q~?uM=?K$&!cx-$Y)X&r!3JS-Cuy;gT-3-Jrr&OLH^i&JZH4` z!VSQUOw2i%$bN#rc5{uzP}7*~dRIa7gJ$gW8j-*T-HXM$LB{d-nKo}=_ZU+wpfsML z(wH?3N)Tt%r!=sQTMxDqL-ldA85(k(2j&LmFRZV`?t})q_k@nN3A8yie?67iWUU>V ziJ4Rr{YMXHJ`01!>xi_ z4B0#mZ)9W4(0#vT;Wu4n#&i|t@5$6K)Msn;jr3O_yCd0nt-i+ig{EsY$Rt^Pt$xkj zB-h%=R#WS()gM;{BRdQ*i_G7+u}W2{dsYBPo{!td($i>eC8GbCjs0)b?>V_69LPL` z8R~+yOUF=qcy+KB)-)C-E>7T)CZxj%Aft3E z9<-Gx#3FQ8#RIaU@;&y06JXVmxW5N*kB7ZbVBZJ4`Awe%|0WeV=l!ZSloLWW-yVl; z1bm;7*z-pHY@E`Rn-PS<`}K-vNEUH3+;*?Af5kpw-%#RkqO|#+p2tR;z5rvz*Du)3 z{pl79Gj4`T5^()((4UxJ;|7~bACT(|73$*CXkz0!{z0I~)xmxDd~of8A}Q-G*~wFe zSQBZSv9u|5!KKWXqha|d>9qArjHcR4Q^C?b_#Go;6QD9Q9Bh%K)*3=`HK{(OHn^18 zyY>67rHq$oQ%b1RLsFf*u&`;Zqr9^cSXHYc;EnGySFjdcsQw@pyF zv(3wku_eCvQgC3E5Kg31mLuvLmksJ0*DL(S`ERL^V*H5?$$nN^2zn?V=`@%E=TN+p zDBk!Kai_x+iba#$-!P9Hn#T0K40`Fkgr=-y>5WC`Dy(AyhZ5cQ72pfqa5reag-Da) zpxLS|mD)Y}Xhp^PT4w@tqbUg3NSlmZ&3vcqr)~1LiKM`t35jbDmwSSsSP@w5@NDwy zdz#!5IN&b12%Z`X1EA~#opDy-J3(~#!ek5v8@luYjFV(QFE0Adh9Cp<5FEDfb$nXY zv6Yv$ew2H00$~E}>DuHd+E%BNh;wBWXYRxTX9SlaV6si5M_>*2R6B;c1e4@Qitrf@ zGT<$AWJd$PPLQmvaA=yp*NsT-l149=c;z+;;u8p}X8If4p@VnTBwvnD?E&6Z}7_{ia6R}8G zeaQQc&Uny+N2=M{rh)7OA+QfVFY(`i?t>T8x2dJHM}}tZnSu8yUXJ;_0`IfWm>@qQ zogU&3kF0Cmi(j-T2Qr^xN|--Ikt43J`tnz>scUe!8C;`-DVx+~10r-L=XylO-S=*X zMXQ92!)U^Hmuv)WH3WNUL`J&!W-8@?%dq;O5-QBW(i8p4XBpa194wuVB1*bAFR3j0 zl%e5{>)U?eqlv@iMS3k`!oOMs?G7?@IdP*rrDF?Nh z`90DKtwHJ&cL^>WwrN&s_f0=1*aA9tyIh(#0Uyqg45!jpT-K5lul9A=CTNngUijpp z@qCfoN8d1l%fdJLlZg*SUh<7f2OD6uhu-H;qJ|G-_Eu#|$FL0WnhUys{(>gJWdj>c zlb2&Krl=*egYXE+{_{Kz3E!K9@nxGT&3Cn_BoHbBtL(VrDe3HiS=L=DcMPg-pz(L% zPzcjkjr~vyqZjZn@{;0xV)!r%wZUq*j7;|i#xC**&Yi$O)Kr#rC9AVvLU_~5Sd76x zBx(okBIP=Tm;b_}Ask#X$7%5_RyvnU$OKIB5;yiZ{R|Te9 z7mJ}75}ipx-WMYJQbQX3g&vJR-S?iy((;|1>Vsbv|BK$j z)B?IB<~y^5mE~FvQsh7{vJm6pF;lrqy0HHb@h91NNQU(iHyuXG6m_AaOG{d zQR<2Q2I@m#S%f#xeWB9-x0lux1*4 zJ4}FZ1w)<VS>hH}vf<(RbbUR2NB4-<_oNa0?Rbo zI?{~rge@TZ6ys>&|ASZb9?EpsO4;6&|zWA@jtW35M})}wu-)}zOO_c^GA+k?`j z!h;Gq)1HXoJH0KTUnJ0%^pe6$Bq=Vgn`pwKU(0^^7&=z5pN%bVC-s+01(S`re3iLK zUxGs68o6Khjh_Vc8>*yfswDTZYzfU;^h^`bD}I#^HL zxWa0+{M;b*kIpPNN&V^?sZcG!`c>IA@5;}ba28~)D*HLNQ2e=LK<8uu_w)%;;puQh zG=!-VzfFf~TgpiyC>yB8^-r>S6f$mO;;JsZ2LhmUGkF!7_9fH|UrXJR?+UEy>{;zD zy&u2A&+(B=a1^~#mP&;xizZ5tl-F~fv8paDRJa>&dRRb1 z56#7!<`DTzL6mP6#Qn=Gh^85D=|hW^>CsXMyt&6Lu9itr)SigG5vK>n#;CI(`bL>V zR^vBVZ%9!8op7&NwVH0DI+soTfhMF2t@4pKBD(nSKtf4|8%41*3R!BTIfOUwbHf8# ztR9E^#F6kZyfeyM{r%`)W`85^M07T`6jERk)};z%N9pm9c|^g$Tv|MjKK3K+}l}Gt-344s07K2|d z2EB$QtPZAFNQG(7hVMfoVQI-!PT_uhL?>Aku~&WsVy3*cbW|DS-2xR8J_&zFx6%CZ zEB`P@L6j;d+-i< z^!^qtR+hdk`U5^~=4C=`k=o{wEW=cr(P#($(kBC8EdDc)s7dNcd z4nMR5mTss^@kKUY-_WR}k-p%@mS115$aIvvAIj%1Zi*(g7(2;`KpqgH>9tUg!;(j8Qkp2ZkT(z6v7GC z3I_<|0bzC(7wxk7$AmfrYs^wbTk+Z$&I&tVmaZhsM3us7;TQN(aX6vzE5=$JDC}N_ z0M+TinK-p%oXbH;zPaN&`(`|jdemF`#RhoGU5EKIh?tz!nq;}rvu@ryxH7m zGWt6{5L{Db zE|}5WGpMG`l4Ak`Mi5)EP|w8IRuf!SdQ5NH9jGWF#sycSB*gGJ=O?poM~)< z?$^(YLwprxY#<)l5c!dMMa7pwOb75V9IfP`m~z!w+|YpHc_}vksPt8#2{>ixAJ3n@ z#9&U3^i?>f?BcPn{n2Az`$4FMh$pxi3yMXEIale9kpYV6OVyS7_c&Y^8jz9G!~b&A zB>)h49|7=h2hC&X_b|>G!`21ZTl<2H`A4!P+#l2p#`1g)2Qs=pN)K5rXGf#iZcU?-p{%+gkpj+|UfGldYv7LBa>!Lv`c`l&-qp^W1B=oSv*MS3-jNCqQ0i7nl;fhxH$ zV?9pTgff~gO@{9obHG-XN6WK&G+l}aOCB%lXdN%pzrZ@jR8&?!Sm7!CG8{LAlFP^# z(Zl}+>Ke#4B33xE!NOg~PY#do<|yuxpOeYAm>ihlpiT6HWp4;n+Y#kJP3sCAvdz1) zxDY+L6RDoaNgYGE$(Wq44CNyYn?JP$rhNrdbw-!62}=#a^UH9!ry09rjDZ3@|9Rhs zSqki1Rhc3yk*9HPP~DuGJqC52LLL1UocF__Y@BV%Nrn0!elsS;XL7@RiU|=@oMakc7>b1|% z6t97bZOeBCqq>0cfZ!gmyXVeSBp{jS8Wo%fI?lTY4=1?7FF>mhY0+yrqSu0-La(hQ zt>T~Gis#{BU?R`FRNrW_+s7Xx%H@(&+_ZrlDYvHJ>{{YjM<~H_5C;ubBjd_J|G|(m z*q$8(YNSaUz`)lg+?~bY4WEJLamR@(d@{aR%<}G1#VjLc#K|(x(<6UJ=;Yv5p3htc z@{y(1A;*Vt-W6|*kj>&bDK>ZM!zhA13@;eGupKVZfbd?{C*iyydFo`$Cc;zM$1>3CKH)&u#?NBzl2_1Ax?H_2_-aim`?kIid?gi64o;~t zTl5}FixZ{A4e>4d&SXZ$ajC!_r(d&cJo%{zNyQKX38w1tf(qdeIkpxLsX6oP4d5-V zC7M0&is#{rKo=9YW0J6UQ410lH>JBv7LYIIq-x_*q3l(Nt&Cly6WMw(Pb82YHvMjVrO$jae8Dv@XpE_4y=(1yy-hWrO zCcQf$jFevJ3xrc6$05R}jY*QRzL3Fx&$6V~U2*}6n_@@_rUn+9z+Kt~uS_M~svb_F z9)2JV?ZxWhW5Rt{tGFMpa3{$?OKWadIyeVtV{V56rur6@KLRCxcW&QYrRMf#S`MeH zAY!<-O(|i_?(UKq&|Xa=sD2d*N_hQ|%7dUR$d1T6VUomDb8hW!0o7d9bw|6$pz6Xr zdeKbVji`jSyBfGOdwwpTZ);ip1U_$v=W*Jx>)In|$KP%h27q?VK^vBKEPY66N4d{g zt#f~O-8VLq(kdom4!%-Cwqkq2TK64yXUlcppFcXny3YX!&>7Kn-@c)-BD#S49x4X% z=0C-(`(k93X3ak_8pPwLAES~QYd)0jKmjpn+zY<~!%_PD{W61`b6Z)5Y|u~qf%eJ< zbKGeU{Q)a>B6{0$j=f27`cb5G;>;K+oq*z|l)~U~h4V0Qt;!^?C)Arx`%h%@@8Fk~ zm_AE#&N+fz^x7>gWYT*qGMUAuU~k9Cr0>+`@;Cu3t>h8r&{X_T`GI152tC(;m#SOZ zLv8RpoQ>K@ASgC+GfDb(HQvtwL{o~3cxI%Tu`&rjjzxn1++6aWSak%+yX$5{@*;n+ z#I7SxiGW`ppGt>IoWC*Kg(MYN8q9JS`4e%IoPCevCGHS{ZZ^(qS2-jsKwk?h6$2PZ zMJx~33|wNo4CY1h2K!GE$$XLcU*U^y@+I-@Ie5#@Yj4Lm3Tz81VxaM2Bwi4?e_svc zOy3t=7C1=gbqooBH|7^;n8-#WeGz{J*K3XiNXXtfpgVkxRd@nf!*zEx{vYYY64a33 z0w?@akfI~GlC=**T`@K+r2UgrQn65wL;6ays37ENT-@sE9vyLQpHvMCc(i*V1 zlVgBS3Ff1PJQA#_V%P~tIapJ%6SIO?tRny8^EzU|_ZIwB0zU-C;y3->kcwNM4S}j^ zLws4N_;kRcI zq@~Do26i3BZ(`LCV1SjC>ku%k@1|}RpCSAxbiIuO z>%#oiO9(2v-g3S98<6EN(w*yfW&R^5!tka2g_}6s2Jsx4Tc36a>)->~4R(K5Q?;1$ zdgL99KXnn(a7FKK4{@~Du!gS#6Dh*$RcJ84q$^sC*{dLZ{FpsKJ*JqV9}WQ@Y0UCr zei&nB2UvqThozUsm~nr>+!rwUY#91R%6@@@7N0o)D~`|JQeY_c&s`q%XUh0vulPdv z!w1MpxIxAP`Pn|Uhb{yu>^V;6Q$e4n1NQ@K?0&aNHP9-3TjVQ_B>7voAbiy>pizl( zpp^`PXyb5Vj$yg_}!dD({=@5^M0@vKH`(jTzA5y{wefJrN zQdBnRx!)KD?O>Jfz(_Y4=6a5-g$f7j{+eS$GpF^$IlR#ltjoG$Rs z+^cpj;}b|nn|1V6>1V*L{wyD@3p>w}y9H!VOxY0-keL0gNt=16eQr=PA%-%2NMdcw zh|#^Y*6O7my&mEc^o?j5M_$Z1rYhT6&OPjK#RssZA=}nIGt?OFKBLPD*~**y=nqP6z}`3QVhyRe{t&W)YRw#-vpoyi*BpzQCIt1@+a}v7kcU$t`qg4?3h{@ajc4 z7XnUjj=*7_STS?M_X8I8c=6b@dt2+5;L(U4Eb@+5cq~MhCZO&jORMvhnalQwFkTlJ z1yLBCo53iEg<;NL(wCVI$tdZ&fkX5^fTJ8nl{pjb!FiKHIX=1jCLdRcBOk%MKIz*) zV{R;kGLt1k7RE6BljCh(lnmu3XI$Z&yA!%EenY9`D>8x?~_$dlHZ;+;~prpOr| zwYi`%gabisa>>7AGJD!UZEAR5nmEMUEj!8g66ml2T!dqPV{*4`b zjWK&?kL^H-gJx$ztLV1cJiLk&8~soJ92Ov4dvQzYp#52_?ThySF--&xDsGpGOPSPI^=R!%wLsD86&lzv?wJn}g zVDsgKyuK=&Cc-}%K>uk3uk}X0Reb(1oztQkLTk>ii0j{z+tI&|X@G6US)b?L!LOGs z#J>mtVZa$ec;K|lFJlKHyJN<*1+IgMYaOVjb~$5ky`(v=Jqdefs=FnQ>*8=cv`r1* z%9x^9ryDr$c^f!CXW`u2z&VJ*#QAxo<~Syt`y4yYXU8C7(KR0D90TWsn4(df2gl=l z(_MUzIkT1l z9>?s6u}NV)8*}X2clvK@;ef>=~H- zsKJhsl1liEDl^C1D>DlO@qZ!Qz?iv(wEOkz(VQUy-O!>T82|IDB^Wk^2jvs}WHb8Z z#9>V=Eyq#NvByK=tof*;$Zq{QSZ9hSZg>o_DT4Gq7`5z2+L2|0(7LYFxZ^aOuo@wM#_W7!c? z-+}sG6M$#U+%;N`82e9u37m8KqhwDrz)syQN(AtNEV6JT4kzcx8sb(I*K%Y@@aZsw zZSyAh)@vrS<|U|UsL(3u9(xr&nQUt!&`TgnJIF|Qk^q%$&5FwiWn4adL7W&Tq6qm|O_N);aPURIE&$#UJ$9}o z3ma{WjJDB@ZJ0CeW2hg6{p%O8u#2Lwx8@!N_7CW?f&V)IV8I>|2m7fw*uA5$=b5mT zzWx7@M}MpReI9N2)Z)=kP~2dVvxfdYkG_bSzr&+*1fuZhb=@r<-3c4b;L&OCDIOg) zq8X3=?cz8dHDgn2 zDV{wv8L;@O1uTOnm(?rBiA%l&On-j^9V~Kp9oy5lUDbT{`3MatKR*FP{ru&Wlw70r zxon;9Ex3CG?gN!d;phc_>EFRK%8>YL_^eHTJYpU5Z4oGe@59;OWvkI&##Y77 zhk5|<*^(Fd1}(QglDQ**v(Q;IkXcHa=Qzfh_T#&OMmhZhRgO?{IhMC)YL0T#!YdoW z#XnCv|c0O=)ClfVd0;_K4r$`67EuFzM|W6IX+crSJP%$sKze8yMNl$bg6rx zTmqBWTKB+V=Md{eZ8mzh0zqR{jun6i-+-@Da%BUBSy0_fgg5y!s?QqbQqVsKeu#4{ zbh;Pc00M^wu8`*4CDZULy3Bv%6LbUDT+vyepMxDd4jc_Gy*Ib>;Ay456a;#d1S)z7 zr=!ltThlMXoPD_3hmJPPMA2^{oXu8o?EWY(i7cP89ti{zS>ZsNLHKLu(Zk~n08DQC zxH36K{LwDo=s&EZ@=}yv)*nx3S1%i=zKC7eE*S|GaU)4AEI(t5yu{BD8JLZ5S!gPiVVe=dp3T96;|{e|b8N)ul`IV&9#e)D~~K8b~3MyGO*h`EJptO>u1E{HxhnQ7Xag7J+!E8fXh{cQeBa2%DCERkA12K^fpiO3A?&C=|Uni`V+94zox$!IJ zM?716qj@`Smr#~N7F)>YKvh-M0ljL=(_`Zw#TuZQi*MO_cFOY6HxPmFP2g)ISvn!u z0U`1cHa?c{e~Vk*!MOC__LzY|hOWLaW2V!smE%Ec3Jv;tN)j-=vOhMPLdmZ~ zkIm4pJSgHc+u)H0F*p{@LPK>Y$=XzS9fD#p4NM8mEpIuXHPxu&c)iN;I)@T~n!ao? z=r5y;=6Ibvk^H(j`XX~O{*edq9Y-ym&5?yJ=ZsoC*9~MZ40$nU)Q0;~@j3czrzV{B zf=m_V7GFGrlMm#Jb1pXaa^##OZk(4D!k%9`+w#pl9G;&<)ORmxR;mzHvmPZZ>Q zP@QQkM{`Y9j`wK6H&F1h7+5BNC3rqoJvY_|DrnZ+aH+zE3;s0=`@|^$d1@^3sWIg@ zk_F?ReyL!EkQA<*qp*9368S(`WQFE zPE}8;GG!{miw@?Mv3LFW?-MWZx!y##=qjCMw`EVG?#y1O+FTB>Ua2r zk06xX2fL2gZ#jV88@|5CDm*7D3)gnG$;Hn2Z7lR|t%Myi2m>PY=Luf8;|>4OiQ}4E z@DKb9@A6eiIG%`s%ETrYoo-F_>U!JN`6!N7ZokOTZ&)Z;$wU{A7`^}L!DtMNQWl!Q~~R*Cv}n(vq6eatyVUGjzu{x%*hLLT#F{U0^cMA>i>OQ4Softxe`M; z&I}x3&4xY==HR*}VCUK6JN+o)G;|fLEa^s>X<-M~hq*#1LlkJ*Y8=L4=(I^6ZTQ_u z?9B21yR24^V&xdHP3L>5!l->moOJ;>K zT)?Q$08HbG7k#RHuLlrVVRd01qSVK*&FWG9vx&f^a9OGTO>)dVRd>;^C=kQ7bgKZ| zFXG#iu!5XHU2J+fT+H+bQ*V$M1=z&?`%L-1G4Y-z4P97~};>(IdP%s6xqkNZR zIvZB@P9~nc%Ri*$b?Q^50u4qfCn0L1#rs6@4oLt<_=jsF?2k1T)glZ7qkg#JpKZ}V z+P=WAL+8JW$ojV!d*j03SiWJz=m{W9fY}OA`T;7@3{Tyx3+?V)Ssj2IVy*O7 zVNe?yplz=I&fq>G(gD|u0SWydC#pQcH08}HVJeD#A4VZi2$W<4r#yD~n4}JKqTID@E5GEPcQG#8dmy6~!*NTJiVc;2nHR?c%?39Mr5 z$jY1vc2lR39&-K<4rHq1N`8gl+Q9 zKnWu>X+B;V`#{Frd_F*ned@o&gl3f8g+7J6GjOBhjNnhWvZzXkVe80t0+n3qonv#ABCDeLZ%J`iJsdr{4Sl2n{d zPC{}#4wbRvYtxgFe2)UIYGuZ8bYUW<5;8P^1Sgjz$@ivAOJa?4k-yWzYvpKRwbEda z?oH^d`T?Lm0Hx3ZXs9RU1#YUdmo3B>@?P-|Vg@#2z8Bw(iVy?6WXjnPb`9zN0-)!G47Kxy-mpsg4e4?@smsO8A2 zEdl+<=5iv8M{@wfHHX1x((Ad^k$}Z)&t9XL?cDz6KBMRvxoaMAw-DR9z^Z&)H;>+9 zfG{!XFJm;UbuPu!U5cyGV1Z*t)z}i(ywiaa-B@xK3#duboqMPC#LmiOyyDy_1ikuv zwC}x+b8Ib}m^C$Uxb5vT^?yY$hk_wK#OFku$naiQW=4g-het}FDGz<>AZi947 ze;98kWcoYe)p)*IiB}l!=K5?R0y<0uf^o+kF2yKq>a;N8-S~6X=U$#s!ic*)%U&pK0$rQ_NpyBO1|qSL7#&Zj^DWYlwMUlZf%L; z6bnjOYTXo=*J*v6^23EJsr5YLUS*R$*QJPf=V3rNOn2duR#*1(9A~x0n z=2U2=Pd^2nrh`V-=>&cnngtsJI{Tn^KM0n{amw8I6{tvxJh`$nvF2JwKLjO;m0*uP zP5J%VaXw_3PhpGU+>Bf=vKlvhM)v^5=&xYpto9z#u|}oa%hx_wXR^LApV1fvOteLw z*H6BeS8TgWUce9ZDg+C3l8=!L7O?362IToN-%*(b$r@w>6{uO9IVWct6cLRc2F9!ng{~lLgvn#GHoD1@h1z zUdOZSRk#8qH7u^oVPppJUVMVJyUC3fjfSI{%Pym>lK?>a`0ERb@I37CU46e5Jc z>E_|k&iDsVZOzgb?HWpIh!j4EreOcVztP8R=Le84zMU^YlK-TgInj3dsdmKwDXT)* zkyxCt7ke9oHinNgM#jXp<>8duD2w-l*v3ilUKIOWClYd`tw%)f**tqTKHU+TT*fsG zVLk+y`ITOWJtx$T5@r-ecC5{E_`^(G&C_I}lFSF;CteeMY>wqa#@P=9=$lsX9VkJB zEWm*O7^sM-}@|a7_%rP{qsosvQRoQn`N|} z-zE#Ee10N-*m8ZR;NXqiFG_Gp?8f^mWJWeMG~(O2j#kHWE`N@9AfX`hTbaU8f3fJi z>;@}>fTC^L|3E=Ro$3%(_)|~+hWwlaznI)w2Fr$ zU2Xbr|H#+hf%uwRdxf1ARU+=dF6DLgO=}!>bm33 z;CQho)MQ#P4}*fJe-s<#2;IuNjw2{BaTQydv{|Kf0$+z-6H!Jlxy@us=qsAT?Y zXJ^|uWA{s%6WO{I@FY>)Xp}52bl7}Z1`5I)zJVO~lj3pMSOgptp71g9k`pDTKh$I1 zq?}SoffhZ%e&*nmaZ-fX@%f*h;@Ctx5WW;7HP`K;!>91RU_V$p6Wb`h8JTnaxHAPc z2mBkfuOiF4zyOd@{cLD69;h|UdR1)duXsooLSX@lF}K$=EOv3g&AqaQen~C>Lft@n zzPbVPRP5O|D`r6WW(F;`>6qoCu>{~V1@vbqG1QFwttIX^g%XPg+5A^1eCBfhxQZ;> z{*_kHef5y&AR==oNY)CT`f7AM21zxKzen6QgyM0F;!@-ciEhnzW#nTP0Y~p=g(pzK ze4+U;c*bonmAeDeY`A?@)&{qr(G>{tz8fWBM@@*!)pC)bD_B7_w`Y1zrz1Qo*j(_J{`Q}In=uwc9UgQT>A z?OLHdP_(_5d$9-haHwE=;Ctp-s`$PQrd~`!ZJ>37hmGkzShN9h;$C@`y<(Tsy)q}E zqCV-kHSU#d`6nl_qCVxgHNm>mny>)-b9E9fbpFtezm4B%$(@1~3wHJ{Ny-Y=oaXFZ z!b!o|3%xWa3x*qEw$u9obzIgKtgFyd6o@}k`^R2b2^FoiSMgM4-D!xju~q0U1?OEs zW!JHzvJAlNRraEW41c}5v>g;`sAxlIN?paSHn6gZFg)8;g12d+}T7Oz}9V4uKz20#%8m&41dbPfqS)OU$mf!&p0f zg8RNpIPvZ)-Bx%y#Hb8_4<@=-I@*m6ZVBvcx9MP@-X1t;4{U7;{MzK-3Ds3xw8`c_ zE>yI=Z&3qm6xw`i$H<}05VE{0^FGYjQrhOidp(RCZ|$%bQn8D(kNX2#+8T*Whk&iy z)0VO4-C>0y4<9EIl*lygo?Gx1$Gu|C*BSnyDV(eH{NrKZsKui(J-+ZmTUZCOX)*#b zq~*7(_#T{I>n?c!!-MsI4wzqDISdutpkLArEZ-$`nJZYZmOB?dv|q4R8=hbn`#|0Q z(iK4A9xnX^AUs92x90{A;?!$e<$}X-7u#-c^8r7!!EH4hr-QWw%n15J+#U+h?MDKx zKZrz=!MwHFs3cF`T6gJekUerg{X)SC5c)&>Y})i)psC3>2vu%#!J>12;Op2_+UV=Y zj@|%!3WDO`f)%qo_5SYf*;7Q;De_~Ep&5AICBEx<@f0f|o{+RK0aolxJhNgU%=Bm- zmU0=Osc{S<{v{r?%*}cOZpn+O3nT-plRTUKe~G+cjkTOZ_q!OuN1q&R4dlS6*XFeg z9)xkaa0MQM!_@Gi?IkHvh_}-$V0q;YCRQu4CRZj2)(i#pP*}8l{oDw49FOZ^sI$Z(cp1KxlDE{g?Y*3?(wR*3P#y_!ZR163(Q@PgCcO}gt}Pw8zkXyh>B%@;u#_+YvaQ1 zv3msnS$|ay+SdEK0-;hz>#y_wqQ5UKv--R6#Mu5~aB3@HRWZ-{A_4bdE$EZt&yAO^K5b>Nl@* z`l>}^+SyabB-k?%V&MPDUWtq!$MYG`{RG| zF^oSpn#}P}iK7Q|WymV*yQ)M7Jemk>~wS`0GSRKs4prz~L*Jlw2B8zxT}Qg$ahv_zQJL;T6yq+IT2; zQ(24^*YKwL+|-2d|Df;Cbzd&Z{*J;O3nT_tlb-I0@2h2bJ7fysrp%xJ8QMIPjOIzpfuPP`O{kf+p^EgGL_Z~T1Wc)L9lXuIpzbEp9>gSiRfx5-?Q&yCBJgKbE z%e%$&)0i8MjXweq{1}=ajXx$)M=%V$#T;^5$N!)4$FQY}KYDj@2dFPe$V_Mn9de7?lhtjGUN6G!J`G{)_)?f^f2s^DhqVt}Pa_W}I7g7Vy zYL>`HYt*`o_~!>%t`p_RXHnx2G&R5fL4yxK}2)SN@uI(BErXS=KPm=GpB7)lIn4 z!S9Z=WeI=B^i`hC?nhS1ihy^Ap!~M9I^X9iuM1#iGF11WRqmB$8KYe+q-i+%hNZ6~ z#<+uW^|Xrb9qyGq-05|JdiS&e58763!x4s>X%)JoBH{>q<4)f?Z9qw9J{{)y)c9bp;v@e6}AosJp*0)3eck0BGXjFRIR>0<#M2 z09<*T=^B*eX4o^w6LegJJGcycg!^nTNCu5bXp$1*ug1#-gJecFVx>{X{Q=ek_3lN* zuYioC37#2o&@rb`j0x=NN3qS(Y-*2*#}wNV2%u+}`x4v_RfKTAFO=Z9bNflo<-V~x9V`j04!zMO}6f>Ur)NfkT_upkh&H_1_nc-mlF zPETU!V0tQp<&Na<@ZElic^tO%bFj!U%S9>_{j9T!Q(T%inVzlt06xe=T)h=!xE2Mr z0#rFXB?;4z95yf0ClXlO$mS!#^8Nu>9pYe_>tt7GN)klia+q`327*66f<|FDa$91o z^03EZ82pkqUy8{n$f}S>YrTvYRS79D!OHn3f}}0ZDjOM~oPQ!4^}x*nK9mr7R>@&t zcR#XF9^&1w`QZw6UT}y-eR&HG5ri*0beq%j>AZ{KF_=)guJ8(Na0k!fBBYl|`xxiE z9G-o?OR=(dCStYARj69FoCtZwFhmDRAz_(^tD|o)ZUX9#7wjLWujBg4xFWkEveo3x zKE!YeVgZ33&$DcqcLvZIz;@HN#J0R&e+p_6tY)rfOjzb`aLPLLJFxpqqtgWG8ReXJ z3i@^ydf=pIfJ=IIWWS!Tz;S70;l&@o^mCJb@OQK_j;BBTzdDZZ&S+&EAxl#XdmJ3) zH8^U?Lk7!dwPYvZA@YnTvF7&rQo#6HHXzTqpllHi*(^;KX_a+`T|u(2JSZs>Ek z7$qWKnd9h!Zx>o;I#$Y%z3h;mqL~MdaZM{jv|gImGbPD)Dx77#^y?qOmD82rNBrup zPvozk+$-0+-&&Pc;oB6f4y<*l`A;r|ivCVt7yVv_v4S6LHv)sOs`yxVUFd1x0e3&F z0G|g4ILo}jJxJfC8rL6;ZG0<#sm5#4Hu^S48)(*c8Bd*@xUO+yWV_K8MF2-FKts%Y zX_(tE$DBfO-#foc+NX(dHWa!%>-N2X`Q)mrIp^^2w6Ya;^(l0VgK?UIadO5e=lo7| zR{VZ_%pg55NY$`Gf}8vLfkI&yct}ntCsj;UQ1}E7!!sQ4D(PFxr@VIenuwXZGF&!{{*tnqbW9%}guX2CjIze*`!$%iw;H{%F z3U>Q)=9(v@6pFc7_Yx{!>Ol zgZ~82HXIGWj?@;A=#lJw?*GT!+ki(^UF+kS%m5P@nE-=E0Rg4eh_;NOS3*!DFo@_> zP{&WA*H*E%+M>rL~}SCj0*Lma7$ZSsiifxKtTaBfs*hc1V|x#6r)C+aZ-(d zCWMy!-*@eEW+ow^?Q{Rn^Yg*XIcI;Zz4qE`t-bczYd;?yc}unYScq_OyF>Wyj_3)qXDvap4O0BZyg{X&USvHQxc}e7>`)sCF9*{7t%7?X!l*h}uvCus_)FUB@f5p#e>xVr$`psa-GP%?H zFeX)`lKKYs{sxw#Rro={lISjx-TEuxMG1n(xy%BDEvB#e43}07v3{d-%lKZ|IQL7X zhg0H42ZDm@nQ{~WI#uuv?E(|q(C?#(C=ERmU7=@@Hxl(&5*UphTbOJ#)QeEepGJWJ z`#l1rVtXGa$6RT3;e3(;_H~p)wp0?%7u>9h#>Xe=Q=OM8a#BCFv&T1L=99Bhg}V+L zJ7t06u@T1r0&Nw*6yuj6=R}k^j{CdIJiV{e;DEv{XeL?%th}i&+S((JFo|!55 zBz`B5kym_5#L>*+Q=&cnL?2z;E?@4^yH5LTY@DqG+&D`Hl-aLyYUt1umxViZNLL?iT%VnPy(^@N5(CWNejL)} z2np_H@UuEwwBWmrIe&=HNRFjxA2yG^$?^Ik@Cge{IfC~f9R$sxlsn5AM%dhQU*&rJ+3?8SFTvI{G(@ACYGe|CwFwpa`1bo0(R1A&`9kmngU71 z8sK?o0Z~SqY9}DvXy1vPR3D&yf^q1&faHnIg7aBYF6ehbu-xLiiF&K0N?UyuxwXhC7 zOP%@;UR2$kACt5{*^$3@?$Uxgo#D53x8?5*uTGRJ?}u~YaFEzzs&rfN0v+Yz^wm+? z3dS_hMYZmU-%^WR2!~-P#fe(>k8YG;R6bWB7Q;66y`woLT!q-Nfvrg&MtwB5{Z2uNC*89bTMyQl3^A!mS#}N=|3r zikcZ8lE!cxUEe~bE zVZ~iy-~$%4QxC#Z z_MB(7VSNoX8ij;LNeS%~5~(Y1vDSN@<&fO)Y6BX*MPwKB<)>cH*?8v$4R*BCVViPf;4S*Rzm2J*uV zk8^x1;m7aeqih$8Ur-@GP42qA_(4>LfoaE0WMhWK&P9`K`pfpduy>iX1>FWpGW_=- z4M4yyxf-~nTR#;I0X8rwD(6?W)NWT9v!I(>V0LXm%6xD7W`1gk8wNLLi>2s z1K$5Gu-Y!-NpdCImN|sB(Wsg`1CigPY0e+EgDP_^(eW-t2l?2n^WfJ;Z3D~-zIV`a zv+u#QkvJ>r$)bDCQ7n4&9qPFua>9l!^h}cthp^S`)DDO~_!}_%a`#5uVXKtE z@B9Pr>FZTluVK2u^sp!RO{?1d1dr8*`nxw~rfGG*X_E5#e?f-iZ<^zN3n0smp{3WI zpWizB6Yzor)DIrQb8%fxB$|rdypbeZ*^9gbXNJ|X=CY3Ma^+2lMdAfoK0HCRcz_j* z8(?q1*qLih(E~6nw^$WeB3UT|6S`6ce)|a^HYd|}p`@lM1I8qqXkOF?$iYt20S+bp zWa^|z*t_up-Yj0YO9(M;N;gm#L=W^)1vfkA4wFk6g9ojyv0pYjNQ!|AR8bXMhm~0U zOUc3e=UtN#8dzWe)z6{xW%YX1HHLRo<_dr@wU{d!k$KzfhenH_pe|G)p^ z{%$DwPy0Lbo(}z`;J=(xj(UjV;T(gJZ*d6JvGtTD4(q0+GS7w=hp5ajxLfqoacr(@ z*Dug}-4M(bBBV{Ufja6YD9BXFFThTsG0~o~C z|0jh+GN7o@c?4Uq;DKJ<-{4*|-rX*lC!mI8W{~Xdl9_dnW8LshfOhI{;10FBjQcv? zLo|s<*?s8^q3i`H3qt%ZEGLcO0}yS6x%H@NA;lx?d=#$(2a^@*%I)TT%u|tEG7D*Q z`{l5f>u`q2{TIi?NP{y@=cRH~Hv7-03^lJL<~%*LaD(=)w%5I8oa)1$I>GTgWCn6~ zzp>rl7&?Gs$6;=TDqx=FdHXcgjFOrI-VqM{908;c02xa_zKKEvx{p}Bl`yw}_8yA& zA)IEJER?wpWzg}`4G?K$aWIm@Sl+Ril|R|WBvfMY1?(BSxRE?Lh9!1K|EC&w1r;^I zUCUjvnEm$E;crGFA2tCc%24bs=OH zcea>rOKOFZM!U!;+uhXtxTY~2g+NjnDKOf~GlmvjT!~&&WLu$+E*G*(8cw{j*XG{n z$T23q9XWCS47V}y7x;BQL!TsL;=1U^-LrN@e2v{B;l>_w-CFZFL^Kai)3(UD6i#^x zQtV?HiwL*#26xFX@Q{Y39O(Hf9~M3E%6qiYX-u$bZS(z&dq2T+DD!y535oCTPa2A? zOPAh53Iv7$i;!ZqAD(&$c&g4DYWi7RB&v0$Kja>AEwMVZw~|lT20F*(G!Dn zw?(S#f+AI^@ex3RvfoE`q;G!mLi{H;^wj*|fOMN*N2`|cYm+nP@ zErsn@Z^^itI{r4}&VO+Xyzsq(IWefu0Z$xxUi71E<8B+=8Jms_{C0+-QI+)hFZFPEKe|>R&W>l{ExEVs zE{$N!&3$Qein>c@AxokhB%ny~p`MBaUOnD7{S4p0j)Pw4+}$Ab8x|e>wMGEgLp(1S ztIX<_s__fxiK<(7!h%irmg%rG!lFLsd$ zvK2<6nJjT${#fUn@67jfujDpxTckZ}&h|*v9UTg(FP#d_-7aVo%?M}%J?VG4xB%a) z=20A*7NmX!=p!%?kos3507r675Rx?kwilI}B^)kzbs7sjm)%2n58CW6m~ZE0DnhrF zu`zS(8D;iy{1*C*yOUfe01OL;&^m^sC3igPR4reLmSx^0_a|wDKXco!B+k_K;n`oe z?HOjbquCU6bSFk##ZUc+e7S}Q-U3dPGa+Aay@G9Cc~NdVEl`fIZm3|4!xAQY${O@MJ4Q2w6EImyIm9&KDl?WTw<=8^i?P2m1|083|G-h;ZXiZsIp67uN&oMX%5L9&?*tTiKe ziyAJv_{_NogXXla7R*sJ36hcx#6JH5Rr|7s`*Pf`r}Zv3O8lDB@HtK>pC`Yx0<|L) z`C|Uk&-peMhIQN^RUx62zg#^PAR$FpgNBm=oW+|-#A3~Z;n=o2-w#p^(2DBMp|X1} z3Muo>7ew8=R@W>JtSx1`@yk&HE*wJExh$=WiS=NQs`O&BG|f;@)0YycxRW^{h7BUZ zl*E_dTik~~kq!I`wd`E{)rB%NA(;60kSY>gF{EcOy|vY(oOqNK3jHQazlcvZ!Eby4 z9;*ePB!B2XGGOw2C^1%hH@5}c_EKnSXBnE?(IeXi5+)FY9sCLQqHOI*yVOeUkfYOK z{=RWJ(6$K^0AZF0olrw*d#GGnnye-GW(NvL(hr)j8O)V<*}DgGFe5Y|?u2kESJ^?G zDl0H*572f%(Y6SR*Eo2TG+co+95cCr6IP(M9ux;uipd$kfiTe9t4tZ7&u_yJp||TP+g)|*`)TuabpX7 zb>S)VT|GwoKM4K9n4SsaCXOcLhZ@80x;Mg07z-Qs#*sbn*?6oraw==)1KQ^>%|$*P zp@k0feH4Tz;8)3HJmH z*ERXO!(*@$k=vGglvHK76lWhZil)R{KL>-Mks7!7fz(;nffWYLKcYflk6Ttd_}+x| zO!{|ozimO{=avj*n1CXQHo|!*)fQ@1(N6{&j?CSyBHPp~fAkQESGj?k`+#bJ#u*3h zw)z7r9h6XJ_v}+n71DS2aG-mAjKxPOj1fV%0kDV*wy021NHXCSftv zZRTQQ($>VE&@LDqb*kO&(s3NSJ4q|niXsOqed6&>1nS_p!IUyW8T#(BOd-lVW)vN# zbh5_m_<{EJ$%^6x2^sGb3CEK@WPR`=PGpU-{*M#FMn;}U+6CWG=Rse=`kn)OFrLzF zB28Q~!`TfR*YJtzaQ?pv)^qP3Bixwij(!=p@(>RgU!73HNbJeg#$Mmg-T`k2Ko<0I zPaKJAzYFq?jcqvC-adtNVvgU2{jjPq2A$g339Y~j$F&GvY<8)7g6E)q^T;NZN_9}$iApcP%y8OV9^%BBq z4LMi-hb4C6#X9+l`_wCklvPQrKeIp2i~u~5*n@C_&^@IMSOtrx25)2r>@UN64_j$l zI9^x$3pfs-4Ksp()y55IgLn-f34!kt&M(9Cud3o8x7^4<5Znh$3cl~ z3V)kPggc6Zf0F?8lBV`0q>jpH+ePy)!=qi#<61Y$w1<&7$>SH~B+}{3o`q2Dy z>n1e9h?6g#B;`xQ$+{2CSg)6wYY{ey3b_J4P;~r&@3`38x%L{-5g^3vX-8044g}ai zHsMUc^Ufa;sbZ71&tgx!PXuExIC}C?;z&Dc25%LZ8e?{WNti&Pf(cD}xT7O=Bj8z* zc|1buYs;9~<7!@nI3o*-O#2o)O#CpH!y}lqbjGqmxoxKxI$IguZH)F#YY1h!z{~Sc zv!-C6;3iM`+%yXM?n3`g$Il0dnQSu2AqY-l@gB<4(=miCY{UeIt74UQqPQw! z9yWn@V;?wUrV}pl9dPy~*WgN!C;3^|b@n#vEN0-Kd6E4Yk@k)#F>C24>raPm3nwdJ z`&#u7zcOcG^|UMJ#rvJ{$sAt|C$xXu0d^yt!lE~jR?z}tgj$UN2;%opV@lY!@Uq$ ztkYf5UGhGbxrlliY3=ELW;CAH4lYehY57#!9X-)aYkoO*w=ur=IdG{%942-peZ#vE z5|G9@Q|Br_!ag*JDm)dE!!ou2kl#TjG6@Fj*&-M~5JGhnE+~$3^js;v@?%_gz`b}c ziqpPsV>R$QPBk*zY-BS0*4zspV>->d4S29HF~)2R>$qkdK`(;}jh3C*I(9G2whH__ ztw6611+vSoOP0uVFC-~R6M?i62cYJ#Rx|-u%`IiuWm;|6-3vEcCERHxUQLx~F1yao z>`)Kj2&Nc&QpCASqAZ^7OaPaJ&@NyBraNC_TnBA}CX#l*pW!|JTm0cZeF@}TtahTZ z*`pqzg4V;JjD^@A1fns(@@+HdO)emT9>ec|RKBm|cb;4^zr#u+-xu-w7)&qoJ3hYGcu`fOZkmVo98afe0T8M10BEh z<+s87W=R|Nf$Fa*8rESlbZ8g2d6>9a1&;^OA3M^rU{%TF3u#|~SiKh!K2me%CI&PJ zRKnqEzRy|a+m0jV*kizHPRyV9^ac1s9X7)r!_Tzx`PqeVZGLdn-q07=!GCDJZ+n@;TUK8g zb0m+5l#Tb=A|JTtM|fTYFPV`o_UjA6weAH!!uX+-n@kBEwQAz�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 z

wIY#&=&hxdX>?z1sa7^`6fcTe9-vG4fGC|A30qkEV!T$m`mECC{MCG!p6; z9%0RDj~K?m0~;^m^#&qUr*H#NaW>y$bVyE~N7wEDNMFK{uO&`U{ZZ!*03>g$V z5tqoi$8j6GJIvf6AH2#QdDH&Q>q!4qI-Y=m1{W{F61P-ku{Sfn%GqjAY}8kf9ppP? zt7?~H&9&uK8wkA)zu$NqBgzbJIcvr#Mt|pBcu2@Qy(MIJ#IYk&s|WP<61Tcl>3Wax z{cPO#&!VkQ*p_(vDd1qtU?5wmB{{V8lJZfPl;!U$f&NCITzhEd1n1%j^g2XU&M9Mw(JqFm`C6J>-v_@0C{)mdfx<+&X8lLL8K3lpDtYn(5?xR+cRD zhrh`lhMyz8Ov0S^Yclx+@E#+u`hq-tkU+k6MCP=X0{j5ONd_L_XHb9q@cc@3lAVHF zCGfNXJfTf9GKLRI383Wm{9}CO7xyKXasLi?uqm+3#@^zCRLt+L(d#&So*l0&J+BOF zQkQaKY@MV5?C0D!9@S7u+rR?X!^b%beuGO+_MaU6PH-^3vkoRSbk3RFq9T-YX+Tvc z@ztjQA9+fngjYy)XU@>4h%fGGUPkgjIG9pCYDyUt(k6|bAx?b%s>g?B-H{=etGy+9 zRgx@p+~h+dqu3C8O8w{gR)tagtGu~@HchVk{S`N*`qgeZuRAD>7}xBgn)ND zCaQ7KL(DoV-oz?W#*jdB^~?WuiV6vP8Fb=nB7s|)(K2N)i5{8-n7sXj-y3{Xj!dDU zGY5h*7xsl)wE~I&$csT{1@u@Gl!c#dtTBLAws_Ztl9NNp1CwW#p%B5LE~ldualD8C z%&Z+@I?j84rsDrcw+4#ShL-z_bKfmJ2Rc+#g&H^Z2s4v8&F2wDGuzKLw0HbwaVvs= z7tNr7J>b`-6{rR~eekPy?)jBAJ?;<=)UqE5)tep%)x3QLZ)@2;|I2=B<Z#C}omw#N7S4;kOr4*uU7-&q=;Xb3&1^0ow~ zE%wyBVg7)G(sr0m-v25fTW7 zAXVa}y*8zm-XhEp6cZ9o0y#O1rWIP+YNai=<=%Q*+A5%+O@J~1sZAhPK~N)7onfd3 zu@JzL_qX;rlMlqUZ~yP}=i$jYv(Nrmd#$zCUVH7e*Vf|AnX`$;wok=a`30mL(&EOe zKdz@YgdPS)JVjqu?S`$sUVU+2ai8d*hrRtHEkUb^MaXXd(cjTsm${UXb^AiI9%1hg z*Ve7V?zmW|z)8Se!7xr3j2p3E+3l3l zjuc77V}rZR$myx=&>9~RPLNHAz_(~VRI~!Z>@y23p#}GZK4G!Om6-WMr7O5`US(ns zd_io+;*heBk>GCqxN%?xcQF*?;K0CW&>Gc=K9@jeR(80oaV2!Wr&NY?hr;3N?U+%} zH;6i12B71e3Zux>ugE|QFdl8u3Y71p0cH3SBlWWeM0_JYWg1{sc{F^Whq2DL~LjN8*E`rJ!D?^`j;j;F>Fnax+ z*>a`uT(zV@#xU&ML-IU9p6DjA7y3KT98`zR;63v%qZ>V%uforQPUcE6*TO3RjC?&Q=I9sE^5BNPt%2Cj75FrzJ#>l5i0? zV+0&RjuG%aDksv1OeZ%=5eZi)+NcQpYe_I&(cB?Pqb1MVj3?Swt5mX`d6qOUY1;1! zuktF%hGcp6{SPtM_lQVV!h+}$ zP`1@9uK@Xt>*QOWgSBs%i_%ZK6O)54hYFlVJLg><(J4#Sr`=T8X#mbi& z{H2|*?%%9DsezNRSyrCMtUQ^45wYf0qa#$}AeMVB^< zS%nev`__`cZG*p;oCLCa_NbV) zhl3l*zrm_AIrzhPov&GSCR68r3l4x!P_|o}S4yPIW6g5bZA;Vh%2NV2nh9J(5lF53 zqTc5Wd`9nc1yXa`_UvqNUykDg!Loo~y^pZoH<7@St*@o%@_vO~?R(^|rjNl6mCt46 zqdj$I5W$MgAjMopET_N?GN=|oBP=xN>mWM#xtzAsNpAKmjYOkY-H6MAM_`vw7-&-Q zB-Z#-xl=d4r8LRWhHv_tj+R+T{cXpc`cc>`$sL%g?nT77XdI zgXR=)D7XKv`|~+5*2WIS&#vhw*h7}4X*Nle>M3q}qn!q)s0ImKOM`c%*3Y0pS~`dr zG^U8mxLjJAp<2>+rOGL`$gR@Al=Rr2@PG`fW$$e+%QQJN6kqrM6K&r2x7ysvsqW!z z?r~aezP8$G)27#HUz#I0&h*hmOZx~UDf;YeB@HvC`Vn1I0J<%tzV>Z)-2Z6d>i?>a z^1(X3uj&B*));6wvHCJNxoJJeX^pi{$=}ch{)U^n`72x=YU+{HrZwvCLG`UuzKOP? zN`%}~jiyZ`;TWmkhzf5d8*8^pk+r*2k?m51f8nM!`z^YIpTzgOZG5J6_eQneH zq!MnGOdgdr@Sv$G@~Dae-{5cx-^?a~frzt`Z>QGy8%l+I4zAfDA>_U%oIRJBQ1nZ6ITrZgnWkj`Jj&sHw}z*kvSzLCG4Q(EJHN=Mv3 z3b|JbbL&?s&t$%d9^^r>9V84Vf+YQL-7SQSS}Wy==SYyEW~0~cdP->0O-A@x2%Lb) zT%pEmVaT&{Id`sez=%>-SHK z6i=bsRIk}h!k#2J%^`KjXq*C}Z!BzU{UH9r zRN-L-ibwIc6-s#e<>xuRCF8=afEGHWmrRC{7LQXN$2U8~S5+xChY!lUoqfG3-BUb9GX$#Rz<%g!vy)d86$VRH7U zV+N7Nch2?e3QT-DBwA0L(FAfEO63nr++<0z5uu`?uF;?dvv^?DV9ehPnagS=Y^ypt zlww>N_9-oSAkh8}V_CAXI3?^;sw@*pswbGSXf#t-{lBMOkaH+v-dKq6CW+6VlDWh% zhN;woiMd4GLrO#yHhf$d$z@KGWfqoj6#5FTCStyiV@OT)5dPkQ)~{xQH!H*!1Z4d5 ztRQ0?+F)yB%b(ymUwZ5f3mJz0gUI&ttf;KZ8UN5UFdzOi?Z4g<@BOg$uOHI>tsiYa zf3W>ByM0-=c->}wDhoVX;>arPMoI8<%_L11G{(LN6V5ltgLr|okyKdVS9vY6U;jns5PvcyAUVF^UHmn z1j=SDb|*Ht2LBX!45&UH4gM(MY?o-QvbF$* zwC6ncTZ+-P*g547<(n68Am`vnhUmh9%AJAVTa`0!O6Bs1{dfrM(0z{EtXPN}*(6Gt zkEt%~4}8)pMs{V&kf%tx{~9wU-T@0FWoh6;;Ey8{VlODZQ8=;cowkrWM9R&IdGT!D ze#M4Q5EJq(l{)<_%!dGMx2ymLZSs^{H`21zWGgtx9l*hs<8fLjnkhDhMOuX;&GH3C zdAZ)U6nyT9zBU?L4*X)%9>wQ7k_oHpnjP$R$3grJYKc07r0%9;N6~H0oCPzmUcbT9 z$;!RcsQlot|AX>Z^T+AC+=M7`H?*%7C<*=bEcdx9IuSQf&e~XazQRT^)rd z!J%(*6zl^BTa=lyxQ8eHUS+Xo6)J9V z;@^d(f$|;V1`V#N1i#YfiL$Kpr|5knmUzVWbS3z)?-pP2zZ9UatZl4@Anq-+Bb6Q9 z^C5y$uDX_f^^a?s3!RnU@B~#sk7O#iLf@=R3tb_H=7_1kauz#SvTLyt0ivscMO4+Q3~)uJXy6rB$uxupXnnklIk;adwGdWntJcpt}BeG8&;PG9m)6w(A4 zn`-wVdMFXNxGU=Wwk#HvRx}wDl!}F7Qyg7CZ`670Ln3DDOGYv23nAG8{pQ`+tYb|ELM*C&uFP zur(%Z9RQEze?SMwrf0H^0M|wca)|_0eJ~f#iv18Aq89{|UZBAJ(b03(+-1RrK}~@- zFlyD1w3}~X01xXc`y>7Fxh#{pEG`d>?_4Yol1BXhAP=T9$$qRnDC@g~Jjnfvpl7H& z_}QZa^5Cuq2js!{k^y;8AgPu-cnKkg?6Bkkq$MPqxGC1xrX>U}H#*xRV;zJDc63?_ z8HmkNCzZ5c9S|+|$XCzzfBy^|COWI7Yg)RQUYnAx|eu{Zs_)2&Y1$4+-i;Ir=jYnv<<6maF z2l1xP(GUH^WR$EX9C3HxA8m;?7x_WW7^)jmH_kk&E=8}wbx-|m3pomv5Ex;tC*0%a zA^svC-i*^YSUE0p-6B$?3$NUS&V3^Jr(O!|9wEg5-_|9QBmYAOe=MIU=HAoa(;E35 zmE?^mCuxypeqtWapUMv@WBn{NhNfDyRP|ikZ#4(Oa>;nMEOSR%Xo{QrD%@dTvh+FZ zQ(e#Mz2=<0E5$k;JIF^>$q~_OFHzu2!jSeHC(gHsw-?)EsoXGxWmc{X*BWz}n&hb9 z%`7}f(Q3R*zx0snx3QrRCMwa<<#^HS2?tL#oW(?tuq3e|dXndJ^2a!6yqvTD%<1-{ zsU!CqoeHvs+SFftf~blslc>7ko2i@lVe~$C55L40H`j4ClyQx=d8xy3*6|`wr~P!< zPq+OXVLub?XOjI)wx1*I=P3I*+J2_k&&%xR82hQoQ*Xm3p=k-|YS^s+>-e4YgFc)w zx{QPBc_7|{RbM0@NJ$9(tMTg4E^3<-Ln+C_@exY9rs14I(Em0ZmpWsA5PWJY--3Xk z5+}>|z-OwXOLf28!A(bw1KQ>ir(>^ry6mUhevYu8iS{$eekR+`k@jP&>ePO0%K^y|3T_gOq~)_TzmrjuB1=QdDZ*OkFwZMpr*n+tkgd&6Nr91U zCvpW;*EUp3wVaHXF*$>kBstz8Sh=xN-65vr#&{r5+uU*2zDvpAYpG4i#I5UracF zYVd6~Aa|v!L2h7>dISC*tF8PKm5F`okU=a?iOGL6%=4kKqy2bl!%^r$jJn?TNV+-c zne}1M{Wni)lG<*5zdIo{Ov5`;vi;q3Gyi#2EdLo* z?7`%l^Vh0k`Aw==-_T+g8s1jL-WzP~d8@S)X-2hX75fKUOa13sOZ(?qOTVbKbK2(9 zMqeB$7BbuETiRNMk~FJtGc#^Zdq(vwP4!K0&oo|ce>c^_g$#joZSy%<0t?>V3Z2^K zmv44k2ys6nc+_K=`uVZiD)DGBtBycV{dlI)#r>_Jhev1XN5?{N$n9EkkNV^$o>cpB zXCYqhIeW~sM{{-<2V`P-OVDpO`TjtYitt05d_tNm$Sdm!?hNHWN`xr=sEY=u8tYW! zcTsh@3amx)m+H9Za5+Pb0V>|#yz}+n!?@n%MAX7KqJpfNSjvE{Uh1Zd4_@n!hYZKPu=0(=mnDn+yY)WCErCLj8)<>|D?#+TM4 z5j~@01;+r9q7b7siJx)I5W%ZDI28IO&XThWByik}l8N#tF6csAC47cd5|El@j}l&y zWJMsYNn&h8XY5AmiLwUu9%tE ztV(81xJL=A4T0aow=(5)#cUS>Sk)=tSnirKU2p;Vfy+nGo70yx}>kt=dg(w*S95 z$4fXkbLk|b_J~;(39TOO1oH#{mMC(YAI|A-$;ipuBxqgaZvSR4XEy>|Gw3PXwZw(# zChYH!?D*9fr8#JvZ?4*QedQ6ejL>drGd-2Z7EkUk>ka&C^G+=Ic+mbp3ofZ+9TQ=md(n}P=%w#=a^jJ2!1(K z;cW3aCl@$_vqKfG7N2W!fh#yIRN-#%xhEI6gWgcZh!)?7$ps^V{~D@DZ1E*dE=UaC z5UNOO@g+?zND7V(Rp0`f+~P}~>Rqd+%q*2vlmbJB%Ueiwja9;L%P|D3vJ+%F1!Mx)@%V;y$J9$jtGPN$eTMc0DznJEjJlzqD87IL5*udN$dce_A z;F#=l1iun`z}ZsZoa}Q3?+QKOYAJ9{_PK(kp$FV81@6f{cd#Jzz=)QD5tDr*g13Yo zNNg!coa{>sW``a~YAHyX>`Mw}h8{@PcP6(KBu{n)uf*e5GfocFA6U=&%-@@JA@qoV zC>Pf}@^1(S`fQd5j1EtiwsMyI?u?f4u-8v=7pU@)!o4s)My;bDoV$9@EY85aiJ|(Z zXVLT$j5kjGrz~9CkP))Nq#5iz)_BacTwL!W&G2PByGaziFn;%^{?m{fdXgE(#8jU! zINF$N`ztb;C5^(|feeL1GQ_`n2fvmM7LR`|lCPqVnkya$tYI1CB#zXNFJ`XHJK|hp zKID~1`ahS~MMbhkd|Y13dL+chx8-%}1deAC9DZ@Gx=XasYo#pqT0e`-sikCCTx9)B zHW!OSsQTec&Gsd`3X}06w4rI&-@M?$?Y?CLu!Y=S`M6@8ysub8TgHlXwzEPjnn%j} zIQ1@fgc&O)@{Ut2r}ET}$geP>ic3R(w2BmqcILtib2=U=8{wn zLKt1AHaN;t%#sYp%v48tT2^^#*32}sfUEz4hlu@V6e!0s=9dAvhQluO0cDE=T|EZD za4LI3Eh5K^vLn$IK#R@Ne@xt5aU9Puz3J%vTH|fPYkhdI&f~>#A>__6@zo*59G*I5 z#~h;^QbfM`oR-U$Dl0LEQBk68E^;``X>$%7&FQ?}H_PyqG+Y=# zP1>p>LJLkyxJ7yTqx`6tKsj?-ewKtREj#8S1ZU^siTJY@vb(D_{zCFl_p${vCue?i z;d8zA82%UU@eOp=kYM_9rDu~;F-n7^tcrzM6$`Q|=9(3yA@>z7Uy)hc6B|{{oL+4Z z1?Vb0;;c54wJj%cqK{Q)ot4z!anpa$B~ib6j8`}(`*-q|^*D&RXT#Yv2Oz+ET(Dx7 zf@wLcr&zaeqF92s!LO`4^2zsrme<0Gcy>qELy3>idt97K2J(vjknKMfoyjv!-%>HR zVLz=!8x4-Jr{hv3xLVD-GZ^kM;>o>(mxK7IzM+V_6SRTarr-0_`<>d#9}A9s6Fx6f z0n9*{uT^VFVom_9akA4P*)j*CxoFZ{Mg>*1&38J?WpkMNTFQz^b{7DYBap2Cr4^lKe-_D(We9Idk@2PhdL^B-~X3POfXOHuGl_ zDZJXqpH^+SXL~*VgNt8+&~j}@cI`38h3I|41IyeuXiXz|lYU@0!CHl`LROhGquaRzvbVg+?Ce~WcKJIY7QW!xY{kR%My=4cTlEl8w> zI=5&qTH|y{u272rL8x)9Sv;P-715$*k7ol_@8i0+FOXI5^J|SFK^fP2-yK@xy;P(3 z-NR8ds?htsrZs++7aC|%+LsT$502r2OiyLX@2-mG;21t7 z1a7y}AO6P5M!?`0U5avl^i=>v<6wk)%E5GMLZE|fM-@&pT&yr4{PfEbt?|p!8v*he zb9TB~wa8g12>_^{LxB8{&t}C$32mNg7N>C*uKjp=b6OG?dpDOl9eiS~$VyByB=fbo zG|6dBPi~&&aLMIo#c9Bx?jI_~xv6f%nS(}gI*ME!v4PgKMJLk?)0w_hR#DeUQ?t{I zE^}!bYjP^htIO0@$_5J8BUf#R-Hfd3!X@h7WOFINWVX1In%$!d4CHNH<`knYld7~W zbJDnEe5EO4;T2=AXLd?(FCr8Kea3Tc$#q%hu;?bc>Qq2LLYSC}=OSJi)nyxuf{7+K zU)+RXSCHh*P6>>l)|hElZBT$tNC+f*_G&ABgjL0yotamjrZtWhRw{N!UzdH8x^%Gi zCF#oaiTVoyyhD3L=D3`;_BT@+q6teA5=OS`bqf-3*WQ!)+*s*ehw+M-1NHW?SzXZQ z0n#jF6WafH@*uiH_g$a0jgLenFZbzO7bWbA4)!AZV|wu^(wq8&*M^HT>40?P9=jutDw?{Ze~}Rb+Z^LL znClL5MQ^fL1FfWraRTe5s5&lUL9s(VHcyEnTxYK)C(!*j_j-x&(wgoTG&%W0+fpkq zM-QpC)8Kk@+C=WkhQ(na#W`p%v(XNw-Gq#iVWDlFb~CRol~)9pj0b!Qt;{2=%%ez8 zv@(z8HA#X^6{kh>X!Um>AR+o`i%in@s2Gl{)cvGhidFt>4<;aOBMaR*%*G*r$Ju@_ zeg#oC_1KJ|PLo}#rk@Vhv`MmGgu3|XeKu_|*I4VtY$-teS!Ci4k)#lQx9Rt6a82Ih9eiP3>kzaOhZSx&T{Bnm%l9d!s z7M6nUl#8ydYqkg0pZQq9#EjoIu>Qun zv>S7%d-+S|_vF(zPNjTfZ;H8Dw3xhK%ilmEF?th%U&?9oyc(EnJgIUWPSLhJc9gHi z_v$Idj~?|ybSZuuQ$NIr#gDh;$6XTh%-A9`Ym`_={jJ-Win&LaS4M_f{)(jDD}zk| z68rX`{;1Z~zCg}tV7^T)X;%IO&XVOv1*@N;R42?x_v_T6Vbww|S{Y06?2b$cea0GQikHQStWHAeFzhWd`Ke^%T4 zy@Z(O{_6h5$JV*Yd>dZatL~<5Z3{8p>l32tn=b2KQ&;PD)|EaVp5#7aWjJPY|6$JqP!@?wlx235YGj?cf^Nu)cV)Hk@&x_>>wL7nuL363 zx6E?(oB9w;h1~^$HHD}&hu2WwBr+4&5i5ZCm|%c|cYzuGEO31RAP=xyd?;1sb2-H; zdjghKhW$6+d;mxo%xT|eU)>%_vax&IbAR*+1=lpHn+wp*VmJpp$By`{$P!v&0ibV) zAI>lSozK>y%@z3(8ftWr@Vi+t7ZttPkiye)9bE&3J4Jx0)dPk9V`$+oi+anlU6wmd zKNSq!PEE4jJ;#mJCY>qKni_d1hWwsV4-`YL`WA_C-?AoI{o53a&gKK_@%`$mJl5LL zAT^qc=VP+^4_WP7J^X3Bhe|nI({8+EZxsc`rDTQG!q4vP3tt)1*jHr@mm8NFBuh6oOA)elG=Eg<%O11n9kJ>GV(2{pew1+a6!aEjC!;!r?t&1KPnbVIEtrkg%G>cvU!Y+ ztUd;ZCHS;eB@|V#+|J7kLo&>fCGe1K(bA5)!9xbKF#U}ompe~LsO%)JNH*huQDembzlv&P#9O=PjGJH*t7kE^ znLdUJ_j@)=L%!UWw2A+mpc%kv|Fi(`NAux3*Rln8G&1I3SQLgy66~k zvp(kjnV5hPmz@h3rr0#ZT=zwCAP{d@_IHs}irgZnQs|0|?N_8r z_F!HbRCxQl1Nko~AOk3jpp$~aIfRi5W?2Jy3w2rpS)IR9O#GPvCXU`B0IAV!VVc`W zxWhU=?$mj!#VPu`BO2Hcz;)y97sOBytDp~{$I&?;4AtUIR5_8PUmgn6EDI(tu18v< z+8#r`FPm$$XPq4!bzO_|K_d3HB@erVAD}@%(V$|k@k%J=DiG=RbS&D7@2D?eOj`hg zjb$Jhd(4A^=YFkulaLJQer^D!J|&=Sf%k{1A$V#-(F9LRnOuUagv~N68zA&NDW7}+ zfNc`-uZS7IxMhjhrB(kJRsL;gYj;|$4T{&`YDJOQDri2PMuY&$E(`WIfP4HD35J1h zU`nVkiJMJAbDg6@g}1jy5<_kmQ}AWx9jqwO?;f0}1(L)SOk~i50!zEou?P0&`q$~Ud)5P!FdHH9;0`ZBT1bnydvT+;k;`ynR4;)!A3crqy${Hh|M z(F82-KG>nutoW$nZR(=NvWw8(m|kyW;E=4a*#q9RX?sn_k(nGk@CR!$+z~E z@oeBX5~1g@3Vx*zcpVmV0~^*@Ll~}ZZOIKwl=C`Z-sq|0{XH{ zF-Q6`JAd|RJoXjR^kw4`f=OZDxb39r7y5%EUJ&h^)n@b05S40ITR*GSjnJd1zi~3@ zmEdVw^K-pFIrtO(Y*O75d|bY+>GaYy`h}6pALVMRgrx?5-OF|TY;w@~>ygsek8X7t zgt0H{X8Xwqs~wpp#t9dJbrU~{-Wba=jIqXD>ES6Ef<$A+L}lpY3NOO&Pnl3+OyN%3 zV|sg%F{9kxcsII?yGrjcW^g=-2sI<0!yti;Q{2joDRTq{#e7y2|H0k1DTAA4Q-*Jv z8B+##%%%+AF*BwVsYVi2)6MM%jvC(+-BVgYO;51QPw@>s;uNT_p%k(4)0Y%|d2T{r zmcHDZ5SXqnFG>iMFm{T>q2>afgT|w3mn-c~?rvHo+ODxh7?!;?49tVg!c&x~_{X`HIZq_%wm0H?UWX9W!dL1nm#m#L#L2B_oNO#w;}tKm zWLn^Nie^2N<@a!3-mg&2fN!l#RInK&Bdz|Sxr>6QxCkY1N`GiUKY`i`7xYh^pR-4Q zDA%E(OHSnoTp%f2m`kNZ9?6%-fNupjNUUEvcTvDCeh+4OJ~dyaFO`z0JmQ0)c;Msm z%aKatk?Nnggizh}QkwR>R(oF6p6T`CGqNWdp2>~sOKAS0xr!d)3Ks=3rYFNGQ_co{ zc(um=k+j9>EEz}Ce=#AbDG8j7`Z%d66MUP#a@thx&c1TO;x3!@te_>Q?fqXGd)2FP z=KWuu>0+7B;kb!p;n*J~9x&O%ktv2XaElbID7SLIB1O-1g^EUT^L@hP%-vq6^7yAA z$vcJ)@EV_a=*!l5N8~i*fNYNJoIw_KQYR|S?N+LPb*o~JA^F1MqG{QHaa4wE6i`y#Ke7s(gRyDmvfQTrrB36F z=_`u!MYdGolhLl&Bt!k275{k|KV`&@kY`_<67)B6z6{^<+)o95f$oG~)CSTdW2y*; z-LVz&-hCLn?v5_zd#l*(iDnhAVUU(;FHUO|DN?^|ZcSj!KnRv-0!5xv!s}opf%0_W zsJX0E(93T1={N=ZEEi1B`*Wade=oUMzu*qOX)e3Z%2|D>tPc;(I@n~0W?JoiL5s2I z*D$>iH{75oqVauJi?dq=c06P93=U-Va&F1!1chH$dxODSEOMI_UdB|4NMvEkIBN)B zBm&KCk{FyVXZ(3#qs@U?MzN~o1U(ABxo=s#TH(&BxXI7elf+y@z6!s}Gh$2I?z-kR* zUy=<%5PG5y^NFNJFWd4I#X3(RLViS@N-5(1ayv^DIKT2Ojf ze^E}Iz_n;m%j7oj75WKI#iJvi@sI(Z0Pl5(6E56gL%z_sasbCeFy0!OMh~nIY_@n( zsPzu=Au>Vm^bNqHGAd0%Q#G!PZGbvLaf+Sxrep^G%jPA$qd&H0U>s){J0tTT9>_Tu zxl3Mlcy(D9NhXSO>hv zY&p{O7MWMJT+y5wx#^BLV$@t=oIKFyT3log);I~JMKO$*fkn`s%IDLCAVa!CZ~9$? zLxKW=FqsKf-AS6^n-i5Ay;?W+1nYB7t9A8lK!kWo44yg@7A_CobtWtf9=!cb81g3s zKgS-5$iT>z0{g*;ETZ*g@nBkiWtxgQrA|Jb1dovEC2#Qk*dBh%`9FSdmfyeTcNf1E z8ajAs?@10#nn;|n(}57*o*`+vH+V8uKSaJMySC^W7tgISR{xCYML+vjTd|70rJwB& ze2~+2N8k`UFdWTaSn-ZOQQ0m z__5>){xDKJB~I(VJqW5x>_HGr8_xY&({WWPqKTTL1OR7Qor2{`hU}pHz2%QW{!*Mr z!1W=t;XGfd)+q6);_QEkLJqr-FE!7fsx>|*4FyxPkT%gpaDi-CRQ5!#p-C#CssyEb zDz9NMgu3H-f5|-rvcEIRH zXok9n$Oi0GSOR7POn=}_APO9*ubYdW)B^r6y~!=_To@46>x5x$1gmE8e4=%&)_Bd@ ziR;u{y{;s|qK00#pg)iwE>^QtfARcjdfmbVW}jk3jo7Cx`2i=G#U(I=Iw!oIUc#!6 zd@13t)HW4YV?0fH%`&m6?)azJ)eT{LL9lMS3Ii%jA zc)j!4%#+b3c4bv>+R%Dk)cYB}nD^cn{j-o1-wZEv)bt|wx)^1TzVg}f8L+?IB;R%z z#b}0F<8LYStQ4^~2IZu)$iJ*U)vWOr-=ktpx3R%4BbWqvMMh$rgjNsl~!rhIM12k&EaL!}D_t~NMX7qm`oE7dXj60T49_o@}a-%t_X^4Til zz?@@iiVALEXgKjW7&LYoWouw3O*9HgP!<^E{{Fz9;R3M@8I{cue<8#cP3K_Pn@JjR zS;twA@z$eAJ>(CcN~}kU^^kc=;<#E5uk{$ZoDF;Lvl8c94@;|q#OkL_;dYy365A{0hnk0}7uxj5M8n@&81hFv;Xq-FGk=lR=%5x^GX0s{`Crx=|HLy?(pi6Y zVGA-K7vcy1%ZWV~I)4r$OHN5{Pasx=Ml zUKy-Ep`<0%_VQ-*Mt+COi&?Bj-qYYFn<$mV^O#1CBY@#|a8(n%0!Xa)MbSj-9RM?g zjy%%^VAH>v2Gx~>LOPOD1b&{j2}U$kCFPE?U0{Uc7>Fp)N{nJ$C$Z2XY{p5qdm}ee z9OL7^%f#Xrr=*1F*F}c-S3BihHd%NVE1B|drJ)H-3DWR*9`dx9v}jzW{X4^crrXbt z*o;g*P%e3_^>lxYehK;(0Asj#-YAkmOczp`xVIL9Wh!cd0BWNZnILNfuQD|+{d|1d zdzflMReL4tSA^attp&s)nbUT8v}y zMsTI|k_kqT1ERgA7p5l)b+38nB!X9)9BnDcHNTW^K3Hl#P%iP#@0g{`g~rPV-ZoC& zVU!(|;?r^2o@!Jw)OPXM${7|sbd0i1`uQ<6*P&=@n`b+k4;?t_*b$nRtnYRLD(8z2 z^l%}JzLPU?2d~=^O8Z`HeCz4B@T1 zI24-gz>HvAX;z*n6kW8kN8d3b>wV6nb4Z|JhYa*=a8{9Ow?Fl|9dy)~ooh_b*LRgG z5edD3$lylZm-M%_K$hqAC0F$OBOI^MHear~+o|tNw$ODF1YO6q*WG}83bbe|%V@%^ zY?FHTh0?xzQI|kO(65m2Rq}}kPwl?gDDVSXDo7awOCjZ^k0ON{0-fw!>TeQw;h5*p zlB|!y=BYY%DUhjB)!$Nf%mVv;qw=W(k?g8toTkYRZuh*etrSfee7)?cd|F!}7eFyYi_akVE%>7}LyFeQKHbu;`O<5=Ll!Nry!A_`9lWXja)(ol4 ztUbXQrMaUV&2u$X*(vIwzF}1rQ-F#ApmL*8yFuvTKh}bWtm!||JS*7-qH?3jH`WcD zwUR?>otl1`w6veA9a>VZlDwsV2upW9Fj#P|8I8 zY-UZ*Hi3p+mba!|UzLi<;4R19xsJkojKO<{+m$4&4Kgtel`LhewJE0TO0p;Rp6rPo zS52|dc>5pS5tHd`;%Dd%ldpg=xO23_+P2ys_<>QuQHG^Cav_7;%P}ea!i~#a$hA;$ zpWc^LbG@->T)1$OU}G?T(3hcd*uwgm*JJ-XbjN6%eR@*C8kHrAn$L)Ra@AcP*6Z!?wMd0_82Gd>5{XFyooGw+HXt=Huz)r?ff zA!4s^AIBFzr8Qm;+QW&TlCI9qmpw89f#*tcRl{b(nXHTfM*Vv1U zX?9;-NG9Ay$z?L_L~&NlXScHEPX^xl^Mw@RUvZviP8$cAgFVJe1Sp7&!9S|4(DU+= zEWOVi7}t_H?q^Oaek$IN3w zl)8ULM)6Ks^@KD+6Gyn`N3-g$>{&9NZ#CBsYv6Jkcyq9UgVn84zrp=KQhip1+kvei z+3^bDY4y7K?!YIuGWz?YPeEc}F^lKNR>-p=4MmCF)yM@|`Y(fA2aSrfaH5EN^ubzT zJPQT<5=$W-15c`P1Z^S0P+4K0h0eXq-jgfIXF9QW<7f-MRO_+$*~g1*S=hgZoPD%h z1YWmX1YY^bz?wZ?0zP)a32I=;Msi>?mP`GiNeNoxTR<;G)EJyPPFZ7M0#VU91;k0_ z*_mi&qM$!X&Vgf=)z6lW#H&ahpcMI8UOGbLk!Qyu**|V*pTN-e?5+7+){gdbPSl^! znr|z4HM3OiI+|Us(gzaDMb6)~U?6j&mAPPnUV9`VaFsbD4wre?B(wI2@v_m*@jXrx z`+JP?NrsP;TJlzSw|9g3uXMWGD(Q$K^H|63%|1IKL_*kBt#gD%#l(v%P_a@h!cU7MSP>o{ zv;v{M9D$vgX$W>ew$}6ph}`5*#~222__6*g_sW^QC`SvJistEgqqtR(3k7;3%c%u) zH+@fGY`mu|b;;)dSgeFExiBga9?OE1_)Ef-gH{sm*~s>%y67AycR3%HN={_AZ$hk_ z`n9G9!G-WLh19&Fo-Anj7y0I9QK#gHzS<_Sw}tN_HP4sMvY4XQu$Oru?2<{`;+`yi zTjR0e#8afIHB|5u+vo*Gx`thnHXwKH^qkQSTeAHJ)V~N3LR6o+?N4nY!=92+9Rg-R2$2Nw5kJ!Tg4uYVcI8rd-4BUQ}Bn z*l5;v>)~0(^A7`vS=p`cSb!P9tm@WxE;Op@$*J$2V?47|zH%V3c8yutYE#W{*qC7n(c|!U z;!NGaI>PjGH3r&aw^8gygX%hN$Wg zw6;S{M9p0XdP=SbUBPZgvDchla^RbtSuaARa1#84iq>r|EjLT%*h^1?9pExVLg#hd zK(?x7RCC$JYO~PE3P;=gzUS29FL97oRET>lfGTNcoe4llD6R2*A_z>i;PH0~K-6=+ ze}frZ7s^=K;%fF&m(SU94|SdLyi^0z?Q4D&Xln`Muuj`tw$UhC*YIX9U~!Qa$e~H& z8L>FGgyb)f<5Hh>;Ix08S8H0so)FIPiVccdDmUs!)n$t_OTrGmhz`~C0r1dojM2ge zwcW0}CS+Ic!rypB7Ja8=*ol_{S$4_jXjTiBHQ8Km$C#Q~#8s4%Y~a02=Of3Y*wyk%LgIO1u$X=Gi69} z=h_rRfZ}F&Mi`n?!k;sC3=Dn|5oMk2(R94QhKUFVEFSF6D^Ay%E?3yyWmK*i6bohD zVaGKJ+1(so5~+Bbi0$b(<>OYztMvJcHh2A1)Wad-Yn1F)YKfW_1FpBm_ua} zj{FZW8UDvb5VctRXBI9n3d_TVbHuIDENi4}nyKa+$|0kg*-GT1r2AB5h4Vs1g$sF= z3dK$unLAkFb*jJMSU3vK8L{NDhT2_X@X}WOS`ZE6)s>plXT`PC_Q7%PUe%J?T*=rh zceZ#Lo4rHE`C@v_5QiABUwoX8f)1A&=T+;t%cdp0xr(~x#Ot!gxiK)#>uWc{g`Z|% z*(1LG&0ei3U55LX{l?k=n8c&bKx~w)bF>cuSIGb+nOe#=9EdnNL&E`Y_9H{uICt%6 z_q@26SbqCtIQ<3!%iPOdlAFa^DRXZ>Hvp=s_xdI!U8Fi!leGLdsytNlKhiGJ^AziS z5k>xWSv$2YSo)Z}y;isGWqRhrM#H}jDV3=;9RT;1yn2NQ*_EajSZ;2q;E zM5U{p*YlSvBvT%#HXn4h+~H_012ub$vW+0dFIXWyFZzMRz>r^GUoOf<@EU?3-6fEG^F+;^z&K`H?}K9 z>Q8KTUP3M$VH0JzT+oKD?IZeoIf3Xplwp zfYds@+pRUOK^YbxfNq~ip?O1qAQBPUmE0vSUuOMHIE+`JjA%~Nyrxg!Ni<5*%nGah z{j@*OtOA6kU_vyNznI@;a*fJfj;NSkBzLn!uv_0x%%~(ag`Af2iK2OxL|rhvdR0@h zkU)Shv=xb;QcE0z7Vx%gU55zzcpS>`J-x#jK&W(%HR16_LhFi9k&P<;S?lLfVedpZ zR?f24AH_Xm7cx@jh@NEjprs>%cSolcr9j0fkXiaiRxW~g;=QdkhNWU9xzC8*kR}q9 z(e_HZXzRN(=X++(U2<>e=_?Z6U>7I2fgYhppLN!ZHLLcCi|j3+Q$~FiqdxDzJB~gd zTOz{P!42A$TW|$>CkaZxc8eFXQ81rF2zu0|`!_f}6?1DgqmoeFxhrZu8(O29;L0oj z;h1dkLeROx*>LW&G#rdztdK#>{umfHrYta~l!m7W7tq&6=7Tgdq-KUvgn6(TnXa7v zRFT?xaTAf9GX6!lq%A%*ya&Z#%y5A+1%(}m4fZfMNVez^W+eb&OHYQ^Y~k6;eV!dC zAUJR2Rf-DY-zA^6e;`bNxalU|M#7A*4u#S>Js>V0Xs(W9%PZwNH zlPh5iHMC`8bD+s+CPdZGUj{C$Rue92)mppt0q5{GFS{5Q`q8o09+yJOJf)qD(0j&m zji)i=KJ{~yj4~prOqtvM&CW4;Y)r$sYn6`hlnA-A*J`VN%F9spli`g6e=FLOaNcYs zt{QKq3qrplTdb5q^El72sUU1)%N6{>FM|7G8g3LZT#&9rM4rD>Yy1O6&|TTix&1YC zH*3!(jV)uzDDoPi{C&Vu<-Bk$GZI?3%kWdxM(oB9i2R$8$=i+Q1NZ|4#+x(KvUbpj zS-a8k3Yk3NC2o#rb%oqli6NvztRO7Agf%$4&#s8rIN0nIOPGu|r6GU)zvyJK)R9%Y z&%xX)6N?w0uRm3SSj_fspmOXm+P}BiBT)w5PFaW&8UyTR$St{9N}rvDv>t z+uT>IY82MF29p}5pDWC%-n^2`#iLsM8&q(bsa}pSjqn8b)r8s9A^Yh<;jHD5BP+Pi z5$urlW?lR)FZNJhOHKs{`)3~q$G8DF#{XS7PSM9fIBp#V zM-q&c5PiW`UhYbbeoJNw#Zu8VcoSI!h<38Dw2t;2nK-KYcAhfrrqCezapp$iQN3>MsTc7nZd)9DZjTeuC zw}jS1jU!4lq_&?MDdMPn0#hbP`&dKCUw$UN#nQp5i->L$!%hTSLNrm1G~04UYutxM z685TzINHWLhJ&~v=(l8KU{)b0?d2mYuLo#xhP8a$Da*$}y8*_P;79BRE}U3cLffW; z=q4d6eO9ZZ=p1PPr}Ow|v9R~W0kESdpm>(x!*$oB=pM?lXg8FyEq6Jg^P=W=4N>#U z)*-2`>rgtrt(0Ska4O@0ZHU-wSZjf@4KDS9R*RWiR?E8}w`DSjjkd+`vIzZcuDjZxFt%B|!#lhtNjFT=p59ui( zM1_w9!_iLz6e={M@g;;EZQ4xc+6`vBt5<^dI zcc^s6LUiq%{%Ru!n~gKCc3L-Eq zoLXziI*V=RZezArYD>bhNbGhpv{ZFAaD^taK5#=+nJnKwNKMU24FTlCY8j;@@hHDEWbLV4ZQxN(9iry z9QvrlSW*zoaKgr(7Z+tl4+t8UsP*N=Fl^3)~f&+LnipuPayOA zPEbzRSqa)FRGq^9w~HOg0-#x{IBP9n_1X={ojbv%HJr39ff@h7LXXSGaen~`C|XWE z=8Qh5G^kF>y=$BydhDA?_IC-6*!e6{vOl|QqvOS#)6wZF>w1y+vO%`Xco1uRhv7ik zH)g^%VrVm_=Nk92E?%R&%`G?Ct%m?z_CHdX4=HWlkxE!$Hn`1yQ66E*CRz_00;oFP zT&OJS#@+eRX95yKig|C(@J!`x3W{g|%Sv>~ggrTmWM|O8^ zC3DUmdr1)eEabP%@d97P$41yY@&n+E@54Zi&m=$v4o0X;**RxyxCX>YwEIuMX^o^| zc-}7QiZq8MePEbuAU(ck*9vxUXy$qiVmpM31p01*&wlHEpO$Ck4C1OF*M%qQgUG~0y4#zi^ZIRVPH?rl$G4d3jUE@Yk4S^+p*HeK&;tjgm8Gf7ri{szqIH zsoHQu)w<@Yrw}34=2&gZ&OBA47WxXXp)r(g$Szx_&}-~CaI~eYRSvkXHeNYHc<_x` zo%V_GGly^p#nK=Kz4y$r)sC}SUD&NdrH?v|wfE7c@rH5AxB%{qoR-R`nrHSmf9ZnD zztKf0^*xj?e*ACJ+#R+O*yLXy7>(4aZtaRRbq3GL+DeEN_OBP%3I14Z7Gb<$OY~bL z8*dQAt=fR|@@ng~m8(cHgX^zX>RMi~(GD8yU&lm~s1UNwIG>Fbv#QmsT<3T-uk!K5 zg{o!MMQzJ07=|;Ob)QEu4b8g75rTt^;HKE+z|*5`$;s-)l*!TSxCb;!NW;6<6YL+;;@vpKn?s=j#+LcKX#CFA8$ZInB8{~A1L z8}ZAF&QWV2HX}#rwU5IqcQ8q86+#Xj2bJ}TrvhowU+~%3YcZSt7(Zf1&Du2cc0=*Z z-{q{@4C8s>B;$GEA`4Wu!!1Trw(6fzr&;^Br*?zZ*dU}RTcd56>123lTkrZM!!H+t(khoj%2R>7^gR$A9KPvX*afuP#V za72TAYH&`O3 zrR=HZ5)m@0C~8PgQ)eJ)fWLw_SYyl@Tp{<9NGGmt#{-}&-MB^$Pz;Ej)=)|RbzR0@ zZi0Ui`LM=RI|$cx=J^`~pKS5hH#7D_GLVh3=A1noK0l?_xyIS3LMmZ0MjGlnv$Blv zw~V2q+rqUv9;OC$-P`d&{Q_?TV}B?@u3)l=9tSG}K9xh`j)zxdGE3#poOJ)t2;|`v zVje43se`e|!z*%0y^qxD@QSUnF`5uwv0Xjo?P=a*37^x}S{-gwvCWwVZWHrS@ZD;A zZfI0-&eimAZLoJ@8{?k5(uPXAGT2MqYtXD6)cDju-5UqqHVwQu| z-6Bydd(FA6oSr#Coc2xSvJVzK;W?>2`fW;>wUJQ%lX9A{5WB{j=DBo>+Zd|NNsmd) zsM?!|DLspoq*1+H$7!1wAJfX1)U9H)l6+KiFMnEz;6UQ&F#(es7lB>Ldx9@7$_;#apq(Y_;B`Vw;goEYwx;M@%PJAvfvf6R%j4;DfPC`f zsq(0Kk@+R~GG1lTFTp=J?zOD8zOPo_wN>RL$9^mIRdqJ(RPa^x#(pyBM>K~+Ke+cZ z%-T#M;&Z1#N>~@<$iJ{Yi?`cA9$OWUG(m%~euSifv@fFlb5+_5c;xUUDoyJSCTNwatM&n}&|CMdk zVfQGQZ8Lir8V=GA7|_G%Z$7dom9{&u#k87*zMSjf!nTfZMtuhj^egxBz|zb&5>?a^%t zHyc9RRf{3TGe+6=uwRySjK|KH4_*rUcgas}%jGWrF6~!49J4!Kchg-!+1}q7Mkts&?h*3l`BwM3M#9wK zNkAZ?Ct12;utBwv@!S+o?Z(>Y^<8t+pclUNug~^x7$FE$>#wb%3@!qoP#ptsduZkN znB@%ruFwnXcnPgpEF#&cOszKftABGVA(FN>wJraR>{b3%Cg`$Vq0(t71_uhNc2O5b7ADhT zWi8wlYJ5^ys2_=$>?zy#@OU=ULMf)UNwDTQl$G^4OhaJ33gvN`_$PfCOy%gG7A1I5*oux>R}$tYUeUY2XI> zR_$2REb|bjgQs(Rf~(|Eyy4CsE5FZE6?ynhj&IeTfZR_e7Uos<)Ve(<18?V5_CCA= z?0(Txb}Wz#YpH6g`|G!>+5*2J(=AqwVlkpdv9#yxml|t-DgNyu@LTnBqn3Y;Qf-t{ z_6}g;jP@WLvQfZBi&&`1wo9^!z>njCuv$krm!)mF6W_lGBJ!Hk`fj&8_cXkzaM7Mb z6hrL)&A)`Zat{BF!uaeSqgtjc#xk?k5pB!E&n1Eq?$q(@tsUv9jbJk+1809iukz%S zQ|SAT3wKub#=Zh3)}=799(dbq7KLEs$!bHrmt)Z$<;|+y18-N4 z+$04Z@$A7a?ud}(+j_(@Q!p^TAVhrDB4Iz4w%TK!+JoBar^q0?+dZI4g-Jlp2P49c zPe{?Sh^MTVeI^Q1O~Vf9Fqml_2FV4~iAPqD1sKsZDto!2!oot=5G<5~g_{tf+U8b; zg;_b5zyf8@886#6Z<(q)q0*~+t-HC5SG6r$Ux3`(6avnBUerRP6+r8R!;Gq4l*B{B zP(O!8Z~i~Ly$gI))z$Z(%LoA?2QeyAs#K{}v8`0wnufNJFa&`Jib1@f&(l7gUg$+( z2JjM$CV?CeqtR-MEm~}CiAB+%szXsz4qGcw%1-OnAU~*vw9dbwR_tEKf7QK`4hcx(7Jv7y_EQ?WI1?b%Qs5 zpCh5nC&8id?^Wx2LfK`8&PC!W|1VM2$GiCnmN-50pZ}Lo)+f^swMX+$HWhE%)z47V zGX_@Bu*uO%V9heW;ECa6kw|6ROZ{y9qGh!8j__Bv??~^KfuciOgl%CXw+Mxq`G_Re zryuLn{ioiU8T@4HBiw%A7@23?8b$nEPCzA2#1Ce$2!@-Lcf#LxXg`qLm5^M2{`FQY zGB$Hr|18NpolA0AGIf1sj&uY^1;k*~v$|CY#jGJQ6yPrh<(&=GQ?tyaX2 zG&4GMpCSWLeM~Fz_cxaG^WXKKBiUtFAM&ra2^Hu6?TCQx% zW$E3q?X5hfV0Y=a9M9S&etv~*z>ntf)Sv!p?mnJdg3cj+RTeFSeVtgA@9%SKk+Zy9 zGToMC)HY^%;!#exTUgK z{FBL}Crcmq(l4nyWOZKycA}45y+G;g5iITc?MNYr+R({dY z+Z{?n5@iwH0`21(`rp`wP_W87u2Pr&yCT&g{k;{dY!}#9wimaB54#u0PyQ3SY3d1y zS@dQ8X}lYODq44A?PDxqsQ3i`ucF~-S|M?A70>|9jCQ=Dr~cL7zfUo)heP#%x`;1y zE%8EKw&o6U4s90N(sV6Q!xd`MeQiuf2wBom`6@KQTD_lnWG3*c`6*Om8@E1(Ndtl= zxp;zRS8AYmYS6rh?~Ox_E%)sgbnXid*2*DtuD9aHVOH@)$|`=tJ_5}0W}mt`)7x9& z=aFMtYPnS!s9j9^Y)bJN>(k z)vp7LCREn+$d$g#j_V7Y4t$_=vzLCA4a$C3v?7|^u0Cig4jfePaS-f?57Yn98{hS_ zT9J*M&gy?Q%80m@QLWhA!?CKj7=tzLQGMIQP zR*J^3mH>xqvFVYIU}t$N=O`_P+h^|xHRl*B<%iFASCT#mwp_Rl_}z6@?3(n%{-F@i z&?6rn`lc4CLn~LJEerc0!NbVkFR|ylb20P^@RI@K{{Tt5bAkE5rON!!^xYZ=@HHN(IbU>6IV6>jw&KgB3T4p?*p*urWx!U+4eW`|>^|f0W=vS-|YhXnzxr}?B zJHR0?cbKjT93Rl8(D)cW+Hl*OS(w!d9dkrv`RrErB^e8hvF=L(Y+kH%zjtGY$g76zKVJRc^f6vS zSgmtadxJ0(q=~wly zSM|TTkiEOQCWNLo!gZ*`TVE><9@q%7FP_rZ>Jofd+g|MVef5&??T<7DYld%icTlHA z^2za2rv>!m9d-Nqc{eWtJb(QSujy#W-@R=|pEcpj!Gw~af|`D+Kjy8dGib>sBGqL= zmpy9Tqp;#4wIM^WGX31ZHpJ1wK=rE#GFsUz)%O&t+V$lon%J+9(0JdKbp_A zMgE(r3pfjG{m~S@{W4h`zH)|Ri_5#=7RW|C5?Ax?d1q!<^!jwTRiYucy_o3Z+8b>Y zs{Qrt=?A54;BxX+o#|7rvg!V4no8BH{(hbe;fcS`e*6xhn;E)k$E0Ql7%*O*T+ks<83<< zeQbg29H4)wWy3#|_bR-Sx=2KDWxm6R;x$K#>2}{0qu2$RfAV|!yd(ULBn>!9kk*vo zv-kJoBD3Ao2N#)r2&R;P>PE7~2;t#oI@UPi6v*?P9E{_wdNbj>g|ZcwmTDg|FKGw^ zU7-kv9pYMsc+l1qi|x4VAg#HBbf=;tEwwafb9JwkZ8b8Z*L0JSN`1};OK z+BxoTtoAK3jS*`=^2Nr7pc&GDC;KYJ&_?YFEw|x6` zuVQ2u`$}i_;u}X2>%;r@Y=HOM@cGj`cX@vlh9p=?#G?~s{wQLPKhm!AkfQ$NLF-4I zLWqu%5k~p^vyBgF75!d2_msS(XEJyYwiSK&lZOP8W9WSTxR~yJ5yLiafIqI-pFAMS zM?>rc_nU`tZc{#t(4JHgF-Y9jY|anoYU?$U+{3#6Tc^`yWV63}OGi4{tElwNId9ty z6R-Xc`h`476dz8PtRVB3NjE|}N0A-EuNX>#4|<=Pj_uj9gOWvRr<NQz-OMY$IdaOeqc~ki_}XEq_m+y>-j3!fOW=&MNtXbc(m`?R-@9fbFM#W9s)F z*Y9V739)p^qg!4qgi(;V;xkHaJCl&i5`U(a0=nQ|?hf(q0Oi}75DRTOqpwrb@wYWw zu2Fr0fjW+3xiWi9G>`y%Ttps>QfMAzTY0vOSpgI#T)~! zAsL2+08|Z1_*EN&>C_8;llV%a|Kml4lLvIPz#SC5w3HqpwAyPmj7pTQpYxh>L`7M6@VzS0H46;HR}IZqC^yy8 zclz-GZSi7B#JaVgv#es4wI{Qg=#MU+i)!9EG00BhYNZY;Q3xEp6sP06Snwh(OuAx# z1~|2k4N#mQ04}1@FKY2pZ?I>!518E_CXgT&zT-Cq`FWk3bjG(I9ML9%zm3`o|iBj~B`9I;gxAJN39i)pd4Tu39GJ%uuL|K_v_kDg!=z8j}_%Py`ro`&k zsmOG2%irO|g(C;o?J9id3Bpn&i@cS`ZQD=!iPT`Gu?yd_qFuMW_|DeE$BrXXRO(jm zu8qZ-uR_(%%gnI7vr57=bA|gXqRvdQ&uCWT`M?@HogP9mC1AT4*eq0s=!L}a2?gnq zrRhuZy_L_behJXtv9KY68r##CUGN?f9?hg`d1Cm57t`3d>uj^Kg9{VZ9LQWws_^^7W9FFbBP- zm-KG-z0a|(w z5!mCQl+7A7^ITrN zrzxVMZ$QA&%OHXxH!;0;s=ZgkcYIuYA7tN=18oIG`VK##-wDLsZ%>p>DVa6Y$ZNTg z*Y=3K&YCp{(n_7rebdvtl^fH==Mo&AE}lfN{vUZ?aT$r>7Z>C|m$SSFIA>v%_XIJb zk7HNX{k`xVD#tx6`rEdbTb&tY;-+e0dgArr;u9h}{K5$Z`A_)o+R`8BRJ=&U4~D?} zl>v$X(diWOOioDzV+VlBgUO2%e(yc&4yHcluSqmKof>w-OUnC`?3Jk7Uz8jsLbiO> z#IQXi?Tt3cXW5jpgxwEKiPE*He{}w(2_y;G+2`r8$`VK^?Oyzeky5Q=wsGdvG7a9j z0NCJ#!{7{Xr}15~y_{h>${4}P_K&Y0bvzRK6a4pCWV)%4>qmWA>f$JvI*s9hg;H>a zx!i)$n%;hZAGj&)e(2&w=yyK))n>_)c)MdkKnZUjGpZ1MP5M-!n9wZO0k^EBd!0m0 z@EB2Y3IAH8z`5xXBsAeceG~pn0=cjS#>cvJtO)NDVZv~{hs1@I(~dk(Z~&G;PLf~g zV~Q$HUi}h%tSYKo4JozKa{Z`5ikC;7iPYq(l0sKvJ<9pLuHVIm1@YDng#aNBq@nDB^C(0uI6hJOoVVcf8oZjU zj++uejKDNvt89c5dCulsFD=5W|0^#!B}M+;^tJhkgYhSj-cOWOw_JZI(NO+@EiZC4 z5^oDfFzUTDQTmS8U`Kj_yZ9)Ce0!pFwbw8mvhV77oArDEjQpBU>3O+5&-+DFI=shG z%_5bTq+<$Z%+vZD_a1+_l_H&u087P+DE@#f7$s;zPF$LJSAUJa{#|H75+$#)ZY_hpGxH_wZ9>#ZpvmvQ;CC?6rde^` zz)$7yb@$s%;cugzO+|IObrYlWG--*9JPb_`Vrj>OHDXCU>_4B;VL7?)LWw()UZNMH zXQ%Salnpmr>Q;EGw{mkg0=zEj)2m+%BQU0nFn=g7brP)pp>aS>Oy8)s(Qb>6{&L>> z(Z}b*WyRS;tO=KOt%X^Pm1ss_jErR%Q!Fr$cK#0K#%oa0-OLO8lYO-{_sysGcYjl* zMKe2qi$r{;nqqt!dlHiV=^kr)99)WXg1yo!>G%4*u|&L2*jyJ(|JstpXqNKv8S_NqKUqG z)7R`1Yp?B9NF1Vg6%MeDy*8tr;m>nk5Cn_%X{}t(5l_m_p(2{Y898$}2Ddv0_PaY& zlewa9JwrV|XLktpxpdbB_CW@WI?u%s96eoeYR5t?TgBjxR-w?Tb!py6S4b1+xKYq@ ziC;MU0*S&(5?JN&UCEO*{=uLZkB#1+*b5F7Is?70hu&*;&3Q3|=8ya&MgBqlb}6da zT(8u6m(D33pj`f9^o%=yU+7JtMoZng>q2{0ev&cAps>fcYfU7tcyg1TtOXKhx+MRs z4&oX$`zrI6F9vR6zL+858>!8~*jRdUfj>3ot+<414tbBGI&XVmX5_y96*sy=V# zGfb?It6wT@z>|`wkDE}4t&$YMp$_e)8z&Ksg34=1fMGG-5Zq_z>JWGqs(0F^#(xkz zQw<(+Ix-DG@CAcuRSrzGVL!=FVf%}24U$Jdg>A7cZy5THVCzB;+mZ-uoAc3{=ki=+ zy{<=VEm>;n{$Oe>U0y(5L~q3?@HG&PuunVE3q3u5tvdLfTJ!fV>!>}#)~>Ejyapwu zj`+<%+6!MTCotqVZ4Sfs|5^0-W57qYMnis3)RK$k??y4WYY~UD0DL!66hp`CImw zUFg+cfmmS>^wblHXf}~@lmMTCd4N!Gs#Zl^ytP-NY~I$I&qp$S)*pP z|2q@qLWAUSI}DYi@)5dA87z13e;lQyVOHZlh&)%)itR$J?qMB2(Hrrm9MXI_?1Snx z(KZ>}F>ycKe2TbvO{-u8#{hQI+WO@U{W*v?MLXzD`pSi`D(pM;g~MRI z9hg*$q=bfC?SfwqWqTB&UJ_Q>J9DR;^4cz^cFYq*mm7WV47FGq%ykWX?)x&iH3Kxc zWw{VMrbp}%El|UWdi}8bWSQG1zTTj-ly#QfCy(TI^aLy!I;>lB2I*UDpMa7@##h3j zl$JAxwbWW?J8~f#;T{RDrE1*8?=Bz+xSD+;p6B*Sd^4lrbUjOebx>r9uWjY0x_x3A zx7#PZwMwJjvQ1(8j#~sdO;X+%RF0?RTsz{aD?Y{IqT-{EN=C zKd#_yiCN2J-H_p_)h1_A)|Y=GKXWSmXf6|EW~3*M=l=gPotcV#Pdl*sCC+BX9qdCq zN?)Rc%Bq*8UKEO7J2F2nGh9U6MJ(4u!m-WJaE+niziF67Lz+-{n_JtARwIxTH8U|% z>3t5sIwRM0Tv_qg!b(?}Mt?J$2ixUlZ~pJ0wA^J&(Z5YCMT+Ia$eo%+`E3HaRBieD zaeHU6ykPqJ-E0>h)7Rem+Lk-UQ9MC)n8!FHo}sovXW!cEdle?9RB(+UQ96CqoZTV+ zvVBbMX!+s$+9`u9N3WjEL!~a$6$1S1sK8=Ki4?b z;)pTU+Nh$rRcN1?pMmb&xqh6V#Rzaa_spOYSm=!WkACo1msq^>o{@#g(?`ZqH|BQq zEDh9A8w1phRhdqiSV_A5T_I?mq7CLgdKbZlTS|s<36RUJtcO(vQ0`QSMS%L^=_E?hUyq(yIDmy zS$!UVfr<-N;XA-6O@1#CTzOK0(g6wl^24z3lheJG1Ue4py3@Q04hV(?b5EBes^r|& zFBTL|J|Pi|?;Bha<24)oB)r>rlen|EookO3>Zy+svP|FEXUGq646mN^a+kK1EGzN@jy~x^>g!(_~<0U1*%o8YokSHx5xH z>2<-hSc1Bfu6kdhY}`PvuF-yfbju6r*q`~BciM(@tS~r-jNr_oNY3pG5<%}oa1DrP zn|+nHvOQgL0W;7&g(0^llla_5aP?pJyK1&}p2(TT=z>I9eCsR{Bw?^WB_}LbXi_^$ zN8X(rTMif5KIfUx?KLvA8R}Y#Iv3{7-+st^^i}51LTN`umC^g?85eRAet}TudWhB! z&*x30B6x0TKS`u#Is>+Z7)2`Ti|Wxm-d#}RWuSxNW zzM@Wg!?-5Ox;K#PuQ6ex_ z1X&iYT$eB8OuCJpg89cI9F4^Ggb2TF_Gj{I!Q~}cu*OpIHtWK=Fc++|62Ux>crbac z0TrBOAeDq5?S4N<#a$o?f1!V7ai$wgn;lFyy!tHDzyc$G6wF9I$$0T71ZLgd|MG4b z!y$&w4@%Gf)a5;XZn8aHP&%v*=s%XwpLG`kO!|u3OCFxVO@RO#oK}~C-bWYKn&50(Xha1)j zEF%eW>*S}NlSk-a>dAn^n}N7#(^W5`uRwAe5Jg2nMX@^&_6vklTYy7bP2hF2S%`1rof`Yu?9oH2|WInJ0{X!N4i761op+N|0>7f zUzDqy5;&c}eRpLc|e)$CJt$Juy9MxqIs>>2@zN8@7J{D{*3MO%<^!8v* zk?!m=4tW{jycd=5TQe&$(7e7R;dd+hd#+8Hmzb=-2&{T)o+z`S9gu_Ss&;f&yvogf z^}?WfVgANKtL;#Ber(PSa_iL(1$Crb9Uq)K$dA`k?osRITh54tf7f;3+27`G>^wQq z6r%n|s8N;pwui@?O4}&!2>p04BJIla+VVv4e`xXmKZy$WSGLM2NSfV||4;1=OIN z{ho|H@Qq)yFN5<*30d#0>`kN67&SDC=Jw$DCU5@NkJR!mVNc#vdA!!Q zlpsv4@1r=fSl{~PtaGGv{o`f$TnOuHD09&k@fQ4&Z<#0fM?RP3a@K81SKDb^1ZVf{ zz$681kpq@f7CS#98RfiwB!gUc(7U6RnJBG1(wqMh+LwuB zM=~6*wue;HVpQ`n0SXB~Gf1F=?7sS^85boLd~Oe}Cd`Bv>z21_qZ}YE+Tz zi!Jw%cjJA$P|4u~4*EiIB{%-b_&MQ z2RG=emy%a#{DIQqL9U`DO7OZ$4rO)dQ+9E$nLqIN2T=a>?c~XVc~4*&f+DoIa;CP# zvNQb)Re@o_1K^I183g3i8X2*TCw6qPjby)&7GA_*z&?fr#CA=*A`DGyFvZrv>?p&5N0hp)idVE%wyEK~lG{BTUvW4{TG?%YQML zBZ}-E=uTU(+K|WH_mY718kC+UJh%tUU_!`lMr(E7eY! zMAOJ*vJ+U1fXytwzKs%!uv)kC2L!CZbJD?6e31t#mV~m&0O>B&G3j_)Q zl6u>0UW!p!1E13vm~{)d@Y^Ez0(+PmfeYu8=KA`C7-aTcB+Z%6+r;Z9L+D?0Z2e1e zChyIB$?Z`Xc3+V*_$=Xvh^IKh1O9HJ3nSfuaWRE}h0lG^^M~xqU8s@3Ywvjt8?*t? z*KBvjjiY1S*zUA510N=L&Y`3MA%IcCthttXO+NGxmOjrgpLlyTM(Qh&@#Vo$;A9#T z+eNtZW>^~^x926t`umkdk^m?QmaX%*!Mt4^2m{7TKcruGi-VW8y~iOrEKA;J0js-|1EmXOaY=SAKv~Ud{`<$N3HE@ zuVJWWM=r`7dDxN&Dv^)zF78(a_j_LH6ixJP3Z@Jow}rQ06OWh;e5eH$$RCQPkQif0 zVb$XN)nyaVW0Zptq%}iy&vS4#UU8)qLtZDb$m-ng*EC6uVZV2YyY}wj7n1PUWSxQi zXh`Pc=q)7kiv)!v=sMG09_2h@LT7WAOv1-6kNRO)2X6`;SGj&0j$&(Qm0`5MKn#M3 zBFFr9D69Px=DLA!iu^4$yG?pV?NbmXp^#zZawiCwTQhFJ_sxxPpIlh7TAIP|kLTPL zo=898+^*FKaa2XF#;%O7J8cc&GiCFj^b3)971GfdZwcoduK>45v=4C`B27DYDVCQK zvBDZ1vb#HOaAP%m45H7W%bwJ-{%GuC0ehe^?V?C6!w@sIY^e#@R&Gw9IRQ?yE$tFX z+F{USigWw1hQwJXBb=J+;+uf08KZTnH~((oIMk`9)38FprNK2qbGoDysZ};5Hs?`? z-r;=_zlaxxXhGDTmerxAGIRhvt}F*h)h*?V3-bIeZnJ z9dX6Rl*Wimt|%Uex?P~Hl&Z3wYgt}`+`eFY z=u>(^UKa>=kz41DXc3ikzsb%Ey_HWA!<&wMF4B}j`^MQ=-RzrRn|uIgk%^<~2jNEA z$VcK(y_I93k*ZCnZOCtzp|$Y0%(t@hM~=S(1MB$Vn`cZkkk{}6wD%$VXYAW zqt&Y%Zp#-6ijJqd7BSLE>S+${K5Z+1#T(F%d78szUtw=F>#Q!C@Mks4c#DLZoc$w* zb$pga5Jskyu5=D6&7flt4|7ag@sMVGg&Iy}G@CPT?bg63=%tl0(ip;9*pR`O6T!$y z-4qvMNkZK%oJFs{h=oP)uY*|SOn3>CYQN(uWs|e18TfG&A@^9+S zgbJ}ER5XC(WSA4TJS8-z9uyqs5#GOU7uuUC9G$-pQDy^YZ^vYWm6kE0HgsS`8!v^6mP&OzbYZQw3nVa=wps{v6-wZ|&r z(iyUZv+Xht9Ev3Z3r2@-3K_DYnz!poqamm9-cOE4Vp`39T^taZUejJ$a*o$d{-7_t`Lz;uh0BbiSH*Ar;8sAxGfYLmk7R`-YJh(xOQ8I>YrgGn*s6zghQ;FP)= zscdFdiwmo$2Oz-+mf@F+sNLwdA(KjX&pbUdo@SBFcr%IE3salQW`VgMu_Bc;Dw|d8 z&9CE2xWql6Fyw?(Fl3eQv(1$HwaYq=6k2`%3T0MmUhTK>#qKx*$ABLw>!40 zdR=U4IEA|m3mKah7&zaYhJAIjnkMffjap{67KVhlW&jX^3Mz@JOtqv*nvhyVR=TMN z5@q>b!&KQ7tSg{#sYyE1Chx}Ev`3{ew6l+U=Af|8>1bByKAF!*7bl9nATRR?F;iGy zd|l>y0wA?CBO_M8t=;GlhnFF9r`8`aah8(D8{zsJ@p~M0q_-f2%n5Yp1Z(9dokDfl zHUY5IqG0N;1wYP$`Kh3HTj;s1yr|jO?D5bQPmXjhQ@AQb?N=JL<8$ITJJ+<&JZ1BX z*a=N^M z#a|K@U0}^ATUfVG@!eQ<=41w7MZJ~zp|-opt1lElT-B47Y>98{+D>$7h(Y2)ert<2 zBAnae_4auQQ{jR$IWHkrQaUEes_{UJXu#@{8Lh~aO@;ZK`{9lLy}2ys7W)q?LMS_EwtEL+0e~%YVZ(Zo;r-b1echU#0`9mWZ$hwN?qPDOi$8hhq z0b=cRDr?0lilK9BvA;1>uNiM;66?s}--Rzjr z@6-?563XcOA+jX1L=R>aj}2_;M{H%U6`~3}e4Q|6P^PcR2dj&{`GXCsj|Z02{50&N zS~m?>VX||8Avbk@VRbF$Zt_kvCWlj1pOG|(&X?kg3g2(`gj!QGJo^1O{dtH&OX}@c z)q>zgua4M{ydW)#1FPqk*EMK83&>lYDC^A?Z@!Gpe3^gEcApx{+$)q~bZ_vjWwa%2 zKTaSrzZQ>XzNwn&Z}S?`B{T;P8Y9gvbe6}p&>;##eP$>h9Q7HQdh>~6VB@rr%^T{Y z{>+vL7mE+Y#p1)`;@&^^fQ#fe4b22uGG<}*B2ewsuVoR(cK$d!BN@x6Oq8fxS!`}u zms4BHsd4a*PabAQuh0=QYBXFKAupspF*P)}Y_KS>Z5~lDcCG}ZvNlzYwTzIEleaQ$ z%z?r@-!8N`>$%vP|M+4*iIFe1>Eqm}qZx0OgCuyV*F zyAq#qa4*al|KUvSF&GDQcdxoMFbM7`VUsiphPCj<%xkLBfRNp#zcq`&*NiE0E~Iv% z|1$nnesRIU3B@Sa592(RsFr6{8*oYH0p5vr)@_fuoi#z~V)iWkGR}XAAR>=DdQ!cT z)9MP?+5F}7Tt{rj>0|W{l8=50GmI!OZ{?_AC`D@iE`%K(lD5S+NP!}*VMkCt*xW<0 z$)TH~dPiaT32bD)`YB%SYk0wV4C#$HsMvtYvYKbT^do!^;x&egjV*-zazPD9ar$_WJ7n?G|k|Mv3c|CrbLRFwK1*Nn&eQ;PH7ctjBC zrtIUL#d_lJZrD2aOa6LLm@eKLj2Rbur@f(fawp4*YHr?MdxN?sJDF%ld+4*>Ajqar z*!=3X@^5@rmVLN`h{{>N&Sj%l0JRQKcP0*NOX&g7!2I%RjnPLT+M=1gwCSY z{5M8y%>nXQ{IXK9u3Td>{W^a)qx$Phr^IGY6U-&RJlVng)Zt(rVlXGy+vZFDj^p?o zFzDZ&lhS2MaV7(dHlIDokNLap2e1B09(F#8f2O8Ad~&&-tQ1_zEf7vRGmfX>n&%9V zjU>5DhxnNjA4T4EyD#x9F%Y78E-CHg0z>~MnI^R$1ygzA*s|2lS?4KmBtxVS_A-gZ zpARaFp-<($RoVnuRk$XEQopJ(4_m%AqW)_yyB3O>`pWx0ZcP{RNqPTNW9NxLG;s4UsHN5ul z`^H~RgZGX96Fs!){BOsvKFs)Vk8u7rz9aAo1+*DfPOzs%LTFHt#Z{3#Jp@;8t^c3E zdX>W!0SR_L#c*{WJw;2Ei>oZGjT$Q4j9swKw5Nx{dYL^v1lCGD{6EHPPq4oC-`!y~ z+L)+&(!}y{7Z;wqOUP65BCq}#eVjmgl@qwjOn@Am9VxywU2h6kd2lj8qoo1R^~~E1kvazQ!hQtNuqKxSlw=gIuG< z*UUL_>6DXZ*NkYT+Q#&CoySsS)Q^Ap~bpk^?HTsdejMo%p#A`X%1s?7jm=*L0 zEqTl0R_}k`TTvX=8Nw%5Fp(0o`$d$&c=!RhF1~@lB>Jx~561{rHoA~R?)M5Jh&Wt@ zoR25|Zp0q=Iee>_Mq@32H??!lYYLEtL7c_#L4{;0tv|!71R=Rs2ivQRr+3>y@%!F= zXRY34e{e~OIjXyzJPP-7Mq#+M*B)8m)hov*m&kH%*w@lu1n@{kJu(_~m|dZ2>bgU9 zn|kae)N_Z5duTN~vv;WG@KfE|SWdU6(Jg$@&1PqAzc?Ydnw8V<7kcQo^B2*(OLN~v zx`4zce{aV(aa(`}zyO7>XOhg2IH(GXlTp12#mQuttm2@?BXYv-y!vXj3@ZAC(?YOIZzeB=)Exzir^hdby*VN~p_j3BoKeW%6HDb8ldplBSf;q5m;78*p4H4#I|Oy?169aLo5&GGs%%WfP>MO!-ieIIQ#gU$ER$CIm#KDuZNTeSz;O7`^b zkM%AKxl`~S{FktI?EvlRWBv7#H)jv)7|DClCBN4tX5%DzvFn1F>Aan#gHHqWY0=2X zW!Eyl8-Bv=FpL+|6(>rJLjvf&=lKM=TZ@-&kQ@1AZ-a41w*vt6((R(t+7>My2jcsXH`^S}6X;5quH{C&+(5HbI*siiYnn zYiIRYxWT??HE>d@bTwEp!$DG301d%$28mA(ZRhqtvFvP1xD?N=5GcUxc%k%-_CM2c)&emV4 z!m{seb}jaV&5#-&1@-@YqZ;Ya=TT{+hTnG$iB#dDM$Nj}U&~#gFGRgik4(%1V*|L` z^AHoMR$cTkD0VWxENxO$1O*qNZkN!G!0N%=w0MMvX-1rR=4Ez*dNPmWs@&lovm;1B zcxP~4EIry?v6;-JnS9+SB{ATX<22px)6VH7pkAVDm2>EW`uM8w-pt=0)@;}Lg>^MM z^Sp+*z;Ba9!vt1=_zu}zXk?)2+xZT&W*PPQkM?8afj+;^3P?)}b z_K2L3b^o=`>KBUoaAhubNk!*#I^jJ+os@9K@ki#fSHcH~?xL&AQkbygTQ|Il_f*#f zpU6&+HySk_{EGY3dv92$78Y*ZbjZ~po8m;;hO$_B!;zWCD_-@lY{`g`eGvfsw$2Al zehi?!ReIT^5n~!1u#UA6&FD`BJ(3YDqv&uy^i>yY@ib@YS>fs%v#0v)*+XTm??8bg zq7G`FMM5+TawM`5dj2nL5~#qAR`JLi6S)oX-RdL>x5x}F?S68^h=+)( zpETSqVP;)CqzS5u-1#4YA#pion+F)%330 zcU>}NoL&UNv#rmpOd%;*SAP#kbWg#(RR-4HqpW`jCDs;BP2-?oe-le1r8$;6nC- zcUv@$SN{oCAUv6iKP3F^%ygn#82-jtvu^l1Uyqm&i|sY6p7;BT;Om}s~u8mL-Z4%S&!kb=^+C*MiNolQygryo=dMRnKB_HsH^cWVn}|q%6gh@8tx`#ZIiE zWlaL0LQ*X0iKM|&hg>s*$` z1Xpq}VmEbrP_qgfZFk2VL`Se~urJ=7xtqXjuHp0}MnDI$H?06u)0b)2RxkzapbS>S zp~%~qMIJ;peIo}Y3IAf-{_;&D%y44xzwDjcwa)1&9M&^}A77%Vuzb`@k&c-yvgWI# z*GwmBZ_$WumnS>SaZKC8-|Z)RU#Q;vN{vC>5A7uk<*a)1w`@0qb9wPi_80{sc`d53 zwEvUfFe$S2P)c>W>J^fo@#7rO!m98)y(65Vhb%Eu8)(7Rl;3OCJHoBdXsl#uBn}&a5M~6+E%FeEuf=N;q@I&FV9PsL!*9m zy#nK^o9kZT(%;tfh36BS!{x{2oN34FqkFSG+-Gi0y+~dPt;0tIq;viyf(d=OsIWY% zc&#R2Pq)^gi*GL%2pJS-CDCu-9w6j=_9b_w=>Jg6r-&3^G3rU=U}x=6$1*%WrT zHL9V|uoAe2H)%89r7efiI;~#S9TxPHXN3h~=na;3VBum-$KM!Bu;~6J;YD7<^{f&O zop2vgySC#3PP1*r`JJodsj2KWqQ1*nNtcWA@$|R?|2#PJAa~t6U)Q~he;6%jH>^$k zVS&3t`BAuUYL0uLydJ&(151@-!u077!qt-#c?nQRukmU;F7**;2X?MG!Uxa zusTh|6cq)ODtL(}c6nVv+tU~4^1ZcoNGdzvst;wZ3uuc@>8?s@df&2_v#AXp%=Tqm zcA|Y)jG;oc22{-y)IoPnm5dZOgbg zAa0cai7`d2U0ci6jE$#P?YQy}qH_2rN0XN0l% z&l+%DTkL2dFI}}mDhF%UGNaX;dT%!i=gnHD*wG$e0J}1#o>}lU`h!!%M-%$UrDB}LN zWf2;GfJfen3l19N?29bM(|g=(uI-hZ1$ZlcMeK3{?2;1Ox_Q^d0n#OTER1&9bH5dg z%fv4koBfu&fVq;k0;WGur;vC2T}vEajzD;KCN@=b9&BoQvxLD|-ZfzWEfSn7E+4-= z;okdmZ=1RB{aX-iYyzb2Db!B7+eN zM=1Lkyj}cmmz9K9qh9~ zet3V(j|wW_gisy!^SyH(BurEIfxBe+n#f*~r;xvzbIq@TZV%u`wj=9gwxfPL$H45S z50BO(nUS8%NHsPy64@T<#s8kmDkCodu>Hln0a^9<1nb^-YwGUqro}<2o6fXI)#a$g zoz9=24JDqUP8YjJBF*n;Z};RfLDF+;)!7v{O+L_Az4RthV-R6Kx)-X5J-OGOY^YmZ zWD;)l0emgqigU3&pu;|da)}%#oTd>6Gh!O`I=%#PF+hhCb`fR~Yi<{;?06aO@9b3D zG~1B<@`}dmb6&ZrdZ`&W@pXOH2tvYTi4)*9>^e~o>WDql6^|L|!tYK$n!En(r>ZhTrpHI%h z(tme%lyVW&*$g^MoZg7L4u01temC`g$jF5pjU3joiRp)Hv05L=8B#(%5408tdJRYStV^|l~^Lv*Y4BQYkA3!;X)8PEK{Pn)ccrOQtRKP zz#^j5x~x_I#HZ^dX_#mTK_vU3weAP zzYoU70Kq(krip+o;8jhDvh#<}Mu46_To2sd$VwG6Iu@}L{5$>&e06+Zbk0PbDCL4K z4+(CHWJhr{!@!!Su8^0fjP;e`x+vl9twVzm)1P}__21z%(+>7|SLL|eWccrnXGS-hTM+mx)5kOE|e37=lB0fc!sZsu2ia8`$cG2t$b3p8JE<>ilU3UEH$0m$su{yVM z-M2_{`_G@_)_qvNF>PJ<30!z%3Hl#DSsYPd{cDcL0YNVA^xc*$^~aonyL@}l(6M^& z`PIDVPDk;l6TRD@q#Rj4Z)>`wK~sXmhMVma#`Y_U-F+<0k|22g4Jq2UaK4T^>9rd^ zLYxg%%ezD(0YSc{HrDLX!R0Y&Rqj|txH;MqPa2`bZtYUIvhGKSNE>&|ol>|Kbv_ta zmzvH1O((uXAZKoei$`aP*B$DRf2S1)rAZyBbgd1+P)!Ma@<`IHCqQY0gHYMHRUmu7v+$$NwY z`IMcyh_g`YqV5dj0S}oxyZe+apH|K)ZL%XvxjjC>r`+y*%1vquj;^zJmPJb9e`mWe zZ^z~KwKbO%zHX0Da^zDEy&dLLMtyTW>8L516pMIHv*h8&mj(;OD!x>N3aDcn083Y|;Yl(!KKfHviGIBJU9#iCaElMliK zB+v1;RBtDqBX>%->j+ZqQY2NR zAa1#Cm!qBuc@4usY&87~?Nm`r1*a4eh)hE|(B9mEQ)WBr+Vl|G9O-nE1Z~!rt-MXGS@mQ~w?o&v099cE zxR4$0R%>P44JhXZ*{SK#qGpvC|8f}rH9g86i`{_l8<*QG?<%zTka<~ku`QyEyl5I- zd_QBFx8wU=j`An%)n`M#-|EdjA3$;ua*b;si!kK-UGW<&+4zlNkVp3H)m=Az&iuVC zviHgtBjPvfdr#f^>U&6&*MKWgyI21e?YQdYnr!utnd}98ccMIVw?0~|$||Tlx2F@c zJvH1X>g@?R(3T;Z~jFE-6z&$=b5&(>sf#gB)?{n-6Xxh-!lDO>#oC@th_PmDfJ~hEjTV$ z2{GT0b{>DWF21Tad}3H6Z>n8mn3$_OgRCf0^CN%6$I*wI-dfz#uG5ayM6pZeK(3j>;@^fw|QE81IFs>=e?n7=@6f7cE`|##Fmt&;L9Tv6FaDA*U3V|8Qw%n>hbXJ0 zFzi8*;qvwmw4z-m5KN4i>{l%&+w|%0Jwcy24dkn1_{BQBbT*DSs~-Jak3tXeZw|4e zjy${qWGeo}dY3-puG>i9-rUut*KiSZmaga}F~$DZHkt9$?1)~&IsEKAzs4@6SWi1| zs<7lzFZac6EASc=z?DlxZ`g65)S&v0_hToxQ{Z2LKZ^*2uEO~)vxer2kLLS(J&Npz zheU!sZC0u1A2RvN)De>(XJcfY@wevoui&|KMNFJHocwq1$r-*(!*@yQsn%0ByP~&y zr0sGt`?4FXZ25KBiVEv+V*>P%f@lp#iHF)1xS>gJCiD-v0|<1M8rl_)K?o>n3LpKI zC=p4@L4I{Rp$;{xz+*1r=hCzDKVR`7*!hxL0?X<4#)gPAW@S6*R!L!~J(iAMe>V#y zQvyHoNfd-ZOd}#(J(FIyGcQy2T_Eyv)bB~PT9Ar6HG28`B8E*88Fw>F5yMj$6!=1c zWQm<;cB6&+^axroIkKds@rXkond zv?CY!@7mF$!TRsh!U|rBXdyI^EFqGkg#jQ;%4i|gcd(1Bs76Q&Ke4zaXrbjWwD9c+ zoYaTW!e`VH?3`e4WNG2+*$%qVLWw=L&AnHGUf%8Z)588+-%krwEzVl9h}pl=Af$!c zL>4tWGMmf>5+t{q0f(ZceGFHDtL z5DkB_hVP<UQPdG!cCx65JS(EvGV*T!q7{h(M6%oVE(BW`@mN689G1Q+d zW7y&t!~HOZ+YnXU=+&7`wW7;qY}VY~{k-F{2&B}va(F{eXHzGsB^c^&Z)Cj<7iBxJ zBdOiX1WvaIwte=<*o0DniA~7BNDh*6NIr=c&ZFXOx&DT#B}NkNtZDr%&;gOwFv06Z z9k7Q#>~*q2CCA^|_I{bE=ilq>{yb-PUH&E=ANzAnhE)J1tLJji>zt_JcZJ|xbvyNg zlHOUnuiI>PVwbiPaW|d3GPi2oYgT1W2C5Gmy~J52K=>y2)!;36wIA&eYJ8NFEYar)cf6*~2py>Qn5C>QfNUrL{bd zuCf&uvQwDpp_7dqjBi-I!<;-5 zZ`LI4mC)isow3K4q(mv!-K*~l3(#29`_h zrCjs+o@_V9#UeH1JbNq)s(t~>Zd~kO^3yr-gNx<2E{tT`>FH=|Vt;do_5k(H2qv6< zubrnl2T(8CbUA?XnPiRw=y)4Y4j@XKwD!V*fNp!gx8P!}dd=;b$N#A_)m)tC#1i5? zf1eHy)3A~kNlri=)4)dH8_3pP_`ncj|$u=phE?br7bKAgjwf5NtCki9AqH4MV6Y+vHeRY!!f`6r**;;PX zm+2N0DvZGM@z-~qE%;RnJErq~#7lyzg~y7R*w?n6Tb_r{9kCrrOa#sNa*{{@?zdy8>y2U?dyIGK~EXgs|#+e(*Xz^RN zn>R(U-tS(?CEQE1y;L3s7)q&g*KCu3I6;m1+t*%#-Di8A9CedCP27WJcvIB#iuNSv zw7br4!&5mL%;GU!IXK70nuj6iu<}SwAjRH$?P)H=_qj*7pcF#({u^S@zd>xq?zhz# zh^O(li}XA0iTX$m2ydoc%9>?HgRXStDbCn7$5W)~&6U<~YxcNuH1y^+`KQ2YaX@S3 zkcyWG$NGt>f4z>)-I^kqW3hiuMhRhfHKJWXL7SC0Ts!MTlilj#lmO=B!DMSX;oqx^ zvt<4U*TorVb#a1eR8n~^dAXIvA!gf^#VHBq4$diy)4!`Mjtx##6B6!9-u=(&;v4~J zIeYHku8R{3X7+b=af-b8uvOh%PsjeZb#Xw%|Ic-Cj%Z;1ht$P+qh5C*|JQYKV${Vc z`hQUu=X~J%U)9Bl1=F~={7mvAl*OT#cIT0zpZ{H5oQLaj=x8Fm+kcF`;nlN+^GK;r z^rZ9(!F z?@!|kyx%^qA4$C0U!&CbKx$SZ6Z^&E- z&m$*9_MPk)dEqO6yRi#0uDfi=e3UnCAfF8k^S9#f;b&#wiatM<^ZBp(9L0uAqzt)= zI9!1L;2SD(r)kL!cu zeFCP7T|H^ubn4ZJM|1lrKc#;H;1@V*AuNdDqaZ^eXMgqRa`2!7;OUl-Ak4YjjELCqfNWu~n)eT<5bD%bK z0&U}CCeN+q^j)0Iu>N+s8|=9N$<*?G7Ob;^d6q_IJSR7*v-Ll$X|-WqH<%8o zX|;@9WHqf;aETzuhja*MyS;87g{@W=LuI9tPw?hrcZL~rf@#O5OQu+zsB-FBT_b+^ zi$vWu)U}#1;u+GR`y`lDqS#eLV6X5=-$*dwjv^PTsCrODXGFEG)>*BqUlh&xIDRE+ zT@CnW>9@q=tCs}@*oG_eyoQMap{=~X=%Yd&?$T*Ra~^ts{i~aLs|Ljn(6f{RWp*Ez z0;NQ@zj_Ns4aEVV8dO!S+6zH^m9|1KHmp1lwXG zP>tUFPk7qYc9K^cTvY6$(}PK{w0bKIwJ=*6ij>k;8mc+rN<*zUn0mlULvf(nB94$w zG7zz^KP7oYvww$@?Xet9z9m2m?BDz?h1LrHuJV*G&>OBu)R7>~LKdMrdMoi86fW3i zA)n9zq3M^Yt$)`v{`hZ^>tkc*Cs?;HYA;jxh>c2&({O8VH7_3QPbN-XvAc-8vr)Ef zviQjpMZJSntO!QbqHNhHOa4FaI#Yb_7Yyf@1P@!tqAEu%vdU3c(C0xHs!H)F`!!K! z5t-inu@KF9owqxhn16($i2_Fx_49jU=7zbCese7tZwlf54Z3wiV%`GPKhFGse{@F! z?*LA6N0Rj^9=hmRt^C*dmacwLS0C-}f}6~tbk!1+4;8)Kcdbn-?KXc;WL2PMUqIbe z=U)NA!BjHoxfC?xMP`^Dt3I9wrn#Esa-OT$+T;G4on@>6&fXVwQW#cay8I{!pk|4O z3s_b*rV@kKkL7da1QJ=6l^1&pK1L($%d=az>>?n*R-;@Qg3mOO5B^6Bc>j(w0jJ}& zxtc;?Uy@B6?)pz;bc*KiR1_jfb$<55SH-*rrJ%{#X92n7TGM3861J?kb&-wYhDe{S zA?mJi8}O@i>oQwQ0WrU2nm`Q@bUgYnKv;9H!A{W}nx4X;GTth1h;OKFfN=Cj;Z10I zvh(AD6R&X=MPnf(szR=1fy>5%jpHDmNub6`lHf|sE>#H*MvyY#ec(Pj$1q~RB!8-` z$M zL(5V_%i<6%WL&oWdkF1(3`97@G#g@iv2k(`L#14iJg|Tma@Y2Nn6JAjoh-$rtzK$kY@=^ZSVko4Ux_6{^uW9Z4XqF$`tr(@T#bw;EuAc|t`6`;Mn5K=^D)8 zIoyw}dm|JbPWCwlRb*4}8alKPmQ=ncVl$N9af5-<@Gwo?Tu<#~bFH6)7>31KDX0mv z(eHkw6*hSCO%hWw@I{?ci2XYrki#Kte~|+Kui-Ti5N;i@!ix-`9sJl6Kz0rg1E8?= zX&Nx7%s1(~4*zPJLt#!`V1Vx2a}Z!DfYx=spQVl#0I#Pb>q8~}q`nAZLA3#?;l`=I zl|2$J!+bt+QNd1|xPgr8ZdyvrdQ)bx2q~+Dv^tgIaLd4^LIt@Ym7VzIy!|07(XTcF zsNqbtj^r{H>H_1 zJ6HQ*iNWeZdR{?AqD2z{K@_by6`@*H z5o#mi1!guCiU=!0!EifIafH$^Rz7`kOd=1fmr@RD2=-cQ*~PKsZLS>D^Xapn*|IA_ ziQ|F!Z)#-}RtFRK>MUU*^;=%Ea!`unLr6p2W2R9L>N8<_DlW<;0I=4X}Hh0nk#Xy5L7+CUdl$T#s6V5B9^cdHM7M#z6 zVA2uXi*cy94MiMo2O1tS5yS<3aoi^CfvAk=q5FbLxRF+FKz!E$QU6am2r>CD4n9b9 z(1pp7=TLnt`5zUXOC!sE(^cJT2}PPmsB}&(CQI;^7YnDB7a&>IV2;>f_B3>oJMp5`km-4g?Nd z(fwz%^ZxeX90QE$8|wxQ0MxDN6NWXX<4=Js?dfkv5Rqn5{ZBPO~>4?4lkvCgxY`AwI@~gK;Cc_guymd zcBF`%BSE1pl#Q+~jO%h?$G@&|cn{$F?BAsnS775L$_98hT4I&yi@8}!oh0g~O~M;t z+)5sipt4Umqu-zrXI|Dyo2e6+rK1E2_}9$l2!5Z`RG^M#Hu_2}TXhS*$>0uM1PvNw zaHYo-C}bkx3@2$^cgcq7Rx{}fBo{9vZ~+@^CThl6&~^pgbk$4(@?0@lNDV`ARF{(H zQj+Mw2Obn;)Mz3X2{n_dmzKtkLVyEP!Wl>$zAr2|$b~fnogLde=Wg8+6*StEF!`E= zK&L6e({w+jG)^VnCs8cmo=e@NRDNSowiwL~y8*mrQQ5UX{R_l>P8p?UXG3HKT)erk z0$KuUG9V$_e*Rs98h1mzx6-90s1L|$U(;-*lcv#|R&8u%mf(ZOWbQ$okxoS<($r#C zLCGv>7328(>-=U@$vgl|ro)z2_NB%JtM7_oK`c1^M};@y3NJ$Ogy?)~z&oN78-?m# zCN&3CSAWxcZ1WBlCU@~O)pRb^evZbQPL-_I%(wZ7#Neq)0X>oB2Dyep+Gwidn{ypW z-l}dfKT0bHdh`DZJ7pJ&{!7XWsrgI=R0?k=$|eo)>RR~GF%1$H|JGV=2r35$BO57? z#jYl!eQ`bk>)M7=4>`MbyYabK+~zq&LrFJh`o#lSN3==8f_saX*b6#3(!75izVJ_G zDCSW(btwL(;Z@K2eYvVXyy_``e5|dURY9pMM~sM*mk*#I+X%F1Sy!+_N?5>%OQ#ll zH%^5cWW6T2ra_2`%jY;$%ojohQ2!($bhGc=)9?`}gqhgj>#r z6Esd}qZl5bg&y(n^YDd#u&nSs$j1Bz?CqWeXxRI7p$t1K z5zxylWH$nW(K^IgTBIEQAHJ}h7qWsRd4r4kr!j<>-Y9Nrv}&KumvheqxS*tXmr~VGiH4gZ{2@-@Q;O7p zj0Sl1SF0@%Ks6XPU|B~nbrrFO%86vZ*Nc$GP%mmzN?C(ZMid4^@Q zE$)*XX(>nQGqw)Ii;*!i(i|ZFNrYHrKtz0CYPe0KQeekQHZA;~RyOH zQ+UxZuU;lPn{|gu^Ym2}4QQsSc}BeDn2=eaZn8+{yzH3OyTBi6Lwniqna_)dD{jLI zWL6%F0P^Z5ilx?_gO2d5?cR8!_Hf)Oy$B6FqhW!}MZviR8nii7^SJLrlpJnGQ-{49 z@k`|e^EgVd0-5K<=FDX&gL4U+9WU^Pax2ExyUtZx-u^ zlQb_g$?$NqOb?(wRRY4}$cg8b+Q( zOj(YKpu;jPK!BzL#F;*f6xq60d>yqx3B`Clvzz7M>aO*{jRQ2Nf}B;Phg4V#{ENJx z*;$+ZY~*OAX>&epGDFm39AX^RpKp8EZB78Gco=5HVE}xEMbCT;x|9lsT8LJMo;kd- zzti<9ONL9g>>JA*Z<1yiMST0K-PU8McfJIgQ+y75jk(R{dlqlSnYD&@31(I<^CI6UN>!XFEAVbS0{tQL2x*zP2kCC@ zXXb;&XeR1Z9_aUP*oMm>A8p&e%m}BF{Fu|d2fGSY=Ad;syS^ouE--QvZ&k%E!a69$ zTR+3N?|?K81gmOP*LITs@MK!DPnxt7t?-h4koKtRU8bpN>n&Dk$%oHTW26fS3DC=m z>5om@WYxP`3P)qpPUHH|UFT_VmG2s-4=Ud^Mjxid{JTc!1LeCeiNw z3&ZkVjkfEPl<%63QFj!(CAgfuUeo9*f|Wk+E%+B3lCc+(5rvvS>I0`p{)YUgBdhg1A18#ByExnUv%N>Sz-pSu8JXC{Ud`UtlJe8@e&wT1*td9 zDko%we@yHICDtiJnn{V&E-$VK()vL+Tk8vJY8{f?%v^1)h2H$lHg9Tc*}UPbje(oG z6)DTA)0e@<3#%K;xP4d;N&N3-Kjy1F&HfGtSzrVERgH<#hed7P{NFHMkQRj`T)8dH zo^o4_l-o-6s>qzlS7ak~EHXNe4eMcP>Am^;!)2|iS3Rso)x+9m_0|?1vS9IrhhMGR z*+uVLt>pJY5ilAuj8HR|@hc9ghlT7<%aTFM4NGEO#kbXE0B-`g{9|enep~_VdfNkelq_=k?_yjfD&5x@eTGUS5sg|h5}zI zSmx=S8U+$KI`i(ox<>e3IKmN8}T@#!}ldcI~Ym7eYlFTm8cv>;Z zB!4oOGbTD>boQ?rTtPLF7$rdp*Vz#CsS(skB4YA%qJ>T&9)ypBc;cm6Zfbdd%%@ zZSiH$01?N{>Pols#`ZPeNo=muqYB6N4^+O3BXE`PYLT}3dwZi*FCwCFiFzx~odBAuR2SlBinD~R+)=}RK8WZD#vurt)6e)a zIT3F;if_S$p@A#8aszGsjU+w{W)9@wc-~RopZ56ApZ3m-ca8~?{bTtvW7KOtru3;f z&!KyyFFfk?&OYefuN(sq=Z;GRm-HvL>+09NKRx5G|NmG!7x<{EYyamlLV}SA5EYTD zsMt!OtyFx(&>9E<6j6M{SH;@@ZKthzTdOk(wg!WffgFxg(_XQ*m6qOOOTB1m3y2gn zJWQf;6_6@cs?kzA)7Tat6%b4Q-{0Ej%uEz*@8@&*@X498&wi}E_S$Q&z4qE`jd}6< z7mxI>K0H!9qWAah^O#z!GN~`|ECA*)Ub9~%sc^Uy4*VQGgtRdZ>vBdU7c;A`_ptV9 zY|v_&ci%is#$;~1h2;z$=RtGTCiuIjjH9piAQ7+E(k z%os&@Pl_Ch?2uzClZ&%^qF(Q2p35MI;C+F;L8uTh=e2jub{no!wBX{O(=SI2uvW$n zeyy3?%Lkf&aRn5)I+i@x7cY-h?};ubCOb{6#ny>>t2aa!{EZPoA+{QCzkFDOM?^N| z#ZMG(R4_p~^3~$Jmc{ufisFljCTu%JaPn?Gav{7!F@;CIz3mS|O znV@G|#mq}ryA24o(ryEixM8ZP4Z5qJihusX-qqoOoSh^OcO|=Zd@>uBhD_M7G;wwx z*3b3bIOiZ}H+tj+GL#~Qcf;oBL+9ZgOIu|Z<&UPtP@%+inIQ~!dvfy)W(K!Lq!PX` zHesvmk_sEP2*T`;aJhJPsw5%t$1z0LM6XarHO8fkIjho1@W;PVG3^}#t`IS=5COQUQCwG znECF=>BWo;(l8jn`=yIu3$36$*%2xXw1on9Cs-GvDJ@utB5R3_-9c>ZZnn&8LE)Ol zBk4t!p%K3f+wFY-jH2ml=39u~{jNPX=KbNDTvfa?Kj2=&(oFAFf{>Am zw#rFq(C@GFlU*SD{B*@&nUb`Aj+AM=%b1g4ytQ0pvnf}>nVk17Vg!MhjuP;Gl8^WH@D+!~RSwpB z$PlbV1+d<3scbG`R{7X;H(07+Fc0hHO8h^8^$2Pz9M^v(-dn`Kc`%XJF#LWJSao0I z|0>?w3zsu*upRu6cyB{LEZ*DDoBvPZz3sV7U~GY(gqE!Z@!n*dDi^&L@9imaBJfze zx3%vp#XPx;iBjopiazv)x2LsZ&gpwQYr$EfZg1x(JugbWTFE8fJi#`rLN|?*n=3zi zjm2o>J3DR|b>@B$|FM#al#Dck1IUd_2UQbn$V6uz>_bJKvZw zT3q~7Ou)bsI2w8umdIRl0N9YZ=5OH<2fGu`_~&6_u^S7Db1^J6%hxLJDK1Rz$sEJp zCGTU_0k{7W$mDqX;Lq$Kymr~bV%gg?QkUvJfv3LJ_taWkHUlH;fjYHs_4_vs0uIV7 zVUIJhBtfjjr;yjM{X+a#EZvK-kXGcFwbsJ9qY%qP7l>siqP7B$nAJ)CAy6+ke%5f@ zu+v93tl%2Ei{djyp8-w2ofr*u$^X>u#?v(fujzt!x1!vBll=_~ya;tydJ?t<_~_}# ze9@(bg_@qUTa|L5w@aeHI~Uv7Je#cFsj+#Mv3a72&D>^<&F}dLq{$9bI$y#_*_%zy zdfu|Tjoy3wbMe(LjGtlsno};oj>n(-+oFw~neu-iNz|2Rbk!6;vRr)G+ms22+4`^YPTk2DL;FsX$*;RtGKkZ=AS#lQ`nXGC#@GZ($L%S;oj5ubrY=nGIA%3oh_HF zUu^n|_y8zcdr^Rtp_!Y7X<(N%(>jm`w4|K9Qde0uthv-9Z zdx_n$!*AYYT^{Vs+$jPa!AIBa3Uzy=x-B_&xB9s+^APq1Vb}j0%-lz3K>@G0PK#sP zZQa&wO3=`KeUK^|#fk}fy)NSu4v*VW9Z(sb?S)4>a?ISM$`(+Dp+f9*a+0H~_DC^7n_y8V+kM>Hz2yi|pW}VHXSWMvf&`8p^1LsiIy5!QUCB?n zk^@z8xVWb1mae}2}HqHR9JuS4^`i}pKw!gtc~WJaRMpie~%T?LoomLUtp~!J5CgG zzvhq|%=piTZ-eyh65g_JI7s|+k8;h7bIoA-r8x+jRs5gBQ1$2NE@{4nB*Pn^rChbF;G1PryZzr_Q{(TL9V_p2&+sPy#LHko&r1P@3Q=(!tbpkm_;bm{9 zL`w7$E@gmH_E^eaNa=F2#@^0KOFGV~7-hd#+wWTYJ%X$fV4`i)VgGwOi+BePtG-@0-t4n5Y3R8SmVI9lEVy%{@_$lK zMD?s8e^%}g-&4;D(gW^1kA5P1LCmN5b{8zuJ2Ol(f}Wd4K3a4LXw=-i!LsVe)~BREGJU6UD4YIzQZ z*bncUzZ~|}Ih#7v_#vO@)-#aICpRmzZ0^4&hD_3ztO5k>t-1^hWhn9fe62ccvKx4H zPR?b*INYWb^w#b7txTgUldYxVf_vQ5HY#7+?JD!(FusBc1!%OkYGoEUn@F9}AaD~4xrU97I{$M_Bb?wgH2Md1>-OO>H)bejZw$V+r)m+{=(f=1S7=j1h z*T34ZTw+Ud8YkjF{BI;-+O?2ISg$_3!>^W}>MvLX56O z;sLS4#^qfRlB1ytJ{FA2i&od}YzGU%KZWIsg2fTY_sK6R}l6#@4Ftq zE>_o}K3HGg_rbWMd>|0BGV?_>)35`R@P;kX)}PRkJi{K!TV~xht1*91r&ib z$|2o*aC>b%WmpVD-1=m3%OCv+aBE@V>2oNXozH>EGura}=<{kY?@(*x=*%)p>ITn8 z_^8E$-Ma1=@76G(;ZuM(jt`g%oIgC3b1TLj`TD0~-T>`-E}@dHsU<29fQyO1Q|YRf zG*(%R&wo!*yB*$COlfwbdS;-$!v^`OqPQ>fR!&a3#=o7tlj80D8qE7AIy%jHnu7wV ztHh!=v)?FXw~K}g5Vl@R6Fk@H2~7p-G$|$4LlMXMx;*x~%*VyFjaqUsXUX;g1#v2f zq9yTEbp9Tu5P5QZi41eCX4}tR&S+_ibhKO^ufwLkB-4Y57&{}1zlfe@CQe4#sM9xk ze^H&tMg1v2s?$5GcK<@E%qQlf`P|?#ct4`-lyJ`q%zIOm@N_2z5`)Ju8>LpC;qhuTiFJ+6YFV zV2*FZ%1LzcM6KFb=V70m*sbGaS%+NTa4(zmyJVKhCyw~K>RGY9L<=7HP*!b>&RW5fpbDxl_k$|jWWj>{L~C)U;Cbn4>f-sNp2XA&&{CDF;$(e&z`ov5*vM*2>S0ce z0R!ktYG$vDCbgr)dX#$tnV(}1jmi9q0lmBZL`znKdB|DC8W{6FrB*JXN;pnetz&@= zJ(?=0rDfF#c9x$b5YZ^^@G!o$zyc|)Q}xSX#$aVNYfc$z*42cyio|LXtE2Oi#j0_0 zm(X1lc)XJtBDGy(wP7u|nP5E4Jw=IYxoc18sp{sRHm)t~=>L3H&C=0m>IhYLD2`!^ z+7k8QPI8++>(pH|$*ny0?3^yHDet{+{M#Px`KuGF8wnD!+&|lU2c_oG-d1-(J@dy5 z`0_238n;8xZ~nCD59k!kdsV|{#8vB;M|vN{#lJ-_ge{s+r?dG4GK>nNsW|fox6C1r znQ5@gm)*)_{f+_I$F<-CIXMQG8jN4_T=1&8>BlTwJ zBYO>Ea_-FXR*2nkbe(HDLAea1ssm>!1=fHMFicKvHQhMWB_Y}Ia;T)Oq+qOWgp1pH zCoZ0zaAtC&TL>q+uzKIthAqwqbJ;b;&nlo{oeN*M!onA>R6s*pKMF#pZ;q97 zkj{T0eAcLfQL@PDTXLLp3$40LCkn>X1Q5^T4OSPmoYybs;S9qr;|vaU>{91TMZ(Q8 zn-O5(H&zmb<=IsE^Y)yyF#HWn*1t z`vNblUv76WHI|FdR=Z1}8E^97U=kfkD@cUPi=wT&wRqxbwtfjC40l{d?!;Y%MDi8~ zYi{wvA7zf_-y>}-6EJqx$@8aH!iDzX^>4WfY>{ZQ*M4I0w=GGF#Cfy?WcZjpF7z?$ z&s?cn%X>1P#X8$*OAp-iXFu>X3*2<_>T01;Yhmj!F^CD;CFFrMVH$do6UJD%o#A3( zLwGeo9iegFx+c5j1Re=-gTgK8s@imMg}swB-X*4S$May?5BD?n+g2Vo=RJxSjJ8OA*;w zeU@r`)}1Lb?Fm+&V2F$JjM=|#==Gi!YY)cnAu0yC6%65U-D|9_-_mpm2}H$Q9${ev+|9^VR0U**k|0JJ z3|yU9j=$Un&eWr+RjSjB?N>WVZ3XY(_71~5C%zpZITK}h3^>M(S_BgJB0g2mUeS1q z@)A|KgGuq=OGbp-i{gi;xp~mAE^{v_Oq1cg&)7(bP2luJUu2UXRQR!AH17}E`VxhD z7hCus7F`RbQg(*M%&vIOqYGxx3U+oVm0s8HxS4(55*=}Gc6~WrhupnG3~z~J1p?4+ zX~ZL8U!1crL0hC|UJL+z^F>~EYAB!+caVD5>4t2~)Rshg?+I-Zf_>X2@7dhUfpuQZ z(WHf@8>}F|cYso7hja)f*a>8n5)AzbqmLTwSShq#V8Vy1=P(*3GTkcXiqs0bIWHns z4cj8MC>4rQ|4gcUhT~;8;eUXiSadxf;K$t5ao?qiK(hij)m^g>3S9Tc2{cCFI&=@s zyX4gRC=HooH{*cF+lZ4#uKIUjM(92BFU6`GA^7RX06meA-DNbToNp=WS1wlF>9xwF zq};xpj3>E_LChlf*$-IDa-%|qP7bVs6VB@a*iUTMu3b7IwKE4aLm0ssV-Qk`PQoI- zcN&C6jJi+49NN=$+?%&(9#>g?wo4a(Rwe(gB!)rCft0)q!vJt*jB0|Rm;OY$#Js0) z4soR(qTmP>xH-UmW^4C5Cf^7|v{&3q+nRh&+;J!q7usR%KLrsa3iLh9Byzz8^Ld zZT$q=RUdePbvQ&LH|u}as!q9)ma8B3PF9j5;%I6k`NSne>i-OTyQCPP&Tc&!oIu|; zq_Do5s4smWvv~<<4=`gagMG@q8u_bE1zWS1!|XG|J|!a9 zmHneu%Vq)sb#&F03pvDcEk&!iC5@Q}s!u3U%Otxere7oFrA00`vzKV=bIdl!ZBl13 zYS{}lbouFJqfzKVUV#GF#JpqF`(JU|!p88u8*~>a(DvwMYOQ{WoRMKE=620x;%^ET zIE$wJ*-HpnIzH6jhg1K{c8()i`|}?(7NxKg$2!I;GvFL;g$i}mvvbvqDCF;hEE%>E z|0c_%maP*pA4qKV4tg);Vg@eSVKDN)Ar_?&!+a<32|bF2XZ&-Rm^9y5=2X)_1JS;CZk7;Ga5A{| z8d{mTNNt5~uyrFalw@CWA!N^KjV#2F=+cdg9nuQwPan!A

zT*W4iI2{ zs(?U@-x@Ay4uo07c?4U>Z_vc;liFJ2J zmWI$@X3&S6a$R)6^TsK6tMY6!xOPO;V!LizKHmB$UvA_*sDh(_%#JCB1CyO}x(_Pi zM~ZLDp^RX7RE1)Cncdne$N%`^^SVP^)b??E%pLn9LVyfH91`W+t#tvSY6%UB7!&iR ze7}TH<{k1gQC)v;)31H5!GoZc1v=t+uc6ga`~owlC^LBb$;3mH zq$uZ6Z6%f2wvw#Hp==x;(B_HnP#cVg>!=5K?$a|bBL7vdZU>S0VW|H7EmB&T=!FMY zl-*!uZA$@5vFdJeNm}b}*2Kt%PSAPz5Q`3JM+?i`o?_vwgKZ6KOtIQ6#p+b2YF%k5 zTap{fEVkk#r_w$b`e$O4Yd?rUF=MPcuxB#dy^do+De)?$J2Y>r@`h9Co-!((2`{pJQaav~VTaF-bKT4hBaUoji#gDi+t>^y*ge@_DUe%}f1h9|w;te3e@GDxpg(Y_AYHa-zoXWV-GHU(%cN)p< zBev)oxL^UFJ2U$qHyeL+WCw5B<6}zG+|Dw|cCKA$_fJ&kdjh&zU96tuXyk`h|L$yB zJ#9avu*A-wQlNa4tZe(3N=suk7Y%I05$Z()mEbOl<<=D2AuMAqdFF~b^CjBXSrrc3 z=tnd)L0r{&LsPXqoF=+;&$35Tnj~@pG$9aLaWvB0nvW+Hgc`b{ulxYYpqMxELIl(& z6nh+JUdF=bQe)w)(z~^gxUqoW<<%%?NDwLL)U08RI7Oc|Okh>35}7w!r{$UG4sC>% ze!6=OP z_eaP!Cs@S_or?>b`a7yOICMcZ{-mRTDu2Wj!WgoQxG>5969L0KkwBGXzNk7C^ zscV0kXh_5_t|;etqnzWRoT@-9$&*eXF&Xxp2l~t@Gy(jfSYp0Oqp6!{Gn74kNc8|{ z+IEu~0z#70Am_QS_oM>&@`hm`0DnJ-2{Uk&Z_1MB6AE*)aRFI7+Q>O^ex95Yd1@7$Nj=>D6Kc1R{2*?I|;_ap}`>s^iE zQcGrG5ZfF5`+mkBh%|4wu=Tht?UGK1NQbTmKP57wXo3#_v$K{?NavF0QCM9dMf+NcNMzzHP19 zI3@10`?pWmler9UqX^yjD94A_y(GIh98gsY=y>kb42->gE= z3F1C#JTmG!Z&Pox`g$lmK4MlWCQ0bb0OkoD3i4cShl4pQI8xrV6gX#IpZ>>F1doz1 z>u_dDWPHYD%eoUZRH%LY?(s{l5?9Fzm5M?ox zF=-@SL>o8(x-h-^8<|(%Vjgy7Pb4K6lef+iaQ(*QA4&?<-ez$g$iiC-B%JpM!KQ3j zse(Yh#MK$v__ZEN;!E>wGz4Wn>%wA^pnCSTC$|DTTBXjAwG)fjbY}CIbH7KkD4x*wcB*LJ6P+S zC8-@+4?G5#b23=F@zv$wLO#N3m&w!`999Ps@3QEEKZ|sm@5nyJCiw$oGblUeO)~MU zjq@;+g)Yc;U`)6&x9IHK_9u zSu621wlXh+73eCZ?(!-wL0kEpWU!S&>Oa^+6%LEuty&IAGa&sxLc2pJz-VB#CWXdbx_==q#+e4n%EA`?T#G4PK>nb$dZ3`aP|${_8Z!p6 zh3&`*B-?TxiY31-22@ig2PYfmK%W`RlaFGte?sqv6850In0NV58-Mf>UDE>Dc^a~F z{SvS1!W=Dj1(I_^TV@7T%BTW*oD?y&6W$(EFF^R=Pgqc5Ze%MtP71Kj5JOa$*r)bCZ9Ro#WXVS9v zOLb8pgbRaIirJQqC8Qm$@8C0g9rRo1<)ia2XNU{IX}2Rvo7$~3^P%Lo!suTGfUQQ) zP1vP`ThiOZni8Lprb(7lRoK3b5_r2%N)Kdx8XYPd8eC=_NM+@pj163wvL8{!g$P1? zFK7Bfmmbinv9)wkl-8R$B)%Lm+2&yd=X+h#%IFF+Ye&qVQ*|gpDxn$ZzzE6dFGWZn z5$b~d)g0;p?(vVq#m_W*+17y?u6ncjiVb79O*A>wdP|Tigy{3wXg=NaqQE~^Ko!t{ z-W`?Rcj*3zPhVtPgPu>)5%~19V0U0qqwdc22|v9l^;NqACdkKt%j>dkRpjQ!XT-9D zZvB|*f^J1qUxAWwn+9Rr9i2a2yl8F&p}SyHaCERKfT5!t<&#s67H$f}?5EsWGN~6r z&zpGC=`&nYCMXGWA3*4~eSYT?B6J4X2%U4p`tE`*7AT$DGSh|vbls6o>CB)#rP=SU z(?}=WK~0<{Gjd$bFx~i%m7#enYTNF{%YcIG%i6>eyb|%}&>D_x2|@ zMC{X*2kqGH+&+Cc|MrsF-bb9^{+8*aZG(R85U4P$G7fLY()cp?H|9rlEWM_!d zVpO=hDKN6nuw4kii>40ebAh_+BUbTlMW3PBXzNq7sbD+0I9)KY1lpr^7Dyj0VYquPDjkE}AmWzlWOmEFuMhGD)AB3&%fo=*G{lg8|ep{4vRyin$roKZ5a$~D| z>`bkWoJntojx#(i;Q&z+g}SC4E_%(KjdMB`3F7E%9V~#k`EfYHyNtrlqUJ!1xkhBo zvdp^QuyuT2uf_JO-`d%q>3u{{g`F6yP8CpT6*bY-(^uyopm1KaMol%IVLYV&fL~K(fKpMCDa}#lWu5J&$9$bX-w6)^rHB}ASdoDqW2dYG1FFbNk}RRO}@U@0+tefGES!xw9Y zh2rWMBm`x)Kb9Rfvxh0^G4=fHt=qFI9k$MATr$Va+;qP zErD?&%5+`dF|-sHjoVjpzG0{A$NGtt*okc*Aw9J`^Ds{YHfHL9n=)oqAKs`L3vejD z)S=yQ8*$|00F*Pj^t3^Mi|~@U^EUw?guMaP*?(a1kk(y6XWU28A=(MpSiB_JB0m=I ze#DJM$hcSVu8ep!J2at8t32d~LaM%6b%4m}dgce|+d#+v@oot$Ev_tAlbgM1h;zGX!R7BlFTP%|fEXEF^lJ znfgXqnz*rwm(j0ZX&f%+vR}@~(vu)<O?B|Al-qg$rSM z`=oyvmft8Vi20eG0W5C@#qoY*EM!?G!3bv+T$1pFl^jm}R7K*-R==XK;btottZrvY z5PQ$zDI#-lpJj*kSh_e$O=nOnyf}(GDYyp*?%eoKOQc{}q=B1xS7yNgH3&tIVCtt{ zfTaDIcSTcAGiC5V|5M{S-O*ntET_iu3d_F6*>#=CJj1KH*Sv(`H+l~*4!r~wV*$4V zr};J)vAOK<@EX=_7Z-jSo&O1v3p;twi2}nG@Rx<3Loo-2yOjMcR#KYN%&q}4jDY*S{Hwi|LE{tvV4oaY#z%Fh{ zFq{}%vttYkyg-LRy%VXM{s zZQu+5bXt=Ec>o>z{d-9cKt*H9_P*|HjO6!L@#bj*oEN3*%n#t5Xv1Y`NmtiI^wV|` zix_y0XUe3IzmNLl-nyTE%87oW%&*5SY_#?B)TZ7x=&TWs#_oC_0tQT~D6@&us2MbW zx!<}obOr-6kcJ@W?@d;e85TblO`P2lc1D4_^Cb#=BhgqSERlHXklF&4x>5{+SnSE% z#le%Fzt&S1>vH};_FIZXn+54<5iQt(0QUvc`q-SmPHZi|4s^OAh2-3nt7X~;0JE`_ z!#L^yh_jWM=SQqicR|fJgw@2y2t-CiraIX_Gve)_(_GUNV@vEIheruQ)EhwkeQ5w} z)BcEj5(L<-a`hHM{Ft3Ps^2nop@VNcUE?zrj&EOp(+IidA6fA@4X$r8F>GHd=t;)Yt$mQWdk42elJr|)c*J;)0>zt zTZmt7;Dsy5dLy67IMmz3F$7Ik3aRF{7R#fuwGX^V)qiRyvc(I%Jyu8ZHLliCcj9mg z%&hQ+sBR&Hu@Ov}W!Z`%f_xscecmf79pq`x-2pH2X968D3Mx3iiTXoOWR~MuF@k@P z#$o0ZZ;kU@UgqwI#cHk`(DbL+m^aalc(eCJSKm_BRsR|!Q8cFcH5aFO|1*Dhm@zLJ z^ZX+!`piLp_MU|^Uwh_2^r5P&EXy;0@Mga@b!jBXWlvCjhI&%ee`#@H=VR? zfAy2M4&3`}vC?oc^G!w&Tn7Atd3$2see*pKV;3BUQJsy0Pk2H$CHi#i!SEE6Yx!n5 z7M=_1%D4l51b4vk0~PqDw%T6T_{sRh)%O1K9M>1eD=6ri0oPnbW5BH75EYblH_X|p zb-q)QuZ>e2h+1YcWQKujLs{rG_GHHSZPgLsgZU5oA4n>&!@-Ryvh3cbmu0UHT)*NI zW&INJ4pD*>gVfxm26GN>1012*79kB*zFSnMp~r!h8~btIrgUv2gE>{7U+SP68}q+O zyn}vzcYn@z_Colm&imv(nL6L+Q+K5LDOaZu(P^lzBd#JmN#gH$Y9!O@Dyqu)$&|0k zk)o^YZ&?%=FMH9P3H@eQh(RDi*|qeg94ne>#UPnhIDfst;aHx*BRdym3k36%YpN}!=U_K5yYqh2R_qFur@Bor`BZyk~k1?jt|+^Hgr* zWY%QHW{+1F1~}+X4#&MphMib!@0w4KC$kpQK_ya;Z_&Vhr#9?(t zMpyN#uAwaO(!>$>-4L`dZ~QnwI-3LkHR&luNKiXqHLS>-p*;<+=}gx;mk`ro)MspX zwXFPgPDqdDh^nSxN1{inWdM2}rkI^dec{;352xA9*x**N9+Cq{4-Xe(^uX^o9hRT7 zvS3WO=+97v-p_JFb;*GAtO2=;jI|Lh9bGZ+n|9yrVj6K%A&2oU-S9ES{Qz5ane8!4 zqp5@;G`Fsdp`e=~C;G#rHE!U$_RAwFw%dt{3@8obIib}s`rtn1;_SJZi`za~{*05|ZSj+3#ZH_fC$$I>m zRX9k6aW9-z*76QMEn40wiGR7PzD(ZJ!+Dipv)%5q#Bjquu18E15c6lj;GenaM3^{) zN%WTi#apX4H4h#0Ow5m5={NVFfEwS?8>KIpVT!{9tALxJjE&~`E~|&he$#p5A15Al ztmc}M==}Mb64e`{tv}{R`o?1KISdvXPxs#OUgthl^r6?s?AewfaZH!DPZ1p^G-70v zp3oGlIqv55vFZ)+D~R~vJtZs0Cv{cVtc&B^q1r8T|A0kcxe8qHS|`Nide#q2CM9EU0C;Wzwp({(8 z;H!yen+`iK);Dv@WULmq+~gBa*AAw;)!(_C88T1U#z(Thu(_f&Lo8NbZ`6sRxr4cY zZy_EForHw`B2+=as&F1)N=s0_A?95u?{QqZ%M4Xp978{}fr!14bXDa%rax|Z?|h!- z0;D_Lfw+qJxJq5h9WDvPA;LFn;SN-OfcQT;5fs-^&8h9wgv0iDvv@3+M!8uprx6{2 zTR9j+0N6(BbtP(pXQT7)pcvPmx!IoB>~(rz^f@lTQLOjmcH=o>EVFbVR={?qm0&Z# zCi&UMnNwrcuQxr*@G%&=`vzPm16Nj#zad)F%bxOg5p8y=z^~t|ZB~u-#5}nV<0Ax> zJw-{)-C>!xWHHAzv4$=13A7yMiR@1#_HNJ3wE~_7H>(sg8!l#c^Lv=tGK%>(7Q=N8 zlg0EDah;=>!(tj|ifMF<(|jCG!|=dq_K(@OZC{Sl5GZft-1s+d+6Hrqm(?0uYI>$0 z!w^4!VZkK{mk?u$zdW5Ljuu~Qyny9BzHPGC8LRGYeB9fk5OPFLdVS0r+uk7z&zR@D zcS3HqTine547%f+xyH6F{)6;QL~ZLu9)TB?z=`g}M@H#2k=U36Vz1tCEcW4@T2+yiyw`3>uNn|V69iJS=ZF2cY($8(MedCpgKvTG5rf3g(Tqbx z`C>w_6HmGbYR?M{5OvHOmcEe{q1*d9pDth`Tv4J0_<8#_!&uSmZsXxs@X>^sH~j?V z7%M0%84~sJs8@`r%lyd_|IKT>LcfFiu1SUoO$FmP@FIAq@uJ;2gEU?wlhTkEv+8x)9fFKe8Sq^9gQY{t8OM_X^;O(N-0fYHD2vLzBXVbpT+ z{6w=6V6VxZwSr}JyK4P4$7le7crvmyQ59~4|4u51tq-Na_ReW##Q}9O3c_gSAA4w= z=vZ*h#B*9kLp=bsuA+RdEGlI#PthD>A@had`xG83zP0zqdAUk+PT-6-aLi3tIBXxc zB%D|iNC9pfY&_rgaQ zlcCVvTr5jHo@iILK&=oBK114e+e-Q}!anOXYO*$3=*eLrI^vceC2Y4g+Wa>0ntpv5 zAc8rT0(tV7bY8@p!917*sh_>!Ps7Xiv6=tJhCfy6$GN&^$<;wwPNpZjtysv-)_=r;-K?JlgJyEt`}cix6MLny zaOkn4S2Pnp={5=9C=ruu-u&V7aC5@uVVYV((!=lFrA~FUiBx&ZLT8Y`Wu@jH zD9-NFJS5=3MG@^<7QlD3Yl$gPc&@ zC)R{9DGxa(%rcs7Z*b(YQPlDTyY$=$<`<2P=}1d38%6;ksMUlJ#bXP|e7FmOX8>3r zHWtMf;4N%iJAi-MM6gs06^G=D03W}m34|Kq;wqaMW?~Xf2X`(B=fGQv%7xRx0z*uT z00-0PpUw?Td%eh=A2dJKsi!@hJLOuGnxRAa?8Gm9K&0rv8 zK+7%3XzB>MqHSg5QI3z&k=vPaP)@r=4TpO2Ug}pquHJSYi7*Yj5kuG{sE$D zx)Y}@R`+1?r<;3(Z5TgBhQt{BtvJFMTQxV~Ih8Az9;~*xhag;wp(xoi-zJemCuUm- zvEd~iMA%&-HWE_DKO=~(-lRbxHRw*##SybVv~xHV*DD3&(~zK^ztIzynC@(dgpwSl z&XadgY;?p@Gzy98kZfL5q52-?`Bv0%L=d0f4Sd3PNZ2hdhlKNbk^P>SpLkHB>}XuC z%7(vF+k)9ExJS9I*KGKy=pgr76I^>`ztC;WG~g7h>=UyZ{}87Z03Dq`86y-a;#vTv zuIw1fB$siUp(Q4H#Q?6l01! zjD8zQe<)I)*+>FV&0T$ck8hG37^eLFB&EQ6Liu?dG$I8FsL~~dYTAnVHxj4oZM4SC zyIh>0`rXloreo#XgAL+;f+?1oPsu6vtFq3gojRZmHJpWYOJR@ppDj&ZYkM?#1FfwT zsSH{C%$R?(wRnsI6S3~FE!>w8C!!$&ms?ySh#3v&IMaYWgNr%Z37ZW267t|X;CoO| z;nZ4WNxE?f4<@wU)uy5UU>@9=n{S;lzoAp3=*=<-rG}ccYMSKAgy~E-?-t3WCrDOc z?hIg^11G*h)8{zy7C7>JqfE|WZVWzYN|}A#?=*2rm{^@mtgA(em=AE;-c|nyOrzi4 zV+$PErgh>&{AAkX`HpfjSLRxY6``~!1)QtE{A6BhuN{Tc;wzS-Ks~-WM#BjzmNG9>9!5O;)HxZkwKoLJ&6@=(B!sa+HHy|G> za~w+D?4%J>W6G1fNh6^e^A;N~-$2oZCSat+4OPz{!MMpIh{d*a$fnOv zRLbjhl=6fIiwun3RlnY3#}i1ASq%1%k{#FfPNv^F|B^X|_&@jIhFlQvqiE_pC`Al3 zSZj5!DPT*?p~Twg{B2|?q}8l(R)b@(%6{OQ)uG}2Z{_CsT`Sey(!3rTx`)1oeDK+P zb&ry)mROjqjN{?f(o&MdyV>P9ycd`wT4H(i_)Ij;pJ#uF8arYS1Rp?9M6?+E$$MK2i0(}tbZni3#&B6#AP-#R7&vrrIx4=olXt6 zaXaVW3Om#;#&n8q(7>3Ni{21Dj5l%om)VPkiHk1a^&q@SEP6-&25<)%o$x2ukvS|;>{Y@Sv$IDMR9WT zXoJO{KHNVB=Q35vSBfF+s`RXJJSzQJr}9uoc$E3G%C@~iFGTtkqx*)r!a124m#7G< zudzgQLSGZkLl2bxZV?*S7^=cZ>cX&)YNC1 z$Hn}rsp;>#Mi0>FSlU*jTgaLI{#!2rO!5GY?tWiuTE~AEUHt=V@4%p@NqwUix0tPd za{poR(~|om@lPc8m&L~bM|^bpmOg-Q9I51^vBxP-{F0U)DNo!Vn|JHfgQ@bwkK4WH zYqMW~^Q158OTJUwxJTKdt-qpWehrDXZgsyZ-5qyo;#vpUt%6BM#L;mUVk6dmZZvf+ z-@WI1f7Whi$w^MwQfH8)`V#F{@Q6{-6heV=%@YmmFHPJ6WJioj-1Hk30%FaZR~>8Z zfM(|N*~?VJ{z1g$An`C%F>y`J%Z}hS4m`hg2wncUH3n>bH-7b z9yy3OoO8bpJ*6jHf$H!yV2aJ#Uok3vQTpK`|Y6iv-Wea_9*a&htDnLm#g|76@gX0=(2$mewdGyQN2GMVA#>*F6s7YSnK)s~$t#GGP?Ik6Bi zk3G!(9yzBV+bz$x3kUV!pt7v6$92}@_xAV81^pFnE7G<94Q^i+ZnL-YQM81ZRh0c2 zFYzaZk$VD+WC}1+)LoI6V?#RG={HxFHV@~-kAr~*aB?1pZ#o&PEZ(3qzy^rpyy!zm z!6|wUR2!!_bFB!sv|;zyhRT+Tfn_xf8ncF~+UkvsP3ek(Ehp@)om9P%@!DElU)8iS z94jJkjzv^$=s9ohdaEM((8$Z+2v+ZbNYlx1geh-VUw1C-sA8bQm?iCiw>%&C8UEvU4?Xjo)E-W74MVsCNaDi1ClB% zK4!U@!6j&LnXafw*Z)bn6{$NTqrm|zF_U1m9J8;b;<&P!`Wh0L3FllVh29h}_2YJ4ywtT?(bM`XkBG`^R;b5pn#NWY5W*VMjae-Nm0{)HhjEQ)uq?=q0?moUDddw zv-q4aCr3n9p>O3nQEjV-Et)*3FRP){rTVL3NvSbLrf-qJ_BMT5xuOgHpuFpq*VTbY zUIi%|&>ExB173qhoAxr`CyeiC_bV2p9-ljO;iZH7lCQj*e4?a{Uo8~_Dr>7ZHN8@^ zUd=hi(B5;3xT^sHxv17q0r3^Cd7Qk&>AVp}JbS*0>vQbHSET;{6LeGaNk*|#X+>dgL# zpF-#>A{CGbcyb1k70F!nMX1CG;V0@&_H1TVfo&7yU&;LTXAVy`mkmusi#Mbrbte5} z?*d1v^?KDtt$Q3Hj@V1B?O@IE-+8aS%Xe*W>xTOTAR6hPJDx2zzs}-O;m;Vyqs*Ui zYOwF_yO`tBab9XVa7;(T;?I~+{Dik?3a|buC2n}N#9O6xKq|e|M1FKxTuXI|V>i%* zZOHmj`hnHxqS5^D(<->_WiNfIk`ry-s*y@wq+|_U67@!VpXEyKV~U*4yKim2UBaS& zHm_q1A}@8migZN3^)qF;`BcF3X0}@2)b6cxWxZhXD?XF!P-XI)l@aEhN(c$z5QvH| zuJSgl{ZcFz+xzDY@04uVfBcvyysaO%z^!d#DX?K*NqTziymu_+TdyONoNA)71Gt{N|R@=H)f(1r4e8 z9JAMJzRPQ9_Y!w_Gu!%gN{zjFpP$x<>ki=cOl=Ly%+|4pd#i3G*{k>zJe?n7QE;FC zsYv!($2+2{xA%=+RLk_#{>VC}`%DIJDTV+B5P0xc39_*XZpW|l(uOXaOr!T`@Qw4nh!1QCpw%TI!?H8IQIHje3?DH;cv&ME27)>tBskhrK^NN z&!7q8u>9}au}Vr49j=~&HnXPy`uMjGNdaSZn*Gjznc#Qt zf1+bt=Ui+l+~6XSf!q)~@@Ce|?C{benEb5CKJ~83@15QHzn*Z}|D>qaxmkZ~d8a(O z;9h25(zsAb^v*kZ@r@TjGU-`wx4cu<*f_B&e$&LG;$NNkZ}ICUj*7=79v#1G;<53| zCXS3>Jn=ZoofCbbApc5Y{d%Zag{m=_5wPkLG|ug2t}djKMyXdYr7FGHG9I7jPemUp%KQXy{77n4$=TQWk;ht#&%TbWS0^SN_)IB|eoGO_ZLb|D=L47E z?VVGQJ=risABtR+`JC#gvO1FQu!yQ3L=9jqpV`55B;ZbSPr7RD!iwLvP=DLZ=QuoT zi~3c+wdNXn*uGaZ{+lrHAS;?Mu!XK8{Ol73vTKo-(V@c^i}r~xE^K%X2f>&MH5~>R zeHF=lLmH=fvvG^Jn}&Dm6B{`d z=$taQZxFRKt!>9a!2}v{-+oH@&MBAmmG$0hdGDrEol`F8JG}P}d!HY?4>S{=_Rh#P zSpTyJFi^Cs%zhmpf_Ki#iY)wL@U9Ja_M-fEDKYJ`0#2zmx157!V~lz*b0-I6V0lPp zKb#=B@33fUh|(R@<@s)B56jo36*l{K7=(?}5e1ogNYvOB7o=?=O~`-o5Xisb;R-DO zvhqKa+pAx#yEX&-%gX!E_BYtrzP4C8G-1M`kx@j z@g11LHgvOp-QhK3#JAZ?tYL*=PK-n)QFYwBSBjWfNKrf4E7%667Hi_;C*k~}X%~h9 zeqv3{%q`K>3W*d`N4A_*6kW7&;lO0iOUdrawt+2g6t@v{E!7Og%4Li{B)#zOFELxB zl3CD3>Mx5oyiE4n%DdYJI!9b(x%21kIvW4kRZ>lLqaOPSsKDWtJeEno*vcz3$d;6_ zMGr+LbC^-R6aPXan?trOT;H2JmV?7~w%0L#!j&;Eer3sIthD%WTQAH2A3kGt;@BpA zKB%9$rG;Q!(bNHIHMK6#My^V?J8+pn^Z(A5bo)*N|DA!+`G2(cyWRU?(fK;i#Qo{E zSJNZUY)?1rly)-buhSU93s;f@=QZf9T8{?Kg~O7syp(*RvTax=_Y|yEx-#-AZ?>+} z4UD$x(8h8PAvchoyRhoQ+Gi8EGVQ_?v5I^ zGMGo@26GpKnUc+u#*$|BsLg&<^u*bM{8Rgp8L>}4AasxzcBHICk-mx_!O0kH-W*%n@jyLi+b8!4?Jf;nff0@VmgX5p)F>`SIDjpXMj$gv#mxJR8 z9xDgOzsh6P;P{t#tR5V{md8Vb<5%+d&EWXOJhlvu&*1StgX2?ptQ#CneG&|J)$e2k zi+;H)`vM)8Ou93p_e@sG&=A#;0#uKGJllYLK*m><@zv~qkx}er6JsOZ9;|NPh0SJ; zz%hWn{j&eJTlMYrl{r00^0liM)>pPkCs^iRJQ5o7&nuTU@*<1a(G5)Mk4CImA zwMkdBq$}F6hJEhM`}JW)IW1t=Y^`Idzz#-tyb{pq)bac*)7C}iY1{>7B|V$_b)Pn~ zl1249ner`j&L~O@YH8ldXr8F%5?lSoF&w9JQLScXMfA>ph~elwgi!bZF}? z_nzUpR!46Y^ir!s_6s7(jYE^0N~$+B*4TTMKVb-Grrv}Fetbw77SR4}93D?>ig`8Y zMxLyR4|zNBSj$NSYu@UgI|hrf-iJhc&1K$&<64?~fap=W69DN{>;C1n7>CR3=az^R zNxu?w&EeX}#?i&}AVf=Z4<3YiD`V}L6zm?FtnVqQZi+O{@~2g?*!t&J5=o?IVM(&* z)QOdeT{Saz#h;ry3XX!EP1-o1{gysC=8dSuSg?A-ZGZRP^k(iVtgmT>Wn;X~sqSvB zVtS`Jpvaf$zV+`8wRW&!gMb3!!khx)LZ^VZ&?z7;EL1?ik7@~zyMvL}i9b16D{qV_ znBVKd%HsK?bK|F($t4Q~8g!IkORTfCjPX^ejY$Kl*>>nP?}efO9>>4`1r z$ePmnp3*XJ5QaU)FL?*7Ol>8$7>Q^1zQkJqN@9-exEbn?`6E~yn|nBe=_uZydb<6@ z&aorsdn3{lsBcBgpK_L!f3dHAcXDG{vVPZ*WMc%Yr?I@9AZFOGb>ZaGIgDDncqGZ;Ae0nHhG{g@n)|N z|J>zID$72_TyE#y1-XhNKg{knp5W+FYR{la=D=j>kH z7yTHVFgzbPUlZ%9k^bayUfns&YGx{z%`(mF4`L&H4(Hx57QgOHP2gL8p^KE!){UC! zb!YNfIu!d}qwiPRcW6A?`XkFy&`&ebQr_%3ICEYcB%+?XS}0(rtzW1gW`t^t%1#Uz?JIG5W<4A zP=9wmqL;U+ZP7Dqc>LP3Z9S!>{>>HsCF8tBTS&t60&bio6u5LxuUq>EAy~yUbYCgTiiG(N$wxoG!@hHd4K*qDRXL)?^NA( zMmpl9BlEZivf-7Iz``sx2Cd+wl=13c?Mew8dRO#_{-o<)wSz#H3{Nh~&evRuK6KW+ zzlH6@{OOTo-yz!KRB2xJXKH(Fa{sZneFPi8bY#JM+fKKZ6)k71X}!0F@o;UiWEEvc z*t|86oQ=rHNIgj8?(kHT&4hN^zY#&$wE2_)J^s zcXYlj{Q`gePx;?qO|0-1$?ub?jeGbp@0|nSC3@#c{Pni_X{CAT&HPQLGxmEof8jti zDJ9|~R#==cw`IL5g|tRc(7$B3KPbAot}5A63@ucpQA$sNaO+OxQQ zA?Zb`yLyr8j*sx|$%i(>KxXg#A{dQZYe)QR%pZ(14oTlPz16Z_JuFHbD&>N;gHc$euUVL)ZM5TWt$lR#c%DNG&5pmuD5C-e07=v96LWCnH*Ti#Drd z#j*Y>fyLGnJB*|J^-A@geRFA@Yu--@i0MJuc@rmBj6!l|9+!p(RIj{(5LH_G#Hwbnq*= zUdTahCAVN*sT)-(#5%sCD|G|E^{*>+2fs+9W9m4kXDFZ5e05s+o9Fn8^>i(!BiFcW z#lOSv@_K>NI~xA=cpEl6WwGl0@#Us}{ zZcOOwZjQ#PMRJub4LU!?NU^meNB7wdO0 z{1w;ui-o?GaL_QVsiwj7(iQ94=3tNPYHvAhTws@;lc|nO=pYqnLWjAyedh6HlQoY_Fzw;;7 zm(BW|GD4}CE{twpxUq)z4LMs z7GBlYa-cZzVs%Qb%q_Q^2bond|Cscz9bq5rLqGC7-5UQwlAo;?31=jBnYiAftH1fnNN=`(P%av04C8EprhUc7?e{>a50FenGV zf0{NJ?`ZL{Nq2#_Y7Tj-R|!ec^vmK0o65Y!Z7OK|sMLPEE`st@t zc9Lf^IvjZ=d5bj|zE$lAI2~^~=&ce^>4}WRa%EaC>g~Ojdxi53iY2W=`2m@oIqOhgJ-M#_8@YuG+nk>=PoBZ_xqK55CN>(A&i-fnimA*CKGN%}# z7y#(ihN5N|kad2s!;re{Rss6ySF=H0IIFL%vM((%gNl;9CDYw{P;KOT>+gI+d$1OG z6DBWA3l4|gwu;hP&+(65w+8yFG+^E;f#@H{uI|`mXPIY-oXC*qs*T>E11Ud!11W47 zE(=FkBoj?15Ka9>`W=jLKJ0-ubM1&GAlKOoO$qah$hGgW<1l z)!)la;+YmoJaTO8WS(gz^T^b|%|#?2C-X>H-yp?>4JIe)->POt1uOS?CcHaRE|lNL zcXS$!aF%lq&7#-(h;&4d*Vm|O-k%+-d8asfH`jZ%mv5`BFPpHcW-Y<*=6-o%|biDb0JswQ^3>{YsAh%}dEI{3h~}pH|LEHOBs%k4Z;-0=yb~ zm^bP+Xr1AWRKJmUBgc~d4v);Sqzo_qD%GIwY*aFSr% zmUzQoFJRj{;JJ@TmjQ z2ZwjrxR&zDbV`zMwXKfomWE5+y5ol&>n)NfvZA=!M8at6rx7rn+^55c>&UU9IC~0- z9Kd{^J=lBdGMPz3QmeXBs;fHH?$BrAgLW6A`PN@Bx|thpX8=N5`U~XE3?qZ*z+x;8 zvo}?;&^~9cdW&`=#|q@^V&&BMZ1{uSINzy+P3g2v%Cv?ry~?Je$q?DE0Sjdso6+=A_Kl9QAoG1LJK}AMHWryVb9NT^LRYtFIVEB~Ar%(QRoP%-s~%R$yLeP@ zYo6*aHr8m3bN)@LTO@k6AJUve|9{lww^J_?AN&u?^Xv%Vr`C5?njVWuoHYC zjkT;1EwM;;^A2aa^V`sQUiz!C=Dam&OhN7*XhP>0nlA_+@CGEyfPyV$e`8ST|H8UeMCLa+SQb*(dfI{h3 zej423Q=E9R#l)qeczIaa!-068STXOT;?lnDGUuJB-!4ya?;^(`bai~&PO@A$AuDgO za8?ajlzabfE5QNUDn>T@4=g9OUz{@Qpyo{dXTUKBrTLW8NbxopsXx=Rj8m3{(0lfF z{)fiOAQq()f*8cc~xplwfnC;1p zgW85^D;aDpqUq;BKn%mMg*l>b>SFa@_#N9`43lpU9DGC)Pk1(By&D10dq=GNRMs-L z^S}r2f6Ft`>K|y^Dgi%rJY7g0;Kzyl$kyx4g!yPRwL>Uh%^%NZUG^mVxCF4-44lG? zOZSZ-1>`t3SgdpW=R)?J;%XTGu~I=3;ylsTk-WIMBTK@E-XpwguUbH9(FJ#tf!P~f z-6p_W*4qxznL;FOt{~vNsu^dH2I5llcsB;Jx{cM?#EiDiW+{tR8^4RTPSA^%aVI<# zZ>=%0toi7ezerotpcmCu)1s|E$*sCbmIs9pgRL7?W?#wNW7d+& zUQHCi0rn*vU|;g?Zu2l4~VRorZ@0N+Fpd? zvOMqO@`$tBIXB*nE;~TQx6CcR$ya__%S~sbxLAVDUWXsA3xmcRNzZQK;G*ShcIt9> zfzYnjvSSg#9lgYSQ{}{}%c7~Tu>y8->SCk)DC1F-HKXUpv;QHX-H6WND_wERpm4feeg=5WzsP0^8O zU$^#26c=2%c(T0laBfsHA8-TH^mqP5Q~v`@I892=8NmIj0XSxKixmnkH$}(V+_S?B zQ(5{ZRRz$UUq&uBVW-1dFc}9EnWcAQrS6x;yaC*wEOA*wXs665!FrQi$#+U{+2RxM zY08X9v5CU{8D(_A=fO~(e6ttwn!e~=uI)q@{2sKriBOw-Ky0ZbYwn*770iF%_N}q% zifP=C(JHWkli6==;8(TD<#R_nfYQK|uA1RJ8KStOM5l%(+hHSNbI{GyfT+DlQ}!EF zgT_!|zX^!mdQo0FwS&K&F(`Q7Y0Pv-k^z^jzOp2mx(vz*MK*jE=k<47iqa|)4fQ41 zdwh(%PODSwv^ts%*^^1lt;pqx7qg|7Z4GS~W$R%(5^MiIb?*WnWp(X;Pm%!!2~5za zs3=tNf}(<=B@%2T1W-f~1TPh}r!}?KT9p~`LJ&HMW_TEl)wH!Otv$7s)7lp6jjB`v zl%Pe8h=_`cHr1I9M{|^N*Sz1~+RrmHiD*6Nf8HA(%{InVsK_qy_8CkxrEQV`3+3Z8OY|CyoYUE&sl_CU1!Wrakn{7g zJvZ)k8C%BA+q^j?ePLlcz)MB-@zMIb#So_s<_hTKv=JPLh~D`JrG)=--yw1#BeDz| zTW-%s29tWqX+dm%>XT0Abi+|<3$aH=eYo{$3$J>a*OSe!i&Ay(W_zQ7+uI~Ow&jmq zs?{j^xCPmA{`9Wswb-%QQ_~fTD7^~z@~)I$zv9Pe(XT1~Skvn2Q`mFsO&dq5)$beu zF>@vfYKl0hf;O%6C-`*%(F&r@C02(yQJw9H ze9NOZeh;-?Gv=D>ulRPnFB{KA@eCjpk>0J7?*!p28 zAC3*^XUNS{2UkoRfrXR_Y#|A07Y8^E#R!;|YP#Y-q;zED3$4ly^(oGG%jmrmio4BO|+dMmA^A+~9ad_6z>WFtQeJP)O}3aODapLrBIp4lU0lWTIM zZI#U$xpYr}oHCl%4Z zC-onX}xhHPt#C=&PcC?$-LDlQIjj*)t!cMjvPQi@2CeQR~Y&(zL>lztk|KD3qp*B~YF))_^r8E)T`Qz<;=cVo&kwx0Gn8};wE}UgQoc0lijp- zY0T^6;CsuAH-;xTPK4e_Mr@E}7}Sa@cFy@{(V`|&*p*VN#x*L8?M3fA4q)93$IB%- zc9>id#B^;Z3%|#f%zcOlO>Ru1cihQ~mwJ$DYUfv;aR}$9>qx0eHfz#k=JAZp()d7e z^p10s+0DiIl@lPJhDv4d=1eHAO)e8{b1WV8qFxs|@u(>wT^_FleC434%c8gM!+Z2` z%e*bTEWyEHHckHt(3$gezwjbYsEAZdB8V1NZmbjHeXbmz5 ztFB`>w5)~l+t|mT%7!D9X+p$1P!4zvZK9fUtCA@>yLb~=N6ZgkLMdLjm?vm6dizC` zNSWgWb`-KX{{gRAWotb|cR4%Mazn1U$yl`C#I21UJpQ2d$&0#E4b(@Q@ z8uH2=X*5%^Oz6R1d`%fH$?I=z~Ay_7?iI*R&v?kB!um|RaX2Z~KtOoI${4O_(tu}yL#AMEfW7BEXyG)?W z-+AV4Zf3;|ZrJXO9GlgyImKn}5}49#`a%+qA{@qPC0%tO2xYstJueWIocAP~R% z28@wYKTYC~AKli4KUM-|po4@oe9go8n{3`nhr8<_=b?s32RS&}a0a?kvUwm`i`tS6 zVSd%l@_o=joL_7iR;9)UNeF>s&YuvGFFC`dT-Y#atab~0hkIm-GmAP5T zI7v+#iJ>T$(DF`6$+Svrb)=MVwmWsDKFu2DEmQWPxE7$zVp+R{zlk02vqK4tP|{!x zHw-4xF87eOA!OiQZ`i7^Q@qhTzK-7J`QtKx%nstzz_XHTs#29>TN{RusDH^v%lMl; z9Ga-GYNL0Eqqy_A2+~!ArcT;n-PE2yHXJBbKM^ zP;B;abdO!w$+rU(I}^^OhusO{3IIH+Lu_Dcc)oOx1?TtJNJ#Q{8}Cv*q*icd8?|AX z@gUgdj29gvW6V(-Yz}Er=S$^tjtOt2QU|3J3OlFm*|e@$q`|8@$<0{L<{EQ{N@KSP2!z!f>U6|9Zx}WNDdT`h*y$uTK~~R@nS< zM{ASMa$HNQ>Mp0M>Rg(h!ys=z%IR4OtIl=W+yZZhXfWp%C6^h6?5eO}4$(XMlI*1% zos_%4OZZpPd4G0|;<0dc9m9LU?80^H08;)KMpl@)wDJ5yH$v{-qiVxj=4vhFbj;Z` zeCx3h+E0EsHuGB+lo8MP9kNqPUbCn-^L@AOxY#=%ffVMV%}Wu6bj$g-GM*V-TCA}? zjOP-4QQMkpMb(+JsUr6tu7-Rwl_a6p`FSFic8t!V1D(4>>YS3KweEjEF+ghNxwI^cfNL3+sFus-f8g3h z3A}9;9l(O=nEl*CJgdhqKfm%^HSr`_w9X4R)tPdjL2lGc#ynUw-gL4Y8IsRugPgK# zIWWfvGujizzG_iGQx6Po@Q$^0EWdln)iX{;%~rl67OdUH3sGc(Dbhi&zN z(S{Gj=3mWzCmr5quP+KM(NYwl5%_w_+i zsgdV*x;BmT+{}BTsjrZML*B`ng&bFT3p}REzarCO|LEhz(Z_z|qBX(LboRpRe95}S zsez-ofi_kCC~0!Hcb3SSHe5kuf#jCF@IUoQHpiMxvPDkc=$$caXa{kNiJ?WHh?<4z z0d0<#NsFl1J@*jZG&Ob}=Bz>y_Xz#oXWU2?(8W$2Oj0<@+ z_Y5V*Q`5xg9T$?r;EX`iO0rE2%^S`zjC#(|$;*JsP~(bGpc$ zrklqj-gqM3EEQ`#%$pnWW?*oUpv%4to|}3YU#NNCitLec2M|nCPs}Z26Z0=ht-OW3 zI9~@R!nKLZcA-sTu2k>ulgDHNd}yf__>e>;UNi3Ol1mTE9LBR`%_7e6?1VIV4D)ym z$vpPtQR^Cy5grG+4EynThI=gMae;dr%VQrFM)KD1IE6>=QMLBsyPg4#iaR_teUr8$ ze2p7j`!Z4FjfXld8)t2mGR?2(LyinO4ck;S4nO0>fD~I_=pVa7Z?r!NXZQ9P*Oki>f_4nNo3aY4oXI*7{~dh>uB;E2#b>M?b1!{3O?}whE&rJA`A6pJKS%jPeGB^>t?%1Cf0zWrOwiy* zppCv*4@k>A;NBg~zoyPVRjJMv@OU10#4}Up)bN!O8Z&j|Zn9n(gGM*X4czQCK@Tq+(#vbP1{?iUmLs`=IJ{=@bpc= zeq>-D@1JcFVUvKjuPkId1t*-OgI5^E>x7ei)Cs3YNKWs6gN#Uelo9C9X@1$Pa#bT4zA_0dKtbA^wurw7GOuO0KrplE|G^IP&p=0)|} zu$MU_pXXSY=Sorte)2oz(cbs{D)U@MPHen~GxzBI`AkahhA|=NR^Gt3SoLNWMLCY1 zPlQEIP7T-d$cHJ@&4%LJCq~3&pAa50vt=K%_|x>A0RZ!83|Q3bVyG_(@lS;4bSvXJ82!n2y+yDeXY1#9$pK7&s*T z{mm>J(>So*n40`kqA8hJ;1O!+O?FeKMUvC+DVbJEjH!z0tozT=w!iKpS5*^$>pio7 z5`wCH2p3U%`=zgEYZq7A$@e5D-;af$W^t-q)-QIvhhzWHRbXE!sb;xn-TzqWCDknV z8%w6K+_PanOe^x5=wp-LOHKc&7W}_GBLv6B5w)Xe*XZ~?bGfbQp5v;yH&n|#%`jJz zqilcUdCq>nl8oO|5pQy9esWs(1%FMEVk6F9m0yL|WnUE@55dSFtoR-jO~T{WnBg&Z zPwK2;!q-WQZN&HSFGhtPl=_V)Z4ATn20N@)zGb<}^=;roqKkZfwWFTv+kGqZV{d9D zX$zl533b=5=FT)eNPZnZF7_^tByKK4LbMnoXK`)n+~Wz&%A(T4j(v{#<#Dr5Vhegd z@PhmG{1uiue;3Jz;D|owAHFEZRz9SqYMm^^vG-f66k%)TJw>l3CodF`musKgNq$$q z3F#v?HjDdol^hpVZ~=MhJ;=%^qmg6%Z*e~Ro)`Z{*^&Wx2Bn%hr@;v4@A~)ST)arE z0LO=D`-y=vAzOmM&!fF8z&fbDUE=sC10m5&ESB zu!gi4UBh~YM2uw0ZaI40rfnH{@-%G0__;KsP*7B_neva<4V?{^oU$hM5?C_R znPwb*yh&_EEwwt?jCw>5aIfa&dYDBh01iw)rRUN9iQUGAKk%AtV-4_u`!_6z0Ea6p z-qOlyg;U`JI0DFP^n0fQ8NO&d%ah?N0G#a5u=Fs~qqUS$!DMPPe_I>c`Ky1a(z4Ok zcw!y)RkmoADV=?UFX7qAhK;;&7?{7Q@(YkJd0?BTP4AVn+4|Dwl(3adDU-ZpSMkdL zAewLTpEw`JQ%2{Mu`TT!9Iem7YUV9dCow?o=Eb$aMQ~n9O(IBFNRS?cEB3@_{r#3h zcuS4ESj+HRjXjf#)KKG!<^SlB_^^mGiY@PiS)Y5iHFAEmu#Q#^5wco)4eI!UDP)bR ziVo#W7#@nfM+N+GkE$ate&VH6v)8NvBWA&Aoz@Xde+jFCAEALC^&Vkd-Q*}6f1|gJ z2hz?4;m2zh5U>X>iET^1*pk6)Wvwi-R(2=foVT-QwBbJ?=*EU6DqtfMeXMsfwV2mL z`tZubqqkqjNW#I0zO@E2hOgrU31V*ej%_WdSdL6@zX(yu;$Z1v>3#6YfK03X-Ftno z& zq#wRo5|$oWIqz2E_x{F-Cb@~C#3hg(lQK{GeWV$tjPz5&c+y6fMcJPke+A{VtS?5N z2#D1Yc6v+p^Cp!#vSdm$REdVHD2M6EOiYVsN{nbz;iA!89B5P?BG@VOTzX&8E=lHN zo?)+ZIAyWz`%&PG3Ot({tE&hHw@kx|&;Ent$`ifR6_iquh4-jPfiu+l`x0XadEcT@ ztcr@S5Swn?TrO}7-(s!Z_5_XBj`;`euHng@W@;Akrov5L`Ck;R%}a^s8q3e=0#kCC zQYTaxK)3!Fzg}K(s?^_ReIn$W0iTQd<`B{t?w>gxI&1P4{ghnH(PbjYGua`v_0uO$ zQKj}h`zZ18aKqs6X;+mrC^a+2$)HHwyx}2y<1){U#iAdP!1X#-aq^{XucmWuyq6=1 z(Z}s_g0B!8YGP~)ZkWpUn&1BX)5f8u#HllLJuFIltg6?sx*O(rj~W>)5{!h^S)DB% zU-76qdBaz+d-^s1y{~G1ms8@FFZy`T_d zh@ob@%RmaJ(s-s=@==>u7k`VDETzZHnf^E!fYHb6dk@A@BJ*?Amm1H~Axd>i$5_Yd z*<^DoLgu5L(1-DsgQ?H0GMQ!)1%LQ7M=6d?r`P_TYNicqSU2|;3v$9)7(rzGEqjdl zCXED73oe;Zl=xe8L4Ts9^?t3fe-*8{8i<8ZcRCJBWC|@PpHROpww4f=F*^xyu(lLd z@o^L%vrqCMF)I5<;NW?fo`20VTZ_gHDr`>c1er}TX4P3->la9^80P&;O4uNyYijv;iN1*FUzuDq+mb3^9nOuu~H ztofUCVl{kE;H1=n%#o_4$>;z2Y&{O70?mocyHew5X!br!VMd|Mnbxqvsg1FxT(iS@ zHlw|2T~%nW&*A7rq@v*U9ro{uP!zm+wUBeQ!hBigIlSiXFZnJnwCnCK$@^n- zZ#veezF2)bg7EdkV`~QkY*6dcCUZyDt8Y?Lq{Yc?o$Dy|ED9=%UMPKp8d^=WPY~`& z+<9Lm^whnC>j^U!8>4z;SFk#Waj((`Dew45>-bXD-m2vvw8tR^>E2iW7%XqIYc=%x z&=t6=Z_8Z3*87)xK)LjNWFY1}7k?td-36OnO`R+;{A;aJSWJE-IrDS8CPi!2 z2)(VYI)%qC>#?ULxl{a# z&R0da{YUGM?OsuDtEh5F`s|xbbZwCFPy2(zsX|CQhF`8FEwjMyC38jEkC`c}`U#Cydtt|^d{`!`b4-<9Ro7zNozY&Tc= z+64z6P3*3He#A4GyscA(}P0(S{le6&|77#=~rDyEm-u!Nv~3rZG8 zVs8@;k6WGWSl?>a!c_TVsdBEzc%)2KCqC&D>y!9opV;a1j(98k1hGQfD{4w_7|sa* z;{VUw#BE5x(^K#yDGcIRkb7xC-X|WJfX-L3d-hx2%uRq;(9We~jXt(S4P?IFWj>wl zaVLm{66+ltN+3oqXCKTZN3rndMa!(So9TdUCnR@eOPkOg8ha8TxAcZJsgVaS=t;-6 zpcW(OnEM=b{s{w+Y{d~uq;5BFaR+DgF=8$sN;h{D#|BQs1-Uvob92kvVKWvIPqn8) z?QzWE*QrV9?wcznm)tIMQTTDUtYxpAOxN~l*4%G82`(Nb;FluTSRlKu6EPRPIC~CcC$EzPbs6}vk+2Z$6?X>C~Fr*qxHJDBC%r- z=K;C!mvaR)yr3wtd3W!&#F|KBk;a_soy1=L>b(5jjDi22o2+{zNs#r`nIAy%%#Zq; z$<|u4Ml*`KW7CQGJn+`D`Fl|Gj;Z!-sXUSrI}e&$%1qI-IS-^N&rFpP6>;f;h377Z zEatK0R^L}T-0h<&_6g#%_WXq-W>3u;;xjg`NW4?BpoE)*&`3)_{dh&h1Mjz;LJ7jF zG9=0APl;XEtX)v89;rXoMO~xYdUea8)!CXyhk_9TG^fJf=NLuJ<^}VrM4+3CI6ARl zQc>dV?Y&zR%C%-AHjUT>jGp|?jU=8S*5_KHPfyQ6TK931)qVHyH66@qtc+DyTpbB3E57v+2 zG5Z5zJGUk4mS$uK;!df<;w<2X{tSWf#0%$frB%HwJM(mrlx$Inx~B%lB5=#cRVK)O zKQA6(>UA?v>AbU}oh5eGv8f{dNc1-G)qLmbSl2u*L-l&|%k~0{Dx=nKV^lI8#Ht&@uhsCrI7Pbl1P_j?R6e%`KetD1K%ouaXmL z+S8YoeoP(hmK5ZO_s@Sn-F;U*6Nq`lm^)ZF&;`t!Htq3YlPJ^gtvy7}Q9O5-hqPxh zEwApeczf=yy!3}`xkMi$SZiq#FRCfrdsLPz3+_bq^E_{PCYA-6m=%`EtC4mJ(ork1uzx0JD32FHd;dyZ>qeC%l?vM^LGU9HC@;Hsc)bD9kGrt z2A`r!=AS<+|NmJ!aJNE3q0loc!WxeN9!n3OH}a|{^rxeLGYFT+ymu6h9E{stS@m8Y?b3 ze&xSS4MTy#Qjk9Xa`kZef+>9x?>wD&c3$I@K6!K(;xfRy;p+*9G=1;>Zub~)R~UUN z(@kO1%h7cbyFznsA#&_C=9Je96xa?szlP@2^!H3yt{l=iC8n$+6Dx}n8$t_e-UGLd z#q;Xk+b7neBEG&Zn%tQDut5I3wFegp-0+Xin$qmzIY?}w*?&oX*!#8k#wP{fpYsfwUEVSjuJ@D?dVs`~BgovkIBQ0~@YC`W@bHSFIy z?6gE1Pq1NC>-x;FZmykaL_W^*723AMhe>oWc4;S270bWfFVq^^_`S-j zTC2huz}Birx4Dqy>iP>y9SEO-H>hXrRsYj^B=w)Rc_;qP)`Xjzg7p{6xdzJ{Am2~r zdH+9mn1*oLmHk5Y$x+wps&G*k*oOS#KFT3{m)b+ZF8^$rH|Bm)L-8yCYX+td0pR3H z2q&!725hIVOYcCh>4-jbs477As$Ul$OzTV4`n7)RPkoct^*vYb607%a>eW+vzgzoB z@=vt(5ctX&eEA(;c)swAAy=heB$P+y5{QVpS%K15P%TqeU>tB>*E{LH5M6W`+r86J z&hoIcwqI~JU1AIN2H(8kg$SdVI=@M?4751U6?gtv2zaG!7i(pkSK{3mL9I%izcj2E z9FO56?Xq`HSf1M5f7S@Jp6(NjY)SCzhsSOR44uVXjYz z?Vmckv3%%@+~kQ7^X)xJ4jWtHHd|en;{njqZp9ry`#?FaN%6}uA_p^A+vDl2uk7f| za!+a@-}7K&Q*%?!E88}c6H2a-UY;V5I7nQvSTa<5M`wgO6%=JY zm`lai;|s#qV}2Y8!NV`nL5&nD6~u7fuR@`z$XY>(*vWQ^17pJNWS(Lwe-gI&Nm){;CH01*eb1r`36MFk|c}WUWu&&**1OMDq&|8 z77V>TfWMsH$QV1PG?Y#IxhDC!M8~Vry{Vd9*=Muw+c;=%f4KH02{F*qpvBrWrEJRl z(PA>On>fy|Yur0J*gb33Ww6}iPC(uZaNyc@qS@>;J5x2=Ofrji$c*x>xA$Pmj7RZq z9}+&%JUrg%DS4~|(t!P!a%-{huFs-Ob@`#bmLWh;tTeeXb;XXaUTP~CC9VI(NQ3!g z>tB2N+be~Ib}EtJH`9Lu3)f5*7N9kwn_(#bP(?60MNIAUQbgZpH)gqsl`;gKi0Aaw zV9c&T3giG;&E_0X(~>*r*S^Z&m!p~EzQhr>TrDtvfqKIsBh*>6E zTSHDn>Y*Qu$^P=xS{>;!U6!Y+OV#RSfSJ5htCUw1DA+dVNP0s_Ph-kh9TsUE?$H&J*G=NL zHAOz4_|Kbop`X8KasA!-H9AA4-;qgucK#=)w85$&y?(#YgYO=~{?VBAyoTZ#P+{xF z-@b0^2FFzk_`~vKht>_1bnC{2>F@4@xnqOH`Uwp#MhE%@zpHzMPT^Y0#Jise+{ZWV z==4fhE%ptNfgz&A<3{n=w*~RJKw1cnbjLB91y8hLIur&>dQ1QOMy)w`ek!d;2T6h? z_pMCV&lmZ*wy)MK#Br2@ zc0U>ZNBaTf!8z_+=Itl`9FK?(Urk-=-q~lFe-A8R2rQtrWI0ks`hp$crDiLg4lgc> zT{v%y5E6mXey9-VxY4H~q@kv&$OqFN}=2ydUNiUFQuh1gl#!uK`?rJ}mdy z@5jBb(T~Yni?Tl?h@H#(GZ>lj{{GDTI$HqW<8n;M!8frBd@rD_7Qk281wL$apMq7fR*S+*t%Q_BqSEiC_%|ICz!> zmGSGbjy@OGdM!cRqswv$EgMo=UMXz}hBg%{)n`^FY>#Lyj>a-%}gXFQL z$Bm6tteo>~Luahi8Rw%7?~p_O#f8h$yT*?o`BOOV$Pzw;xhL5m{pe-JIN|6*aqBVR zkX9I5cvrTfv}j)OYjT9GXQvr!?nj(Jtg~~MY8?}RDfB>@9+sy|Fn~-;&D^NcOh?%L z@~R-0$og+v_H>@7sv-tpZUsD9OC&?MDOhTAGDWn04q&K-^CfpkaF8$f^i}DvaA*_h z17R)VO(`AvEZ$#t)RLFm$Sngjlsdm63?9RXhC#)vgp3rHK3Kt#p^rOLc7b#HQYN=H zx1#k+=`=%7b#`mb+EAz?nwq|rrXwcy5C{hUi?%7-YM!l%*55`>zxdyt>K+@>C7%gz!TDIHc5mkCdu7SZ|~XP!)#qeo1e&4^fHfPv6*p9fYloJ zm84|f#)aSwklY#D&)-Yx<9Foj4UR)D%@z3YVn~xJer+i}*e%y1)HJbM>xS0g6jJ*H5a=`=+oc%A#1s7iRDY@V;O3KRx`y@b9<&g9f+yao33tq;LPMAyn$;kz8 zUqolf)J&$FT<{C6rly3Rlm02^h;3VS1}oR4U6=AL>;0viHPMkryv!}-tceing@1MU zpF<;7XQB35h9HV;9<0gY%|1!K`Vu7BZ5@vNFuUOM7vSu(ZUO%5SbAb|IBRghn(|Ud zA)g+V-VWam)|9`glb^Sy6w}lEIz!h^5sX@6gEeLFpMy2!D69+VQ&?E?Ysw%zwf!|^ z7~pA5S$lPtHO0wefe7kd8b${n>r0dkcy9&kZnaBk)B6Uic}+0$z*hP{Nz;-Mxi@d4lznZ0ghS1prR$G4 zjq6XH4r809vHn$0FF*XWtGL_}9dPwWzmD(cTJ3B^3lE|CN``!Tt+MRzXNkR`WaD?# z(XD)}tZQaeS~JCU&I{^u^kFhcshr8RcN^RH>2^T-la_dcqA$*{t4ecv4Vw!96cd+bo#ug&SjLBYu#$=6D*Eu~3satDT=nvRRC!P=&Z z$sITRJ^Q9#@BA$b)g1$yYiPOQOU+yy_8zvDdP>;1TRk26Y{~S^IA#q_RqkU!NLZ|9 zp0=|y$T<2&;(=a`IO3I^6|Fy44^>VvB;%E*lCdXJi^EzG$06CI#|$CJHanE?fEB4I zaUYHKzx#ec^{|Fgu?)BHJMYN{`5THhyv1JuIW~-n8jd!+!29ZiJ{BQpUBa(~xXb`@aMH z-%|g#%>RvO(}4QJWzeMrlpD|O#dru81qU~v4X~G*SXS{YcP}H@Wd6t>&OZ-nXU3#| zN_g+q8jiMT4H1?iZ=5@BZe-Rcf`D@q`r#hV+RVk5GFc5_%Hyh>dm6O^6hX4DDLD|h{w1uGI% z?whiZI!%bUMfMck9B8Xs%?tDDUI@kFCr@90^5nMO&qnJ9Xf(n@1~abd-Ty9Yww++8 z=!hod-s$)3qB0Fiv_Vb~1@PWm@yf0JqYKxPv0^nx!TDvpgfOZcrz#h_D*q}va7#E! z0+$1)Z&`ux!!@nbS2_D3JEefg#;FXqfo*CAnY7lOdYZ4RvH!^aExbkOEUsjOr+kf(U+Z<`=Y|L>_p-JWxvBDPD;vO9A>2taN+@{riUcx8@f@Sw0Wf%O-nf8;}vaAMSnZKV5IovUhtx)4w@IoXA{z3grh_ zJ5+n2>4iV%%ovzDLdbR_qRFu6n4O)i#=F%8e+sqML>2<8FTxxE#5p^wO@LgTlU$w0 zVbU6%G}f9*+#^&_bDzD{jIV1=WJ$j6C+<_-ej!_eWItxCa(fMpjcfpe$EA#6Zg=4) z=O9%D^Ax&m4Jq3*nY+ofxAa?b={dQIofH5~-!#RP3*dc{$=+JB_!a~vB^=Ug9k*98m3S7^Vrr(nbuooX@^HEHZx=ZRtHpO1Pc zhCMmisZHPgav)pVT3t!Cwjy$ib-8C1c>8!4MUpeyl5e(rGDuq!|}$- zzT8xIIL3}-zYe_io0oUVLQKq=n{RkH`wC~pHnF)m`@Ssu3|)D&X9)9b?X$ThH5{b; zd37HUe4q7Rs1A^+Z}0NWN2QM#zs|vOqne3Oq+Jhw%&8(Uh;O14H?ADq@Ou0J?1cTj z8Rm1zCX5c*V#1o3ST$H`P~jXw2k>d(J5Ut{XlUUN8n6GGXyIh$%zuX#{xHeW!q-pf zLJP8=J6Bkv`FiA-XZW@V}(W=?~>{)4T2IN*aCzCwR z^bNi_-vnvrrPx(j;l@sUrgL-Ck|NWofDxwzKKAm^1CcEX(+9XZ)Q=oCUBA330|-vs z(|V*_MuVzLs3~il(lC9n8c9LS~o5_#3 z*{N(kfs;d_TbCv`-kW_|@~*47WBw|EW(rZ$pFtUS3Kt~dNTQpneK6UR=j2!JwMs#i z?YK)#>Af6s7c6!lt!R;+``cMRcSMa#Pf5A;*g28WDSewYcqnI$OOtEvP1^fj%AFhW z4swT*{8Mfcv9t_u2kp>Wazf)NvhkBs#*q+hT|L`DYEl0lZgh^#Ejg z?7jXH)HLswzM*)BcR;eOB|QLW-X73Si4H1`T?b*A4}Ylj3|GZ1 z0~$KJfP1#10pAH&4EFDmw5PWRXj9A)r0Wsuk}H-P6!Fa?I*U5`?_xI`wd!FR0J?e=x+qxWwg(DLp8yqtD` zCXmB1lI|HIE$>EplK}@;ff9YJZdDQ|Qdj=LPa-WJ6n^&VR^e4jDT#YdhnMm(vDZtm>*0TfI@6EhU-@D2v@zPoiyc>#BH3+`;+J#KcBKmHkqnHsG zzLn0)jNGoplUn?}&f1n0+@&&o zYj$m+Y%sGFn{DNY<$t2d&g5Gk{yzEq_6?@pxJ6?%<1FYT9fEh&JKM;frN+r6K;R~j z``XOc>}JRN{WWXBbk6XI2SvG@Fo5oB#SXe)z4~--s%Efw#d-iE_8XP}Ooxqkj`g_gge$CLVD z+ep#B)>hH+1p~K&p|SN{v^m(R?VO!)WAmld^zFge zoCz;S%RR`e?mjt9@ULxJP_v!G@X(h3o~O}N&2}xnqT;)usCjkUC7DEIg^m0u2aD} zU4~zdu(z1S!AyfRvvT!o%;n$ZkQBHBh27@&Qm87qI+)4A)B$Wf>D|_D zw2g~nvOGHfC|=)spV`#Ys~QQtDNDe1aIR}h&Wa$A7PVF*MzIQ4JL$U`>ATvb@5HL% zQXd1fw5Rti1iM|WKXo+nzI@x-)Bhafww&60p8A=6*a~vH_F*b=Rbd}~Fsn-+4*B2g z!#RNIBh?w)(mRgI^-BU+_=j7_&vEPj(E!|4*&X=N zdEjGwq)P#h`CK}>mXWkE=nlWvjhy=YufqT0=9{}lWCeG2+zh}J&&Z#yl3{$J8RH0a4s}Eiz7o_9jJ$tjrAVB-6AwqGG8c59}wn<=)=H=uO+j1f@sgjIM zCXTOiRkpm3H0{M#wY*QdPJYz1GdsIz9f8_F%+za2oT%ga@#&0hwqla8rc1`Wea-xG zYf24UrSMHw&Dz9iMX|3r$?_N$uFsNXB?j2inek;PZMCoDCJ61AA2G-C|ciGNWDxU0AAFN@fY$Z43gz98` zQ*whOZT)s1$oR(IoPD$8!jZIOjpdGDDE*XVt5bJ^v2^8EY z343p*1_1`yd_y46Jn@mq!X`=lUeC~`gPXaTr|-BMsN)=25Ah(|_+bTGB05Jcq#l;1 zZKpB&eg#f+d8a$lB$R7yj9^xEI_!~Mi0dj|TZcYvEA2RH;2 z=$pvFlhHR{96$!PjC!x}`h7~}4Dv);-ih>99$)7qF!I}|lp(g!Bu`V%gU?2!J$B1u zdS^kN0WBHYYNHrARY{tR8_J{g zO+b+tg)`ypJowfKQ$Rk`dhsy!WM{n?9OUmV`r5<^^!WGxJN64#64!NKFn%7lvNviv zUOg=Pfb+XB+PPYW=$iI!Zre4RyKbC}*v3iL%ZHqHRcfXk{uG})_08hY47(RbXA%5H z-X@@<_72}bGa`7sya^-zQ3hQuT8|#|7KE6ZxkQ8}?T_E^71XRMt8ufLVQzkI)APXf zdoXn@$=C5bb(m8iRm9h%P@bqI*!w@PZ%OF9)XX;3e55Esq)V+W)jK=!Qe2a-=7*|= zT$}>euPKt`OvN{+7mvU~%qPCsr(vpyN|yKG1QI9WaT|P<4v@vXD^pb#CBk5aj8GO@ z`|a$UlETg+j3BdaFV)t}s(j-&(71t2t%n`5volq<+%`cfISYFD&d&3KZ-2Ie%ku>% zJE+6+eQez{c&B_x$D}yHtFBVP3T*gO1ANq31yAKGPz+#ox0m0iIR~rtr9tbdp+K(h zNi{%i#|%=Ry_%)@D*l7M>lA_uQBAB6@1_U_tgm%+_O{(z7Zcv}$w;y|@c6`afGe%S zxz~JsIvPaoAR)IId?>*~(MIzJ6&!{i5r)6?B|4d^dr-q93i4_maVI(q1)U%5>6{`I zi1)#`Ub31V3|ffRA4L}^5+ua?@}i6zeyROTx|BK5D&4Ha77{ZG3IHkVy`c@~%Tt+2 z@`t1mrCpaP4xJ}Y&nXyOqW7!}YK}JS!IxM$&Q+-oc%go$P=8DHz6?Wwyp`j4;tCYE@w`bg2HibK@Tz2nIKklcz=}m`WxC)_C4c+u5ejTmP8>E@@ zNcCZzM=>A=+|22uW)xvOWiwfo{+nNEGWnrSV;!U%ggoiAus7L;Y$9_YNvsL70by^# z`GezRoP5n6i*<5Km+v}utv%ZALHGU-yCsZ68Yz3m&%#Se-=(d3#y8P z{T=$Jcq3xGY83W*8F3i(J88B3Hlo;n<81=L5KhAmLKrc%r>Bqx6B0%K=|C(az~al9 zY!da-dBPY60dRKWJV3>2;_1w6&mO{>tg6?%x0{<~!^#$XAIEIO2x`36){$T#x@XaD zCW^CWQ1p~Jb{61Is%Adbd_ZQ z>P}EcM;^jeI47ML|4%P+X6zWP6(P-6A)&T4e9|Q$Wu5b~aJ0j>*aBN>;=UEn#$U|7 z%KjBaMl5uG)inn=ocpjAU`XL^@?8sLufewcRh+mnQZ#o2oWIuNwuzc;It0iFMi1j0 z12zhhs}y#9tADI#`=K9qR-P6+q_w20tP`B*!*@mF#uBMDvdg$F;Q|OS=MDrq9~a4h zWo}Ez8_vcGA*%~V9k{ug3qs`hAu!$kYaQ3B;G5$qd3@Eja!h|U(N^FS2W$SZ)GA7W%_WSO{{Ad>&LMO!U3EO_v)MV> z$m)WP73^boIk-lGZKUKkwW%O9Z{mQW)~bQsa}MsBkZah{YwpZT%P>p^D+`8sI2h5y z9gwhH1Dlmw)7Kv>8-yKsJ_2K2uFtu8Zt7l7+Sa)4^&Fe8=k@&x>e0Lai2o+;!ZiB- zFz#$_+PULii*YV}i~(3YINGp{-z3UpLch}=;eK~_2f_SZ^GJ!-KMxDS@AcdKBHO2|fM)%VA$M$f!RrycZtGPQZNQ&O>9WjgoFL%`Az==VydG_M zpW2z}(@T$=Ue>a!I92-nROtf#!}0fT5kgnd$j$aWpS-^}O5CwVn-nr=Hlgs$&gr ziH@S68swp%y=$-%7#G33;UKt#6ggcbJ_$t^b_juYyusfm0f*jZM50YyG4j2qg^^4K zq7zKLEQC(bhSnf=q$k1JGgaroT~mAz8~+ZeQ~V=UdhdHTqV`HXz5ZK-ay!kHZsQSu zsCm?V8m%kZ>ZiEPZox(2VH^)&8+fYI z31=>s7zF`oB*q{0F^t^6QQ(U7>8q)a^b>Al3Fwd$K?49uYvSWUBxd5gudaE-G{#X~ zTUx7358`7zgA7H|1MPg6;q{FpKZc8<4f$mI@?U5Otp25;Z)jfKBTNepdee~Av4q6T z$B5PV*ccz&SlT~OHjISq>&ez^Mr9uk z#a{67wVyt$aHV?b`B(0FcY^1a-SZz7GgsU+yProjwWF^!g}5GT@agFpO1L3?q{c7rl$=jNc(*`~6Ry8AfXbYM57?d@cFW zxi|JFlC0&2v|dZDJoly#xZ>`j)T|u^GiH_*jT1Moz2e|lrDPD4_du0r54c#z@Z+cY z8{B(N;#APg&9JHC;C*b*n`zRQU*z4}MJ7NQA!}^IHjY@tAh6B;F}CLy>AYn@X?U%m z{wOmLit{t|{*}&=Z7#~_>Ml-lR`Dshk}G~gv2v@hU%tXRDin@0eH@MxTaKaryo&Z& z5kHPscU;7eyuSkR|A~;XkT&tz7Re}ZtZ4dvg=7&FNJ{naTvH+YqY;N|Bw@L90 zCqEcNPWtfcefV9O%@pDT$%$h;B@)4-cgPt42esZ!LO02oe22;V-iO==`E9PY8!AB_us>{F$=!BvM1(Pa9%GX0be z-=_|zuEVCXj|kRh>05z4+lUFNjFeK>1E`mYXeE_&%qNT?j0kEKD&!M*S$?4-@m&NElr|;znD1IP^m^eLACMbHS zIKRs%?(a+no`(hHar-_D_E)B9^?-(#Ur!}^LaxCvg3rjWrC0gC`Z@WTmY)IN6^A?c z4*d-Ha`uh|HKmO;fAjDn6a$`!UPN_zLyLRg=)`2^Nf$+2<$(*P%Um2 zawA@{y3`wAmaHzrD?=TfHwpEzx~uxQytTTk`nWuK87oh_jTgs+Vq@pk{Vk-kxo+>v zBl?Szx{mrY+T#Ub@2qk*YWsWr+213I0kP4Pi0n1CJXgjs)Qi3(tE0@3>3#$IDa3lU zDIp_r}4^ba%3eC7i!^2>oVsf6}81tug;_w~BbfrRl>2EzciVoH&zgeeBMg zz3PDk_JuZ&PgM_OBRXJ80|Sze)=Tx!ysI84&J?X*%R5t)102CViu{$?vFXb7nUWPC zaA<1UV9t*P!!S5sYKhg`o~#~h9Pb-GlYiz6RvjYn^iuep<5RQpBbYCmQc-xN#oysD z35e)MxlCim3f8Wgx8rcHG5eqdiszsiCq!c( z1XL8qP+JJ=pDCVwF^~f*?R1J8&n^Z$Gv$o7YVYA-Lhy*!Q}IpNXcM8Q{Vx?S)y)Qc zMRMsQ&h-7EhBC~NMX$*cDb#2zPI!O~50&B)h=?+N%Vji~E|(e1JhN2RZ%p`(lGvSf zn#n_t@98XTc1}_|8xkNWRE8Eo<&fY(xq?w2iE3;PjRgue9sew}%_O`_RqS*hWnAL7 zo&nx#{=tUk5_cSGwpZhomGDFv3DX}P1aDX^4#1mP`@Xit znX`r?lOqh;7}u9W5v((AX0kK~a=`u6$>a@i>))SiM3mbeJ>p2WA2)=cuhWP$*LCXK zUYAo~lMAWk>k$mUA5`mGU8I1c8Q%b)*y(5hSpT$Vh%K;; zpJ2F|_nU+{#d=|WUw<@n=`WHEAe)(wvS)M(^HQY3`()m;kIGKs&;O%D%$u^eg9>n$ z>*|-(RmQ4<05=z8USZHxhF;|P$Ud~=WPh#PZRvl+RTa*xI$I~7pIHTS1=ua9$jPw{r_8Zaq*D_bW!tgSGqWb_d>e( z-H^|xi!W{XOuG1xqJ?y^ZdNzCxVIul7wbMQq>C-bb)}0RxsqRmF6s>4JY6i?FGm;G z&_=KXMd1Y5BM@xu4< zx08e$3#g{u$)lF+>121(|Foni`DT88K0aO|GI9Ckxt4W{OA!02<^$9K9S^?CE{Un z-ArKG@p=4Be~?<1PgblPzi44H^5Lzt_LUQ3_jsqB8#}cM%+YB2&EHU5BSFg-3%Njd zRw)3ogLuY?p{k^NV(q^Kx)?n+T=y4>5yHwg54V2TVI;DvkG~(v-Y=&Ly|d)6d8X7# zmKA3OF@ve@_?;>&9rktRPQgI*unqG382tP1Z44|`_d5+ahBYa@_G>!(Z;7^gw5P8J z0v{8Joqh8AQ$8G1b^2y6aC`+grU;Io{p|DMIJi3;Qv}DjPr>nzYjSYx-Vwl&n+MF` z;T$wSQ&{Tt1Z&K!HkPK zh6JbU$My>I6AyNS`F_FNe%a^3T=yLZ^IhBjM=+1=4l~?HCaf=t=bqhRZWGMIKOg32 zu68iLvF(2Z^Bo*v>VoGkF#l^jPyKB-Jns<9b1wZ{Jn!$rJk*C7nVYyk#ai|9GIblw z9CNwjR#2@eAJWwbZD=anC2X&37JdI4yCp0mivQEF7+U8-dH#+GLFUmr-=Uh+qBbQj zy2t+BZ-3YDmjIFcRX)!Oddu{U+e5iXhZ~)XxxHJb!MFmDWbX0al5AE6Em;je(gOjH ztRVW~9mDW9Y;CxYWc_Px_$g09W^2QPxu-|`CwNUtkeI>JV(6F6^>rBiaQu

  • @-CM}`U>gQIK3Iip22WQP>1TG(6>m5ub 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

    ;?B>5h%V6}JI!{(o&F4+Md-F2p( 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%0ADp%8j;E&K3GCkaV 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�&glm5)KjaEK^n6d3dvW%t*}hm}hOmn+ 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 z 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 ZiuL;k=75h{|L=3~!sz4A!Hw=Y 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%0AXztRMi><6+X194yWnE&>T4 zECl_GuJR;}sgjd4T`)i<=%GM`Y~WjJu4b@Z&<$dVvO>+f(l+>Iu@g%8+&q9;OrYa4gJ z7&`Q8;Do%;k#>RBdd^cg!umm3r|3-t6A8wItz#}MssBGI}(KZEIEEcC?BoI^HM<9dFxM>$~@9@N9c6*9k zXy@31TJ|~jJERZFSp-ht&YOIP5yZIN0EZ@vyZ}$mQ82YYFZ}%-wY#v;6;hcJ_*IqY zfl1(RzPE@CnzfT>p&XpQK#moO3DB!#7}7d%?>2@Uj+Q}swtxj(3{FpTgK$R_+SCE8 z0IjaW-}nH_4)^qhKY)VPSGL_*GUGT$^u1o2tNBwRr;;P(h_@Phf1#XIA$UX6F9VBA zeMC}a$szSY!7YE);mf9xI$#4fmm@&_zwxo0KkH=p{L-Ez_3KY^F-K3O-kSeTIoIN? z$nBpcYh&tEy~{ERnJ!&9dF(**yaguup+54Ra@m1m*q>zBJ!+meW70u%8G+oCVvQev zNmCsaNk#Y!NY((4Z&ne98r&Ya5`W*M%Sz+|e8ph|<-n}m9{{PvpCwGtSNgwaGKDeeuMz20y5}ii{bV&9J@qlzBKdNG91G>2 zn2?Z{_2sm!)(|lxZ%&6Gl(j}S@;rXQwtWW`NDD(d5E4bMzjsmNCV64p|1Fj<{L6}f z4p|6t67tE5bn=h1KwswfqoFX~1VT4I=a-+m9P#YL@vt~dcqsh=(tM8l2w_!v6sU9fM6nS%od30X9Tj+8C^-gbw2!=)R;yb(~pN`T;h` zRVbNVvU$pV`Y5<@V%sWiwT~waNJXSggx1u9_0eRkx51&GQ(5i`y>;SFICcIkPM!2n zql;~=IqMe>cxz>GZSW%m(S-A_JV50u--`AfA7P9CCVm)K4;gV2uFJmgNZ{~o{EJ1u z4juMP`+=Q(Yvep0&4o@S9=6sI(aP<@w;sk3@OD_shug+`XX}3Jv|TZP+cK+U^R%Zq z`~j(nhcLXP)Cy9en5BeG2)t;w=o7(&OipMgv}(nx(FgQ~ zWRARz>Bo`C`G6TZz1Sa3BU$NH@9p=9p3AdT+?3^=RjglS{=_QfQtXH7;o6C9L+Y+7 zaLf|2V676o&u-;9Hpd(_$)rhmSE)lQtaa42cl931DGuHm-am0P zjz`54Gr2Ow@VuVX7qdHEE2*#eka4jvwL>RffDJ%W>pp40U210KX$14NBb?UY=Xyy! z)#Eg6r!D!&gOSKfZ8Mk2ynO>3(zKt@+Yd(0>wKIzm>kU}PqHSi%{NUZ4vrmOc~H!m zxW%PlCO@}~6>gsR90xNjHSsVEK}ntmx%4ayFNX*JFdSk(+jP=ifsGzW(N3{j^(oa+ zP2MQ990y&$D`jY;5y<6MOeXhZnszZKo%hjRZ?7rw4GAV|uG{q-jS5rxe`@-=!tgA2 ztS-epKi6H?#CqEY95!gxfO~4sliHJ3+J$iG@4dJV4&g#R9_~#hg!r0x2Bx|fzf05j zGEA7EhxFof=*#@@gJ*P?lvUPQgXB~4KI3eu2!8d zDfwDBO;VtV=Ss>Da3e`6g0e3uBeigfq>R?8``|;{LsIM~%+W&TlLtgi@scPg_h?zN zChwfDF~bLAfi%*XBWbL98mu>U;TzE?DkK=yC_ZW~BBx~|*-{)v8&oig618e3LeAj-HJ%pTwcr9on$rb^FxEf?XA4x^i7+be zVd4ovb#*}x{KlZeO3G^Juu=w!yWqgTA#;E9^r~Zf=?TMM+rZ8GnAa9?vEBes)b{mD z%dHR|-?Iym3UMZzjrc&K@ZNO~BskAVP2iAaEy&o&meQT^M$1%jYl!(RVm;jTRm|CA zK}07+30vj*0SbTl06$lSYbQ;{5u0kwmfrn##$qE7asW8zwceFF0$z2I+CBpx%if8IXV~NDjdUsyU@?a6(i)g)Fz) zgGS%%iM-5O?Gt!eAp2TyJ}t~_Y$`Y^e;GCv{3yl_gv&;DAl)TpmM)7#^H=HB>5}p= zHWgClQN5ZgK`X`%gbM%%ka{)g9y<_2+Q;ydp-Bi0w*d?m?mh)81XI5&b1T95zg9SO zI*6qX9)O<>6Ttwt`YN^~C2}f&1P?v#qz;A~wwk-hV3a*>nQrkirvorujXEuQKku^p z!aF4`z77Iu$4-3@_29FMtej=E_5vG%XdO%m$4p~O48>Zu|7@vv=Vw3jrUS(Q<_*{#HOM; zk3M9+IuxdsFKtsx)?sC4iA+Fspkca4A!fx-M2yR>mxFC8uXrGRbV9j6B6tH-UKeGkaey>Ji6mf%$^ zhpSu-xHcUINZg06=RFko0ryJ@UE=XQ@H{Ac0FGaM74x_TJ!OD3nq?mY_QC5I*n>S> z3mFI-L80SXXum-CWf1KCZw(^RZ(y^94M~Ie^feqc$UlgspQCVXhs|Ok1!+G9$9@=I z#DQ0}k_H{G>nPVyIx!$D`gX7#6 z`GBw;BOkrAaD{w8*p8MDn7zv71HyKseB^53GWme8Es~D`U|8}2VXI^{%w7{E1;TcK ze2j+kk$jASZA(7J!VD)LH)SC zSiPD!6xmADiEJgtM79!9B3p?ck*!1vVx8;N#0Iw_f&?*&aqQg6$dEyf*c4037QLD+ z%ihzLzfEB1DORzY^^s35<^Z=k^7j*${C(G!zt#ZnI(wMslpA2_P5Bu)*2Im>$km0`QLeXMEwef@qmM2t0%<+ zg~z9&$?WRhsNyT9NChLQ2g;&_R2Xu`RSouqC!wGs!|ZA!WE`N6R2e$Wg*qqhF@CYscPgq?UhM;j{}4JGP|D0 zScCz+u4NT|vZS5!4s!54WD(*Jesv?_5Q;S(mK20v3!+&o{MtDfjp!&CL+U&>A~9P| zBov2dC@2aD1+!ETk2SfTL=_r=`!%({KP?y8fWG}aepp*}_#a-HkDu!OZ#DiH{Os4% zCG;HD`?j62miz;i88XiI@`_g-$4Uvn19>7MY|XD`86t$STY{xwe?ljgamS<<+w=|?D#rg?CDvC5AEB64_C!>>}^9?#9E{B%qj{-;g4vnm}i6{a|2&tKeg-~IKv`?b#pobTPR;6XV zUz(%mrDRX^26tK;OLdxzH+IbDf1rM)7j6q~HarNjyj{;za6!$ll2Bb0geMg)!BWREdNDb*mp%;~>Y z0<{w|O)hV|Z&$#H^WA?LCBlh)&?xP&D;hm|AcYOZKDH+>mhoB{ymJJgQysGF5bttN zTSVH$SrdBi0|@PU{Qbls@B{o!M>=j4;A_Gm=nMGUo+(f8YkN;btXrukg

    dW~~BF$4_)5Z)q0Afez7?Nhr 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

    nU**QG zs0gu0C5V2pA4TS{@Q1JN6-M*HAw>SY8U(<^nMFtB?^{gtTZt!3#q}CwKEuRbBo(<0 zFbZFx+TQj!d|{T4k0qwVz1hA!bwL+(@#T6p@gu1b?d=<_5(}BgZH9RgMKR!2J06nU zA)I4R|COW+!kc>U8v^NU$D2p!_j8wp?Sb96ovn-`q+kE) zd0eC90N9ZwEV~guG7-_UR{O9j`*dG9Z?*J?fi$!R?FE0t%SVQ1n%+Bn3oBs{IUo7v zsT6PiMs(=qyDqC_$TXLt2lMZcJK7plzN^k(-*j7Ny(xvT^Qd9loN>c}zlcYov$UQE zFPV6zgs$c|{-lpyL!EycM=g)nPG2L(Q&SY_$Nq|$L5*$)JZM9lqKDwtinS5#fYb;# zcx+o&(bV^S$5rbq=b>RF1^;E@by)ndqF?TZ@DCL>CPw5?9@ao<^B}IBSZ%%oJ1%MB zmqv;`Mw4d$&mlFsDQ+h;chlrN*%PiJP znA+4Jo-3eVm{MRo*BG96=@OPCSK8LT$L&^dAPOUTeCMX`7f^<$GhX*)2CC)PiRb>D z53oyTD|L0bj7pFARB7r@25=C|18*JeokIU|OfMdn2_gzZ-1WnDenU7&fxg2nXwBMb zS@?S$T7lp%+rp_r;59&Nw8pWnPJ~sJNL=zIk!T_Lp^k7p|H77`=^%Txo~Ggb61mwl zuF8Czn1UrLu)}S= zpH-9&9RN)~h&Oc%Hm70`&qa%o`!E^;Dp84l;JGN8I{ZakSKvD+N|N2%mbamMBT^FJ z{TY7M3P`@xGuqq=pjEM{-OyE6JweGdO0>>yiN+_vp$SBjAVc)xy61!5wZltM=l z?AY5^C)B07lU6Hiwpwa^ht0+B>vH%a3e z(Eh+e*>&K7sE-#XM(2Q@Azv2#^OD1I@|~D+TV=xYoK2-ST-~3vBa8V;>=rr|z0V((+B|RD4n$(7V4Si7&g_c&&RP zuF1=-8Q<$p!S7|*5&E3kon>6Vo1Fz+Ns+%w()F&SA5_v6uB3Jd+>44iuB5RIlGFo9 zdM5;k{Zl{TBOLk07l9PMwF;ND9_z3dp3NKTnft5wq6c1{SLjB;4X^Ku6~s$seLUrJ z^ztz^3hql$Vj)T(X%)4xX1)C1F}=(KEbyX&opWS+53ZU!{XC32U&r=y2OAZ1K|N5X zW$1CNLi#W#^D&z+3RKQtkTXv-oLXObcl-$bboq+!JT@JU?BxZ(9g%L2q5b)LIEEO+ z7imX~*)p~lgm&^g`iL|v!Zf`XE=Q*hingl?)q3<^gYc^rtYy2kFS7Q)=a?;a!TSN1 zAmZ*S!*X2*!1upKI%D7zp|b_J*oB&#(W60uX(95f9(xJIeXgX-#z@l5uB6H5O43MI z(t=!pzOO4O*iVwqcO^|2Df4uyE2(R-Bzav)tNTjx`>1hPa6OqPNng8?mTi~j`39I> z>Y=qq2>ntd#dR0F4)r~B5I8wOP^G*L5_1{#tH6Ea{bEbDeubSmqGoRA#rFGPa%`fo zoDPNMZBbbES7m4W%F7_P3UFC7v`Taps^DFeqOvuZZ^GhgDJgF0kanArPL4)oevQLJ z5hz8L6gmOtwH64)OKtn5FWjF@MM=F=dD8zE{DuvmdPVVSo{>BW21{{Ie+SuH{!jW( zNj=FYvmW{nMEs@o)1$pOz5&x%iJH?&&9vS8cM%*j@Hte7H6>e z{#)>O4YU@y{kscBPiQT+O+K`PF_*yVJK0W3rCu8Sv~`0J7Z5>|ZCPKXpC)P~RGR&m z1yLilEt#?G&HeOZH2 zE$5R@^VQ{~+5!*M>ZZ}iOnqfl(J2xC+r}WdW6@7MVaF^j3 z?kKZ3#XSs7-TaD#Vq>gv2cJg)2neQ&d8B$P!5yd!h{p2}G@i&FAQ^kRSfmfiSbE22 zcapO31Y>bSWFV3e`{Y5;hfEj^@*LoO+pN*6YoHN6X5*+tKUyl$GatKDq9VW({X*u) z@*7Cz>962Z?sNkutu5<<7Q}<6STVSm%~02o8i;Cp9ZK9D3VZwb6%zz&`cUqH?oVhiUh6aHI z&zwtcBM#Ep-z@1*F7y!o2;WAq@iSiXB3~h?3e`X5UpsH4r9r2V;F5`EzZQ4V*V2H@%xzQ_eWcn~|m`|u-r;>hxP-=MNxjG~5Q|6>5}c%xen66KJMont zMIG8tx}<=)#y-?mMb@b*Lg@vn${Q+426Uk$HFs{0JnSlxVijo`ek5|2Dk5n6@dplD zS%i)oZa9*sN((VB|4*gsRB+({s)*obqZFAw zmh)I!ncMsVY@~;)xo1>!Yzy=6%9te?T*Kdu-W!YTgT=!pjk{cREZj#vQu)&VFqNMx zx~fEf-nra0Q#+SOo^!R<)hg{F6RJz#|B?Guema0Mla6T(TXurWrxev6YyU2@)pRB! zm%8A3(-hQMwX7zT`)IB>=0tp|w9u(8rHO#G9{|C7Va>3KV7!xc8?0cFPhDBXPS$}E zEcIostV>k)YJ|@qgV)9VL$ zTi;?>P;Bn_0FrV?^oOV!{Vuva`gOE1`bBhG^t0%e=*Q8`QN$OH%RWt#%s}ojTFt>813#0f`-1{( zg?h$Z*+t&$O6odalIR*~m#TkClKQ%m&QwX_hiIwr*MqB|`BPn`{_i5C`@51-PgA-- zM1$S@gDQ!8UpwjJ3zhEgN}6+#BrSC%E$uJO|J#+6H9(U7;Y!-nTYBUhfOhj&UMxxD zT}cC8lID3^+b)$gLUtRB?qMfgy+|@CZUu2PC=XVBNnC#>z^! zK=N@G_JXfF+sAM5qxtqR8HMNrZ+CqlU5($Bv;>riQj~XgsY#`3{H~)tbGfDyhU(>aG`MYd^@9bS>UVM~~e5+C8p^07Vkzot<>_l>IE#!IkuHs3l1H z6{||#mE+kL>{)nkt5UtAwBw)Pw)O*C{l9Ky#VWPmVPdhhkvbGodx@s$FFEN-hYfnc zN=AYMnP+cz*m-Mcy;$8(j{;{)^4^0d?edD6N@XKsylg07sW$CI-@EbUGI8e`4^PWPGb- zR^i=UbZmuwM#u>$^vad*hcDGx%w+&oc%n7eDsT@k`MdNY-q|jSN4K=g_eRr3$xb}5 z06`2*H8#BWaLx|(BpU2hs`(It4dS^3SWV7Cymvd8MDRqUi5;X%25p%C-q|t%HcY+b z=vu(Y(q|m6DE43GR1~%L;M3Lu({7#)N3vG>#9jbHiBjA~Scnt#hvp)#99|K%0=z&; z`vjYNrvuA_r~;dWlc(;3Ep@ZK-%--#=w*tSQqWyoejM9ZfPHoQ!+pH~K5$H5RaRf~ z>wmv5oqfGM=Z}u7@A3M|u=?urANs0hUswF$zCN0AoN+C=RN-(#-S3ZUF8liCsXscd zTaVY*5Ua1TsxR`JbPy{7fZ}zBrtAc^{w%PVvy6L+ti4hmKGXqw;6i!>b9QiFS+3gJE9Pn3RNnRefF!XDO!0^zoZ32G_{o2=8 zz5`1y^lO2y{0Kf+p(`qc4kib#4gH!7^$AL~Ws8tF7N2iZr9Q`946bG8X;@Y@x3g-S z;1UW9i)$=Gh3I>*2Oz&*@;d|{#aRt}nSJHYqjlf?j|m8Ef{)^`j#FtxRi=J(35<-4 zenH)aB3EvVi8ul)`y2dsujI0&N~+5RDVoz>tl5P+fzHekzM?9jLhn_|nY?YhJglnL zE3FT}0ddr^4_m`Q%w_0)9u4v$?_vX28st`Hv@_qgj+f%=)>SCg+!mg?ZWrUHE>;c) zR|#8I?^9nt=t!){DBeKMX2^9ninB!r(T2LngmicD)5Dqp~*xTA3>#em-N2AFqN1{D@g~r;9>|q zL%-(v!n-ZeZ@e~<@PJ@900Lq<4>;xTTYkb{STU^We*xJ{e&JK>lW68A9n^j;B<3rp zGn()I(fA)^1D87aKzukI1&z|xw%#%3gv5kV488|h#>U3pgBRze6J^fY_J!(X%%>1n zpqjEQY|2Nm4SSa8PbU~8E>)$sPllj#&>BP>D~k|bc@?t4p&2jQjI?E2ICm)CqAnu~ zV5u2q6h7IMU!E69ws^)0z(v=<)dzn=X)WMBE}i1n3Rq9!NK6h)>k_IE&})W^Fh1Ra z1F3N`Ufiz;1%?Q>D z=&0EXpsTz3O1eM#xx!%@0F9hN8-RZa*A>F8*wgSBEVjc9gpKtt!2ndK6|^+tWzer{ z%78qGVuxzJD91)G8|hqcIRm9;N)}ACbE#HJD7!Vh^yD$XFm7s|~;-(tS5l zsL06KU`r9Z*+2at|J>W;gqA<4Sz&8vH3(2M!k zk1;fL0UXf0R4Zt<^1>J6*k1AwaTNiI;p40- z*ID7^=oqrg@#b(Y+MEGK?40d5ohSBIYTJqE+_9Y;w{KB?&yDw8aBSaR^i6kJTdp~M zKYjP{`VL>H`hM&kSKmVz`w`;}8x+ za1Y)A0`E?Mb#W=L02>{}A{#aV;|JsVkhRIghBW~-z8 zO~pMdqjXEOBVum4GO))U?cQH+hoVCnw3THbd_J><59j$xKu{#ILFph5ty7GDPq!m* zpo;gF_2HD~3A=ho`7ed3k}I)yO&DU1@(kDJ;gd`3BPL;-f$CAtq3RS01>9jivxXH!e)ip95psWBM^ zMFjkuw=p6qC3v5LM*w4iGmQSSKkAQ=QrVwKDOj4B|R;W&ttaVonM0r7j+Mv^dm*Ls!MvN%Asc*3_}?AS;& zJ?fZ#QzJ%=n55s>F-gC%92i;6C?Uqp4*-H<{Rrf-h4h`c8>m8oP+bw>`W0hm^0n`C z9vkd&k}2}?ygB=C`!FhX?y4j~;C#gpE0)-@;kLv0LK_p1;*vku>*A?HxK0w&B__cs z|4=$7?_??~wZX`l_4#`sbG4;a{cJ!23#6k}*gKs4^LRJU6~oFU50HW35h6AUp|@A? zhN>?BZ`eJ%2PIB(Z{E&9$@W?GHTOITUHkK=oz$ zzyVnkfh<9bHFy1iESFdnTgw&F{dNpcF2s=!VG?-(!!1lwh|pOZh)^|i77ttTe*hj? zce%2ZB$?Awk>{1jVT;edPKknBf$=p-e~e>bd>TyO1*6z#o`;7TT@;$ac;@k7G}j*k z<7pO*@42!Rj7R>YV0;xhgt7IpFpeRNTvCj4+LY__3SEmh^YzVMOm4CtxMtv4x1Sjh zR2C6B739u}DyE);ZVQ^U0{62u!gb)Yj7o1Kh@}e`BC+PoA}$&gE<|o1Fd^4fM{J1T zEn<^qAdM}2x=xKO>nECb#_+1?DimV*R=0tdKwNB(8dwyFglg_MmmGF6>haf8sLEgD zs*BBoKaxkwPW`JIa9@*0Pp-M_V(BkfOU<8_h;vIkEnOMHjyzM)iI}7*J!-5WJ8pv`00I zA)bS+Ac(ZSL*NqBLQ6p|%VV}Nt-}#Ws*9GgGu8qjf~m4H&#vG6FP~~<{)kG%ZAJaj zp2`s^6%DoWHfrdrL_E_L`ua$lbrmC0;5KW+K&sMnGw{Ei=J0PxP61f$bzGLk(_#7Q zU3vRWNhFR*NQb9ROTmMl0B7IQy*eI?UduODQBREv!)d3d;G*p@ zV_^en$OaH2&t=eWsJ4rUx}00~DPJI*Ngz@N-eV@2kE>dq z{;C~=^;yIS^Lyo$l%?ilxbo5SOS5Q>m;bIR8mSs;Twa&l6RMCS^>)a%^=E zR@imv=%d8|c(nJU&Hw_n4Wj0EcOxH8+i;~^oMK<5p+5=xF*mOTyMkjx)9X}qd7h?x zsV>jkG(o#AJ#sdLB5Bk<`|5s6&TZC<1p`yjtbP17psrPX&gv3aOkzkvqc{`gNC)=3 zxbs?Cc_Mpyk}RNW6?yoMC1`wnirzZTD5qZR;sJVRyfBFCw#kUu##^`Q)c`Q0*znxE zcr9p~?~zq}wGqp`6dIB|rWyI?npST8Kuss;DFqBJ))5l?|1tOOfl*ag-+wLx1c^@2 zs8La=Vhc(u_@ENO8VCbXi3Ug%6x3Ra)+_3aq7n>Dq71{>Xsx0}MT?axDk??1R1%;G zAZmappr}Eq&UCy)L_oCU{e1U6XD%_Q?fdlid;du0oPG9n?X}l!uf4XWMpI0=^qxFi;(`p}kiz4`kj{$jCay^-^5DMM;!Yos`Kn0}J_HN1Z~ZiUdY(-Rd>Zj& zJKSCku=-2`s(qNL{ia8p&s4VF!i-2JI3xE&>}3zih!qsIW?^_Vop`;nt(n?a-03ylJ~vQpnHs(IO^Y z%~}~xZf8AzZ@vM^e0EMl>qD#;u-#5x_}knUr6<5g=MhSRyE1PWU=9(7O1HP= zg-f@CK#7Ww6{uJJ=oTBaP3S-G`OU~5V(l=E%v)2bz+=Dai7 z+PEASYM5+D)yH2DZaXk+07FV!ysvO0c(&%od)o{E%D_HnV1o`9r}9?UkTmG<%|gq{ z{>DPtM~jCx-g(w~7zcTm_l*32Ufe-Z19O~(T}W>Ry!oj(L#GTGMXaH}K)de(pnYjR zE~^eGfi(v+m%t4egRvGS;;P!a00(!gIxWL%g5$+>c$9NzZT|BAu=#K4bToQEviYUo zkP_N$PT@Jv@%ff7gUh|>u_5nYEjQ$yF$@q)APGlaizWjSLpt2-Cl+B#*oAkTOI84oHMGpt5W3-UGQ2ZELYlYVX zg``&e=Q;*`R*(3ztO~v!rmx`7nUAO0r&9WR4o4fN27Y9J@BVuS{q2(8-(CIH{qOYm z81*;V&*>N-)Xx`fKd5!E+g02n z?CTjS?x~1f#l0+t0-rjlZ@>SW`mEp0;kzt@-0xvMI8HM2YZmss9_~#E7F(`)umlA-^(8eWcEP1fU23HDt@Su+ zfE&X=6(nOAEKygQ{|BVvH%DF4_e8w|O})QognEiz*eqE1gN>a^cvVjK%h!D2Iqy^8 zaCk4^pq(V@6s3FS_|J|_NO<(HDoMsLILqn9bh4XI?E#bESGi%X$;stH_|WTp z-mBSht9J>FL0xl=iVR)z&&~@4S|cN8LB8^}634%_u=ErEoBW3RhtJ9hpEBs| zoWMWAH{^zI%`IHTJ zV9Om`5^Ybof-59`^U=Q^zNFAhj|2-N!U*;c9M2*hj*#pgXq$Qrrd~&nmYktH3;;7` zA`>$6yQ=uLt28hxbXn8kOQdMB4t~^K<4(U2QOEYK!ULWtuJnu$Mp#MB?NVqZCSv4_ z`$&hW8)#K-g;C$5j5(+K53u5njj%!GH(a18+ZxHYM|uxX{6>Eu^cG@69`L=MxJdb- z_d$hz==a4QG|0G8I-40caSZxldsjCXy{MX62xveid|g8~d)g$6sI#VDXk*@4kdU^9 zVwpKy`I4K>%$2-hntU}4{?zI?EVR(qa_hl6 zhM@YLf||mexRob_>eqg)hd!(@1rImcpL7hFRakUjuzZ#khhfICauM5XgcEM^R^(c+ znGferU_cl4)_`_QE@cRSuZODuImha3&i=|-u{q-TO77R3=PmKTL=Os$$`7GkB^9AU zY=yOw0Fd|PzRWfGwq6OMpF6nNt-f&il=;EN!NTKrvr|Gb7~cOpnS~%{KazsS(>__C z*&qg~FW38gSx#{Gh#L->w)^931I5-?7f` zNawfA`5or`mN>tIo!=toS7N2=8|eJ@b$6ObLlqlwsnR;) zOZd8e5w1KwqhAW#0O)3E6VmYrRj=!8pVX+6#zf3BWj_RuSH zQJ<~~4*K^WrjCuAGZ-Bfa|rjg7n?)b>`D#|pEFopJ<#c@76hZ8(Wc$A!HiKH zZV>>*u?6NsM)hYJ^Bu4I2+>%GCZA=4Q8u@>ZG`(c|IA3|O8Yd7!-0O&6v+Vd&w4>Un% z-6{#$pNZ!X z7k6#Q@OO*YiTvaKU^)x#={W|zX>gO(m-CzsJm{h&fQx{aO2cDd@nu5E!qtI82(4=G zMW4gWCfl1>tHb?Mw>bC@P+T~(42U&c;Aj2QHcAGBb_3~$@Z8$! zE-MzmQ}M7Yu{Mx9Y@tkSt-*xpkJrmS(juVOm$8YmRP@G}zdVY-X*;?cZ#{E_R*teJ zZ=}1{ce9GUwa4yS-1A3>#qxM8xqikIBoG&h&>PsMXZmtx_?DYX_m+kCcR3>HcE{ro z%>M6iliIS7ZwWuk*`JD413J+wdnocT-l{5>W%$q2xEyFVJKVD+VyRfUKpea(RZ= zI2l3|@*y`<9F7P;z18D{Q9JyXgaVu0ezHmuvnSyR&o=|VwSCxmuHcisw^0EyTbR`u z>`t9>wp_Cp$_-biy@WuTbwCNQ3pEp8n9WpKK|V-n$GLbrg`XK=$T>NqML_w|J=@!g z*imxtZC7y4Kk(wT{mNOU?f7(;S2zG#remlNNrG}W-h>He`Zv%ct&4l_)AXw~nz`C* z7t3@f(TsVVlXw-02^u?6BrU*Lyw#^`0xK|Zc&km^E0LgPk)Q;B@ZNEZkfkjqUkC6u zoeq6xhww$ab|*LJ|o`b>h`#3S`JMPDtI4?t6q|G?0MmI$*@E?}DgPj#6fIoIfz z@PzVc%(a4^yN;sr_#DAv7EyCLS-8O)siJq0@3Q>_?WXN6`o0Fz*vye zP7!_cpX83jxp&>&={Ei+(aN6*SNLQ*@9!(rFpjPhHp)dd*0iyk4_pc+<*#?JRA+*G`>@x%ixu*hnI@AVKFsjoR^2T#|^VM(j&N`sitD zXkeN&e{mAS2d6G=X{@lx6RD@s^I(;}C!M+yo@Id}zd+YZ6f9isjod-jl%;1^x+Jn= z^}+W3q}$|oZez(qed$fhD~M^jzalW(tP8ULhl#(X890xuO8U?wH7RKnNrcXu3eKM@$iaQT)^naKBb-Ls^QWV zPS2t~EZa6Hs&jh5L5eMGJe|vPbQpp!arCT6a&`?-3ETXmiR)qlSDxa%TbJe5=*a%G zHaiDb^DNkPd4e_cD_)kS%t7q;Bt)z5m5I&K(+zrhRGCyb{umfwj+#dQQEjPV=x!}3 z4R!hBc9GpkO4@o_E<#tS=^2_PP9bSkPgn8~o9yrpVe}-02d?=Gz?TU@!l?gZeB^Lg z7cl9)puh>KFVFc({*xQcRYe>SNLzt!Iw{5f2Rmdc3WwIR!8Qyt@`3RT{!X3 zQoJyZ?r6P)IVqYtcb2~eNHup<>QZ*oDKquDjQQJ$`gDoPCZvZBt zaKT+Bws%dLu!tQLbE{TKZi8=KrUdz^FKKy}Zk3>ErSGcBbs0pnU?#*=09O?OlM@RaWKSzGwJ*IX8s z){PpSJ!4qTT&91E3z(z{EDc3qnUS@zr!*qktraW{>g1KdUel)9%7M3dPuo$ znAh27)2C`|E~-dg0iIswf;1ay<_2=ujZ|^dRCwFzFiH{d%!oaqt{5bgPBPWUz|l$W zlk%|EC=Z6IUeMX1z;!5oq7^L)xpumfIDtgTL+oLD7nic+CgA8J&Ydc69EgaOBo@}j0TKn5ah@*MytTsf%)YF`7ZNg$D7^7^tIB(nEyK_!PrgU&L^&6G3S7btX3u_+=GA zKoeJKpq_Jo(u(j9?Sft4`icg&s;k@Ygicnh2oLRvND$f=@ry(p2vy7@U*?(L+?;`YgeER_1{+)eFYZ)LR`7++%!A> zQVOib1FPt9{{YyHg31G!)S@LH2^QXJMHkZC`_@Fe9->Ot1XmjWB;Dxbt>yp^KEsAGRqH|UtIlJYeX ztB{)ggF>wc>|F$gi@N_y5IO*ff@qujnHZi%C%Fu)a&=62Gu33ownF^|F(Y+_V{PwXOZUY3L&9qtF{#Vj*1DCZ>^T}=_3J(%NJ?J{B=;gs`guyfMdiIqiw-JMn+`&h ztA}1)0y?T77GVIAC-`hOUQO8}RQ5uNsjfaY=OxGwD{|z_q+M>LbcW&ZC zUH#vQzP3eWquV}URlVc?5X&!`=*==$ZV)CMCET#9>`!K?x~r_4dL^ax$F8k1daAXR z8U)%~jZ3^)TPRK#T@-SW`L(MFw9`rg|3P*_kA~hTTp8FmeiZ#SIJeS&;GjubOOsej z;Zx#Wk=e4DMG;fmuhV`I^H}ps;_6pZTEG0GrLA-eb3DP<%t35|&Vgax>Ut(AiDg-M zgv6dQ^X}kSoR`G>n0@A{%%F+FlALpsK9ThJ{e_iH{&}HY@h+iVdb}@uZmw0W4Bjz` zpHBquG#&_sx8??LC*Ew;5z)P8IOqV~6E0sc!;^7F;43{I|4iqM=#FPQv#k?TB+wLk zI@p}~$TPgBMGU{JAgO6j9Tyn^0od689cRhN0>#dYvxj9j+Hwl}d8=Pw(o&3EQ^>X% zlFsBE6doaqlDA<*-wYnHZE2^cEIhm)sa+bKC`rT3{z}zEc0Gp6*|>9~VmxOw4j;*X z!%Ocy9*RD^mxi!@}RzEDV-L~(3fT`WK?>blCX04j#C0iA9 z8~u!}U9ilFu4Fb*1(n$0W?d)j7J?fl^9#^5dli;>*xJ2?2=e}e(PB4Bt>{KzXSWIP zb4RhFuyJaOUC%Yq^Uh-gOyU|bi~~swOIPy?>CPmkZZo6|ARLco>^}j#3y)IRTVr+z zv$sfhX{G#WT6y%dWGl5GOkj=H0%)?RMe<`)u&y_#5?t21u*qv;dxzE+F7w`gzktfM zqxB?Dm%mwPBYtTO;4IB{6O31O2i&DCt~b&Pyz)5{!0?qDOQT(WK?Z~mDd0vcXAjV$ zl8=b=(1W*PLPcZC%N}eUAC{98`xpd-4zl;E0c`y=Ie^gGm||zv5=8An{gOx9aM6qh z5vQn$FyIWG6k{Wrcp_`sneo_@U~Sgc{QEyr35g>}Ou>K2 z6WUcP&Kbm3XtlN?+k96e~`2^>`r>_y``2 z={2aV7kAuIFA!WIC{O*QwXM-^V!N!!;$)7u`dHvrc+N0y%};oUKS?^mUC%;a-PFVA z7F$o8IoJ563jYl2tJ<@z4SeqDui7y@uZSRC6oee|*=%Qzpy5bmvzX*5s5v-DRQ=|? z#HO}&*>I%Tf9}hik#GOA(06g)Xsb0YCMM1@d*z6v*dMGG6}<-_u(vk9r~d}343GA( zFID8foXFo3QyL$ZZ2WIT;bdObc=$l$FtQH!J~@nN9MJhIX`Ku*{Fkv;ubpZCmA1vf z!sK4GsNVTY+uGDJ^!63-Ev!vJ1adtZY6BsVKdZ36?Z9~$Zc<=OKMg$sdfEqH5`E)C zk(VX0rzy_#Nb`vvDctm}5O(X>uG%gsF?_>`sIx*{mYs_)dj`0@j!6l&TL0RScG3NI zIw)_BzAbf9&NV4W(^3uZn9cnQTdYoK^+DtC{Q0*)zP%o(*x-#_h_!ur=tfUyss~wM zU!xrN!f74C-YI%_1^1+U2s$Mx+sHg4!0gD$0q%5Z8*hFT)5&JH#TB}KQ-f|rD*Jq(2B+)pwII_l<{TpL8P9>e9bITKB?$p7UUt9O1$K3FN9rNXD z_A=&i#9GjpPfy9vZp;%o!0U|pnkqZy;=d%uJnJOJJVK^)z_U}ZNFTG=BPo!EF0*m; z%?-3?E-cU`bkS`atyX1tmgK#r=yTneWtfViRmlQWWL1wNK+Y2X4@*})h;{J+(iPEV z(-bOQcn~^*2-}5YP^F~v3O&_vame54tJS9l8+|JK7EicK;c{d@-TMtE%_!W6Ri~m^ zs#Gicbb&bOT2CUA)*2Ve(*1Q~eqYe;R~fksm$rEt*B^MH_@M=@idCE}`L`fnsJ)WJ$Cd+?O!u*+lORAQrBzj-CWAgp9m}$bg@1kqjt$==w7n zPo=!ZV&m%6SlrWovYv0n1N0VLc@b_*GmE=778^yZvADn_w|qOJxO>nXvxtl-GE(aH z=pj!5xG{qzSsnVW9((BVrO$yOu={u=SZ>c@thgzOyG~qk9OV%-=xQ1DN4;Q5s8LvC z2Ep7uz}gGl;t5@7Op7OT00A5HzGxg_4sJN&NT*U*^9Z9MUj7p(-`Ty$bBppIjI?t?E=KN20vDf9~)FDbT@A`$d^b=dVxbURxEh7Jt z<;|Zbcdf*$Z+C=~1Ak|@ud*~uW?lvuk>w#y9K(}YX+TI!`kqAze*O^I;{QnaGjs^2 zk89h*DIn!50VnT@j^Om}nF%-z?fG3e?E|u7PRqjcDG8_7w(Sj0x7_Il@sc!W;M4>V zegIBS;>_hjFBMLoMiOv(@Wuq3ZZrq0Q{Z&8Q(fxD4dE1J$fs86ee#Pmf_2X_(Q@Yh4bAw% zhZvMa%&+?*k}Y}^C*1~ZSVMcGk8r3<3Je*axPc){n%x@RI!k~ssee!^NhdyRlHw~| z8$=JTeZa>hSeermr5y*e9>z6;J2e7*SxVZ~h_1LpL)RiO#6Wad?9E&!m>U`x&p}QK zev|3<2IE=DDvW+^%2%86W+_sgI(Zkx<4diQ@k@HC#l0=SBz)rbtHU`Ml&naEiHcS! zLRR}ZaMp6+>4`ab@bK@>!NkT6=Ach&+8pd(pE?J9u^~8f5IBxG=r=EQ4vu&xF$X_m zD9#*Q6i&=Rccn51&uA*SZ%K3T|2Vzh^Ui;n-uIcGp!dgaNYMLNW0v0UWC=L*zWMqj zy~j^iIIHW3`)i{laac5bK*P{{o%3*Mu`4(o8WAC8e+yGCSW}$2n|kfetK(m@S?TBZ zhUjEhP0r8o8~LNBgRT!{kw04qEcU9L5tH)WoB@+AqNiMMbXGa#^41)WpsOWRgqV^c z57fyy31P?RgDifzBa1J+=!Zn!2|J05!boavOUU9E&tp(l7XS77bXokTDKhxamfHDClfkDx zN|@W}j{Lo;7j-9v_8qT4j+Z+Os{D z)TdsfiTbWEp0w$R5B-0x7rArsKNtScT&(@d&c)Z&iMe>|k;KS15XB)?FG`(@KmM(Q zx!4BO5_3^{blO~8PJzT++;_nb_3UJN=FG*gWRHCG$eD|eWUpf`_E){k#kQ+{#9Uxq zF`GP2wI6Z=YF*$7n}1^h080?b~l*@^$UC)9#N#@UkAz?g+=eskiS02 zI80@3-r&Ft|KCIwplF8FH@puMI=6_uT=xuwE2CT~O^x^)99^;@3PirogwD%`QY^!U zJSt>ISrGMONY~9yw&n;3+|%B3ThL+ zp=bD<932rUaE;C9AXn! zoyO6{H$QqJR$c~YFrs3Sbj^?dfjQ=!o*J?7O$h}ShOf;H1r~(^3;P6Axi_N7XW{;5 z1x5##<*4QWHFx%e{daoM77t<&A*ybu0yd22f@u=>Y!fzuR5eYQke`N^8OdYcFLB!3 z0&@zVuJA0L$QcZ55$1Mk3Ng1oe~3w_Sdi?JZ+?76L@-FnG+?aF#CAc&yzpqcwvdKx zggT2j#yPIyY9iU%bCMQ$1pQ{pIu2Do!3ykn37PLkIw=AR>}?nFm$q9D3#M~yDgC(P zGPXS1*%pe@qvR|L4euE{Q7Wd{Vpw!5t6u!?w_5#X{=pihd|*->m&J&a?KKh;`Yb+A zh91bjYz_L=q0+BP*MvuD^U8l9-JBw$#oyOzdobPp3I|qOC&h%JYl3yqj}@*UR6oZO zroa7@j^KB1ohG}H)d&YTOM@nJoJ_M#rp-=x#*d=ZH(^bV<`7a8XXO<0Kp6X_8QO=v2du+l#~ zSPx<}hbvcx124xru_hX1oDs2#9uA_(D2|pUaugj$XF^AYE1QG9W{>uDamHH{E-Ru! zHmV{cXL91Y35?3DkCe|W2vw{s{MS9^YD2(N<9MW$0sXE^;US<~KlIRzj7*5>)=9!lojMF~a@=7gDlUjxu#P+nU zC?|T(J?wEsmBoV@NgJl-r~-En%f_-KIx|`DU=^%b6CPTmf`^-e@xMFyE>7nA9Q#3G z!OuP6Bf-{fi8*4f3dzW2LvN|_JF!$cy?Rk5AB#`GZwl}O83x>5xYK`3@H0>N z2&(x~)$FgS=6Bl^?af8+{R4jDzZ8)&9n+{6u*uIw+$@jKxT5F{WN^B;lp;=RBb_de zOzYxe%?fqjqq?0gex^ZNz#XhECYtf3HRGk3=sxPqGmy5}^ZIuM|Gu+NnD_7!wmii) zi(qo*#a)fXo!}|U6W{AtH}<>btR*^vrYe;raKBcka>h=JvZWcQ%;YZmp3wxJra>`;(8V3YdRZgs}OgpR=Fm|x#(~( zSP2w+Gh5Ls!6+=2qK1k_lqz(^vK0dZr;t|fGy4iROc)GrO(ylpLs9n$YBRdRg9Kz9 zM0VT+o^2sr zXvf9Sq=x9dST1#DgtD8tFAl?CAdaZG5N zxCA)m5J`*p1PA_=ZUlOS_zL$Y8y*KZ1A~_eab|Z(exqG{E8kB0WEPX+h`0f61zi}b zToei{k&mIFEXej&PvA)~T?-z`Ub9NS z2%Yu9tI~W;%o|?Ci?9p~}0niLYP5=HJHjVE`-dD;WgpqH>0$ad0L^ zBx76jerGH?FBq=K9~!EdZ7f-2(0H1Im2>e8^Z*^6vb@y;H0Fxg#uEg0L|v4yG1~P) zqI=7K8@?x<{8VBi=@qJW9wuM0dY%5YHK$a2b)wqac`^W|5A1Nl|bZ}bv7fT~k6{FRJip62;l&97sZn?#H^Z?*iJ6#UDa zpBy2a7^gf|agzH?#XJU)c6AL9+bjXjv$D0V|2s1_x;nvgnaSrypV>`{-K+KKo420) zv0GT3R^HWN3upe{pMaVrHV&k0l9t)NXX{o6v*M1$Jd0KcybuQGI2{A8T#O1=%&}#S z6==m}(&xOPXJ|J)FQWo7sd;BRc|~B7xO^=0pM-Q3J0={yPVNkOYYt`@j+*+}N22QP z_?Mbdz5tcMM&^w9cf7q~()C1qPxJg3&x!u~W}8J}D35R_lWv84vlzvUc^ZW!Nk{*@ ztu5O(ix1(-SxnrF8GIAc+Tt1+$hDS3qFRXZ`)lyc18@bwT_EW~-h;b5-s;DApl|#K z7@Aof+2Fv)EPis~?GUV5fm8Icb*HWDZUakNIK%nUR@NITdn?KEb2aPQSpg3EpTkkR z*eKvsn?yDjrOZ+>_+)1zB}`xs;r3I1N9D4yjqgqpgy`*zU&=tm$_W1r712c#(W8fh zKMa+VJZqxU**pyS<^j69eRD|=D&1DviG$#CGw|_)hyoC!c!`R{HsXbo?09tWL<9J6 z#VnT3j9bYadyt93ufwcvRkrq0c=S6+^S-%yz2iC~vqoPZ&+l?8j7D!FG5(%*^+gS$ zmn#n>;9`C)f@>pNwymnlc^Q5jrc5{AABkAJA)!M}fxv4q5`>tE;y4#$6`fen*#3YS zG&)VQtFsaOWgE^_Fj;qo6lEWk9z%_Kwa}RG6IN7j^-x3Z6@GyB%#|nOj*~CLqRP|4 z6BgN$3siCs$v6z*IPMU%%3mm9e$~Kh{C$c;6Baqe54FXo)N9a```{HcS!Yuf+sTCa zRkvhb?eEg&TNJ;8cPf~ibzz`YOFiZA_GM64E~T;Enjc)24Y7;&Cx7MU@Qoa84ES5y zyc|v!()VPEw{gEqvWCKnh2F?9BG3~s1rVJlB|?I8_TAC-oVh#o2y@IZVW|(?3#nG` zH+r!yJ8k-Bg}b0d*3&6T!w#Lgcnl&BIY!`mG*|Rj=NTkxoiDN{g9=E?Cn4>`i%hV` znj%9==2uPWmwlnP<^;V}%#Zj_@PxRih^n2P?86=xQJZ`#Q)&0}owze$Oe2b?ikTi) zUDdB;Te#gU+nPC|<0)pInii0m1P$lJ4_IVPdLNM+IX4ei;hO%Yb@jZ4B_;WZ&ev!G z#1y1Je8n;a7Ff7+jzolhw2-(=evU4akKDAU{|+}F?Ht$#9BS}J6gA5X2%5wAUnJQa za9$JPm^1kfVRe`II}eX5W^#nHzhpWF1HRxV|8qzMT0slk0|I4exJn&)p}-he751&P z@&S?f9r<8hQa)IpkPqD0pU4OEBA%1`GT8n|u z^SLuymvTCWBRJtC(X8F*)v*&yy5T~P@5`RXQ_Zw`%2QixgPKjw zjsJL-fnrS<6fvvs-rfRH9cREJHW>Qlruo2Iu?dEZnQ6S51sq>tXqnmVXoyVMC=@vA zb=DfUBJy~}OV(;~+*rs^g9KJQy!BxncHQ{fydppV?PBF4`D0yYH-Pwu=cf5mn|-h>_e$OoP-O$o*6FYEI{Cx{&hPWK$Z-D_uxl+jPB2V zD^4q9bFH_m=`nqooTU!TA{X9>2!^KsM+ zD2go(&xeLu9WU8sCjO3ZD`3mu#wBb$Eqeg3>brq?Z~Mamtl|rkB#;c*fnoH!13O{tFgenkx+Fv)%IE4oY!WIsR^fk2!GD z(FS_e9(u;QZUp3kkE#)t%8Y7;>!6vp`cC&n?wk@!82l=X=2Ql3i2%<$0Sh|kIIfQ9 zP5SXfVIP}Q**iRbV;<1%DcW_5A{u)m#U4W@8NpG{3-TOd4SZ-IpL(L~p!dH6UuPa3 zq%If#h6z*5!G-T2U_E^ltee{D$#NkStXbR!)<6GBoi}pA>z4!TJPT{9DZEUIU_GCn z3L`Ho7px^YI4t!c&O4;Qy07ja!1O9uZ*`7-3c)x3iN@soJ7c;FPSK=k?u!&o2ewyX z?*@S504ygjq7MQGag6%ls?4wftryTv%AuX|R$U?Rv;K8E>N8o@TlRoDGbr-TyRDq# z-t4aG@Mv@q|E9w8Jb~>CGvn*}uZk~Djfd^Ra@Q4tr4j0b^ovD}st3@_C2pKJWCI2LuiN8sSbHU+mc=mF41 zAikD?7)I|9XJsOO|A-4nbFK$m@--(=^%2Uak$|6Ub4bA18pW9RczZjzI#WkPhX_jt zTTq@D9tJ4u{68m(AZPSe1#u4J)&)YX%TyEiY{#-pKSr!QBGOaYw261a_vl3&@0Vo; zqI58IBis;&ac|R7LMc(5M5uBlFBjf3gj*fsZYTQP5$+!8z+3u{;C(Im9NgXiGT?1| zXj40MJ1-jg%1u=GP7Jk1bcCaJ6mGec_5t%qYxRxJ8f9_Y-NR!KfjvA{uT@MFP_9Qz zO@s1Ft&Em!1_=8%?hI%;ixL?fgXCRg9OPT$H7D7zjOwhEL<>wYN}kS^nJ~~Clv;;9 z5^z5RxKnI+wY-{xQfy}w^#*!s=YH^%vr=pg6ouG;(+v#X89IZdvt8XW;}@1j^u3y}y8G7H_z}yTt_OWUHXiL? zr*W90J~}4IvR$S#fqYZTDHVj)5>4wosTVUeC&7C5=;}f%i5zeGiVxg&GP4_X`-RWBBF6 z0Srn)yJ87EgP6b?^yf*`cx?3cB(vnH>LC>{rm6g_*V^HF6SWH$#^z zH57HqWTcsGoGoQSvg9gW(d>=vpfJH}+Wb>wF+Ip`G@ET+2Yc5j?gr|NHJUPS*_p9# zC7_wB45M8^U#Kh@yUXs7|`{p|LlwQ1#W9 zuo@MPLMS*SCw998(=6c2-P?}S%z+}XqOi)6sX|A-DaTI3iH52Cr4(|zcfPvU&{6L; zam3FES|_FmS~Uo$GB#E6D;Si}HT{0_YwEp>M7Q4Tz1BOeqk26~z2EBa4E42=Nxyfi z-j7KH?$4RACNCG!rmZuqe{|L~3o$rWKYpd5EsDGVg6DzX{)-&ko-ME>aQmYKZi`r? z;dT)x??Mgz*MZ&s0`K(0!F@rpa6@a`vzfx}k0=quuRKr??=2a`;0g+ia3ydjc(N{h zra^b`Upoxhp^_eimHK%qsvny`b*)vLQxCD!Mr%6uqyveGZ^0K9VuD_;ZwyemFE`5MOqbD;d0=(6e6=EZyC*S$Cb~1Yfufewn7|s_AwKpLeWM;!UZrE#W zqi>7`LlJMy{pj?}!OpR0E=F;&#({iVLHx|E4UZm>xmIZ$>?S_)DZ1Ncbe>HLe45FQ z+yWX$P+KUpx2JFOTnikEkl9-i&<{hcmtcKUm-yLQ--jvjX5=G+Xm1Pc_AcJd){Kx) zUB>)jwt^UeEMy4Wjw!AyX4X*S%!)-_H-rykyqTyZ_hSb_Za$Qe;5J~wbkt}GRaHKg z!R`%^pc@QepQ_45B*?6~w?0t$g`sNF&u`(*f zlq)4w$e|_V7-t;hc(%+SN9aQ`8c$WnqIZJ2^edHK70WRd8Y^S$Mv~0hFk5#y(L?W7 zciE}SSt87hUd{eMOvZdC6MO%8(XZ}90^7v&v!N8Km=g_P5XMF}((# zeb-5hIEj)f6FUAB=k7Zb(F%8~2V}mk3#9_lY<4Z# zuRPZi+;iHEhlRdioBJir+xibfU)0As)r_Axz+3%1tCdsW9&gQ~JY|bsE`%Iv&L1wb zHv}Bv;An&% z)6#2k&JdxJv7PK`dE_nivf`~HR1ck5jK@Nkz*Xu&#R7BYU-q+bAYY87NyUBn;5+S` zuFG!>)(BNyNN}v@pCtIrgqMk2W9%DGU|Fn^R#~$r*@Z887KW9le+XF{i7Tuf%lNFjWJ3*$%cf zIa9W;@)$M(O{`;$o9F^&F!224-P_t89&c;ipP&g6;*bTjZ(Om0I;>lTLbSX_`=W_l zz2nvkc5Rf%C}_>RTMSbVpxku%#A8$b0#gP??690V;1A8x97$6NDr-r{eg;|%v` zMr(dShb)lAZtw}IY|{KyG_zmLD7c`bU#N7xc3H~$S$J31QpA`6)u`=E^tUu^q6|8) zEfoah3{dA}_~f79G|sR@bsF7k&`@UhUb48@W4A9XY@<(p+=>t4W-B$NfsbPQT{USgahNKr0Yi zVxRG-!6im^Bqf5SEt#=H7&dTY0HyN@j~_eCzJs@ahXO)QV|P&2m2nr0+nc&_EdBhB zx}t3tt*T@BRX^|3VE8@tT!h;LNi3Pysad_1=Y_>JF0L>k1 z^Ci!k-4N?G&CoxAIXPXrVm_7jpnVbISY&q+G zB^Msn>t%*i9BxTPplbr3jHr|(7bs9Ap&>b<8h);v3ml*kJhvt>&An(S`l^h-jnOIC z746!I>8y9CF?J?D7K@`7GP%Ov`0e7A#Nu!CwF(m=`1bg=M|`aizFbX)618fyU+YMP z5AD)*h$?6AX@;d^s+_y~bGFZ0y_BNfJGf$+ui&@ARAIjbHHq<&%K z$WxPc-I0K>F++z$IX;ZCHFId5E{<5nEwuR0&KQ*^&T*+>(<{S6OAw=n@)It?AU9Ro z(O707`m;x+!mbPtDRJUh@f57{xC&Lk%R40#N9r|gj6+D5M;8@=c<3-PFkv}{e<^^> zTs-E?7dFKb0kUYNaY#R*K=7vC@Ts8yBSC5}b6=3@jATRoD>?mVb%N?+_^c+sYLwXG zZi3M5YkP~NZG#NA4bKUEiT81lv`+~i_lWrW)&SVHVC5Rrx>so$pGvNAKS%&WMOJ1F z2Eac37271fHIc#g8lyqRN4CjyQ=?eQIOqnd+t8eSD`ZoQtWehh^?AL`P--}% z(8i4%v2*x^*Eb7ePRF4{sJNDf9g9N)kH#ITRy|sxx2seVpFuJf$OC1HeRp}v*fA{k zj_u`dV$JKwUM_!5DUb>4sKY#|^=wGcPupaweh`+q`)2n27| zA=8=aA(c(e$*^}ks>`Zr6mET{re1n`UN&4p*q8`$sg%VTr1Cs=mTrNvrzRSPdop7l z(8ov>TlIN7uAU}Lb?~OXG`tA$BX)qmWL2kFi{uf9-ik8O=?Sa%w8bt^9@qaDZ0cA@ z_$Su8c2noAnLw2i5-RxB)Q!XZqu+m(g5*UcIuMzFRuT(|xtnmg@9~*0&{Xw%GUtee z$<-(G%lp`i%w>2BMT+M<)Y=xcHfYuRC67(&a`Gm*+3%;;ig!D(iQLnTwxRZU_4mV zF+X^lBYf?q%vAM%5r z(4bK6FE46F&CcY5JSO=;t=>}jLF*FU+vy4YK)Jo}gC`m3kI@qjVcHyi@Zzxl9eyzM zua+NNPJQ3c52i3CZC&qGPx$6}^{xdS<$LvnUYPFo!VgXd&PjgI#&mT|Tq>!e9dSwW zgYBvx;xfB9g&$l<-<0?7E)p@;UixW7XtSd6dB;~s2ZW}o-2ulKYSw%%%v3*W}G zJ({1}rvVd~4W2N#S9H@>IIkPK%h&*E2h)7ss`vwHg8^b|v09|}?z&aWNy85zAMZDp zD+^Rp7r~9QOQtHqpgFd`#JVBN=oVa&j|)S`<%a*5a>i$&2R;jtsX6RT(3>1Cz3~4k zH7tkhs$a|mo6TpAQRKJ(x<2t$=gE!rh%&FuBQWbb{=e8G0cClK>H`n!zBwDz%=TUJ z73~-`;!BV}A~q=UUuIbopAUMr`hBO!62T3uAlqHnJ!nmG)n^M|+Ub2~Txm z9}pm#7Q->wh8$X)HhgMB$1PR&X7sdV-N&ZYT_+vRhC1BT`+Mrv&bCu`ESyqzRa)Jz z^C{WyOOkb0rqrFhGacVvqJ3~v>CHKzm5NZl6^rGF$gmgl6g8k0Rl2a=fAXM$z*mv- z7i}DJ#pXDMvm>1feOqt+DL9oocM)zMps4WcB|QV}q3;S!%~8|k+GjB#M|!&!|kKA|PXKnE7 z>{~};Q*eVNaD%bj=dK8k$zk&_8>e8dY#BM7o&Q`{^wuEgY({W-jsO|~@8#)}my)G6 zxaHf>hH#+y%X#rf!j)^xQ%e8bp2vO#{A9SSeF{by7EI2-8WtU={SDvBXjd6R?Xj72 ze##+@1RcQ^FE29BD&}xW&%d5>x!phbo_z;rDm=>UNaa6karYg*ryNSC*{?_`_xbzZ zEvFex+vm`<2~sKLp6{UCUiU{*%H5hMXYh zPCI2ks-3d*b`CS`l>Kl!1X}`b1YJ0*T$?qcbhFFB;ex_Vfq`cLH{u`_oWaX+cz2(nZ6#dm8N7V7S(Q4mE zGjGf;nj%(QR#Z0N^47LaCH!y(v9Y+keZtuG3FFffv_jbblLwuon==rB2yaSfgDdjR zzhKpJE73eRkY4cl(xcMOWSKkNF7!mkl(DAF9%3Y*GrS&%2VMlxx}QTR&MYg$E2bGM z_vyMR%iQs#L66g79M?(KVogg#*kiPN zylNabW8AWhRr>z7w$sem4w~s}ni*@GIneYma80s*0V<4)8Q(!c+rRN{LG>?iP_m$h zg6?et?Mg>;)MkcO?;D)%h;z5Pg`P9|=1 zuY6+r-^sV@SX*B?yR|kSoZIf0#*~1bI}*V8$N=HR^2Ca$EE zV9vAgns8;n_W1j-FlRXfOyKX4ICA{g@OS2e9pdkoCtCb{?8r3y)jlo67W~sKRK?}6 z_%k}bXQ0Hnx$R2b+y=SWHVyVVrkpTe?hVJd*oxp6m+Mm1k-c&vm2!{3{n1zjZ|Fk@ zxRGs8ak<~;#L#lCr)X>5E(2IXDrrF^(#8mN2y8p_Y6X+ZmxWSx=SBC04k|0C93QS! zfN76-zdCjx9fJoE!-K2b6qrrd5#+YEWpSb>G}*n|t+edYGjN=E0#+bep$u1 zxS33+2PSgYK-ob<-A&(3>0(5eH&ZIwR=!%M-b?}6diy}|H_TRMW_uYPI!;$<75BH;U;W6Xe!Ek(sFg(dNZD{(xg@=E^0Wz_sg@@_|tvWD# z3S?nDejgql4Vb?NhU51J!%J`O2!>Z3V_`Tx6^4Typ|rRRbwxZ}w~QEislxy@pTd;G z#bd*hxyH|1vy^(Q`V#RVZ5h|(>v=PRVe3Ix^U8DqEjA4j_;Yv_Iz@+T5rcE*MTnZNs!%& zjP6{PtC7;9G|rYV(^6j85GarR3D-nTxpR-yZ?aY~0Tsm%6Q%mZc`FT&9vwunyaOQ0K4b0hS zauBPkp#JM@ka^aqb`=b1UxA60;Z!h06&y*9_B?WPbbr&!&E}+{jme!VOKgsAyHTUq z9FsSi{hrDnHb>Vv-*cE@`#qKRZH_+ceAlTve2Bh?siU>r<9CrH4Ss)3LH&Bo`xoSK z)^?dGxfK*Rb8Oq`x#5!sT|X8_x#2m3M&$VS3GI%(Pfel)ySZs;wdzim%}CtBXV?Y!`)~W1xosZuF)Hxu(RNn3HDxC`gSV)+KI! z;@$6({$1`Z2KV36QZO$FGf_@8hxG|LOy%($9-E=pV57v-Ct&6G&Oi+ zG=`k%q~A|^hj987buk@IS3K}vgwtEK-w&r7j#K!3$3Rhe;rGMonT8*N)9=WUgwwTH z8y$Ge?4AOrdW2#p{W{W(jnmq4koRY-l_TBcfdk9({Qon9O$Bbj8r_Q{d{~{1W>&o6 zeXN-;JY?{ywwBuD>p)&7*2+GLeOmZA3H;+SkTIZ8iFn6&D`IYN@%X5BnV0p&$`Y7Lp@t+^X zw6hfSUGIN{62`vaA8Q?tVJ#9;x4f90u`tsae(F9=^jZvHZgH#-<0&a?#N7AzbvIJJ zku+=fWM+`=tfhy&Oz8L3C61M-<7`!E>ll`-W5N&Bu?FUpsH0o5j*Mg-hd6aun+f42 zWR*>vZ0&|CXJfX8S+isEkkIv5m-9l!xeeU)OR$14S5p-!YR3UwdaSjfi;o97Mmvm$ zn}Kq4>kT>+WbAl~eY#L-O{B%2v1UF0yYvwt*Y0P0*E{Y3_MGV3M)vin}QBLwMY>K%Go;G)V|+>>H1)e;(1oNv~3f}RejX`6gn=$5?z z@uXBBx(86fLrXv>EZa`prkm%6 z+7_qM94d`BCw2Y4Cf-Quc=!2%@m|1vBj#EXjrTX_{qK$Us`~WtKHzUR-dQB1kN4Pj z>ehLfTaR|UC)ScphdPKVl$=NI%~FTFi!1Z!5u()oJBstO{JK#yM<=8M$0G;Po(Z%h zQ#sH5Xgm0ECe`6b-E|jjDpf}aG$?oX-n5b6L8vvWj9-bnpHRS(aEY!_tVA6JSd@3k zgKw;G_s6u(ds@C@mls%P#XyJ2=5RKHo*&FvhXb%`?+1<0w)P*?A>Z~A=LAo3%&B`{ zSJL7O-9^)XXzy$FxuW&SxiH{zE`nzGS1^8O$_0%A8aMP*`zt@As2w*$vHSM(ujjOl z0G_O&4>hQ0WTR75d+X676D%P>y2BFg=$f=~@3p>76)E)$RHc?J{5)CD@E=ppovHP- zZb;Pg4<4QV?8#~0pOP8u$t19K9qNLH_N+>~+-~3G(C$xG^&C~TgH?K6x2Z0-j$b9a zb5633YksJXp{aEoo~&d4WF5z))}gg$x1P)bIPxx$c6G~{ajv(NT+mo-#D}V1=YMOL zeHy-4!-2r?zC`VRr~ClghkC1x=v!=HxC{IqQ;~3q)nm-a=_^EQswWt(Mn9XU=}ORs zHaL!Jg!``^9tj&KC2W?J}C2f$lw`f8FmKgI0 z*asA8pP2^*|Jkop0CPpmEJ)5;)nhKuCMM9GSuwo_hc zTd`kL=XkRIKO-yBA2*I@fzvOSbfw9QW?BYw9=kwrOl<2B?%j|gGs<`bhq5pBh?W2x zRfC~7+J`vw9MB`=g*l{(kzKX{fbuPJSqk7f-uk+iIyJ>Nb`m?&(=&%rA2aeBQXHC< zibHpOlEk6WzY{Y4I2?MMfNm)`^wPNR;?NuG6F3xQnu?noOv* z*0QMN3k$O|?Afbb&I(uRpOk9Wk>vwv3-O*i+ASn4Jx*0JVQK0ska+*_6!GJuQKpj# zajUDNt4fC2F0dc+LP9T-JY+RkXSdO0*tNv&HnyyzuT=kSwm@(0ee9s0pW(llw&3^P z&y(rrC|3~p$mt4n|P7^xy=4t zX@C6oXOjJytRF%0qv?C(+HjB~{mA~rgfth(^DwbyqPq^&f?=LL<5Z3uN3G=EB_x7} zFChwnnL|#LJC)c)F^4+TLRpqe+elx@=nt)$vR_+faAQVcU1&q7{>wl6bNbgALRDKu ztQ|&gUchA|>kE(Bypv0>ZeS1Y_ImG_#lzCROAsbR5sWY~C6b>Ps%Q%+c9IZL6;4lXvmD`i~2`?w`!9`@b&7ZnE%dcs*R$&Dp!*X>luN$+J+r^Z;mG7d^xJj|glkek0N`Ni;fb?88mhMVcwW2Qm|z5 z;LEFiUAAX0%jP1=B274}Cw&00;X4zPhobZYnFqI}c&j<2p=>Nch7X3%j)#O@E z_Vv+&+xPY8|9)R*RCd_cFY;|)AKhd7YS!HpOR=~HLdbJ9#%Ur&r2E!5%!#X0G2RmK zE4s01mkC^vzSGrHVPko)*8EN9NFkxzX3x z?7{`IAe`mYevI}IeJh-f!O(;ggkq5Yb480Tud7(Wf5{vXLc-AE-S^XCMO`?n#9Q5r z{VGyXhp{!f<*({U9dZ@r2(Y@1-WJ< z9PV>Ra-?=p)ipQ4>{V6Hu^uGufc9Oh0V#gDhWF4DyL3>ZCfk&4A$E@)8Q%=tDqdDo zcP@sX@rd*jraq?YcX+ymmDz1eu`SgxlVzT=%yZ^=u+zkR(?k%zfzqtiYACLnF!wr=lS$ z5`SoPOfg_bG9ME2~ZhPA~u{xAJ$FFH9&6{W$G^2`7 z(EACR4s&aP2*#008e)>xkR?*t9IBk-Kt7vq3bqddRL+SFHuakQ5#1F5j6dW%d%3c< zd#e>ia$=+JqvH*t+1dEWosA)&npQ(4nJ8hLw{`ykTk=DNT&F$`oSd0^0i01D{G&>8 zCpLOU9iK52XDK}qBxjInxN$5JqkM*>Pq0;6?v{Nmx=Z&7)a(N=HKmmsLzQ!*jrSVN z2@f4hK3ueIcA7nOC)pZeUUEk!7(YJ%Va?tERuvfX=Fl%&**4A4TFe18M(L-AT&zb; zT5j<_S|Ra?d&p!`oP3(tEK{{1+GapzPnUkwP>n{L&`+HGJHz`c^4jy$_0s|7f0y?U zyn!YR@9%gQZ)0A{F5dgYgncMCcG>#(aa0M`r6bmKUy#%yvXlFE{r64mM}0tghwwSk+a5m8P5ZCIry%hC@L9sWC5hd;rQD1C{qXsMb?WM0 z7Csvk>mmW4daRfZeBS;l1wP$#6YyC^x`B_8amGurAPz^r&a7i!zI2R}^;lUTR`g4g znj4-xNpBa+ErZy+*ZLK^W}#O8xJyD4)_50Z*SDZwT%Xys0hh{|hg5UAcr|ev`q$Og zw|KmZ*Jmyp5^6ez0PW4rk^w^XW(76$*rIn-scIpyA#U4CQ@FO)G0ReT<9M@L~eq&5z*k984 z%q*SY9KchfZ-tuczpB=|xUPPSCv)Y{Q2n$mBneQj*MC;fzjf!@pVX^FfE(#nC|-@i zsJFItGy5gpYM<&(vHetQ%aBdj@aT((T^m}TJ>li+CWkimX{z7liR3RcU@h=2J|ny9 zO8#fnZ^6g#%6D$`$bewUO&`3g5f&WGZMi6*PDk56$*2-lu*` zK}xwqO@)pAD+(KLTopNQSK)g%5b?NRW+qpSb%C0T{X8Wet7ByCghdT<@AAyw%SNkV>7oXr=d@~Ae_KXPxmCBmoTNBz=|3SgD zkBx5oab8zKzWP>n1qi-1AXnFA93u|K*kEo3c?olRQ|8PeDm8PQY6!K~w-kiF5h6`k zQvYFI*NxuA6IPo4Yos7=Btm`lEUgJV5c@;JIB8%6^*_|Lw(aXYF>eZ4rMKvS$F{d| zr>waHqWB`_D0}E61z-xkDX5W8hrcSWoO~(|Q?g<_M)$dl#1&RMdk(&eh~nKq;LLLx9X& z9~(rGTEd2f-sj~Pru_HyIoW~y=nbX=-WvE&Tdb5$)QYajtuO3bxi%{4#E8E(rrrGC zOAy*@jaF0_sj~Q4NDcQepb>O9VW359!DmJJ3s%)0-;#(N)_NZ!K=qP4SBXi1xl4;8% z$V$yWw5tH!**p&saw9L`U}0&Ke?0dO$Fe9Tc^AMJfS}P^a1_!KJe|SDMypE8Mqj-V z`|uj1DajqL=;bMiR(J?f^HX{s%Da*7W9Q*1B}vxT9Q&mNVPBpWwq+YNtMGMd^yQlr z!#!%2nH015V~cra5RIANv$9{=2L$B;*!y8Ig}YYuE5P?TnR0%vSjkni1TYQm&hl2@PFHUAo#FSwHE0@qX^VZt7z%w&nCC(b z)Sctc4({M$*_Si?okFcMd@m20(CnYWI<6Yr{a=AGJPb8)&VrRIvi<$|?+H9hmZ?w9 zEbpH=gLWFSIN?Zzw|cR{(T`U|*9x1a{s~ljNDVzeL-9Z8>7iwzw>WC}R;bBrlEPCf zUoKqkA5b+ob5FpFea}XD4>X51#@`KX3+;mL9M&U{;SRJz;dOQ9; zqlz8Oa1xi|)&ANZ;+^*?0y1%85}OHun1d*fXj^}?HU!{o&Tjn%2TyL(x7Dug&g|90 zfw(F)0Pgh&-|W$DbzhcOK6*nQ-j|6jRY%Xg3PoU4;uaKffviN%QWdbl^?LMbE9-Yo zYQ7ZPAGK?mbWWVjDX@|sw;d5o8;MhB-nK)**f)kJd@F_{+tjPefL8W-%;W|n^u#!def?S7KO>X zV};M(_1(8g=)xL&cjKm2oA=Fm{glh!j_F$`W8OA0nAy)S%bE589Y1Z_?r9)^x4Mr1 zQ;(RoJ80f?EVpt%m=jUnr5X3xtqgn$cY7?S4({&kKhL0SgpB>``meKDXm{FfVR0b7 zDI;xA-kLDU8$0FwAMV~fKB{7AAI~y@0D%b*R#8!-g2F2(R}Bdo2*W05Sc0eoxhh<) z`!WNl1cEbz495dOjoWp>D=I1~Dkv&TfS3THhDBx7hgAyP@043k&sXk}sOcD^h z_x27G#%r!ai<8D<2YcIHRo~|Yx7~#)SWwH^8~TvA zN0;>s|MPOPjv>C9g)ZRG2Mlr1u)_kMJ+@_q^>KW`wxX@)r<@p>Awey7Z(v9;kh}N$ zyMo^tCI->S#;$F?-J%Wnxisbrx=aX-=@Wq6#34yk(KT1&gz))je^H~g3_i@b)k!#U z`f|*$9=B^T;(vzn%8%esW|K_MIap>Y{&l`ARxy zG?9dSZ}~KNTaf9=f&*Cs=C@a$PkMN(Cr;{YHvdpRH26yB5AFt{vz4i`0!$S*ExZL< zJjPWuAel+9ceU19go?v!FVpwr{}cFn_d-!6P9IC7XVI)|P;jMpeg4esCZ$MFraS)f zFcV3Gp^=XF7LQN2EbnenWlevc>9?wig=yZk`QTb9#ww16;(214nW?)jM%nyZn@ltN zlG1Ax5;&et-dc2TaEf@IFkhsTo&a5S-Y`jP5lEJU zo!CkinFHScr)8U(E&D6={wHM{{|EJ+r0j`#+)!0GUTZO)-RDnb;&k&ji!=z(E#93N zpVQ6nJWcqgo4=h2e~^PRD4qLHY4lghwE7G6oS@8~jDNa}dvZwlDyUBx|1gJEyg&W2 z{|J{wpTz#6%tLz7NHZxOFqcllQ&_I7?^X;Y?w=pZ!W8RPtqFoz3~=8x%XJWQ9S)nW zgQcz@3d7oFO^sZY*3`&ViBSrB9J(ur2FQ%3CfS_FD1)@82}W4;0n=4vi}yy~KgDsD zb$e1V`UO^7)558fx^QlIp{;bN4dz2?j$|6UcMH;`*09N$8ixC|n3%1^aBrKtBCZSP zt4(D_ipi>)q&0JQDRot`ZPvDn4%Zd;~p zk0bu+=?b@n-Dg%W5qh%QVk6{Rn34DL>RUW>Q*h#Xk z)MS55yk>wJr&QS$So7NQ$o#((tQED}+KO$hQuS9x)$a>0Rj1t6+kULmR-wP#wOW_{Del|hlAy5IqJG4T2&1BUD_1`i z>L-G)O-wy&E#9Ocmx(XuyB2RUEX!}4;!Q_>GkLRkx5C%T1Kykr-?qdz8pCMpqcF5l zyIy?To<6>g6X0vvL~6-*8}j^Aa0<(Jn+Q&)D&P11P(RO4fK&U^#;N`3y! zs)p_^*ww}zp<(%V9kSG3!*IPcVu;=wPsL~R=Y}H9HMI)j+{KsRvZt_0jdOR!?oE4+qV&W?gz z33aPbF2Jpt!yM-GsooECgl6!!=ONr~Sjf;mZF4F1=!kFW3+gYx| z;NUDZe*Gz(8(4G>(*j$Tb@ANg!maJ__FJ>-lzG_eQ2=sZQcFUZSci+-ED3=v>y+X1 zA{SHs{sQiph;Z?IjqE$Xba;e_Iejk^y)tF^Q$}n=9DLY&?MLW-lKh-KH3H+jq@H&LJ$Q!Iv-t+zhYl(jw0TpjonjlA?ron zql2Bk;YhiE|MZ`yOO}L5Kgl-1=JGd=Leo2az3_QaEC9nEu#{|hzk!73eXoHr3Zo}% zm;>Eela_doW;uON3W$E5SG-4hyVrY<41|r8wj}S7Ecd5K_m3ryud52~J-Vc_u}04JfSb z(~tP&nO<7ckIax~x?W8`qRhKHBj)GlNnffvldGc1$WIP?r15fZx?5E~+Y1K~O z8^8%8H=M!B2>XJ)*e-wz%>mTGO){q44`UQGPJ6`l>VVtji-L_pHMj~JzQ8IBlf*6H zP_G=?Q2NfFQ5q%h1({H?q{Ou+*2DctJ5mo zXR)co>}OCLHC-Scy*wOhJcAT|nS!(VkyN;iV-K?w7)txh(vKPTJYysec&F^iFrMKO zr)h|>;6fPAbACNuQ?N7>J7{VitnygP9cBrA#&sjsS0!<=*o9Q~Yt_{!HZF-1Yd^}? zr0RnKr9g?AJ4J~Zj#ARj{$Wh_O~@n9AE{^J%&j)dl$kQM3QIZF7JGWdFO`zM&KS0b zZB-)fZaeKM1mJYH@*YWW`X2=O#I|qNp-B}HxiZiDVX31Gn%?rOvD&c~LEg2ku@1ui zIA>bHCqrvCd;o%~;honpg#aj+Im{zJU& zut)uuVYj!*$?tn=;Vsk6zfNyE?0KgS`&9JcouB*%dT{hZ_3ObZ!_tF;uups1dXRb@ zO9gA$5p3wKZaJ~ZtUgVOf(>PEgcvf9En^Is#yAJn2lI3|?BFW`RE*s9v9*PcrVf@-#9yhuQ@nf1a%x@9oJ6g=q`IZG#+fzPcPS&8#wm z(okp%;Nw9-2CU>=eUfFf7#r336|VfMOwZf9`n2V~HD7qVia3$iC@V0t?Z2_HV4-#-!oi( z?FK1t+7HxxM_IG_Th^>(_qBR%1qORKgajAexIb(l!!kfDZDKddz*V|iV9i3JMB(_> zg^P?aL1^+1{9>VD87n|*nJHoJv6xwGpVZ7``*@_{>;C{VbAHCX#1pp-(JJk^EiWPO1I1%D)yaU!cmLto>)$Wux2BgLT?} zMt$wiLKT#ad!9XbB06+rmO8R=6$?N%4y`>!**G(rHqW)Tc)J)7PJyI;BQfLVn2FN}mTsx&P*+CItdB9FJzAL#F3V-)x$UaagUe1;# z!#P;&2;8oK#|dAT(j*o7v0y1_Yo)oE_LbZlIv)!xZ}rG&AB9$O+z}p`YlgIg?y;om z`9ER7OsAJg*2-7MDJR%d#39RjbmF8zvXum&MU7SmhFg9@EaSeI4lgHml_9k{$dOp~ z>jR;$KNb_9xgnvx6le{?el+!bw&}e;-Ma3eM4VfW5|fo7jkV-MeLCRGyEY8bMdk2S z^&<}04X719`7EmM{FmTA6NZ1I1>fE`#Je_kD@p&&4y+t;lZC6id)XUYggbqog3OBY zdLM8uVUhdAaJj1Al!vuH`>z&g# z7mrrwV`q4QrT}=beiKg2NDa^98lfN98NkQ(@s2M=wdNo0c+=@sSdb#H;eWLIukI0-ne zVv?(Ds}be3=N4B)q(__+8*VE{(NG-x3+wYyWZqNqMKtIRt_IzKKvw9q#&!;NFpZ5K zMi3HS^qL8xPMk^^np(lL^G;tE^hDa7oW22gqRk0JW*>3-E@46gCLn~k0>F}~yKs7b zHB`qL-HSd(^)-QS54>}D<3M+l{3(rVE^_)BqFnyNO=2EwoIkZmjC1DI=sY-;kmlJ! z9yu{*?zWtB=J@mmNU%=$$-Dc0&Vj8Y?!zMXEl{AtLV7Zbmxa@`7Aj>0_@cGEtTj$x zU)IloBLc|vCezHavs(0&l24KE9-cur;Ty-dCP2TUTzWqTN*VW|F?er)I^(s(U9mgQ zt;5G%33g{te>O_&>Ycdrmc*!>xE&URj?N4C%}*PCC9F{Oz^6n-L-&_R&g7l9s6~L? z4YpR!=Ot&`owu}&#@RO*=xr-ET=4P$y z{!AqCvW|xwuuBdK|2g>FX1Jn<3w*vpcvj zJ1V8BYk{YHM&E|RW9(y+AL3bs>2?r5Cae|QwM zj85Br)&4qZ4|O}pxMiYB$xK*3W1z``>(9qoi;uukz}RAx;Q^eN1l)9lrFrfa#k1z9 z*_zMM7lzwFwRV*|;9L^q4!#P}x0zs+sqO920r}K^7EfTpVFfofFfxG_e<)LC4w;Dq zRD6mR55X%R8(qv{y0kPlCxq~;-~g7Ljo9pf0#da)8{}29MSP?ljjIcM6>QxD+@F#i ze+O`cUBuynDl4Eoqu;cw1$M<*0E_I$mzi^yaO|79L}=>10|aoW8({c@O|CEjJXMxY zLepphn60-RQf^Y5s;$N(LPnymW&8X5U@s@u+tggj&=d`d*v|fRuAUg- zgLie02rK%=aV^lpTnn`QyTyxlu=Y3|UYr{IrDHAl*IMvT!jD9!Zw_b;p3GBycFPHQ zB1=lkMU8p|O|+DjG%>S>skHtE6u=8Gr>W#J6<6IpZ8GaVki^CW^mox)(ePJmgujf; z|N3U=t@jnL3RxCue_v|v=bpsrGOCYwjT~(liogax^L(%)RaX1$^47E(277p)i zs2_*i+BozzaTuj=FzpT}JXJs)kJ%#HmxO^FI%4$fDmk7IUU_@hH^$Q2Qm|Gp3&(ZC z;4hoq#^yV!B5^NIdM2Vyok0Z1-~ooyuJh(_ohOm)#!9c_5OCy-a6My@P&y*lr>NI= z-3}AkDUL;NT&#}yEnlK!)LfhA$@=c*#OXhR4_8k=MpxX437^sr*E=<(!L*B(o`=U! z65=T0B%jmQ7&B|B$7`5 zL|N>+2Oa7Uvr7g}=;Owu@MMSz^XqRUAX{5&?Qc$!My$jnsr#7>*(~;T>}j{bd7~oi zTi3bq3}!adH2>Hf9;J<(W?XHaW?b-3oW(W)&Fass7@WYjRQ6XhfjcnvUrVtxO%RmK zyT8P$)l?Pjk;&+a3JYfyZeb}Rlw>82FE}5Wim`Mz^&ZfT$7KZE+!MwE)jc%q-Ody_dwVPnk$4%nZ=pWX> zPRrOl9{xauYgdt$9)#6)`tAih%f+TUVAbQ6ft>WR5yoT!(a=j~S={Cg14ok9I?ytt zK};Bb#A~H#*E#|%1J|e^4&;UU4*dmP5T4Kcdgw@vF%Ydr97ri&$?}o!&vn{gV|149 z3f~wDexRk0vH*T*4AbBwT!f!#j`ZIl`BwTC<~P$}k7RtbB+_vJErv+P(L^dfzRR5`f|2;BX!HKHiIEaio`zDG^CC|_$?47VqO!RpoNy9ZAcj+gFm#2B~W1#?E# z&ihpPSYMynVT(7C*>wUP26h7WlWN;8xBV_ZlWihg^c2?5yhb9?F-=>8r|N2Z+kx8m8VqfwnYxbaQkaumU; z3KdtbG}h4mr0VFU>VPfFk`0EMplt9v?j=Cm0VWHiK?s-2&2Ng{SCU_zq+Jbmondsq z7mJP^2ovl3x-)U7e?JXKn2kGqJkv@(WQ_nHw&MkSP&hSW`5_3!*L*xAXEi<%A0=zo zaNIIwX92!gedbZ7L+%?`vO{}Fa;(#zZ&p*e3DwZpMOccjZ?TNRGa_%pkwtY@UxI3f zj8Q;z)}^>Qs=L&w%C|gGok@fdiC%C+IjXLP6-dGLF9NMBc^X21Z7_~S%}B_6i@icYgfQlM?V!vlxWZ{I)&utTA$(1B28 z=-1HR(9fY@=%-LcXm_YQ^xbLL6Blyt z9XEvQIK05B<0NaZMzZ#bmLZ6S@C~86EjyrWOV?R@Nw0Ue=A81WAEHbH?DvsA`Poj` z0k$zMYzI^t!?VGb>m}y;R9Or96C9-CGPD8Z)O=z3-n|ebPOh*PM)YG(3PRs!$X@2e zrjaczRHJYnI}KNWP|IFKw%ej!Jv=t4FlIZ0+SLook@Y~lCY7$U9Jd>R!;vI zB%KRbKfffKnI8GY3=m)WFc&*?dnr|r)vVtux4D3Qk?!v znILqiwR`4oiIbeCNe8Lia@(_Z>=4Z^LeaW}SR%Bm!-YRiM!fpzop-V#LMeSjlbXQw zN&1Ke_(?SK(00hL$mxaO)YQy`+#2U$2#fH7a_GRt+f?A^K*;&t_SH(C`=ZFatf4%rWq{K+5oE+lq9OM%;3R-y0Bl$xV{MoZ?bMc*(LbtgZ*_ZfON+Zo zsM!0F*#Q7y3LvnLhha2!`o|-UOLH^OXwoI{TEi>Xbc;;aw^2~xD18;{SM4q{+kG*T zBJK88w{iMgBMA+R*%7lN)3GBnaYts7k}|7b9mbG{^$h#-o-KG}e>Qd_(bm_nHCYG} zIOqI=J~`(+heU5RNHRtq5a;SLJd`%%;Dx=&=K;mmJ~n^Ka>a*6CLao3 zQGB=uSuH*|eJ_Hk5i2Zs0fVWvY2~hG@ zJDk3~u)jO!{011_YM{FduhO19cqnN|r1xNajL@)`7fo@_IUnVFO~+$id&#bY4$e7l zp$4#cPs)IT4}K^V1SZ@}wY6OiO6?U~euJ@AfIK0u)9_blm@5xJ>QX!?8kY8#83(W$ z3UI=s^e^#11qv=@s5&J5V$s?pB4%O zz%PiZoq-v~w;22*^pJM+5Ln4h|HqsdpupqE2&7PCK^qjAkL0MfCp&#(rF9T+KR&W2 zVstwgMwj%wJ%Wq*t%v$HWv%_2x4MzjS1fp<&gQJs zwJ>_nRzz4x{2Q#JS$`o^05(m<^4~BbaGfb|u7&LVn6dlrK|@&Pz?Zx#&sYlguBf)+ zteC6>TOu4ej*E3(3pF$Q3-*L1Jf()CO)qrguz@p){#)@->Sr>D5yP`AlBD@@@l}nO zH@s^b2jorf+s>i&eZ&!HpfHqW7YKgIHyHOZo%nu9O-+{OCun$zm{q5(nerTPOaYE$ z&NaExNf@h1_t3V12)__DOkVzh-)-@`CiShP*C?g&srH0z^WCnu#XRUpxu`BoQulU z1tO^Yx7jdhP1ijVW1U|gyQQjTxYhP=@l}N~-WsfVAK-IoCrc8uw*?Uh{JyDDc0fdl zzQQu&KqdHtIelE}I_I2cX@O37Wymu<_p$l_-MXc+W~9};8wscb0OhC0IQC(Mx zFu0&%J$EJ>?*4a#7+shf{(~R^owH6r_*wtvUJcy?(Ds}W*nMD|`=%t2^4B8Dg++O2 z((P}+w?qhsyuZw=;*fALvgjUeOD9VAGWnVQ$o>e})B%eR4UN`m&AF z16h)ONAMppWqW|rKZ%0ecNPQl3B}GsE>Pk8-yrT=gTE}o*W9hBsE$M&eMRj@NvU6k zDX-yOEriT_s!W#l#S~sxs^|LHEZ`lEY5uhvk=ZRtSO@^2<+^8?l?z;gMVm;0dl%qJ zfUv|)M^>W~M>k5}Zq(qMa{>O!c(5K1O8U0chqNCAQK6l|@GA*O&1~aE3iRBal(~6V zqA_L%OktjLNp8%KATco?sE#&HWGr>+^zQRkCprC1p`byH<{~^wnIWRa@};$)bK?cj8zrIusaza~(MtV=$z&RU24AeK zQ6FQi0)_7-#L#KzD=0y;9CN<82zGM7`!{}P3AmY@-j^K^I-2;LiB-SZhThT!%rwrk z8uL4-V>PC1ab?XmPTC7lo@iOaUV15qJ!7pjVgV(`-ecb=v-Q{k7*mPS?>#U+-i87) zlbH=ZQHuOM0J)%-5B(IQEO2nn$q-E9c{nt|?Zi57VhpBrK%xnMeGhaN#417~K(P)Bs=@*r~3xPN@o69>lIPZWoksS`|KYo!7%iJ$pJjX!k>C zlRlz5hQtCHJ#^P1iu7mjvmVB0P?|cl>naZHi>$$%`$&@S$dIaf?3*IWWYR0J3w=C>T)%pNWE4g1brgBI)nt zaKhH&n`AlQ#uNHQU*aZm=6L$SLTKVr|D8w@EhA5szHfg4-6h>EyYFD1otcynGgJCM z;FbFCMG?*tba}Fh>^WcDNWb_XR`atSUcljADRvgB4B3EcNbzn~4Gr)B$g7+`DdA4s z0%Yt3Ptnq2Z{Vj68HGB{Q9a`7!~AhMD)?Uh%7<#iafUu|7l|(MNBFf3lyT0P4O$C* zRtcfNuXpfpVt%FKtH7NHxRw&!cU6_r=$b8Y;?-43GfrgU*5Fn3A}_ojfgH7wmk;Uq zuq$33yAcZ1_u*!uR~MooY}RYitlL2{!;OWx`11$x;C$>id2NUV5r{Y5i%FbFNN_JC z#1CcaZllIB|1vC?WZv~*jIqRg9DOQxSR7LPRV&T z-?$BLlo};wQ^0LXPVi|Q@AS(XRU;(xsW%fa{CSeiQBiZ{Q|vqq&7siDjH1uN@@nix z%gm00*f}u@34a-SnAH3cYsO9QHiEoJgo{C2MUam$C~i$?i?F;#7c|g(+(;&n^hE~m zMI|h+qRk}pb-elh54@WQ@X|UHfiE}_VbcYHHR^4+!+2NB3Bc(!WmiDbV4*#dvP>p0 zw18|G5rDirs4|<-?udG8YA>}De9+=ie6u`Y1!JsJPYO^^K?L8shcUVkPs%}fAS|?$ zn84%s6_?>#6JZlV$|RN2AvHMEOc{ri(Du+)fFU0u#T@%(zse1XT~ zxb{TWS(wtI#HVK+!6t6RsRy%!3Z`#Ha5gPIe{xEUJDJ5hLhzX0rsEMTVak!D76nsO zkIDel>#6e;)Nuk8!ObH+Eafbn7lGQs4t3Spz=BxE+Ed?>R2=vY#MNL?QD(ZO!+BWQ z{V!|)vV&>q7|%j`!{^d)#)fx1TBpQW?`NOd=@Q1CmA!7#g0=2Gh&$tsneM6vf9VgT#zVDg%uE(_rVk=M-KiGlzMx1HD z$E|F6lL+J}ieE<##hX$2hIPdCKp?RSk?ervKvHTpX`TwLU($d;za(7EeR2NORxzGw z*hD!8#|$ja;&K`a2IQ(iXY?`r9+(f$4iP|N+u0PGayDFvQxqC&CA~J|-_%> zyd{Y;xS~f~G!&B&4X2@!2f4?=hrpWpuAV_xDICa`5Yv!oEmL-6;tuX(x`jMi;;DdJ zhyP-Bxc>N4fTodZU-!ZC@d6|uH{bWSf-PnfZC$v8Vn8x3o|qe&KgivK-p1iia zI5;MT7YG$I_4P<rP!+=mGxY8Nc0WYGJ?xv(`9Y^3HuLVY-jUaMFG_e z_#rz28?|9=F*2O5bxYgt^uGWS57KlJAk+*eOSNu;m^=f?xHb1zZ3({^ykU@y?r1jp zaQh=N1vwY*AUIoHfh3te<9Tqq$Y*|Ai*LwAJ?r#uh6xU^qPn_XSdD7fpl$PEOwo0D z9Zdg40e-A40Qi|`Ni}Xg1e`F?VR#An+k!ak;5sj8VL)+Rl1MDQFomQ>4WD9GH;I5;|qMtf0$@iz+|XpK`&%cFIgryik{?5UMP6UyjtQ&m#IaTrf zn|YAJ7l=!p@>kba{%6$0@^6~upF(-^`)&gxd`Y@+!0AiD^hEEMjNMJNO&=q6*-mVM ztQ*FI;#xx?um1^_kWfIwVp$Pw;alNW{Iw9}v`c6>7{9t-G6)T2K4z{_AC9NB z5Fo!i3XnILi0L^SDCDaxy|9*W^43~(fRs#*(n}$P!ynOLKbZ=u0WD~ldJwtWt zwM4NgE`5Dy!42{SMLqMdN7e)eGenF1IMf)Kmb}Bu}I_ zWdKeXXdAo){2diJG!cD>bE00zB)X93dIvt?rnL%8zir)Gl2OGF;`jpJRJYzwGiU8? zy%g2d>DF1S8&c5n9M!FBaOIr#0xPalehc;n>XaXDmfwuIB;l-N`H7Bn&jwf$p)z zWRXdhERNsL0S1CoSPjA9VM%>?whdPM1vXgSELdH_u$W}QYIeZv$O8#$3l>!R@6U8qe+hBqh`>DcflnvHX`*47gc>Qr0ux1k0lF9sT_T>X>!~M+?Qc~oO6wsGD zDtNxSMYM!o$8VthG(aTecb~)J;__-mQczS#`U(26)}*92786T4p*{eQ-cLZmH?^pF z^Bt&%@HBKi!atiBe+PRlk@#>veqGO-o!Rvao9uZ~cReqnoBNDKyZgIw=LArivh*_; zme?!{t8Q;u`am}A0QV|Zipt(UgzWdpX4_7SHt&1^v#6@kPMhmmMriX9_DJpDF2gr9 zS#|nnLx73Nr$+#~HQND9^qj?1C0}hfrx=Swl`OJU3FVcdcNo~?5-kLr!tJk}H^Sj} z_A}h)I23AO3bFqp=oghmA91Ne8&LoSuqfb92C)H?`+~a87kbv}{v&ep=3A6%!PSQeTNa z4H_l_q|lPf6kXp-frkn@^LZ*czr2EeYGlq#rjBD;SjYM4bga_Y&TFs0V$1CAILRV_ zJDRdN8%&dhuw68UVv()2Ea`(j#jXJ!IWa$Ci=VCn|3-3m3~=8>KUUeW3F0pT>f!xM zmhm=IWo~7eb5X`##h^M>jOIXqDta*c!75e7By?|>8o~>q3r)1YMWe@CopOvRc-F^H z@R5*yJ_txyIYw1Hmld0xF;!8yPG`)W5w+a>4h=ExrW*4USpA{j;&6WmxE>S1ovG&8 zk4g8-NDZFx6n9|oFdKLfpBel`Czwd5h~{h|JAqnY?*2@44-VB6R_>OlPJprpKozV- zt?dTxV(fv4;gCK0!5t8ytq~#m5+CXaQ6XiDY}xuO8mH^>$_cR8FOFgRO!G4>EJVJ2 zkXEf_{zIIse$Hp9ULV}up--9VATv3P6XZZA2u>3QgyKCw3V*|US9~+IfG@|CYD@T< zWsrdw(dgwAN zZ{I_boUM_(;8X_l%7nnEs{O5_d`kftj9BnLQV!4@QpYmmDVhOgDZ)A)XB`uf6qR=? zh-|b)D%a9kvey15Grmpy)cXy5Z-7e7_kn!>kg(PFG`?R#1EqTJ%=eok@9p^h0^oVq z$ez8f#{g|=p<|ge7x?)qw{~M;4aZZl8t9Tryk|^=?Lg%*%?EzYkxUCh(Qa4}S~H!2)Kzg^~%P*i7n`JXXCVw^{E1sh3|P^>&kb zg(r`|)*P-^uVlSwZxhs;t@-&X^}b}QS5k@GQ@C%?%wyHtHd1fd4{R?XMCujWgRJ6= zL9AB?AE*xsgRB=#c>>!Tpfg{k-j=p{b;$(e&XRg1k6EwsnjIrGGCf?QzYDg=6+B{m z8!k&Tu&SdBS+v$UaInp7P&e8v<4E!#oUq{lYw=hz0m8rCY_sIC+AL$CvJ&kqXPfyo zjDc@&40+5<#`l;cMQF{_GpzR|?DL>rzDk>aWC5#Q$%J|@l6obNRd2@#t#6Zh`887S zOsSWdj3rV14rG3;G5Tvu<1C1Nfl`5_PWx^U|Kpf4Ax#7yX_v->VmDx!j5Luqq@BgI z>}DDri3%)xnA0zo>rT;WZ2;crCUuy0GpC=2 ze2ke=M>y?!=Btj*H=JpAMyFkeq0E?oKcZ8_wun)x;8%_?T*yUPkMC+Est;B)YE)&F zTfP?q8Hy~yuRdf08Fvx+gC=WqB zoTd#a(ucydgFTZqxM{otv7i|c%{BAhwH-(NRC%=E^~uW8`S8oIboO}#md>GEwph9; z3c1T_Bd20vlMop!9?#;lP#kj*v$8JaPq?z4sLWjXhMTkL=Wvd2b5?}Ylrg{rcHueU ztf=yrNdRW)lPEkjSZ||=ct3>61agZFHdhB`@>`4Su;&VF=|&daOa@(28@9SxnKZZ( zRSSGG;hSK*#d2ZR?@zYN+11Dpfw?PawKepm@g?i;%Rfi)Cjy{Y zv)6FkgBmhG7~_g4>Rc|XlME8}Wfl*&@XW}EkD-df23nKhkB7UAu~06CG)f!S^ABCZjc22X_Y5beim7KtVK*)E;cqOnAIr4%wX)N0Q~Ws(hRB48U==wmWs-58s0Q zp}u&kcnQ-IW+I6+u)glXS3KvR)AjaXY~`;tqCGg=V405bvz+jaQk+K5so-Suk(miG zQT#yUE479FSZg(icDNtHXC+QTqFHhPN|M^Y-)F|HMOg1-pk$pl@A5KH(~<)@Vo``l>-Id^ zwe$SR`)J#Dv;MKQ>*pCq90}xg8TX=*!EqFYHKfGFlgT=IFozw!=fQWqw87dtGH&-4 z^AeLaD!53a8EP|X`8_KBOKq6V!!W;{R0rnZ`e82dE13T@VM;8L!KCCUNB+YT(2u?a zx_Z`aM0GNPgu~k|xg={s?4np}2TIumz+!f{zVJB;j_L=$XjeI|{`#q73?h(#_b{?6 zOUo!^pe)2(kilJ1#yN3q3HBUzyk@BG*{ZvK0wI#E0_v-f#&rAm3@+EhXwA~I#uB9$ zQW+v9?1kW-V2jn^zNR#5Gz>iK8J2c&pBFiaSpa-H65nUO*#}qlNPA2P>wR7ol%}}J z;2eyKiP9BmaOj6zs!8&heAkqBNTUih*N?@oxs8A5Mv`p3OX>kTJ&t+Unn~YV=_PsRR9 zx1|m@`IX#cZeoyuxE`0&nh)-p4BY^PK|G6JPT#x2z%YlMzS&41&NJi~T*AZ$!DVV{ z;ZeAppGQPZrcFLa82J)XK-aQbboG?kK3n*tYKbG&kNy)6y4N=e-t)3J3oUNW=ER2yDCCCHgP>gYSxz;(q^)O;{rRz7O`sN1jT*|DuQK zd}NBrs~w~J{gw89pAKTy>i14%Q&XK{!r3AZ+|96fmxH9xr_!$__K}P4OF7txJI?($|40plb?#L)$?41NMH6`zglA#H%?bgy`B$yYHB}HB4U{-9n^Wr`|$0 zbTad}8Q|Xwg9->fc_o=(Yn;<}90`GHeCwoQWXx`bENTQ{m7+6?gF7E2!<>E}K6c*$ zCn`Db6(^k{tPODj7Bnzb#jvxgY9dH>KZFinLG@i`@AI|PcX0aP<2BhjCLK{)n|on$ z_m}S4KtXlFLW*1)*y&9MR-iV`wZZCW?laKQ!Y`Mb4D7B9LC8la@0|&rYz_0sZ0Ns` zYH-QJ{x5wsz8!gZxN<`du;l6qp(GHBMCT_`WeS|^jQ(|Ifu94+ZV2#C}TOclG=l&FB3HGah zh{yr(8%Uvs1u0&XMO-;!u;qrkE`65Y^AsU4ypn;Jzm;Dxn0kuY|?heL4Gyr>#x?vG$9|ILVtjQ54(G z(yS3^PRs|fq0NvZ89RHQVak!c^O{4-`S=#8S)=Sp6PhAj^t_@oSaooRBgSH{7oD1w z9vdeLJIG8@>`P=KX-n`MDxo&9bhN~U!`*&a4o>Y$yd|S#FAsSSRUM>ixfGvd9;+h# zc9I^h=Gb?Ek$Fi04j|~Xd*N`g3z52gj^Ovr-jdT_2F~i(t7au zrLDr}>&QnFpEXD^3AFRpFoBkAGYMqk)6uquIA@BrhS+llM*u3A@ET(DZfgx;4GkDn zUWau-#Y0{rwN?d}JcxaH6^?YgRclr73c*E~n2pqW>V6drhn9hS-%+>j@*nD{`{Fuv zr$y@i`4+RqRl!fYlMYh%7NnwXS(9L{%wXa7Ci)L~&cphoG$vY7kz|gqX3T0=vaE*9 z)0J?`gj&Gaht;L7Ezu=ynl25Rj@lm!)11Y@xoK2+QL7gY##F%^$8eQ*k5n`3EkVS# zhDV&tB&lB)lQa`X0|3ZA_)^4{i^LGby$Uj7+a|e;=LoM11(&|i!Nu&Vc^j-9^1HAJ zK3vb0BflKeWZn@oxo1m z!Pr+5T0~tb<9SoOs#r8GaY6edi1!hqX10KQa0(BuKyd@{AURKyf$wc5@HB#&g+29+ z8YJHwONDA{BPZ@s$pQc+Wxo4x}%#jw&jFIKIj4?7szt9r$&_ZNJw1)F0=pkA~VBcxM zTY6L^EwL^MPx%eDsrk%a!M;i^+e<;-to5?wjkiX zD0bZ%tiDH++rNLd4@QV}YfwMRS+XG2QEp#G39C*s9xwt>c@Tgq1!h#UcW>CsnSwi! zff#o~d1&!gl(Ra)cV#9IYpk~@h2XCO`RrZZ_qG)0r-P6Vsyk(^ZN-c&IR^C+cW7{g z280=C0&nB%hvgeoDcnqyB!G}x=rc+oZjVV(wvFBFy28s<(0Qr`(+0Yz1+fWF@4`lo zXP6NaafQkZ%;>D87IlrxIXuXsPFA7&Lxq{$A63cck%Rz|zXgkMDhMpZ%p8V^Ob_G; z?c_JqZ+`p2RB~uh=QI@i`2l3%+oT<7(XI+s2ZuCsToIuT?M zvakorLpuvjfd8XqrC8&GdoX6E;g?Gy7Jhddk~$q#sZi=>v%xEIuv+f~HFt5s3&_j) zQq2CGB?9?2-(S~S3J+HK)_Ib(mfWIoRRtf%CzCS&x)BHuN9AA?GkwLdCo0#SDpzP3 zM31F*J{@k`IFz!}Q?;$hUufIS_nx3_zc#bA?FYWt+P0DJ^|$Rqd@|d%@`e+(tw7}p zw=E{pwg5`8ZDx$&Y)46-QL*p=>ywSE#F1|45ShO-UqvNFxviF)3|)iGmnPogw!B9p z1$H)cY=%<|&I1eKatKbDisrnt5eGM{6FzH(E8MJ7YJlu_4@!XfM@QM?B13m(JM=!c z$;@MwHfXeeojYA0bZ_^fPdVYjo>e>NlW+oXUtk}B@I_gv=y2C(G^OR%Ht{jEv*-RE zZU>rBUzbCpSm07sz}y57`V0u3zwM724220)!}QTmp(AZZRI6tGnghi@1yG6!2=Xeh zI%%%9pbbb^Pp>yoxFo71c?7yMMssQWggn^DK`r;yf2h055i{I~zdIoun-K~G6Jcgs zXIzI&R?J3w`W4}H86S9u9@<2MDQr7QRGWI%6w;#SKhXDM(zB+xr>&r;ifp&j(boz*@EYXq1@Oseqs)?MZ)bJ$^SjG#$3pzFsZTA%CUtA;mK>-ir|$`5 z4K%QDvk-fG96Acm8ERLh9d-Kd;|wPbHy!!bBD*%gkv_=bo)S2Mv%efgu`hb%M}Uk$ zwWlQD*FZVUwiM~q&m%)HU$rx6(BfW#+x@DrFm4SoU-gT~-L z6%qH&umYTgQ?^-2*tt8D**w{N~nZL#Fi zvd=u=z+D60>XfNhft9k|0!c~K`ipL)yrZ%WEkw|vB>ddOD0L;y`xXmMb&}EOw`w2g z4oosE{hA5M!;C}0pwKy8B=r_ph&lUgkRg4{lKgS3>% zSm;oQRT4!kxo20AN2*n}W)oCRpg$<*Zen#m@YZSpT4Y=fC~Et0)<1y_`pi|ssk?PJ zL}QSsx$k#HiJ{)TowPJ`Ozplz@3C0-#nRVt@iHYE4MK%6!OhLho?dwa4{z#!|9y3m z8c*bNr=HMr=wHY_7Tbft5%3HIYD+LWXnk&jy$B!LP>tl22MYjd*s5SM=3}0#WvqA< zOQ4FhJ`>!2j0R~9+`X-4u;GM{Uq>v9gB58C6JsQrR}j1jZvb?0pF0`KZZ`L9LT}-& z@TrpD^PzDGQo?ihlPL2z1vWCCKy-VsULWe$bN7;oueCW|lRxgzA1~jQCe9r#v3BRe z!V=hKJ3$5HyT3h$&mOq46>l__{T&JBeD#x|=J=`l1_n@EIX7b_Dv7wgPra@Cj!?_2 z=;XA`c|-IOjBbZeKA?l1qZAbdf_UOb=<|k?oZ@lI6()e}#Mtd9rQ&}<49+HzUM^7m zL-xrZpAXE)yMnL zSo3ZWB$lIN1Y>N8G)<)7T!#P&PNa9i8qX>~!$viM0PkQjB~)24FyvMQCS!zwO+)S! z$LqbAc2|^SCS(3wA;Hi=t!p^fKs<)9UQdMuUhQXKTy&E}mp?8hIIcl(kKY56wXDe) zEOh*NWxR*CR`s(lJ1!l!NJHcQZPFWWxlj8i%nZJ-cmQ4^2WEI7n~+lzQIZ zPib$U@&~}sHi6_oLwtpsra_aZb7gkxK9-nx-^C&5IyDcGn!y)KKXp)w6La&<6sleD z%u+!sHsdL+)O{heP(CZ%iC*OL`DV5*u%x6b>Fa4C0r1N_aovY>~O4 zN!o*nfwIok{-UXa^u8Y_>m%l-;9ia*_@TJd(%X7|(?@@tg7CX*RvnA;9;?BLXCFCh%2$}B8KuH)T%)~yK8_f!jJMo|6Wi&&O_VQZrVT?X;Gl8{Fb3RtPEeRxVM zabE%f*+40K_d_nGEwG%&vYo+aqLP(8WU&Cjc`&rK1f2l-U7qNbovpG_r|7bOpo9x~MQ3YK-&!3ze1Q`t7;ID+tY^pLW)(|+fYOx4gM%f0c0FUs1g$&AlA(#(gGtkmO$ULTK7(T7 zSs2J&1nX=dZ>gz3ojzW*st>7Bl&fc<$7C-oLS-W%I?{6`9rpqR@L#4zz7hMuD*&EthNZ!=N*Uqu`*oGDG{>&P z;V!GukPe8cx9EK88Bzd+@81KfJw5IQIDM~y8)ov#I59$@FMK=-9d=eL{>4PJ#rT5W z&JQ<@#|_>^akHBHHhC(c$q_(v;}6>XNrBRX^HGUq4srT60G(h~SFoeR1pEj9qti); zJCG<;u^GFZz81v6TR;v1yUF)p;PF0YzTGZwqDS%V&VOOVlBJg|kOsUTky(?4TU7ER zOwO8OOLO0d&TfCd)Eo-0e+-v}#xDYq$@VX{9S?`$C_v+gR@39S0Kq&g=$M&@^@AGR zR=v5uCiJnITRLQ2p%$HQFnz8)J-pJKjZX%H_D0qs(k9^zzjfm`(*#%e2kQL}LV~k> z-qkJA%A9_9CaB}th?=BE@@F(V`ptko?Z9^rz`6rjWDrj4fsv(*ud*h7?Qde-FV(|X zJ;{_G7>G%Pq}2+t!D7mfciEZpwY*tO`Sw|UlMVXk z2k`IpK&deVZNy^<{w>D8e{)RWoUdDcucesh$M7CK*>;6~VL~v7O%?bPU_wti_1uhU z)#tHR=Jtoy#Ja!q{&<}1o4t`!E^E)WB!R_a*|Sk4ZMRc79O-mwaPg``hY#=E4+few zi242s*BP)$St9M06aV(IL#1pb%g&Xul`Ol4Wx0sbT$NT?r;5bvswB?qkAaocGT?0$ z6Fx>l=-(*IN$~t-G8WA1&n{bLJTi7{SNlAOTq;O0q`LWkfz?ja5IlshUFuiXze7Q+%HX-VIR zz19x1Q5fbi&_dbR!(-;m`eD9(qk{Q&6J|Yf)90(&ax)_4|3`B33S48n#dYK+xH&90 zuB=*eQ#FCoV9Cu-@@C0R@JW8Ni=c z+G0}FM(deY?P)nM)Y!Y)q4gYymj*B@LNmiI0^b6t6i8tWs%0Tw>E?d`a;`>LZL(Z@ z_8jVmUCEB0>s0W&dp__JdPSjl9Z?h|62`KfVA*OQ@Av#OJXJ}-%s)X;C4Wp>{tJ(_ zX?aSxu6~8M5>gbdH)FaIkn!%X;Tl0r;hN>PnKrshOkz+{`9a%a6LVx+i%ESyEm8mx zhqu6)FV(!ZzYSvh5BD?8$T+Fc2 ztg$F%+uKC@9Ws})`WcsV*R!On%*e;|$3CwTJOEXIW^(W|< zOyT~SQ*bEik)>*^HL2r=qmdP#+?r?Q!|m~N)~_a2T{^Qnmm3HvAWH|^yzq^An8?w= zBfLfb(M4*Q{`M*;SNO-tp#I%-mAD#-kvYHkP{1u{s>AtFR$?!9Hg}r=?oQVDG2nSF zQcWBE@FcDOWVJ7F2A1A?DC=;8VK2rca4tM4LZwL4`(sUAY~L*a2FRr46mvxTWw5Mk z`%iX%s@AoOWlcR?tatj5G9IjR6$RTns5OgZO}#z5Dr(6L2!&=Xj8d@yOB`@;2dK&F zzAb%uK;*fJ$8jXVLSFGPQMfNAA1t$rnQcrMolclr9+%fVbDv18MV=wL&NwB|N-=gtO@K%73L zoctwoL}Uc--PfR27y}jN{R8(V%5IXA5jG$sf-SYyjTIb#Z8T7Qn>C^Nh?p3h@&dc| z($Eu>U1dkifa0MV;DAS@Vj&fQoTWhnS!u{v>W)W+0gP$Nn8>EmoXFUP1yT0I%l>7v zCyHzU9(R_`75qa_Mfhy)c|hF$7To(I)*EO9`q1=8As`|clkjBP-8yXt6Rvng+1|V)V<_Q$EajwcgtW=SB0k-TR7Svx7Ire8wzQaPTz-UVdqL17%$QLpo>=Mecb3c z-FL9h_C3p?xu-i|X--I+n&fVig)%7Fxe|A>>}EGo6_efM3(zH%b_Sj2Lowy-RP|ik zJ27qR)JwG30q#~f<*0JXB5&=(l8tIbEjL;AgT-J*j>KODX5tD%HsQ;_|E;OHMuC-? zFU%JVXHbiNyf<@dPH-XOY$&4jnIS}L4eBf)(c=DXCz^JXgPNFJPjolOq!yHD%z=l) zx#xUZHO)q1|HhGeCm|HQY=;1Q;lq<5D`wXUtG@OFEK}VlV&ZXsVA6>^{RP1aWCR%G z&g;bi)IHI(#!}a-vFeS7kmnk*iaoz~V)vR*Qh`3=N=KS|uETvnf0#i!uTJ}R%3iB- zv2sA-J3`_SC%zqJQP~cK+&6px%G%(CR*=V1UFd1cuH8lRB-2~{YYILbs3tq=j_}vJ zt@}$rtYO#KNXd3DD!$W@_M(e z_!R6u*gYoc(-p@FgZnak0LTv3jKb5x?B*t{`6B^~_udP~On+5n!cIg$sRrw7lUIsvO`|mPPRD% z&UzN-*y7rDvO!xScCvS5rX*Z^dLNx$%l}h5*%t6Oct(44Fw0JMBLG`=vh}~kadQ{- zShRNf+7pMcNhW(VRuy48Ss!_mH3~-0zFeNl6xB8rbNZH3q-3~?N}k2!Xgk?0(bGJ4 zPjdov$%A%7)2j%fO+F070A}s7TK2MCKf~D30UZDow%g0*J`KCrdurTQa*imFC&~q>}7rNX5i!=>`i7fCQP zR{@;poJlYdd)bQsLleML`2ACR*@@-edob>V_Te4y{ywRFc-Y2>+}rHKFTvUJzaaM; zDEH^JvB~`{0Bp(qrUP~5KH5G!>IOS$2g#d7+QD32*OmMK+&+B8M7zMey{4{x_!k(} z>$4BP{3PVM9{X^B>Gj)(@5ZMS*@uVmo83O_VZDE5AD-;7qyOt_CGXc>YLoYNXF=d1 z@;>8iyhh2pn<)`_|Lt|VysyC^5>ZA=_vw2V zQd?nn9K(t$UmGxfqDuMYdWr8z{KaHIR&E%W`5GL93Sfw* zu^rQphC*(@Pegu)>?#7KK9UE12Srwk>9j0V`>}$=%n#f+I+%pp-BD6JbO@RddSrqU zj#Mshf)0TKx5oScO#-+UMrzAX5bcP}W~AZrs}i8ja^=v7uFf@d&P<58p4W{8^Esi_ zbGDL^A0gvNT-U}Kt*%bE#vtQxW-OYbGL|#rY-AkD+fgOsPSW+;s}o`n0v|`Y%Vc(^xsg~FlJ5HotNBnZ_ za=~22?FM?bk=&gf@RVr)1^19^Y3RE$P~Cmg;r)7tLJ~h7hce=^cI!0NH!GNphmW2$~$eQs^3Vl5XI_qEfo_=l8)Kp;1?+$<_M%e|x z2sO8aZ$~@|U@;b2=v>*abtcKqKK`c8Ri2~T@u#pxR)X*+FQ$mtW4DD(n)=DEbhwI%BF9!NX&3qHro=e1Fv z7s=-h{9FNqxT*->IXAV7TGLxjYUmYEOYB!^n|bSMByZa0DchhywLW&saM$iTu=X?^ z+#+R%e8aL)nNj>3I@ZJkjhbu;KYKlpv1aI+YZ)ue_#P97n-Kdk(#hq(SS7fwf;FHL z)%mwD|5m1RxgW_dYO{#x>oL2Iq>Hjxz;wpjilmEB7BKz(sPv_TKbh&gdODJSG1JE~ zeGTok{Sq-eKY>Fv$PwNMsaHWl*(9)=qQfbDZC(3(4mciwo*M!v3f_L~4xI|TB|wAl zlt!`OIR)Ng<1Ij;q0Q;zMaO>%56v1!cyJoDD{z#iGR-YB<^qa>_qS8Q5Aa%<@S+sV z5LiczgKTTqdEgwJaW}f+Pw?yt8Jy{4*a-&5;2i}xrP#dM&H!P|_W>}VG>T!u$Wo+- zUPS51EdBBvlTG;n8OT!_-##RxJ0Mna8oVffIK}z3_T{smvX~7c^S2cW}FR3!P zKQ5^vq)thdTL`8gm7`1kg_z9(mf*Z^8(^tHs{)Uq=V6J0lE_A09AlK{z5-2JvWi*C zRB~4&8@HQyNef=#*RKO5p?6e{Cd@$}U*jtx8{w;&YFsBDg_cO%CEs{U3&x}gs7wx=Dp>zSVUpx7 zsoPkt!0>P>_Nwdnq%EyJ6H~EO$O|K@KLdAPY6BeseJ~$JIlK>#j&b@v!Mu!K1X>}# zv&tJ*$Hm}E4ZbZ;#b0yw@6Y73+Ji6bi{}!5PyEHzsOjow0DpM?cX>BF@zyVYCp?t; zZ{r85&q4uOI6+d!G8LU{d_n%hqhg%?GpVw@Gm#JWL0I)Pzu=j8XcaD$?TjHt6O#z~ zPFi-7)7OS6i38ndnYKNxkoXb*BmKBkkgUU<6-yC(%1Vbh9BxjLIufu4B+xWzthR*U0eSdnjRY8hHz7sr1?q1 zG(Xt`r(TqFFN96Dk|8c0ldQrM&jnf`iFhckqvs4QD;3i6g;yOKMut>oW6%4uO_QN;mJvzzlHDgMK}V}xFDP?q54ga?Hw0F z_xYAg0cQQuj!)SUk+pV3ahwDvgPF2up`75Ip~`D;!ypRC6cc@H&2BDTQlO~Ag1TsB zTuj>tU8R%4+e5u7o#pUG&(-Xn?5N523xuCZVa#syVuDA2vu#rt?V zAI7QL*&RT0NRsMt@RUCwp7O}l^#XQPp?!pB-x9&vTq0t!BL^Cur!eDrAKu^SoH2w0 z`xETX@qH3;GrjV{?|?JfUtyd&i(d&oa z%Uh;-wxoNOy2oXDS9eJFv(S`{nxASU;Fk_3fZ#^wyN;?va%2WX`)KlM)$TamLF0Q& z=dyU|K~CR;z*TC&cGnW>E%0L;($aK-^gNN4x79P-xDi9OxnRvIkBhmU9T#oB8qXum zerjCKi2?@w-EkfSr?Hg4@X@9c@E^nXUa?@N(_e|l{N>U`ojx7NDpeY59Ke9yi_W|5 zn>6rF)CY8m@d4|f83XC|9%<^Fk&1_2&A<((52tHtdS%KZjxN^pY6oaeA9hD;deNxt z^f6+zw>nw5s~JDztpE_yayB^qd4y_-h$Yb%XJNqEj%-Q<4D1Tax^W2!zVRn*Ir$S1 zRg^AiYHD*wNe2qp+Y6wEgtT1qYrr6){sT+MEAMgwikW&<_aY8GF{{es^d6rHQ%VAr ziY@M>_$32aO=(~wl&Y}MCttgZ>y%D|P3hQ5d$+k|LrslnIZNOUV_2rWdB7UbG!LXEgBOOeW*3c*KaF3inB2AcXK%Fjmn@G0aXOV+FbZ z{Wf`w-~LPUTuzco6B~5~&uZYP0B(=KihERQ;CpXrC#UZ{FqA#yt~XHQSFwnlsts?8 zsVZ!0X=~kgb;bf7+f6v`Qv@HVP~!N4Ol+V|&Cy54!fRoRHu^b7+GU;)md}B_a_rgu z;QZ+NMDNj9cjEM;beVuLByTIWk<%Ya@_dGhYX+p`-_rQFCXrkd5seh*#D+OaACftIcnMR zAyO=#g6Vs^VAvur>1d|Euob$POav5=CMLN0TdG8mz_puUUYrugqnCq&+Kko6up$w~ zSGGVG$4%-}6!E@;mJ?6%t`KjzaKnP;R?w!GvXuT5!K78Xb3j(a1VJwe%M`^3)a|qu zeF8V168lU*r9gM9tZ4ufrDdo@tQ|D+t1l>Tw$1>bkZ+7TKoIPgo;>7}y-u^kyjOY< z7Y^FNMV%MPOT>;hYyB9?Tg8-B2Ca=hA6A#DWgx!nH-{0P6nJm>;V@7OAK;)&RIqIw zfO4QZ(tXu!%&#FgK_Ak=D}ZU-7PKr4?TzqjA&AB}Ex7*GFENj%CTZ6?v{tFZdf@b~ z`<(Qq9r5ID*S!e(Tub@POmCE)^cg>RLg5CZv}7Gh@{HvFA1rs3)@Kle{m;2vo8 zfIk~#v@{&5t`a%@ZKH7U86djm^PSY8CnKM$WRyhQhh~S)mx%fJbS;>5 zA|i?<;!|{Y=>7aGJ$M3W_^sO&vTg?oIjy|BMFUPvt%X z;c4fp@OZi*MR@Y1Dm)sMGdwO=g)=ppN9L>W;O;6tqd3F|U8Taw=rq&&)~K+d|MN7dFn7#MckV+tD1;}x5{}HKuL-Y$5F{^Bhw>`ON*~#J zfX>A#NauAIfP#7dOpj917x3(Zc~O)LKV>S*=g1P7iXQpfy17bb0W{bA0cg6K3Hw)iN&*;L&;&CbcSyLAVJE|9NVtLFAHakoN4Z@~L@llbb1*}OQdQ-; z|2sHvPOHTBd2uB`=}Wlr-xFv%mntrNx{LQ9pRKChP0BOLRk(y>C%D)2HN^DMu?L~C zgH?74ChjyfaYd#!OIeB8+mbgh z$*CnpZTc4asT;xc!SZw|2ZA^*h?TeY@!BnI`Ivn%E%HSCDE|n$MEG$U(9tz z(}2AN^Hm>GL=G}--`{$CkQevgvYJB!qv8yB&))ytIYw+1u#V(WB1ja7M=LIU3Qlib~VC+(S z{9466!$?dM#4f={ri$ef2q$($hTRmiG^aV zB((&evl%-wbq+pL@H=L@Lqk|6q?M7W z#~oDR%uJO&vWpS|Fc?xk!=u6jF*dAk(77tyPp1z^SK$;i&-B!hDx8e5 zWw`HD6$Z4RV+_XcRM>$ChMo5y92_-(gTWI4aMwQY5;>(-F35C{g+}!YEuO{sF0&rH z*fD{%RbN4Mbte|wkZ&pKlX_h%$$Vu+eHlI&C&*UTQj!b8;B{bkN<=spR!X&{l#V*K zm#Ty&v~)QkyWOK!<>07P1@98XQpj*E!+M^#M8rq%<)*bNsK~13ex7J8lM;E4XbGSv zwq0-@{Rpcaem1I=SCyfLRO}46c$`VQVVyKSl=nCx?jzZ_Cku{p21-XWCpM0uyr-DD z200&79-olP~I~vvL4xRVxd~>7hKG$(S_9DVySy_Y6?yV zRGchi!BOj{pcrq&%C#gz>gP?#pm*Fp>>*RJ7sTtPSS7c`*(d{{oECuQ@_x2c?${GIBW^v{$0$nic*qn@2o(6 z|GQj{Ae~=^m5tajR;EfM>Xqr7EDD!qId*N0hKm@M zRh&`xFlq>*hH|3adCJfp_;Jk-L6+8v-}~{|S;RQhVgm9cUN(q4f#YE0lJVP2(MyRR zg-k0z8p8Cjc_%-O4TL%OHOl$0B6ne_A45{bFB!3*xJiZi91znzyHr^2w;}92h;UGQ zf&v$HlG7!8WJv| zHlwKQb`6+U|IW%(fZk>UR**hZ)5=XQ6`rb@+O)nZJl=*3$T#_X6&|gb+_=kBI8)Q! z$SYKMuujjIs>0^Z=T;T&C+i7l)u+NKnklB1sBm(Tg0JtxD(p^CVb60a?9gH7n+U7< zh$Bdmh!hS!hRvShex)-t>K@rZ2C!IyAma~CC#&G}GDT5rRc>Ntq~3ze<3ptq1lk`* zW|Ku}mOx$rmO#z`mcXqPSOPUGLQ>TLj4a`onIL+z+A`D=1L0n&RYM(qya01y4`pp* zCnptM1ya$pxf73*M!q=6Q;QVuAb;CguvCQe7=}~^cti` zZpK-JiJ4A(SOYZRPv|o{UF-9A zirfHM5#gcFlkJvFLTD(wi{W!LKc8i6X`vNAnHnD>_3vOt052J@Vbh1-fhj6H=xr75 zr~5zP0~Jm|l|ld?sc^F96@5QdVRId8QDKMXMb3Q)TL?hmZ^a%{D~*rYGbB( z{LB+&hL@=skd5f$172GwhK8?aI#zF#o{UdDEjT~S-7skSY)otAK6K^-ZRTyAx=!Mj|bkR5Zt9^HLXO zPeCch4`BRp&KOoLhn6S_&p6ux-C%zlcibTU)E>aa72@pqc37LqS)e}mobE0fS}%ud zrBlIjYq~IyP}8N3KRC|u&cUhF&C}$X==%1+j{SfCZd2$E0akdbJ(X)!_|^GX%4&IT zbPj640d#FQS)xWM&N<3X23kJK>90%hHyoDC29RltX5 z7m{n4U@K1w`E~+k+yL*MK7FHW!8?dVY7l;#n{c@2?aMovP+am-CTcVME&r3Ji%oI? z_eojMwcmx@zQF`j&2}=|Cjh~`zHqS*6fZ8N_pYX3Zr?z{p-g9j@3i>pX`1Iv6&6Ddi)ualeT$|t2p+Mtabj-2gnDLQh#cgGvk zqD_cHBk)Kt3Yi{4CY&+uK)>$8OlN-Ad)+XCEg|*T>xlw^ue7|I9wB*zR8@fC4(y1G zK^5qDGW5*ht8RjI@4rz|c-M9K`UHY0j_>oD&~cEGzNOodloE+8Oy1q!C&IiId{vD}*N9*4V{hO(O2kBo!!8SmL z$&*CB)4%=nZ(seJ!e5}o1DKL$eJ3)bL9fCqNVi%>wEqF=?BkH0@PYv}N?C-17}v=6 zLLWS&MGA9W^GYHdck12)XL?M`f*40UWeOJK3}h*+E8H6Xq>{>fcxKCJ2Dxc|#?h|^ z0mI$2pB|VZXS#9dPcw>x;iZVz<_8}fP81*hKU$ZZ`WtoJ#R^p&vto4=|ED@0;WB8{ zadE7U)L0!uG>w3kN!X{cYOK{L~6_#>8gGTPCo^F;-5+6G3S3Cc{5Z& zt(^+O#zmRU9DWscOglo8W@0x%Tc9s)gJd^pD)$y!@JU47zktKtLLBUXF9OUoW?Y3- z#73)QzT-Of`?X?H!2e#qPkZv`_dB6Ozaw<4r~17epX_%ze17PD?|~}=-S0}ITKX-r z+*~r|0%y45b!3w(r+f!g&eGq81mSw%I|(MbN=AUQiGpMkK5#7hSqlF)rI2HqBl@Z0 zit-F|D0?XpzXI$7TG}QMubhyQ0I7^&GAJ#S{StGHgzgX~yGugZpCPu>K{F<`BhXmY zb|w;?EW(+PfqOSs@@#=;`#CdN&8}B?@VUg0uUsX!L$C~HzZ8r3t3)g{B6wsfV7~e? z?Cx^p#b4v9*3eg=zg2dUL;oS4e?-@Zu0#i1rANSEk)M1WXxJT(hBXDH zUh6x&R;e%{Vh#sx=zG-ufP?vKW^!FPS^8r+@vQ^|5Q_}(U8TI2LOBVY55I)H>@b8O zZvZstzX@7%JZOK915I?>9)O1Xy{jz8*eI$8X^o&7pgs34^#n1{?ghed!OMiCvP2 zmc{TTei5>ln-QfYSR--8jZK_RxV#8s95LdAYiB%MPshPk%|hc8T$RdLqXS&k23()5 zj)&_FG-bI+?uCh>#U!JZYGAcp4*U%;HA`3y3GZQeh>)M$`uZKi$~C5FL#|=CNb*+_ zyfFwzp95{`BbIcg50pOFF}**-+)`t{GJG1t6DaHAUYU$mdp_73W<~FBz^vpN*}oB^ zImk}=l)1cB=Zm&VJ`nE*k|eZxB0M-!(dOFu?h=f} zCI#NhH!G~ZyHCl1vM!9%-fcAi_BH^}SVI7s@H~9T*92vn!+7x>jCkonoET$EXHs*? zjhIiCE}Y659+esz>BmIb5`F;MhUfsEOcL+FMK3}T)?mY<9qK+Jyvv94Hy@?maCh9) zBQR>Ss8w|bq1VHzQ%|b*ubWBUx*mOwvz}>2t5#lG@;)Ncw&BU$ST7bzo@OJ0%SAIs zY3}m}EHD0Iua|*`B^$#hV=|#hxP_;%W==u$!ceBmMgT)f#D)`>(tb8Mkae4(fV~My zOl#;$q5_&%~fBc>{&$WYoCuY9i+2}zZl*5I{%ZBU*08e#_NSGhTWXfJdrHL(P_Gk`_oRe6OT5h6);GP0X3fq0{<;E6b@X2a1vJ z$c;*Opa|$Gj1PF^@d;=`X97Y6=hh#GfJ7jXWmse5%@q~`Qj2jJkf>9A07B#HR{4}s zxE`NG*VXuqe2dY*eNP!5fg9w9E{RGTK+|~pOjx0XKf=}zHq?O}itA^^@}DI23bA#= zXK==Ck>^k)g&hvfkVDWAFW}%w(=9isrknT+VsDLdWC_d$#GrjRk69P}+#KxXj8$U8 z%lPD*^wE75JLcOk|NRBdgwqZc@7@KYwc;8A%bI%t2n?UG;Wb4+_DQH1j;Ptilh2S{n39$^+rr(v z{VYtvdji?+L2)vPy@{ABPXFrxJTDLpBP_#{i*WQqS^H#u4rTc7@$+LAyXLKu`GFTL z4URDJAZK}J4s_%%$jR}*X;%yYHNUr9uc+Xwh(QI_h|#je+dA=|DiO5wB4T7xf6ny? z8u{8p?&4OdtsFeDR0T%Z)hl|nBV@n>BRob}Obwt_5?=6sQda9c;JFkeA@3~oegRi@ zYOxo_KiQ?m_{}sdnBi?p*gcY%xoP2XzLwj+MJd^^EJPd#sW~MkMs=dzuqK`={Ay_< z?V+PI?WEzWNj8eFW33VKQ#->cdxIx;1=UJ^{!e?CI`TD6%xi`p1i{JP#l!i~9|LNY zy+nl@C&|u3N35p3B{L9Fo0CjyaDxI#Q#r|95ToXfnk1e2yVTNO0yFZ#qcllw?69!v z{>mHyt^MV7p5e(Jz(Xc<_tON~vRwX~BV~~SN^g#>QDdIM8kC1H-~-%*uO$Vni7(A` zf^TyN_?EzDFs>3{`_yur@i5>!1|u-JG~llh__m-)%aZRs%QB%|rR!tsD20KYuEyY?~t&}_dhVq!!s=_PiI&^E&}XwpQwpth?oYz~OO)FdeHp$B%UY2z`-AjT1tFJ^#7 zLGmcj8g^sHB(LVSfH;6U(~13_`_(cVe)Kv8Sq^y&cH9^t9_P*rW{JiU6=D2r;YrVt z&AS6KW8Lh^bQA<65g(h2E&V+YquD30A)^1wf@Wj5E~an~^qh}U(MrX-e!-^E@r!pE ztgE|@Io*u;4j%oYo8x5X>4ec#vVMk<0Ta2QbX#FQVJEaC+hC59Gwpd82goaAUMJTa zk(lFoaX$haUQK|l0(T*dM63e$HKxFAbXK=8;Tg8TCzAeRqyTAB>qAm&YiN3_A;$MZ zt?Y6Nx&^1M`d-pOLVEHOTu0>DCMB%@0FQe_v>Wb2qF+}K2dhSNg~)SUIKnRPIg9)b z+Q8cdct{GKsMH%TJp2-O@{6Y~|2o4T*8|^CjClIC+&XYOBgsb6j zjE^LS?3u2W_R?E{Ba9~m)J3b2-M=<5t+K+k!kLs`eE6@nyDxODT<=;D$V9H9f;~3x z$%t;Zd1v4!V)I^&pRmn44VjX1oAU!>j|DarWh8}Nk7Vz`K) z#K(o(Bm=2ETr0Bo1oM&uxUFh+c$yD;{Sn7{rr;IGH`KS2-+#lt=W1tY)Jf@UU8T4M zpiZVMYO?p(BHw^i($+^Gm-~=Gw|Sh>6Wv#5dk;PaGQjXWz0Y5eOeiaD_## zoR=I-JQr9ff@%F}mHy^oW!ZJOON+J1f^NLmx~ZA$U!(TE&A9Z;X5_Zv4Xj62nUDB7$dpbyOzEU0FpDsn~tBJDc+p&ygIbs zp4}9ggOMrO?A?p!jzSqHl|NPq7|VK>KUT%xNeTXSiL!iDkeuK?3b|{N!dVeMtEl7n zs$@-4Br9?e<3R4A(Qdp{TAGfa7%Eiofwl4O^iN!+4`SdWf5RW4gPQERVPZ~TTrfV0 zlpm*wmuIPq#(`$@>_qGI)%*zAOJ{O=aH$9B{IUhv8%3iJ3}DWx_mXRE;am8|Znq0< z9p2tm@%t_?;(z*E-ML9rIXtOEPXW_asx{rNFYU(H7>@FoUxM^E{OEH6cIru|ddgIBDA0iKsr? zYNX?R**p(s)uK^C)bbt!$T$nc(r%kQ20zc+?oJN9GYun(r^))vrcqgY>bq@#_>CoH zo&-|94=<>bO%S}=Oj#8Y;H)N&QxqRrn&SOuU@Ptd;Z{(wxViD32x{D8R8kgw8*g=f zH4%X1`;QEm{iSQ==JwRZH+_HEt@(;~xBvuYgwaA%n_Q*zFC;3lH&*FdT&0&Yj%KnI zZ>%vR`!n)t{CVSDGmiE!VpsCU-^@6A{E}Bf-+0N4`!@;q7cBdp8AlgSk#3AzZpOi{ zZhPba{-hle10Eh3i@$+|a8FAL*a(LPphe4=dW5B^VdZ_^veFL2%1w!`<-LCzV}@h? z+v1r-k1a+T+=w44yf&>8EY>Nw?KV6UmwJ20#xzpq>4qrZzk>zIa3jzaW0nA~ZPvj8 zj)hm>jSdpua|GX8edW>TP;af-u{YtqmK{6Lgjp$alCh`Ac7q(wR79x`T{(xa zK`x$3H9dkQ7SW@eV3L=oZO#umiX%&qnD0N_XZFch3fogd$vz$>h3IH6s>ZJ5KS1I|coG?^$a05_j zEx_>rRN5}VxY0b8)dK5N;BZ04#^8bdeor2lbe_TM;^U)ORTch?`0($T|C1kyUv0)4 z{49wLu;pivWb(}3-+*UYX#~6#6*J!)Yrbf!kx$-7!?v@wYrM;J3V0!ej^IR;!y_=Dfd7divbCq0^$A)K_;H{hCp|U zHhpFumsBrI`U*fGWMu6QAP=3&8#uqtu1%`8w)3$t9YLyL8mc zjDqN%0iS?6>K}|!cinRlWhgBERST0yY-@>(_4w8f?-_iDL1;)gR}g$vQX8a42tI|N zm7d|0(NueQ3oYA9?+unsC*J6`Xlc&mk~WUI7&QkpO&^}QuRXeqyhHUpg0MBGp|{z@ zeE*Pq()%igACjR4WyJFYCx1LBK2OdyyQ=IS}<7?pi2;#cgIYQ*p0p-r5lJ)m|?OO2-j-G>8 z*+UuYL(apYaaUI42N!m~2@vK7R9;^LJW5fB7^wU@Sjhw94!agZtduc2o-c=3mf#d; zC`a}HTzMnBe_`;v*Mfl9THWz^*nDIo;Xbq_W;;T;k8x|y28xnq-KC9G;MqpDoyv@Z zxYgsqypR5;yyP|V_FPw~aE1dbh9{V0GLjV5GX86|7pzMG+I_%0P#f##moG->M-j5+jP|3r0UMmb>I76)m;%+ccP{4 zv6i~OI#a=YhEcc3D_Dn30Tg=j<7G zF2`R$K0Yr5rlg1R3W_#KaE(jyyxI{wDLB!Ir<>I0y^dh6hnwmmmdo>m`nrR;?zBVj zf&_oluoFyg^q%FfN_4F}(SKxK;oc#6%>@@>*)R8;TIR;~CKVZcJCvZ+75no9yeVU) zJjj+XU(MT5=FW+}2|06zOq|e(KsEfA1_K|8gcp`45{p5EL=hHA>nuBgSi#qIDKc2xZB%+e zi)+yZtiLN%UGNCDs2b(qB+&OUviK|A=~ccDq7A?gb3Tv{tf0jx-p$SO*Put#2;-$) zlyR-R99as(fM&EKklUR8alt@38$1&|5tgXLw_G+42Up1DEbE&dU1c`2HM&n0HkEIa zY-&`#=oU3T{Wd`_|}R76^lLEffef6JJ{{>n>ccrzI^j7Ol- zDudITTV1dBaXo^i-&HC{k64Kq@`jPs5{MGT158o6|;vC%%k zJ)TFR)G~6F6@35KbvP&fWE~I;c}Ah2=!FUB1WyWf4~}utT-$(TqI&|_nj_HFQkix9 z%}(_Q4mPU;f6DWu?=MUY?8gjs1}DVz?rP^0^S~F~0}g>Z5OBb)ciy#fCDT@$DaSaq znaY|rQ;v;larXfKYVn3U{s}hmrkEa+|H*pz!aNwE$VDdZbD=zRgM}po2l}h*Koq%| z;4Xdur?{=i7kq&P`2H^!o5Y~Qzm``Cpbw;EK<{wK!lzrhPh+T43v@$$3B#R<%s6HCU0_~nczISdUK*eCJFCU)o^Mj_29O$(X1tJ(>J$B3U(l3sIva#TZmfek9%eU+atg zzv#=-NoHTvp8Sw45pR)YQsvegw*uBj%8>(j#SMe@=KKmhpOM#}?XW{(WA5iwcx8w1 ziygv`nPCiXr?$>GURzqH1*0mw1@bK={ zpi7JP1M50;O!c5opr3XMc7knMtj3>P)sMh-Qmm%`|FAtfHICk|oucHAMLR(6OgbLDlb1X@7>OV& zr+oOul)s{AXa-_!@KvY9-amZ-v3DH?lr95p6mYIV18J2Io=#^4u1D6EZ1$yKwyokU zYsyotyV*L^&3Z>my$_>aeuZy=ULB45Yr7Ce<}^|gzQfc<>l<*-?c5xAU!*=7b@OV) z+uLbsA;)*O*2V3$PM?D+07b87`Jvea?z#+}i=fRHL5=J{_^-|APfef^@c)`Q4fqdv zYshy}d0vR$@o30eQ_;{espnbL!>{m*-wON>)^>RuLDpoX3`fuK?WyHGy==gLE8sV1 zT)k`m%-Ps009$uL9F99Dpj_34y8M-R4@SSGB5O7WU>4r1kyMVtIsLzBS8^50BoF)#_6G;TtkeyZgK>o#^|rJfWo0cMa~&JyIDRR#CRrzaho{)eS{QPP^MR zoN3;Eq4D)aN4n2$2~Bw)(X*5MH7TL-`m-`6uz&DcpM5y=sJyPkE%!R`2wvV%-%|MQ zzgjDPXm~WBc$nf#*rMS%NOt73RK7!@IuB*vc)rTh_Z{LQnA?Omgu2jvC^=BC#p87q zfyTflzA6Mi*^qdX@BnM#5IjM>X~v7^&dN zLJ4a@2~hV^L)q7$0+l3cu7lyz&gbJp2cKtd!&az6TND9N)c#Gvv77FUv z7W1nl-PUX8skWHgXiMn~NKArj$iSoFA$m55o@%TkfyVIl*pUhTy09GVDS8EP7L{mR z!UTB@8J%1(4jXv_M+6xpOO^j7v{_n-T_X-ZPY8?#Iucxq*GV0G<)=r$5lB=(w&N`j z?dCY{o!k>h2?RuL6R(ZEiwpX91Wza8;GP-eapEd|Lz+np^tujuPS8YMU@K_iyO3SI zG=-Z{gVT3-n}%Fv_ihce1&5{Yz_`moeuvHhvZ3lgH&^4F{_M43M0VTvW zR&1{@&?mkmQ?7t4vOTtk8HX{>+lcOAXy;kFR|mT(un<^oi6Vo&J2#8HYY3hYyhnOB z@@+d5nIRAD@@;{<`h>NCylT9@ereEG7uXR+!!>q*(*vWb$JbwJhdbwR;Cq&{t8ze> zOI3)6YeOT8J)y~O+mn17L!LKK*LkQb$ybl+y5J22)VEpcgJ4N|!9F6rUh2z(-JwPT zg%i=1pS27->5ixnRd?*3<#tbSzpYqJ{>DhlPo-LZPM zO$^Ii<<5s3LWNc+)FfN}e zo0SHna=n^XWjSx;>u(r@>Z)(x*Ba*JO8N@B>%O5aU5gwhWWcA8A6A)G)&G@Xdmsn@ z5qsgVx4QuRclc*@GUvzb&cKcXOKR?Cz-FvXrc2##NAGK2#U#T<3YH$ zam#oTulYN0vjx3&2k)f`YMjylQYd$PmZQCtU_m`hJv73r!^JT9DbKDpdIH@UI^jVF zdGCOr&O`=+9>)6{#=M7(HdK`!T9n^|F{Tdl4*ZJI2HrE_C(Kx`wL_g+ItQV&_IG&q zBw+&?E8ZZ;tqXs?l?uiNJbX|y(v5dzM!JvjNF|{ymizUUOTs;EFpIO zju{z$xQfXR5(rH`}__AI|LIVEWEH#%(Mcv={2sB1&A?7dSt4HfDwCvw*IY{ z*Fvmh%;ML%SKCkwHI zS(N_|KBq&I5^({%lqdIU1k$!eW^;L37s_oB{p+t3J)ZDh96gFn5=??HzBhAx;WTV0 ze#zL0Pojq|3u&ebYT3OEM_I2TzJha4Km9ae1+tcH>jFPLlXlkxNCTcgtWhyy? z)W%vhvQM2$WT(&^*LQDt_&o@<-RrxZ2%ns4R)bPX<1}dZm#T*uEsJ>+a6b*2KQ3)shbmphg`kJ@TEcdcHpxwaWSv-y5vJ&afLitG;}GM zm@iBK&@UQqz63bJlO6`?W*UIz;q}h;U^jZY7{i(m-zh=ZSst463Mxow4SDXwaq1PW z6^{HskJ0|G5^?&o->8MWK#uP(`V+2}n0E+B);Op1y~b-9st4hufojg53Z87@W!1D4 z&_D^I&=yDGVNijx3M>(Cq}k0Kxh_u4TqU%KS8Teh^uryPNY@C{$IUZasI&hZU>bR#3dPS6MW2Ch88#Y_`6F%1(Nro|**3r`N=SSZwh zJmGz_g*p4%Ku=taI890=rHfB^hj*H=WmoCn0hRyz1lOV;K;cDm&uq8(P7T@5%&)kD zu_e0^TR#5SXj%?JD(+SEE_;MpX~SAkKKab{vc-(KLOnml`?5T%S*4@@&J#sDLO})_g z_Mi-GzCUAv&6gOcR|}!r^`2mlZA0;Y2WN*PC_Q7dq3KPS&9Qz5u0`!aCh1Zeg!gxe z1sHbq(xouLgYbk?^sZ2qtCXV(DU2O}haH-sa1K&!B_ zY}{CJmnW8G@0KCt3KtU8DRKqI5bvbG5X#;~@JW-$9ntGZc@!92B?&l23(8c`a)TaO zh(h5=jO)1(uDi$fR)T*J3z-4TzacdE#)w-2(qhSaJf> zTSM6tw(QR`KNpvs-zGr=9!7{4@UYChgy(qV-5yzE{KJ%@?Zpr6aAz?HZa6AxvkxMt zE&2u-n`C-}cO3xbmwHm|Ds{@;U>kk0rI-=#nqr9sKG zf)eICPXaYg(M}rc{bl%xeLxFbY;_=ndrb(8_N&2zNkN{A@r>y|`PHY%ZVUH^vN@D@ zP&7F$;m2^vK`)RgfQ}Sd`MHP*(a#iKMenWbZ$<#AYJB`L-$SDB=o>VMsJp+quhN-d zPC@3kg$IE&)k!a=CC_@nf1W4Fg>%qxBUdlv!d4Ja(l-=l&8&=D(+(k3WUy8Yze;^i zrP4*sJo^mSF<%X5IBR-u8=emKe}9Ir*=Xe@v!1ir7hU^9X6#I< zy&tR;YqJPEmm~q;PiB^(D$5@vi{^2XWt^F%k7SvpvXCnpwe&Z$dM-hbv3gz zNS2p6H}vIt0~xPNmT+7{g7Zo<%Oc4_`%D7|OU$%8RdE8L$EwUso1)4A&%u-X3GZ^1 z(vhDY-pGw7V0Tzct}>t&;6N~IUdH<}(XXQ6=x*Gn+KC%g+hM&VehVEs&l={bi`IZY zLO1!WR9xxpvYz_g@bBTS6LWJIhK_VNIKwg}!?-EfF8PCb2l3XUccXvjv4Ba&b1##; zQjbCZ8)H=d`WGgZUj_&)x-8ytJg}SXx=Jp_P)XaB;Wa~8U!`#6mhdUWMF*2qH78-1 z?!XqQ|Ax}dg_q&=>w;$7N7ipx8!|Li(Q`qNSUd9i*lk%IO5!nV*wVL{Y+Z!arRn?H z!$S^WreiJ8_m7)hKZu?t)}(7u7{tY98>1&zz?PHm2MIX1eG#J81nQ?>VVT5oEQ&|M zLGYmIlL>P42JzDN0ZMWK$CRMCs)OntD1Z_^qef65$gAfP*dq^j|Cpf%s|IBFv4wK$ zxnZ7v9XCxdB!q6!cs%+e)OZNP99f3zQVmgOg+FXhceqNporDnnO$gh4ZXAH3 zOHKod;(M}?Hqn&hn?N1c8P)qHKz|>|tq$OUat|yfLVYWO6C9z8iuCV&j_5i070}O~ z?vLU`!z}S{waGZ=w+Gsxul+KZS557wPb~H?`;Aag{4kt57^|!0q!KX5UH>m`gxnw; zL@9YAcs-W71C_e^9CBFkVR{gj*mADj#{|Ny&#Xm$sQxwFDyscS&mC%!cmi7l+!T-C zKUT|Vm8nx67aj|hD+v{P07a;4!o5K#@Cc&`m41C?yBu#})Pdr7_v2vA1Ln%X?dseY2~?fG=4`Jg$$b8T96ruM^cpk$NzNA%81Z6_K)%gP-%W4FrU&x!8u0@;J zn{CnFoC7+VGk^{$p&GQ#fRJ*l7^7}16W`4ccaQ6&td;83aE|^X?l7POI3qJO`PFEe zG+mLNSM4gHU8Mgjd+?Irm9SW*Wk+oty!!^KCMSz*Ra)IxECf z`Kx_+;NAlF!qJ-E8$s`rjWWKmcHUpR_(s>j>+45qHJQlpN`&9E=u{n; zGgD!p>vQ3eyGCOd&o$%HFVvKH3@fql?lobX%w%IqT>Bj!nH}oDfs@TuQh;2Cx`eTu zC3y28jf_^to5e$UAeD)L_tIFb96ni2U|l7+od{Xn$a|>EG?c*h82VpZYkN;!8C`}3 z(2oCHwsTA!hK+VY6ra%FOpL~GZ{+&{`S`sN%B__1pxokfNEr9D&49&){^K-Oin~gl zM+%Oq1Jj$ST$jfgA48P7n=L1v_EZjWxV8H??U5O(9`%l7wEhl=LCmK)_W&ot_YKn=cM^o7`NTpsR728OXjdH zKY*QM|IXdBU27A;aKYkBvr%1~AA*N~LU0MQO^(zvhzm_VK`rML6mUX-dLR28oh9Ve z0Y%BpoS{|^2c^@6^VETm!Z{a%?b6V>BK$E%IdUoHa|~a`;cNJP2M}hLG!PpL_GCf& zo8*xn!ke)8M`oZRMI?Js8HgmZ9XV>VD*+{02f8}Npj01DdF$htnWutBfuHz#M9(2V zn_lhxMf~FZwOYLM(NwfK#?J2lB{^3mZ%J2rv$+Rv4gXQvZ;s3$gzix8MiDMVM;XYj zw4zn~VCzme*$HksaTbt@lIo~x#-k=L`#m1dq`>>#3tXYK3yY6_fyF*oM4)aBU|o3i z6(-C`6%3a^&k9H3I8|um$oLq19XVbLtg~_q-_xW3E0JE&4V$(Fh8}^bG!`-LKjArH z0`eJ``#dO~agIsDfD;kW`?}v>BwYS^O4w=-jsldb_lqV|=IO=ghq=e&9yuJrh6!j) z$Cxtjih)vz)=iu)()u>Igm-KU|7IA5Rqy$Qb}acwI- zN%$58fw31JWQ8ES=o{<-W}!#MUN}VZ?z|WNV@G(R#$MQwV(f)`K|vNi{S)h6IQTDf zm*4?-#K7{8erzxN8^|Qb-wS7ipZiQLN|$323o0AJzsHOL1J-id2Pj-Lv=KeQqBI)0 z)S{FazbLgKz0;z^$hbub$3R$=jJ)QeGzGO4*{Ix6Nv%8Ik}1YzoaYKrxhJxo7qVVg%87UsH{0R+MAs~~AFj{A5T-Wp)YZ8Pf`i+afPRW0-p596ECL%tP}OYx1h zq7l`H-B1owQWk%RCUWA|7s>Y&@}W$_hge@K&&2w27a9Wp;e->59KB|&NdgOeU!{dF zZ33@+1_A8#eB3z6eu%OUN^uX<2Ywr`X1wBjO|XUWS9XyFL>8vpv1BgY}+xDGjHA_pQ@`(8#B@B5xd5-qA(I9uAj zFVW`v7!})m>yh?7ilO~Tf2J97IPYb%>nNxEqX6CV%5;yIu!jvLvN&v<+&sPmU7z^i zKDY_Q9ad5%@EUk^ADo;bVHPyMk{R`}-gMABGc^7ct4SM9*11Q;q>)Cmb>b~5(R;6v zaD`5I4hf;D4*&P<-WmSN?nd(28ra`1L~=n>e_o7r0u*^Vlmmb71N+)1@gqcSi&&?8 zOhqUFsl_j4$*ss`ljM_5nftt2p6iP z=)Z_doPL0Ch{f=R!zhiO>uuBfAY+Vqe4f9>=b^x?@~j#H_M&Z*MF*P<=l6T_19`3a zf!zJrX3QmCv&Bp%RIoSNYi`aJ5RSn%(vg;fi%&_@n>KwP8uWS5c|&eZtAx{&uCA5N zZv8j-kJx;h!FKROlP^+k|9n2u{ng2$)kXia0@IsREd}q;K2s$adTr6+qfawAE*RxU zpW$Xe^u=rC?uxRHQ*KOR&MnTtf>M*c?MIwjyoJ#NlCbQPVM`#gnL;b1qEF*P4|pw{MB zedX|OVV*oUj+N!27@o`-cP;KUHoI1y1S38?yBH2&6j+`2s?c3Y@zu?H-2eopbp6*_ zcF?JhvlF!7@6N56cyB?cVwY!uTkuTRN;KFlZN2!HmqsoK-IXYh7tklhHd~|-tuwEA zS8*RXC`}kDq-5IWa2TY-vaV7WqRaEP(fJE=7`|7o$2YEb5vQgZT+AQOMdv61v*({7 zr3pP^p~iJBD&^NlR%4w}vYT<{qT-)7%%h9xeI|Ov1 zq?}^lCV{K$D25Ks%ivhBqZb5yYq}eyp6oi1IDW)1EP5qzg8LwFf09lL8SfZD+W2%V z6q6uGPTRZ*SYu(wOeLvn#kTxF-?77CN}6A5A8W%Nunrrg^lXo7(Nvbl#ihKu^1kkp zZTGws$|}kza4q0k?f-IK$bMbu5nB-`d=)Z6OmeO45g1q6h%O`sYH`Uk6Lu56uece? zYlsey!BvXf23*4}aJ@S|23I^#{_F<(RWvi2fdS(V9v51CuS+*!lcBqKXiTh&cdDvH zuaF;{{t>F1Fd{IXeVo8P)<>5Tp7D;rrXl0)a~DPago@$E$HCBt(SKmw)@iPVTS!-Y zjYIC)jKz~5y1`OQg9-ns!5Cg2cnNhWA0*v_(|P=zaIJ%W8H^j|8jQE1PjK*|GdKo1 z2AQ5>(r6Dzn-D5y=Ay@-tJ@yO8luPlZ`wZ(7dFioS5aQk-$KCDiyr5`;VLe~KPMm8 z)1Q;?@XyT075wMa#|8Ok^#N=fQ~i<|Z0YY4mpMxM4{H-B>iSZm4Wm>#eP4bHX)uXf|gJ$DJsy8;_OPauy*FRQy$o*f2lAE&$I_%LIA<@pT5L3e+VMVlgdW^x+N#ee+&$=sNiF4Eojs&>LH)6Jg=oJZ|kwOu98oYx2Rw% zl4-eAp1rFqdn+}oUor#-QhBRfD}1}l*4AWiB?CYQZIJ-}khfh8PXclMD@_59L#J#J zdXHl7j3TEX>@TQ?3iFq!7{1hYRW-w_EWaIZwu5^?d?&# zH?tp>yFl8x?U?2l*-{x8o`?&xX@`io1$f~^_EXC*93Ahj??m7pc0b8Pq&La$!l=~; z@H{ET7TcRquw%lKdm9Be$X@w@1o%wAK8Z3U@Pyv(R=wS20Jul>S$Z3}2Dpjqn1Qsj zkno?&8`z5c6U|{jh<`M`1RNbmDmrq^JGeZ1Pg%AMB!&^9i5kYW$j>1Nv}PRh4pI=L zZ8lQ5qgSaAzkaD|u$C@Cx{5tk={+x2?lv6uYEs?y2Ap08&P>c6ad=V8CZE zL8hv&E96-176XwJaFfARdM2`@9ZK8AS)0o2*_^x+- zCDjX#AkUG=@A`}X|6C6I;)80ByQ zEwh4+`W6K~!tw2e6P%llSVZLE;{YT*E_yFwoA6YY=kfQTzz(#)KAd1uhSGN9YIX(g zP;@>((>cnxR@~`+Gl7VqF$vnYMI!jfuP7f4FYlT1m_S8-pbvmc+mVMIGNrMRdgvC|Mlq#?Pd=$3V>Ri=Z!nn>2?z3eZk) zhg4DpeuK|oVp)~{i-fXV=+Iqd)Dv+j6J$RtmXhJ( z4_t;p!tMpKZ`!t+?B;~b^lW$G+2ziz5QI0vX-C;i03oWf9zts>$Gq)&PCd%C&$scy zDe;uH6%woWqEZazHdcMnHING$ zul9d2ERc)BE!}e)uW*&Rfg4uf>segTD63D&yFdy`6n}9HldSkK|GG-n>&Qs`QQ+>d z%Qc@b=&%fv=Tny}0k_Sy;AHj+O-6bYN7TC0L+az&Qyfu?&)7u&T04;~4<1;?rkT|q zuEbwgNg4hEA?nTq>Y#1`p%$Ui)#xX9BKm+=^<=-y zJT5bj4eApd$AIa-qSDc>EjqubpvC5UN@HvG!vFwA<(jY}MaWrHn6MfyCjn|vVdDF) z(m@>Bnk4@p+)2{f*WmODo^G+W;2~!<@T=gtOtl9RTg24|*L2c-Zr37OTm`;?Rj|(u z-ZU5rnBnOk&HEMxGv94OTxeukLdY{BWKRRZhQ=i%1ag}qXQNE~#7x^Jb2lP(UrPI< zCt2hxKn5m*-FBz_lsi)~8N9X0yG&X({n6Fzb?5~xtC^wu!K2j&f3!>i%827|np1Oey@%a;qH|d@)1b6?e>e$szkNTHv<; z--o(FwA+RcuAQV!y$V5Kg#&(U25}^yJUFct#-&8sd*>VKBq|e@pjf=`%|-Vc>AZ#D z9g9}H*;qOgym_VVg~{;IoF8;%l{uloAD5L-Hf{u%R+}%1tUYRTWX16JqJSM+Eg*+S z_ymbmGPWkMy=FwhF;E@DzE@G{Iw9Dsrn>R4D++>8AOIw*-~*5(oP0ByRhoZ9-)#XTk11E2( za`@KHZl1jwOeyGFF6uxC?s5hVebnjb1b{mOOg`aC2M9rvMCrCUqz-bezzoP|ppI#V z+1iw zGH_Vc@Xc_z(Dv6Al_d;EwgB| zAB5H;8Yw{1k1)May%go2Ki_f|P5t$c^03oTu|=Ya*^vtW!PU9|iTG>98c^OSqMM^!^odpW+Z za+SP*AGia)E^U2i3U*yBxCTvoiZXZLld7nrY-$33-DOh~tG-Gu8=r&~rto6iv4-;h zs=z13U)pe01peHx;QDayyrr;qc-77xu9bbS3O&+?G#_07+_P)c)q1r1DZeA0nV~&D zE?dj_O^vO+CNtq!O=co|fhF0{)K#w1>p)Hba)kxRRE#|!OD;>+01BW0I8j3xI6jmc zhUB&se9#ff<;WbVz{tmR~Tq|KN?8N$tXSf1Ev@?NmgPSn^-*`F4O> zEUTm+TDi7p0{Nt=`w7FBWo?$D%&SyO_uvIuQ?=Ca1g><%${6|{DUvBg)<;I8fK@-w z>Ws7jD$QKWog_9coul|(Zjx>~15GPy{uo?bp>^J096vAMa_GK@z6s_$WLX`|{3~&! zLW^UNp$8TM1M$)zEO*2h8kV8s2TkFbpuTXMf0yz*xA#uk8Meess|x=J59QOFqV60^ zbo!P8Iba7NwTC9BDVtN}!Gt}WjLnuc|N z_gXY<28P1a&FD{hHf-Ez(1~3Rj-_J0x5ntx@f+@7O_sa5sEPRe;@3FSUx9f}eG|f) z7=8j_<4pfos5CN+HPb!U>&)}112?K(7X^abagZNYsz$2lu9rwXk7z)bZ zJ%fUpNH*cEQCUv`?Jvx{Cvx8`8&3)exi2acUYhN8eK4r=rd1 z%Sf9KO9n3h1z^gG>nP3wA~zz&GWYa3m3X7W!ondT2M3Q9I|9xX<*;(;B{U_blalGU zFgqs`k4zz>X;@F$kLnJdMZJ42Xq2_|KqP)eE@VQ+07$s35_4oLjvWp2F7K6wNhNqN zDj!Ur4!W`>!}ZHrx)4ZR+k|}xvk?M^W9X~9afN{k3H6W`s@4f74I;gn2^73l1zPY{ zesoZpbL%j)$q)(v=qI=n#h5*aG5sWCWZ?f0&WgzAxSko`s~Rt+*JN2Uks9}F_=Ys% z4W8vM0&Y+vRz;8yTx8Tr3?gH1HydSDTfw4dkZ9DyI5>ltXb(R05~2e*>onXZoylDCH>MpBL(WraXsu*50JmTg}{5`Fz zlSIp!;aZu6H*b76&Qmv@wk+oDs_+8b)0t$4XGhHKd>r?cUjc_N3FYH^;F?VL4Q1nd zNJOH4=h0Zm?%(;ngz|&T-IgC@_HNxbpn@K1O&IO%&Le)D+TvcJT^tI8Z~DK~Vy&$V z$IHP<&HyfF$L^QWUIJ4HSQM#=bB?oxhyl9DS%SYgX0e;F zO1pR@9!oc#WVb&A!y@IstN`(PKl{pkKc_CEj*+ZT)sY^nBmcju!xpRK+bk1~vn_QP zHXK}%IKk&<;v8P}5qQYr8BZX~Z5bm&p24^nWhVa2G8S3mA9i^YzR(azO#4tJlbbTh zg5&1vG@i|%khf3yIpetnZ_Eon@PFNpQ&6*vg)Hlan_$H?g6=~j`X<0T!bHbdI0B=I z?7{HrT&`UQdA@?VOn(!%a|3ag4F8?W$h}-8T|uEH4CcclIut$#E0Z>Ihoq<;tN-vRn}p#DwOzy0)YU;Ue+ ze?9s)S^pZ7(5=G`s?RtXPqOn=dryF zuP7LD6b$FZ;q~7KkG69xHpc3@QtCq74~R3y$C%eiqi<6il#(}4t8w=It5C-?YGzv> zxgMF~&(u}?C^O!y*Kvs=oB`H)w=L{gFSFqdCu@10fq?X&#HDC$@`m$~r&hqV9KIbp zK(b85A_mNG*1r2X3yD7Qg1bBL-_CV@g4~_ze5GTZzl+tm1x^lRTw?u9Q~jI?_Gseo zK(JFkk!^is2r|X-zS^WRT|UKH{>@J1nGN<;l}35&8P`Xau0P5>qVUH7)c#Jf2mew8 zw1HetAR)_c(1~Ja>)h}mv<6z&g@~4X=@NQu3#feu=3!LVWhD)GB^wG6LE`$&cAgJu7cQx%x4?k6?oKAv>J5Hm-S8( zEL39KC)BqLR=XzAH5o*ACFT%4?OBu?IiL={qhN_m|D<4`2|vjdbl9NaYs6zO8R8D` zI3 z<-dTX;l+7Sxe&sYLI~U$c`#=MBJWAd5(4|-`S$_?bNLmZW)G;TXwD?tJvg-?k@!Bv zm;iR>P94M@rYRzHq75Skr7atEQ?(Y@`VH=nY`0_Jai*xO#~2aoIE z*{0UN6mcEfUUrqgJWgEoapLL_*Rg*akCU(dIB|`~iEBDeTyy6*jj52o z1!)|`t>5o$FS=q-#MolGff|1aBWnD#6~PaE7$doiKloSce@1@!wZ!~t&|fuv zEDbiSA!=C+J4@w^p{nlfk#uZWtJH3V}ctgjccD8w}Op@bgfAZCA>LhVX_qrhG*?Ert6c zurLa0_4o7sod{~hw}GMYs>Q+ZF|Ly;_Vj-6FYy0n(80}wpoc7yMMW^<+L^`%V zKGuFhto_1R`_bPU?Z@$q>X%Xd{|3+ar0sY-<6Xr5Kc2C;(%`N!p7H#5|Jyv{23f#>ZzoWW~w4WK{HAm;U01yQYCsoh3C;SSAx-Gj5d^jhzp;J_i5_zr|7 zKjG&<&K~R8#IP~XmYkROa90AkG_PBTKFwLPy zX{Q|4!jcAdKIys5(B9=X!CUscTj1F}iSA`^<d56xwjf)|0+6$q%!Ds zLs_!b?EY7k@!elq^tuD)%FdSy(+h~#3)AMCV|%<#^;G=@^%y$c+gX`f?rx5if9R*m z7hB5@jFmq(R(_&UUad<%XO7I?)e1)!O*~tQ`J!*cCfW2wFLNa3i(b=iEQ9HbzB%A) zrj3T_i@y1IzUWE#mXoF*^F?pWAxI;Se68jX=Du3*aq(aTOq{_%?0kgbE{A>#nBJt2 ze-)hNffk(935Z+)dgJaHTtUy9M^%m<)E-EV3Z{ds#yqZ+w@;JUZ@1TGe;qIL;xam` z2~Gc+r1RygV23d^R0D#BsI!V@cQwq^XQ>=t!b8POv`Y1g6W@5Ys6Bn1>nQ^Ocr}CP zGJmC0{5#Mx0e2c(LwT*-=OeZn8)9pI7}Z~oX{MT3$%Zj`C;irtOMVufD)uTonONwA zr$4G3Jxoj*csdJabyRZyJUp$&NxTJ5OA$2iRPnvhiT#M>S$1m}{)|mL4Zydx-!VMB zf!%gzJUxY2YyLPqJ-~*6rwea1@FepjgY)D#ZySI^Z6t@YtSDo4a<+7MxuMQFTk7Ip zZh+<1e}1_kDG$#WJo-QOcEe2(bG|?yqYRxn#$RKHLG##tEUx$@cWQ58AyaWd-*4UyF_Q zzm1KR_(az}0?yio)j7U&^kYj4QSgbD;M-KZY9vV?@A9C=o!~n;IMJ@P zm*maE386ZviLI$v*Le6)d^5$U%JS@O{^s{-6PJza3Y4W#!VMh~E#bMkYUjB*bFdP^ zJYjffdc9C@2Hq9B`xy5}hCrYm9lOH^dmcQzXxwkaoRRhSpL;kgm}ADaCp`vIGiQpnDQAxN&+xy_H0->Xa0=RqKB^}BNvs}3oPRyGMlh_9x=)1iIr@clPlWRo zVIk-XdjWqj^hFeFx>cIaV$xogm#e$7~xG43tiQzhAOp+mNg|-g7_{)}}>+_vhW% z=V-$P@+Q`(o-C5i5qEHS1djjY$4B9_C_+^*Z zRB|F$qm0F`iZ`3jL1)cT&h<@i0cA6=)+4U~dKsI9c8~*vdfbm4gD<~2e%=E&B9UK% zDWhFG+e77y_r2fR9{n5OXTUSuZiCK|&)72?!PMDyBU_*bqFgHNlycC+X52u~*i&tW za->a%7ZgwkYXx{R#FLYkpaMF?@S$nNs!Yf~nl6w>9}KMX*EmTvVd!Z!($?Qe&;`+( z5zC=GX*zz_MYrSsF3bKNDzWXwHBSLn@5QX-;V?ve(Qaws@R3UY?qf(P!<5^NK`YNb zsHvr6HnrS#svFC$uKQA{n>(lD)Lq`8?)Yp!Qn$c8jBsxQDf>T42>1?ardYgA^gQVK z;MKw?Oiz%aefR~M)BP~~i`JMA5$+0>wmN-xHIrA{XPyr@Y?=_fV9~IX&+kjZGmFsed*yiZp&3w`dvxZkA>jDm0?W!BZ)py}$xO8Sg@T!WltX zPyCuX6`GbU#E5`OlzS^N@C2y-*RZk4ZVs((7Et6bUj=h;VAfK%0PaSiDt5?HaSL~$ zV6T4W_6`IcP)K%T2z94DW~bS1$xhX-CWZ=*>zX0LSFyCyH6f`Y=rnmw88AVFK?iF1))Dg7KugFcaG z@Gano(lW~*TLDfNP`zUK>>hBzbsWs9aS!{#o zX4;cXTWqAw`90G(LQE@U+Kooq(myh-Qm5U>w2O_jsZx$~z;ZcE`vJ$30?Wo*S&oFn zvKsmKkD8FKC0sCAJ5AQt3)?Il&Gkvs32%TP+5Z-2phsnG`s|< z1;wg}?= z=9h)?fl|+!9It#W(XEWw#F7?S-UtV)1X=!0zC@+Lz~*9$mmtfae9hLa{KJJjrJi2m z!KN7U;7V-iDQk`y0R~kQ{{sJgfd3xCf79VEeG8dbP3#Kwr@#7hj{1|W{`?aYiX!#u z&+F>X%jyp<5eb6pH2_O5g~Ro1o!FogAA>tmd?%U^j#(4CM77&h{mH@~?lY)o<*My0 z9^p%R`C~oQv?PPgdi8QsCYDD=SvMT!Lh_)q6m#re*~0-%FRr5bZm+fQ{e@7;9B0hu z=rd*=JbedNTQEG1gfr~XbetzA3S*!94iVVzVO)8s&gFp?c(!jZ%Rb!-zVd%YF3-_A zp#U*H6GlqCH+*y$kgjsmkgHRJNOky2{2$1OBR_0WM%*iGlq<-=<5W!K7GwmJR&Ycv zpQO^zKak9&os@iLl8kUKZc#@3LjVXjt^1-RbBQH2IZcwe){>GLtHh8+my~?GBy;s8 zC4Y*9rZVDHq$L*Pu3gT>_@;bWi_wKgCKHQs{|hb2h~G7l5xqzx8xRoB!R=RE56^E) z`?Y07yXD|vH)Ayk&veL&@0URctb#7kTt0lrEHfb=(p-=azu_87l(ksUizpjo$VNw= z#jGA?-WDq_Sw7s$yhp9PWchFv^Tu0w$?~B;^Lkl%$@1Y$=A~G9$@1YS=J6`Dz^U>q zw!P;C}UQD zc;yE>TI7}gd;0V)91#7#qE9c|?j+2oVf5*zn0FX``ab40)u%(k%`AR70owm&GsVvrWY>_oOR+c@*-f4!%0@e}i9+!4{>NK0T!F z*YHbax5UZ*XxH@BL-m+b4YNwAGaQuUJx_ z{&61y_~V=n2$`!LqMy!poE!Azxxpk?aB4}KzXMDtS?9on^1}0b@Rq7&^s6*qm5l=I zNbR=4_V!k4sIsmbAavMkV_5 z{-%~@>pH75I0^5tZ8kUHMM~;o-}sXBamy~a09_~Sf_H6A*ab-}FyT1tf|An2?6>Am zoCTbA!FzFv(cCV0-CKvT3p&7QZWo+^I}se@F&JdR_IV2)S%qCOX;T%3 z#Wy*DdnruXgyp?&qBYgGh}OO0h0*?q8Xod3rWKJdVq+`i$TjhJdueTaDrf`&SZn<~ zw4FHdm{b7q25NaH*i)WOr5xuhzS{k{nFurREikLkUHZQt=i8DrT5K|F zlM@&tYNWc|qlwNeu4a$i{1)L%$?MzVDL)pvwKYUM4WjQnBP{S14$(h|XHUK@GQ0`~ zE^}Cp@12j;{SIZ9m55a&dV*vJ#9KtheDq8N#ex8s)~8E*G@%*%xnUN~>$^oPgA4Jg!; zCy_}lBX&bd=!bI57^B0Pfn~DIMj^+B_1^^T{RtVzcuodBq_J&Xmu{-TZq6J z7ocCreZ7!XSJ5X9dM?E2PE*_;v2z=V5x`ON3kNl1qBz=$=G6Xsv-x2G+yk z@FYni#{HLwvDqE!@6uBwJ|>dY+wd)9{Zimt6V{#b(|JW+`_E&}-+Ty{%$Hm9REvWa zR$j%_m!0F3FfC5p#l`^}^bc7?((#}RF2`y85Mg|fJYx^rg&b|;zIzpT=QyI= z(=HF~fMGdiSyO!th8=$vCmMX9M3Lo7(Dk_hp2J_VIsSfv#kSZ*D*3q+wYJm8LVRON zr6Gqs0(S{A;mP-_&X-U$CtJnwqnBE~yyY`uCkEU{Em-Md#(PM>q;VAiXz$@{Ba|Pl4KoYZlhEg)Lm@4^RZ-AsqM#76eR|`iaLsv#~~c zhOL8T_?98VkLGc`!+M39rkJ|u)kxIGUo6Yzq_&f9pbS{F5LqN8$Myf(ov zaR8AC=sEp}$-{tCP0q%~Zp4!|;7OR<#-ctfS|&;aTus)amN6JHu|4HWDL68{#alcT zVc0_k#XUT*%N!&re7Lz{Q{c-OUEFEsAM5tE33w5sr8Z|+hG))?APnx|UC3r|gxOE> z_`_3vJL>T%g^4bsJ&r%pC8z>Uj$cYe3?PXM5bX-8qiY`AGV~oOudlAu%@B<1*_raL z+W?O^qj(F+)b&S92RIo1KQ_ZF#%E9Y`v8C`qvf)rzB_X78{%z*>ELR1<}AhL8fW5v zMM0y#td>!C0#aRwYX*pqzuVY2iVI?J4Oa;SJZ?mBVm;;eqdUG6(h&Xd9pq&@pw}*k z82uc2B|;woV;F!dBLil*&;;*?36oGSbbK~V?iay{&3fO_GY4MZkX!K%z%yipoyC`! zIB%B6B55c*6Hs$%0WN>T2MvgEbBW*p3?V-yP{&d5y`{3##^{#~amI4^pbj)Q`lwgK-?ZlY>P&;IJ_MDeb^81MB;st}swW+SrEYrEzbP z_wvC(^7Nf`<;atlr8#?EmauiaS|p}478Tn)_(R6Wh%2EB$_1Xd1FM-l)RoDZHC@*yk_ z$Qt2=&8(RSP#;|HV!UK{aVml{0=20hh5{SCfm;7G9_m8oVg(~&O>vzOSQ84Yf_~Qt zXpUYvLQZRatBh=LvR3pK$k#&C%o9Ov<_j~wX4s*|S$Wwr^RXc7;H47S5(?A>eOp}K zz(#-Tpl_86Z>KmQ(C}f6PJ|EXvMfM@w?kd&#nmR?3ESd**MDRB*fpWC)f#xPOay+^ zU~L#KV8JKmgr5g%bCC@eG=v^%h(TYi%UitB?+*H^0Ty5gK(#&wUQb|58J4@!Iv}H-dODgzmQIPvP&+5CmiWOskQ#|iG$Vv#XGhxuuXNn1?S{OaX8c=`UfoH z=zJdgZ;0mWz8>xaMMvTAPbe6Fl|D;yudnxIX({pTO=WEJxKkcm73m!wj0->z!>tJ5yGF-C?Latem%izsp zWLZ@j!8$aeA_27{OlKW|tqWjQ8Dw=ze-ug4KMq!XAzoyy*fh0m&v4Ie=_BvU%!M5N z4qi^r>ETb#K&a_I{(3CTUC<&H9=5Rnl(_+RaE{KnhF?a=d z%RqNdzS}bod)xdBjP@jJ)dboT`}vwP z81|k7hU>50VHN^IWCW?=jW(cm-7~qGls@wbN5G9%ZK%IH(m#VW9S!u)*q@t$Jv{9u z*xqt>jK7V4l!h`@)XSYAi#?g@~*fUYqG{?DA~&8u;IwE((?vfax0 zj&sak%~xX{q{hrmBgG{26*zMeqZn}fQc`Y=0hp7?6c7d1BN&jVyzhB{q(YQ|VITuT zi1ov78^HCr7kz?-9St0D{`xBnw^hw*QkfA6(&>*rA`5(ani)+3b zo%oA?&bL|=6ZBg49IO(hwb7H@zPS>7_18Lwn07)Bs0hn35 zjNInLHt8u>n5C=G0$gTSDEDAsZW)2zU;Pt8X>SA*!X*sQd6*cGXL-xF^CvmsKn$iC zC**M?N52Ap*^oI8#2rx$IF2DaI60N$B3-n(_`sh)M4g0VEux^3RArD>t9 z`k~Wkr@7eNy2j(3175@t-;%?RkO#FKVI}@@gwFv4IN?dHq!G>`=3k;=-5Q}x=GSU#{!;MXL3Rv+0ScB8FUFYc_B(N}9 zYdntukqQ%>32+LG@$J9a!5#Qne>3t3bh3 zR+!|g=3w7=EOOzCxq|$e>lovsg7hYCK*hYwgd=&PUru;Ud_BC=vJ!14sCP)LjgLi(#f>bfF)NOLM%4Zx2DD z(NnP-zvCMR`!C=mym3xi%3%K}#h=*y7jwyw=f!u&a3 zqR|j7$KpzqS-b+wjYTialgcdO*F_6h)Wf1#06D?m`$8ijf5(ojLOuJ|(8TzJ6DnW5 ztZwnh_SMtz+Ef0D2jo;i|0+zgn1j>6B|&zfx4Lfku4RVDJfStRO#Zf?CX~G=gA{+6|OFD!JvmT(gRG&vs zPfc7zUeqAVgs$B)G#N}~o@y-AKSPgA=F#YvVGhd(&8PmS==K}7r{?$`K6#uPItF0D zWNNHrAyX~kp_mGJ-^H`8zqY&q0}qDC8XMHzi}OMULhphi_G^kr2X;>;lEas+*SQP5C zP(=xbV{p-y=|w9kY)+e>-`@>ph)0Q$Z&4a$7oHTDvzAj)*bve)^{dt|$h!`MYkB=P zkc4H~@(PC_*(k^c*72ZY@8snx$VtDGQ&t-|CVqolR*)M0-#HhoSEUV<#mYfji}g6* z=x~eGoOlqFzljv?E8{A8`UR|#BZ(?$E~fw#kGOuI_{yK9_@_Z|7R598a1zB={w&3_ zxT1LD@D$HNrcZW;S8~pe$G1hCk~)B?SAh~d>vGjPNRUlyrw^+8Evt&lUcxoIHyMv;ZFZw??sEd^c;u_=BGA-RCpk7a^l_n;R9bO=t( zNbywUQ`Cw288QW9FNHbSm3-^kTwTrI(wE-I2ycp1d<#I3h1Hx1MGO%Y24{4w@|sNc zn9H%(GUT^8!0qDEMaZ|x^sN#Gx{{s9o};vm+URQd$PA-3KsSQZq&a*JDN@0sV(G)= zuS8SJfFarP87p0?t)z|LdGEufqIOQa|LUp05fL7~SQbyieN-@^^A>-J(iV-_x>L{4z4wdXi?h&N4tnwBcS6P{IZEq>`cxbizvF!&ryT7Pv&-jxt8!@mv`3gawF1 zG_#3FdA{w+AbPt{k-pIin})KrQa zb+2b#RWO?7-HT0=ScoX1yG{p3>wx^`*su({P0bmv5F1Y&M%4|Xig@nKsxhLX%Kv`rgMTu2*65AVBybrvo*sD>Te#|O~7 z6BpC)?OE3%E>40th+U0*a{Xk#@jXOSI}j1GlDB_vGmB64!Sp^~Xc=gI7H6r+w2b!& zgtm!=lqHssF#~m6OIJ^VP`G_R+K@Rl?UHw$4{P81cotr#3$H>8gVBC`y-FP%_&XcD zy#O1#3kG9jw-B4%h$0Rmd9(i*b7Y5fL$*YuByGN=a}A!ZAQgOs2N*}eaDpvqf&XHR z@#nWTkQ9H%s9~B)QV#uI_|zF!;JUDW0!v^BZFOvB((%ryC`8bPBK}M8f;29L*Tlaj zS{+*DG|WW&MLlQ*V(0Ea(a?W_xfZztTkv!@tcQRjHH~Iw|Fue4rUJIjKT7F7&2(m~ z<0^k|c6>HF#t0Dn=tU@9X6X)*3z&|EZm_JN@n!fMyXAoDb8Eym`)5_C-vj7SBqG}( ztv;QlAsL8m!)!dWsy7S+GfccVD?2hOPX2y+n{YX|39UnLCsNx4GI|pgF}r6Fl;4ud z6eXxs4^!#5gvQIRvi*zlNubm z5*ba|K?d^q>8_MvqR6RdVlH7%(SW`=cQ`JwaNsqW=rLb78p&(<+Z@nG>97@F;0rO(jC^pce!s}E&`ax5 zMZ3=Jtf%}|G>t7>XeHHJ*nEvq+3{lx_h9dvo{FQ|P~77Y-M}8{X236XgLO-UK3>vN zPm7O|o{ahIDW@1ppAYRDqTqxoqDU0e60~!k7R}#FctqKOWr0TVll2-mRx*otYm0k5 z###Y!-4zUtdNi*bV^h`wprD8Pq(X5+suFoJPY09Q2PwBv{!8rjDihGv1_7;=|t(ekONK{^PKAQ;5r{)@c_ia1|XjHJ6SIXcG zZ|G2(M@ovN2;!YI`Bv_{b5Kgv3rVWld>(;RXJ1CeL}{5lddfRFT4su~WqzxcPn4Ef zFC>H2+gcbeP5BO05OPym=1l+PW~_*nGEmINqxe#AhG@}OcCQtxjV!hSyX<`GsXS_u z0Ld`e&@fuy?z)*a%tbC@UX(p7gjfw&Rb^;3FDaP51zhwr3)8-AW)eg!$^D(6Ps!Rf z`s7GSPdOYOaC;wbdDE$ct88EvVNJ(tJoLAalx(KVr87%@_RN7@tS#EFJ<(cyk5G7X z6_EGrl?rGUF2D}XO($MIAYLmPAlSn^LM-tb!WfsQyfdLKUWFH2{?$XL3p5ZscuCUA z`ChF$bh6R5N}(-7qwVICEg)FgQyxbRssQ@H0CTx~0(cVipfcp+uiE0ymn|+F5Rf8g zoBE`1=}TalipyeVt!Uw*Zg|YsIlz^ocj;%xLcV2srw6^3vrFAudFQc9(4chLL;ZD6 z*5@=^^f}EXlYx93C$gq<+!b2^1tDXF#8vuUcSApY8CmLVJNfM6IA+#@B<1WQS+V`$ zF67C*AY))g&cJMs$#;{D(gh*eJ+dc)n&{~oG)8ki9!Lfvq4SUk>6J4uOPlPH$Zu*l zoBWh48wlNyVhHy6)}f13yNpdls}Rny5K$a36et+jJ64N6mL)ZR0&vkc-sf3{*NhZN zC4zMbsj{($(U{fNMq=2vFqzFI4N!Gq9qpB&3w2&`49yrYqENA0=v3^~YR9F@6mwvP zUYVktgly$bPCms9%)y%KaC7Vp5U3@9&9iQxHUnd^7?bwmAv3j*tgVzReT?_Vj@HtT zO~3?t))gJsUo;QojbJ@Y6ppo(sRx)9+Rws1;Y8AYjHH}Y=M>f{UVtXtw)I68Emp%v z?5ieLPTnOJ45KI9w>oS0t+idS*-5x>dCIFXdHt!09n6vru8wTJ3Os6jYxp&vmK|zz&-2UD zPGSqNn@H??Vr^u-YTKu^(P6E85yg>2rG5++N;u0lf2V0T~& z%zysdh~V#TBPEFv2bgMdB{J4hWg>>W$cR6pIuAzV zg_TiIAL1WGd`psV8%BIflbO01SPB-D$(2mcA^fH2f?BnN`jBCY=8C>|!>(xfmRQ=M zryLPGfJ({6M$R%N|7F)fxI5u$n%`sk7PAQsH8v(4mzv@}dy|56v!Z}xhw*lJAUgIr6ExeOj8P=@4HSv)EHEzzQFkdjpC*DHt4OArSYL^-0WxhSRiQ9K1?9M zN6QuKahdoEG^qgvsy5I5vJnr5`MYv9IZ{J5Of3D)AK@j1R&GWsjk4>Ch0qoey!5dz z8{zpYv&$j{DB{FM#UbqYbf=l@bdS9Q)ZVr=r=_LD29tELHN&ex`PsnHnZ{8C-Zuj$ z!Sg!4w+VU82j#`4u>Uu60@xER0j$7bXLIC5*yvTdO!yH%BEh517@i?YoUp|!pZKY9 zAiZ6z*L2=0d4mwYcrzAJ4IeL0DCueAprp$-gTw#!YV3^F0nZ>VX&G$n68opUZ;5V3 z$=Df*4CQsRf~gab8jtqGD6@=K2^dQAEU?+rhYz9o8jSz!kZ+MqaqycF4c<~k>)We? z4eA*Fs|LoG>eo((qMzjBS${VyUx&ii>@0TBt>E(7XNYKa*kaB_Ry?fv*);=GQsVO+ zcd>@j@gtC7Oc64E_?ncIvdN=U;LmRPrvtOIk$UlGP;xw$}) zmd>yX6XGc!fa2!p3`Dr5AC(s!*eZc#A74CPb-WaR+3_E5LC5VKo%%W;8 z=>y;Khj1TDVe$jafI|TM8EYo?6xOEb`VyzadKrNA+o<}nkH~E?jK6%54$G>i;vir% zig&O-auVE+fNxXr#^@xJuL$El4<7bL-1`D|B$rB33cYZZO443}<7J4h!xoEmixHGc zyoiH$eBr@sH*ZJLYR{$YtE2L>h5gbcxK6nQH*rj&OE5i=7(5ZqxZ)Cw+bOs{Ri|Bo z>y%3{r<98K*jjkp79cjUoc($#PR5Wed;-^OK6>y*Fs37r(R}7i`0zqqVpJ;Hp& z!~#DAFbgr9u%waCBW|RK?{6*B2kiuNybh@_ZxU6p(fDmcV*CCIJt-(SFOvWWFE0au z%UavMzjBX9eEP9&;j;zrXRMi>W7X0P9BKQ&Gr1bcYN1-IY0JO5nl=%N=Bw$h#A+(s zA^Uv`6Jq$g5Z?Jp16Ql*8}5tXpa_`y0w(yA;YjOOFDxHn=-^yf`JvYK^w`gC?Kv8q z!c#M+wWs_dFf7mmj9?*NlRl3!7hdlYUw*e*{&OSga@Zy??w3}7B$x^W@=aTnD1wxq-tVy>XWG;B{xfU4Y$nEYNF z1!s!kq36_YHk0Yyil^`fyK@TMaN5}_E11`uLWSYzJD3-vFia5KMr$g~asg^RBp|q3 zab2vDiUHTW)F=)||HK-w-xt<}+Nv6){W2)XQthC7;iSZw^7qFD-K7a*9u!;r8CmViXA#sU);Aa zCgahE`sA$$@6Yx}a&i=m_3G}3Y)BTJ;|wiWFEJ0$!xd06p#UbfBIjyCua?{%G;&Ao%f1UF2kxkprWShOT@8Fjg84wO5VU7Zn=CLDumtBx1;4T>`K~H zVGLAeWDMiZb&g?&HHL?7;23sTWAIN+@+Nh{Z@+Mew+xfu&n;{Q|4-PO1Aa#pfuE1o zM;{%^ORy@?GkjM?qr844wkqp|N_KGWiurvfxs(+F{~^?(n|Lp{l91sKOra|w{kBj% zpP5KJ&zaa$*GSbhj@6lR05m|?NI{~GIho04RMm5p&@edV(ciy$kOs?kd?`EtU0WXL zE!@a;H%7LaL~69JDwUN~>PMOr5Qkg6{%gn2zlAgiH5}pQ)su_Q6@i^k9@pqU(%KgQ zC&F>(B1bOxg#p5DUA#mRsn9EXE!WC<;4Atn^{IRIG~%rNL?p{&Nz6tr&NYN|(%OF| z3@{Dz(3lAuKZsI!{1AKfNAiZys^9?}##Dilu|q@rmbA(tLMtfn6$VN*27C+r`Zajp zElGp#k}piji$yeJ2RR%iS|K`ariC}Xewcj?IB1Ps(II_sAwgD>JG4xiEOt*{&mW=U zHMTM#TDsv|Bm99pC<4!$Vt3AqEa)l!1`PyjGO+h6aC_gI*2SEX3QfSf-Sfcjk%J3r zc(R*22kM5DYec|D??H65GN-tVtW`Ktyoz&G#`}pO-x?~p+*KLHYhe5q^nvj1*>aHV zDhp*O(zxG90b`UG=x0bxOa#$KB%%BpIJpH=FMkE)09p$dCIQB10i)5iO3(RB@Q2Xo zahfdd#g~}QufyzF%hprzD!3yO*vWtjn6sWIvo5W7%rK_xDxBpb(o4N#(&Mc$>GIg` zU)!an1b>8n(@NH%rVN;UU1arG605ku`SCj3dQsF=f(o&G^y7WYW3E7@Q0>+OP%q3S ziiyi!16XmB1c_s`K}RS>(e3oPHJ9{UJ1r3RGyKHCa>*R$vKTXl0ub4b?h2~0Q^;cq~!P$NOW9F#6F;S1;9~zBxip^&>zhJp7Ot< z3O%6n-I4sJ*BbNXTBH9K6L&WO2*ANvbZb1&aG_1Y+_?nSKu9?*Gv3Q_=w2}%xy<;- z8Mw@N4QEI~++c(2q~-ywMQHNcVe&Oaxq-EYJoNnSkjM8>$Mmfcxyi?Hv0fDce3A*? z2wr(QB88~A-HMd>$MiViy_4u=*x1Img*G@L4Xkep<$>u4YP&SP1N>3;GTr$Of#OY1 z&){t-Px(UPOB;Jt-@(3ogE=AWDz;6%9Ww9~@Ip&t*bC>UWZ_mi)Ru=hi3FB}`!;MO z_YG|1$pq4b*Vam!KWw#yAgoQ=Dp{eiaB&fgN>;!Z3pHJkNYuE0NG0FLxYWH#NdM$5 zE3|~<1T02l#!`$I9!$Z>bOpYhH)0C25)Lf%#r+CABH~+saw%|rGzu4p56hStE^+}S zu4sTk@T@}Ec;w+=ea>8rWdhK2?n^#=ZJ-Ec2ozkjhl@vjsBj?zq3nu&Ps3HViA}xi zJ18%7y;B}Uj&G5Yy}00ngS4)j2Ycr5@=3(E82>^Tuzz#x3d{)`9ojh)C-3!NZ z^Nhm9=Fp>D2BI?%&w9?k#@f}viw0LPqKl`TZtDn{L`taSaa-Xcc-pcG=^9J)Jg)>? zf%Ty2VLNmffU}Bd;u`LckPCQY4$BIT4kKqF7C{)Ehppq@9ADVqn>S~v(aPq=V%9%2 zf?22J_!>Or*iVopLKyJc33&B3e}t1fEf*93g%z71KYlji798*ib0vmYl+mqtp0{|h zXExQ)q=_kzvI~-?)?2v1Gy7bWw8=ox079Cm%Y}t*bVI8S!f!Qxn~s?+bb~U|3h*vR zf5Ay2-?#*zOEv^dwlO6G>i3R8{*!b;uoEm&HQmvxSr*JH%^b5j3$U9*@m#>`*d~wN z7%HSqCZki2b8k}ndOA314=G)HSZY;kLi6_Iu_$55$1&Wr5Gx>5M7F*F}WaG2VD$;G3lJ zz*gO2&Bb8veslz#pGFh4K7mNMYj6~aieuVB@TEYKXf90HyZ1%yC$Oo)0Umd9WD_=R z-pr;?7SSWB^Xoi3S}u6cz_kodIi(86harE{1C8^|3)pH3GI9#COLL4;dn-&q()NnI zjXk$PKLy)>B@fqcL-!)G5q7lg>Do7)^uZI)V=KK9JceQ(Afx=kw@1r996vTso;enSaBdA_CU{xAB~ZRN*6{)jDRfPfJ$DeI;Pd%JI92lsC^Jk&yrb;hGucXfY)+V#;oGmQq(9l^bJb^s#ef7`OmXu-6El3lNTa4w4YWMp;hr=OpH0sPl1-A6QU76MwQ0v{LaLxUsjnta^EAR(#h(9l?vOHGAr514-8tMrs26{Ao# z0PN{ItO6zhVT%TmHWKw4iv}QIkQ+;fapNFzowTNman%#;OOt6J@>v2CIZ_wM(z12; z5j0N)&ZHn%n<_J|&KbxBkkKheQkAX_Z6JxU3ZZ%G<%8gk)tnBCUSvqoBbMu@Ugfc; zbHuQl29ta;eER0D55liO+4-Nu0&*-KPq|-seFMTH;IdzZ?DWT0S0L;hPa4!qXBvqd zyRzVxKZm@YJHdo2<^prTAP12DFn$XAcG2)@gDliryv%}k2Og(7JiJc}IM7Qpyf-$5 zSMFLCmn*ifb=$~TZO9%W%1dOO;o)L=VPnMGk?wbNGG*(FCNj&`UBvixN%&kK20 z`H$gt2g{SVEIGudKOW)>={@ zAjK3%8~t<})7ggd9&dFA0I;_sM11WNiW!%D$!(hE8~5jd2gy#YnrvioI=CnTYQDt+ zLgIfwt$3JwJ(1rAKbJGNp5;sU`BZ}6mhjvdK`0S=8Sj4aytqUHFO{tpX&3maY_;&T zz^7bhdoYUVGxKrvML6W8-k%zIT<{5!Yl1A7iuo9WzchA?(|%U#}-;VlkC;b;fL&|0AzvOhbF$QqDWp1zz zb~Drs@LqrDU}NkXMGplYiN&h~86R&J^u)gZ9&}~xd;2QGpfS}oJ~+jl>hGY%ZS=9z zup+f3leES7VhzD*z;oy6kp@6PGRnUjC&Hf{;?L&-dm8!FuC{%e_e&Wi5KciceMV{C zU(dRryFJ+1K)K3CEILty8Md@Gx(1iUsBU4pe~T6wRtckH2fOE}6@%*1_kJvoM2A}c zJp*;bu?yovj70>x%P$@<+U ziN+N1x%UFC!D=RaG#q2VK3~@vi8}GkIJ@(?2b^n_S&cHvCXcsk*(pLw6qN*jNcDFP z{*dNR-?X8!ri|;0q~?UlGnH!uq5Lyd4*<=H6kF}uPLR{q zJX&jEgo^=sf{V}zcz}u>6g+@4{?9-u*lbs$SHyln{}w5^JN_o;Cc?83e~IYh-+&=a zMCD6M&+`@xn=th&zGAIdxex?bgOk-?YO~ z`$qm)R`>yvrw=v?`Td@Ji?qL(-^$c4+lX`c{kRa&D%L-V-!su+#J56db}XGLWicK4 z3kGHQmTKESm_~OnvuL+MN|2@2SQuqtDO+m1h3Sj=vk3NDYgJ)c!nzop4)dwuTg2Q~ z8>qefJZBo7k4-ri^n)mCiaNwbCS1v_vNUp!WRSv`akm+J2i;t%7xT0E?_ z+RQma=R|eMW37_lEX*(MZg+8W%$3u zA(MKY6|A-4W!mNxu_MeV)+YJyi=Ttx!Z4T9%2S>S{;5ZK!|h6&zDU+64b0JHH(}r# zdWNx4O@~91St^lYfUD@>(_sON_`)PP#P5ywFvey>Nm8Rx`$}VM*b2;z)rKvUZ0#Qh zY3GH;hOrm20xEcY;gT>Ltpd7Y@1RAP;*$jka$ygMc0U`Ej9!o(So~yug-5e-lG<5< zY{c`X1F8niyESleEEOWjD9ncCNn6!2#i~{qwr!gU@OTE*=nM12Oxo$X)ms=Ysbc%5 z6FP>{RIj#Y;Zq-r9f_Yr?9(4}jnKy7QWo9lg_u8V*ehCz2%uQ9EFD_6{}lVFD$!4IOb~{xv&6L{)Voe-u5dk%Q2obh>alpmeQ*P!aWxq$p~6*BcRz&~ zqi_{%!5PXH4DTjo3l`iwh2C*R=^fx1i>5DZ{AZ#$U}MUM5Fzm85D~chf;hW#5$NsfHzy! zQHkcun?8}IiW_1lqM6X!u~CWEUc)(t7^k!u#fR48i_{19G|}_%&HGNp4G!Pd!12V9 z*zUz4f(0jB%stTxj`e8-Cn8E>IAkEJXJN=5q4*ndD+BVAejMB^_eJcy9k3T;qu_u#wL^|o4umy+t$1?T}HqhS_Aa7P5DxR{k6J{?0tS5w&)4vk4L{tFecycxh?vpE#@ z1Y-F~_G#6zcd0h&vwMZpZ%)OiU(iJP;wT(MaGA>Z(E)}P`EZIQQ(Ji)bl%D@);YG&T9evwH}Pv9K0c%s6na zb>c~72CGOI$MvVDN$b1^Ujs2gln; zys7NL-uD8dwfvKn5*RL8hTWI9I9&3$-mz{wNl7n#Bpd4js)d|YR->bjMo39twf`2* z{%F`0ATZV1dtR+Q0_P%dlgFe6HtVxPQo-wLC4#$D6NkFJvG9Gz`drRxZ*;<*SBWe= zw6{BfKIV%L?=ohpm8vseMyA|PR5F!R(*dB%s^NJy6ZW7C$!G;cfGKc>#;(!21G!|i z#}w&S2ql942SBbG=hilup0SzanZ)rve%?nM%PD;M-(>dW7+N`megB-p#aN92b59!F z@R4FD#>1=*CxeUPC7jO@D%_Kg`&gH1n>|hR0;i{_Z}D&rr}(qr5ihkdt#1cjtAXAd z-=vBdc0lK|#v4V)83hQ4yLsw~2!@Mj&cV;qyqgi(X|t?EG=BMoWEQfK+sn`sNV+8h z2d2>$q1 zACABw5I#=08m7P(C_OPbkE0AHrxm`%Tpo`l_CGia6GNeLeRCYl@BA};0^wS1|BlOlI+UoOqwY2kPLK4;4{lTcalXFhfTO0bC2XseIN6m#oa1e zI|C+LW8@Pq3J6XRDY$SCJlC+f)%JnYGBB}7-i9{<@^Z#jm+(as+JvJs_aFzZPhr%? zsiV@np`wrm*I?VnB3kqggn%3_z8@#;hdG)@&`A7UW!X9%;Ko103F{}eow7Ua&81mTUu&A_l-IvHn4&*jGgS#J+>LbXMMZ(p7<+#w@Pi=X4dy_%h`p-vO-jPbEd)U;JWr#o zELk(3|&gD~JH$NjGNO>kw6U{E{=h(7iOCcB3Et=@YPD?i{Gk7WlrZ*pROIsMxZ zSj)PxCHG7;Y_f4PZ5MP8_y*Jv`Nokea6r=3%Q6Kq{Xw;I_E~Wf^WX&QDQ}No7;G~~ zSh+p~Dz>hpd1OdV)xzHfO~>A*Y*q2B1qWKosEekZFN}k4iEwz+Vi+@q((CP1{hqwo z)}0$nN?ecuW;7p-_6+mwddn`}m)xe12c6|}IbZhlXcUl9vgXY96$<$6Kgv4Bz+D<1 z8r){zvpE5w#Sa9I!!;Yg9$fD-E*gaIR?sx}g(7&m;)Iw4JjOWz*2m(W;IEM!c~}gN zUIS$-G7z>Gxt94s{8Ww~mz`;(t>1hkI}gi-Ek7UEv9TS@*tpdw^~R!YVF+ z)fc*(1luB6wdH{dMN(}vejg2cwOA)zxNXs7|M+Qw2ia+`tG|Nkt*&|3k2DhP@j1{A z0SYpZ`xZ!(G3`1Tm0P=e=3t46YYPWD1T9+Ne0C%pTNd@)A7k_Z<)Arcpqj#oTWL*W zg`-YVtv$uvA3zu-Iq@$N^Cs&~J@)WHYZRv8G-3VcEH$_OGu0tUJmr^SR}vBQCt3ej zL0kHHo8Hv(K!f^K(+qm0f#%H;IH!H@KN&Wl(Cd{(Yhcxl=MY?-8;84s5tsMJK%52w z`;pyaegldM(u{_!&%fA)WqjLwuENjyQY^N-5)8*WtK`yHGXfX}_G(E|+#&f}(c7Ru zP9GX9K~me+`Lv*Va0f)hT|dr&HgYni&xe%L4km1F(A8)TK9l4#Y9lA+*=OIO`vF{( zi|cShBiU$WZAO%(e`W{D5qkY1q>Y>_Sp4ajr>Ibi`{X(lVsGnkBb|S*{eW50(_&@; zuw9P;FpRV4476tnBbiRF*nLmooB(kMaTcIywuICau|~%-=i)py(t4&)t0+Hg_VH6d zPo;FZf$d5ZEdYpTut&cQAcfm~l&_ z3c4}Ufz#PD)kLN0%jDEkidxcJ-n=7i4P zjgK02|E>$xMEn)?dm>0H{=E8K$=~oDu;BM!MA+peVZc2rW#)_(7>2}Xu4KZ4{G6E? zL$yX3*kXK#GKH)0J0&!ODX|`k%VARQ>W^8&bkEuXK}Gqa#1c+(oBR%b0r4$o!P4AsZ-xP~>{izXU*??>-bL@28uBE_gl@RTx4CbqdY$kb3 z^!#w@0EDFu5fz%0wQJ?31C6yTbkPQaQ~M5*XMHj(%RweC@4=6SlqgG5AdJ1}`w1`r zutg5Q+M-d?k~QDyGcSbm2cVePURUONPXDm!dSg^ATfpbS|5S ztI#JY;G%&5OCuVezj+! zaL%4a1lak9Vr^;APFeR4*dKGYE(08hpX1mEh`j*hHPwYR^LwYvdI~Q+VMdSRlDmLQ zPImFJ3(*1f0<_u(j&3N?hrheyH@2PZzGTG@^bq*Jy;Qdn$LtTlRTDg7(>b|*1;T3cCMr9BC=U_jnA)OjoQy`IuW|C_pbtkskclGJg{NV%GB~bQL?vxJ!vB@~ zn--4aaG#WunuW*=$+A(}zR_;`#O7@;!!_ogYulyUUbVi(wvV>kUWc{SM3#@V+fD*^ zInECV?)7N0i7Xd*{|+irxVX7_n<*`~IaasXR=3&0Jf0@h@gJVY#Jx$#z1GPaLKPd! z9K)Tn#9Z=jz-^UuGD)nsvTjgScRxVmY6BK1f|x1x*%$X)af}q)fXH2NZO|115%LjP z-Moyl!RP=V&J(QQ;)u=LfkGo750sxV2>!iT?nmH`x6RK)K9y!tGPMC^Bg{$piIh-* zEcok}cfrqDt!LsWPwpq+=6KI=S!vyQo_S%@#gHq)*)eC2!*wp#KiuMq$B;T|lzBwS zT)kf=LwygzTugJ8<~t*xVtyom~fa$TPo zoTxA;xA^c4K(@DU5rh65(3CY?S|g*!VO&ktGO&0{yJmO_L?9i2{E5_B(lq{g`jEh$Av-#!P;Y}fLlxMv4W&j* z6eH}n(Fainuics>Cg_CMP!kDuWxSjl{cGPGJ%A2J( z86*70QG*bWzP~JW17TlrY+8WxENKB3kk7-h_e{7HWq3V-2(AwB;GkA`4Al|@GZ$;t z{=e+OI);Rx#~bf1sp?ioC6831Dvp}01H=BWlJDZMFic)duVCS5g;`PtQ2?-7_SF7_ zr`mU+)rzZOfuQz2pX^Pwzsy zZA-fUt)}`ki*1Vi4TYR~Y$QdcKVhdk^dB0`iN({tqIMj;+p;3b+G=V?xp*s>hUlSx z6NK11apJ!m%|}|Xt0aBy<2O+U+4FIx&_ti3z8sC!T5VFSHqjA#wA`kt+w7;?Y+*dO zXOc9Y!`K@UVJF#slH0_-LVX%Z3ZG5?%3PJiWv;ZYCo)^@#V#RUZ$hr#Rb7pr+*O@P zbPQ*D!j6&B2UPUOQ%IcZs1O* zm#=I_;{xvycAG}?Hix#{<}0 z51uXeXTy~WhaK3U93%E9n5Fu=xSn{zjCqswQPeJBmls}kucF^^L5E#@_2#DZy9C8H z#d1(6nSNFJ>2|utOLN-*@3Vk&qM2W|4XkNi*2az4#e3ak>E_nGHE~1%|Cd9BJ~IyD zf|{&@q&FM8@R%mV>zC*NzwP#7n{+yw0VZzCai5u*UY$< z+uXEKwOOj$bkMgo)~hc57sr~|Z$pcn=xV;@E=su8PaOjTV0Y>O&~%z@vOoJiEhW#$ zx632wU3bg*-f4hc5B~#jyC!8z>XP^4)BwIlixddva)ra-7tl$>G(Q}Xvqy$9)q$Xq zxxYW|jvQ+Yr?(STDJs9Cl>$g5+}^WuZ^ITQ!tRG?DgeUFA4w0K{E>_-cKpSp4!?B? z1x`LtuA?3{G-@Q`>=^gDLmRsukfBe#)*SFkra5$07VrTNVQ-axm^VA{PjloeSzT+Z z4x}L{oc~gslIB2uO}&5(Ku65hFsh~z1TMNfje07aQvnz}qO7e+?AUI5ac-$48?2FI zAno*L?3rw3XSdcBO<1sA!1r9-F@oWdTsIrgGNdop8zrS5mGru?_R4~b$#|a)yvZ1y z(e>?$om0;=;Fv)DbP=&LvN9Xzc1IgW!7GJ{1`>0gdJVoG3h=CP1SV!Tg^(brk>anOh0&|x38Stny+y5ai(K2Z16pNPN z2KoemdIosM*y=g91sxoIF4lH!J8qMZdM@56A?4+{53m zuotlfHQ*PWlxR=^9Swt(sK`1M35?3|c*JhqGp zEI1b|SUJ7&bNXM=jdl%z&q8QB9((-G?8_}#N;;lBZ|&WPN3T0!zr$#|*>Fp&%^A&e zmeFocIW899;VoR8ioTQ@qcx2!zP{8+gL40x@dXgXQqBZ3)Mz`BzEU(yE6zbxSoc^x z10Ly)Ing{@QOA{dju$WC8Y9Nw=?(umXaf8xif9TDDuO99Zw%Ym@feJl)P2>7Mg_>Z zlJDf+o52@y0}+eYV4n3JM%cq>mv_=={|SWb5)Nk4XlX?5iuYq14!E>DV%e)Oib(o| z>6E!+Tr}nLA0=vStN%DOh;i|F+m^eXXefdE8c-cg1w~;&0r)3SP+30R*2&N~+O35W zd2NGxj?vo5HW-!xzl2xA^+Ls5QzV3{#3sN7FM3Xx15@AL&$h)%(iy3G{7yLT*dy|0f*=z4*>H`^z0(S(TXcm&xm40 z^TSGK7=$Ldo*nyB!SUmEn>o$fJcuV!T4=MMZu6hds5Tw*K3-<1|fJ z--$h@gC|zmJaG&jg~z)wx$vpYb?5XSCoGZUwRocNv4yz%gfvTUN?&rP-WMX>=402c zYsSY=4EsV9YQo1P{UJMDw`=&axlL8`Bd3@vPy{rB;-FPLg8(B+CiciQr4)_Rnr8y8 z=JoymV*RE*EWPdezpU50o0n~YKVOMb7JohgzZHKTfL{*&yc{g-U*^xFk4*6AZ@)py zSglLoJ?!Am$1nU(^XG1VX@NhNO&OhH#W3C=ceSnqJQ(#CY7ERZ?$Uq8`Jy9)|yZ2ei5Tp8*oGaaacK*?p@|G*oNwn`WatK~o1E#1-2DYs&~#vbBW1 zn_`ry1iMV`1P5Q1YGsorrv%yrCzqrO>xOQnV%%f|e@ORd(!-1UtW{;8VOL2PFC3D$pgWbI7(DLS;& znN`NDaMTs7N5`U@sJ1HSp?{;S68{Fnslja+q#l#o=r`ceZqpYa=ft@S@o)O{MfkV< z+{O6U(T0>eOdh~%XUy7*3V5Gk*0=nNhXx)zz#m0!nNb@SmJQxp;zs0hWMh5jy3`*! z*QBs4_vy0+U>t0WFHA~fL-|8B_OG^8q}v*4wKe+RZ)=QhYn;{Ab%$>Y@uQj&oi)A( z%Q0Bzw#gn7?zxqu`dg`c8%9|fkz&o2!gF^GLJtds-U$$toadaYvVC;fzE;`X!rQi8$xjX-qjq82L!u$Wz{aHK&H1QuD$N#w91aJBG z;QF7||JUdtR0PKh%BM(fZ$&13_y<@}eDvQN!+#bAgS?}a#XDw|m0|7FMnx1P_(BV1 z!qK!Q@QY@YZi<67HbhtOe|uX&;81_7)_LIO}5%9Y0{Qc=gjs_ z>Vj7m^JE3j%ImQt6^6?ZT_ADWsFxgyGLagrKQuG1M`%(POXIa+!oBb=4!VX;kUP@) zPLjb#%<6|`K7s)5*CRoPM#`+*9^vQ_3ge&)bv~d~p4f)v*8WVv3?`i&+|ZkDsGUGc z)XlSJ!PZg36x7DYCB3mw1R9nr}hd>8fi=!UD4>zq_P;qQQG<|+9`Yxog+%wl9^~TVFX6!|L+$MGZ+jtoHu;79G6LLa!X9W`w-^POjrCcvBU0ikOOPr_T4ofiH zT@F}RR$6CEeZW7J;-|xU;&9DPo_Z5%VztnAdiSLVVd3$8tK_%E|8N&SBec4V{NW`k z=<1+ZPEnp8vafNvMAGH<(ccdDPsvs-<1_bojV^z;U}IXK0YU0tsbpUVqBqm@0skfP z-J8(_x%2PZ;O64GO4yrT38+%^b+k(PP%6FyW+{~HiINlxzWHz=`ogl|;e1(~aX2Kp z^ay^)1d9pS}djM4)%?;Ygm^Hs;B;F_M?j zG+R+Xo~ZtjyzHjgY73Cp3Ah1r1Xg1D6rdtVcfk$jh-~el_}r0nV9el=>LUDPu?6_6 zP4CY?wl-GUMsNS$)%*yKx9Sq7-UT=Gpq<1mufx#hvr&#+5ZLl{qnKgp7!C(2KmrA+)J<+<@!&(iS^{IBt&U!c2RKlW!FWND54e3w1;v*o9Z{S^5r zW6#1*jy(f^_1I6EqsHC>eeTKoIr^-X+ys3lsOUe&mmE`lr9;SYC{#%D;jF{aT%x>x zNZOa1)_VI-(6OWc_Z_5W^unyg! z+KO$HFO?Okd{355!yXoAFJ^vkj^g+dMi>6pc9ucZVL7r6W!b0P<14@05nrp0ecL^S zb7d$?!_m2gdt4h;%7p459hx3NeeB~yI9x-^N5L$kLcM$|*ldV)N8{RyKx;lVIN=CZ z_l96cRXQ3x^CV-oHW0*5jl=f!$OCFHx|InyS8i!AYua-#j@E}HTAzv5waz3yJgv%R z(n#-ys}7GGpqm=G6Nx{LY27P_5RY1)T>XGk$(DM%4857xA4uGZ|6q|q+DYij($9L( zUkFOwD4IX+rl%9$-1d~up}s>$v90y#{WIt;G*n%(HuCL&x|iT~tQ?%+l_!7~+FJGf zDJ;e?NPyGG??SBgxOsnz&@F3cLsw~x>W<#KGRP+z;vjLu;3}xN!}I{gS3a2ug<4*K z#l37-=ck|&N6YqoiMSPtB2x6=a%Uyu5o5cm3w)t&;2?Nxofv?3^&wsw`xfUaKQn;a zZ%P_~|0oR-&mR(d1wj<5>eB?#c?CrD&4415SHO^;LC)SK z#ua$it^xi-gC>vP`f<-~2FlS@ZAJVnz&<{B;Anq0W75$4(4?WBzlG_t=X$Zxw;~uz zGXf3XzzTm4yZ}DlaJfhtHpaq-nOKmCO$cWOUQLv5fd<~OXu!xDni~S)2I?cO`#J%z_)_3Kb}{KgF+&j8*tLo);EH0s90o-&9W(2G{ zolD?&lrg5b28QrJA}c8=1&3NEd15-iznk-4KiP22y?4f-!B zny~YLD(rA}<7pYWNYsed#{#Rzg{r>Wnm!oZ2#<5%49B-3m;4guYQ(jtaR!3-O|PJz z_6yE5M5p5+k0;T%VoQ7q0+-dQ^nGH?x*4dY4TPo)6%4psTB@Tp1F^mGIvI}VBS2Cj zg=ewB;!JsY)4BkMHa8+UB~-k{EUhM7=A_P4g?dSY8@Y)_NdLU*#I%`N{NFf$ygDb_deb?a^OJZ+-UL^mYz@YI-{jKS^&VFjvuAH=J=|jgYupESOAh zU;k4I+Vu7@zHQ1PVgA2CZ@kx=21~DIL10XZ1=TBd(IC=bnZ?Yo3R8)15?7`$GdySF zU}ki~&}@jWk|fwrbJjK`TOVf87`+sydAy)+@imKc&SQEWtTzY&&`CHa8dCRibz})& z76td2(iyIhQ7_b&ew{o|MW?2@Lou4Z(qD^Y=qY~$Lnm6E!e5P+RTf&POo59czVIq? zW=$zy;vkNp?1_^wOwf)8y!?GEg4H~<3I|@AKk^OWh_AL8e|%TuEgB)$n~U;R6X3DJ zcT1552rI4<2D_?R10#`c@#A6aPq0+My?IOgSj91l_;xjG=vx?16mJgsmPY?S_TD|d zs^V%N&*cC?qdRC+)F?rt1w{po3KBFVB!o*aT!Lt&QZK3XQc+J3Q(Ffx@1oKU2Z$AndyC{Yl-p6&hL!^8jOG4&U0 z03Llz;Z7CYrSdP0sZmmB>oJwj@S~2YQaS7Nua2n*cJGeB+W(y~^@J36Y-8%~OHj3- zD0EC?st?j9j;XE)JJvDv648oXtltF4t&3n)tQxB?8 z@0hC4L7p)+96?7NQ5;FKxDf70-dzXYjUcXYGH}~9tPLbXHd0bTUCF*JOs^`*$Osq8#v9joWy#i{ zG(3LguJN|_T4&7YioAze<4t8{vcMa~d1AP)0CpjE<}f>t??9;b_;OyMa_IhRu_K9F z&WB^swHb;nJQZOL$8F}Dd5*~79TJ4e7M=<%0^fSmsw>=m?Y@m9GH_8N)?4P4G||7# zXZDBGzcV&>anbFmdkyP8FobnCS%Wgn(#@jaVBK*QXG+CQR%v5QXNH2^i<52_;kz*z z;6Fg9&1*BT!~<(_YWANVTkoxlavKV3JXzpjzK{!DI(OsP5Cf1`5hhB^6A%_HMTZ8) z`#KqqjzzZUDCUj4^WNtz(W~La`Y;SP3Y!a`dx8BMyFtV3XTR(b@4?PG5x9iG=n)mV zm7$ndmf?alTw(t{|A^WRK|ce3hZqQlEC`j6@G(2uC>*yyl%@UhTg z8{v^hro-z+R{K}!@E)oAsB}1kgA$~ABsy%Od{zD*(cu$aThn0(VTY%~L7QWAcn#c% zbXfRV939^NgQCN340h>o7(+pam%=bGjt<)(SsWeSIK3#Nx@a+Ofr=NIxQ~$nGcl-E zaI)D5&Vpnu`xST@N8Nz)#RbF+Fqdv6R}IX_5Sut-=EvX%J@&)6qq!eOegU@{CM}8d z$^jLCL%~hB{>Hq(x?Jg5VP*|2fCY6$*f%r@hG?u=Y|&<;C@UX2*sQS?=IC7&f$#JD zKgIWIBShF(~P@VBp%}#iVXuJcq8)Kc=-l{ z9BK`!*ZaEr16!Yw{egM_0N&bqe*i}t3S^7mgyGb%xZb7~d28CHS^CLTD1@?)0mOr8Sk!(m9gjQde^mOygW$d z#D4;Eh^8W*iw>+5W_^n>AXk?H(|x;vyPhYHp)8@skO{6}fqVwE_YFQ{=48nB(VOtm z8w`9At8_`^=O3UH-q)pe8a|rJt*j-?-m)u2X5^Fa#qe0$994YT-488<5wpHBDbFf| z;k)+S1OD%NhG8mqJ(pXlt{d}`nB_p%1p8Uk_QZLxReFj0CD1{_ev`4$AOcYW;~!-F zD~wl$KEI^@58}^Z{Ppw)@g7{Ecnbi$HVL{?oKi?PHVL9uj&52{SQGPBRQ&%P|8MEN zH94F7-`u{JF}7Q^Z$1Kb`<`IDr+p^fuv4Th8L>&IWryQA)D z)jqxd>+P3Q;`>D`mWXF5GMV*$6zdmWfA;yg;8WcC+!xup6C73Ta5ewR+2fVDdoYjf z7i2;EZl}KnMwHaG!7AvO++ddSb;x{cXl~a=tlhyTrZj9rG#-zmO239~BRwcXs4|Q8 zH7|+PhuugIKRfEUS)bi{+$=?yuHxzK?zmZer!#Kcu^D5aoxK(2dIoAofg0!XG(Wta z^=*nDr$q=uyo}>sj9;a+pB%WIH2|u`C&$3a0XWSOM+Tp=doKG7+dNM-!ck~XBaNFO znc;sU^p3Ims`2P$ZJnW-2^WVd1tF`J38^{ymX{O0#4@nzu8v}~hC^c!hX9OQbEO~d zXio%l{JgI&NszI-O~!5$A2$K*+P)X49Yg18XC>AY_9FfKy}C*t6>9&?}ul* zJU~bhZGfnvY5)&dBRl|4h}Xwz5UJ)FK<2bzjak;s!fTdg-92&++aR<3gQ%f6ASlbR zYKblD5n?mH*IL7#1BdlHqSFd7Ds_(B-dZL70|t|CdsE@sg@s}Q#8^X;O!-fD!V zuJu#{lAVV$j8^%4R#t=(V%5xLHRnh*GBobj)zmoEU}(&ip)toUs_|AM##j;Lbdc8F zDxXbsmCs>iMJORwO%1DAekPHIcjb(rGd_Y&HMwR{wFPU-q8WBkkk#~8#rov!70ob<(KE;&t0c%uMxqimLh_vvLUPOR6*la(B(k^>(!`J|A-;gkl^76M~)bu^=IQ1Cn#x)FgyIBI71pG&dofvcDQnY!=5; zxM(Ne--g=pzaD9HM9qw zA=^o;Zdm(e%ak>o1!PIp`v%PMH}jng&hhVHzK7d8$LAv@SwANDGB_jin=!%nKqATc z3GT#ka&Cd!o0G=VI%iMjyn{LahD3qzD6WUMp2InFXLJZ#4muGa`;Q`!KLL=@^AQe# zp?m@7o4#9>6j6>t)f6qHEo1T6E9K*S6^P{*Ql6$$UZ?}#XJCpBJXHrSVc_Q%iT&NJZsA2EM8Tx9C9L1{Qf<2d>tEa~b%A4*UxO9eX=jf50ZKd*Bu6X{gO| zVY|h<&3`SN^JK9-sJBx0=R>$THJ-b(fzP%}O>zuRA=!A>HL6_U$g13vrCf4<^PiS` z8Ad~Vx&MjG^2gI!%Pfx}%#m3_jQ7YacfYTMCMC1nqZdpLKXWeV#<*9E@jlmX$ySbk6YCZY^{m*bmSQ+6qY!O&v0@orH z;K+a42jCa~oWM7~tJc@C`~6PRZ+>N{!@@_EWG~qxwNZ*iUjqlX#=l$UTD{hjI_}<% zfkNp_o#c7?3q{tifWHLR-0Il1E{XgF0a_VwB7k({V3eH!J`EnMO=+dj1s}x~TB-~E zWn!UJB=x#P3%y55s&46i2z>PpL`UX8g@v0taeE);ZM+J&&r$oVnk{E?aXJ}SeKIc4)PO_E z`hk(an(kuk%Q3VwvTB!Wx!es+0+bB>018ns+UBh;-;npV#<1FZ9{>k<)w%4a1)XW0 zEuePO8XcuaI;RrJ(B}7krs+oMjbi0=jVtG+BbBq&ugaNuq;j^8^TKmatQ_Y^wu0wz zT~6_l%6THLoSz)2oPoNWL!*z-uAy<|$Xh*U$6+Q-m#_jQ90tD~;__3@Fyr&DyI)~s zVl2Nyd#~Y9+9S|jMcIER?PWnFa9G+aeEisHuW+YJdyAkV*0eYJz8LLkn_DbCJHa^n z#{GrelPhnv?jMCy>KP=i%O68+_+5G*WVFIum&e~Ki#@g3bT_RSJ&X399{oR}IAq5m zdl(N@@(5;@2su_^7pPNfEv^n)hGjHc!slfjy*C3qW4ZW63_bycG(T#tjTQU-Cu+0d z!=Iv2YgxhdpGfl}>m`IHHeez1He!=uJr$Nx&TY`LHgEFmeaSnm(DGMi{72@HxU4{{ z!eAiN#71Jr0(u~5!(tYTSsfsr7d4rOu^_{J_-$Q@1p_#F%D-*A^!pnZ$8n3!*X~M zaCp_*3Wt~CSL3kodKZUT2u;9YdzDad=<53K_d7%GXJ!f-M}v8@*+TYjvnCnUa`6X2f+9_4y&@-V!K zk~6mJa-ndhD`J}}KScuaFTpx{@9cD}vv`x6BPX4J0OqQEUC&&oiwQd;XY*{~eckBq z0Dn|eQHA;Rzk56iy3V^gD;&Xavkt4XPI2L~YP*-=U!!76aLA;Ovxt=fi{P4JlNna4 z!q_j=5!eB7A-3idyjFY*Vx>*8jFEV8A-?C2h;Qe_lU7uIaUp(G5+1z48z3sbEUzTL zxDcQD9rA}b53jX_C<)R_KVUe;kz$*VfK~V1_ue>qX9pY**0(UVm+ZFuon&7RV4Mzr z4I!~c&1y(Sei9pNt9%2))J4%R;PVjJ3}!48d_D%cw-w5#!ilpyPU*jpMAAuJSQwN? zD0lB2s6}<{E;u<=J&z&6k$QGHem#@g`6z(lZ6&;UGj_{f!~cu;pM!tXTpPWegM4k2 zM>X(swfbqJe)a(W2wbmzHp`DSOBlf>5PW7%S}OXF-uHQKdV*2&*8_FslfU#tD1aQlD~shd^-?voHLzUmpOc?=4QJ@9^17$$1n$`!#mfzH9}#dkKKn9qdim^g+@tsK*}GZLVfbw4#fRs! z?HL}=XD?t834Hcch8>a5cKHZ{?5%;|xjnD2OA3X}6T?lo4D?WQI3XSKpzk8p2 z!eQR;fVs!`?9Wj}JfFP>spI+VXvyzP9v80g^4SyCdiiY2YjJ!whZz;0?P|Du_G~yk ze70o^6A7QKM|RC;&D&f)I~h*$+2SpV1-y7Iem#8l6%;_$@OugW|AEhrCWJ1ZJrh8- z=Cf@WdJKG4+vrW=<=kU1kRv00fwk#cvF6A0vf~SI!7CA$#<-r0dzE?-_(Z#bX_lxM ze)=~p=Fhs|zOejUD6}EEL7TBtv>91BEsa$}x+gmZiogsu>LRb*3Z{sa2I?3$MDWSb zzv@sf4>m{sGK1?#Niz&-nj_Ad0Cz&U@XoLB!h2~Pyw!|59K6qT{8!;UB?j->QWxHq zTU09)yg%Z+wTAa;q=~^RXY7u!{>4rKiDfBEI@0?0UGl{koAR!I5ycJ|hwR6`{!LC; z|DuqD^)Kx42-Sy!N!qO7`ps}5WW9tq>)+M!>tCvHz3X4xJ(jjMu#m)35e_VXRE^z_ zZ~#}h<8OL^(?p%O z;3={!VF6`ymSEask<*SCl4V zO$nHRykzow9r8B`!M-K#clgqMeHb@sdnP-zt>Tmv3_Aj&^8hRt-X9he9Be|U?cQW{ns(JtIu`A~9Kn*c_ zm>I;s()E{b27yvK8qa9|OOz+X79L^8>lob!ED)j;<@qb!EG*9M{#wb#-%H)B^D@9LRNDJzZCx>&kas{ahD@gU*Zj zQoG7r*9g}&%5~l7y2iM!TV2=fuInz>HP&_cUDtTmMc&Cjuza`@X=tt+I}a|^Tl1YT zHTXD&TxMS5#L2|0%AJ9*D%QaHFAcxWS)mb;@CLGRW+EG}JRZX>z~s(NCeHfTzJEmI zNl7~!vDR|Qfm3q_aNjM68e#kci(tY(@l6)gCD8hEI>5R*G7k14(1XJ$T}`9Yi|PVR zy94XetBdM9X-{U_fs(cfT08LG68~x7mo}JoXd()j=iy(f&o)6!@*t&x<`i``#T9FKpyw`F>H9dEYlpP_EH>z^S3xL5f{+;gXW zzChFWF<)As=|Iefe7w&eH$HfUk0m}JDQ3@vcg)%_03w8=U%dkXo_3$gb`Lv)IKtCx z3mqISa&WZBleQz%o-b)}cZCN>xY?psa8$a`EDc6ZO9qZ`au)NL?L>*B4|J*&Zx(rR z^a*SUZJddV!_lt}5=V;?afAR5j^Oj)2tE&v;Pc?fwHGvkqXb82s)Ld%CBU82jo_&W z@U;6(w)^7KiKERh$8vDAz`@Z1PujDXHbv4l#^b2b!O?u;=<61&79AYvC>KYP;<$ORJ2^(s2dUR$Qym;Z|B8Uku>c76 zUL191yN~Ng9BnXZf<~*P=|%G#9L@9K=v=1#2&NZi(YkmXt#fcRmpFR+kOxOP%EghS z2o-v9G@JrFY~|wU==}Y}(Y!<)A;5zp_&hj*&x0fQJUChx!vL9&$J)*aJ}LnlVkuxN z@5NCUwtE*$NU)6st2+lra~vGa@!;qJrd=j!>*H}$@8D=Qar9q5dT^wpTpUS?pBH#> zgas&YG&>$gDc=xBa}sfc01uAf^WX?R502pT;HcigfPaj|W-1!;7h-G5^_)Fr4P`9Z zE{w^>4}J~VIFGWP+6nw6{GNo|SDZ~5dMLu17fHT)`uoy9OZ*$?@4<3tVTb;qzcc-O zM93;yM}G(U^TjX9gJk+IhI9*>XZ&6qh>D&d{zm$@)4v-Mua@aI(!W*UT*&wa`d=2m z*do6`{~Ym)N!lOip9;OLwuyO+{@dv9pWeHFN5jq~3!1co1OOM-`6E!Q4SP#WIqRPK zl5a8n9Jc>3ztna@G{wYvpAQU7FP#(Eo;+WjzB@0y}<;`Fw#L-^YAu zfgJ~8KIHpSd?sGVEUmISm>Fg=AZW=?k6uC?X&B4M6I#PKmoVnIFv7Iig>kM2#(9Y_ zBESP9d>$C#^S}t-(O~=q`$fZe7ui&680Qnls^2?!gqgPsBWz|}JT6Ft5dj_;;q$-< zp9eLj^fe}6rjPQA2gzsoDZlQ^w z#^ZbvVJjF#j*0YiVT38Zi^nA%80!*YM1TiI_&hMe=YbKvqrqrE!i!w?TdX--aI<1X zjj^i#sre#*$94YuK=q0BldVTi zIbwc^9;Wlp1b5>7Uvq%VDf@sWoX-|s_4)JEHBkHq(@7(DGa9_wzSGhK;}J-=knY=(m(ECYAz?8)QgciUU&Zo$-hA7zXxlM*dFOnsXM6S3JGa! z6aIE)RJ!}S4=7#aZTR&l?u#Xb=yBSyB&GgogeF!igt23+!uX&d@<+HJrbK$g=lKL@b;)w}hyOdI1^M}Oy8Wvc|xPXd- z426(e7;>+KG{3@h+ZbBP(4R_Z46vREgta{5FM_lA9acbL92=`1_&daswPmtjGZ`hR z_++0gbW8gf&gcysMMz0`g3XL>1M#|dvuIs=9VjN!^IA~%tIpoQ^VGF>ax6$IcT)c} z?ke2dfLnF~uXdwi=fd;l;#F5JIL_Gx;9M{C_}D9-yLT6$0IL1Z#*&$8bfr`ukHxK4 zs+V3tr8>%Gs^DOE1L1On9~R!~AzpZKZ$K+}*Frhyfp@}r{|w&kD_g<)t3h6P*WnC? zhWB@ud*IzX$b~nAaK}!ZcfexdEa?59RKNxL*wfb%T(Qf9*r4(GVUBxCuApIGWReuS zj~OmTv4X;VkwO7NLOUW<@27j~x;w6}Pjz-D1b%@oqI@hghi&*UzLi7is1K1UL`evTyfA77Qe=q{!=I75yq!Q6WNOXPLe2ss&lZY+H{{tm~EL#Jcig zb$x!B+o+USU0V1J3j8=X~(Itc7ze`wqwd} zu5+|5x&3m8SpTO>211~``#)WBIM5BFNMWP9>jLM}VLe?}p6mKQU2-d3@`M+UU6*{V zq@4|PT2>9dq4h`5CEtMKGah}6=#npJL*32JW6~ub@-b}_*3n1QC4bor!SkrPTc>1bvFp`=x*Ti=x*Ti=x*Ti=x#h4*-M~__}6vGZKd7Erc2(MN*oXOgdK^!eg#1R5KID*fEBltWxg3p7a|5%s212zE1 zs!M)R(jHZp{45UIA6=I``eHAR4y#K()I=ODNW>8WJUD{SgCqDnID*fEqyJc!{0i(U zj#ZcZxTHO*E;$hK;OMZrG$Z8Z=>I%OD?D1qf0KL|5$a& z6HQ0I_`g?|{C>3qXHW>G5>t3dZ+6AN7N;^KVp8-B^T@bN7N;+f8dh zDP3|AGaW&f+?8>0y5!Rs(n^<{%+N$#@@|-{YQVO`c_dx(Yq4a@nCu9;XLDDg}iui1|_1CtPA0|SF;$w*`0c>NC*HPsDv z-~D;z4;*j2Sl^Np8iU>Q8oTdPd8d!-VE0{xpX2Pljd|@KI2C)uD29((RamKk<`fn* zuEBWm+lp|}uIwZmkJR*we+(A>wC*U6i$Qr17V5fRuK&KJ%pSdsS7;(RqS8@fQUw&> zX;eP3-|fy{wOr@9fT4Cebw93^i675$xQi|S@s1`fwikZ)=DqF}m(Z_??*Dp(HHVqz z1bGDOAJ_)y0qH~Z^Q^RcE$lA=U>E*^=<+&|=$dyscJZ{g=36dFvr7rO0<4+7SJf>tj|Ev z+Pu@z%~RKFjZP=N>U!h(TVNh%<6A->PCgy&DbB@}tq!heBReSc;lojV_{_Ca%|@3@ zFHh$?^E;9ocKE6r0^7fAzp;8y_x%kicp!MYukvzMKuayaQVs3*#VBj~@b1%btKE)o ztA}@2w_lglM<7%uYel)(5&M=ADwXM5nllW_vUA@gsp_Z6yMC2AyyF0KP?mKc9=Ol2 zhUMD#wV3z&8ls)52W6VW%TNuB1yBbnYkrLFcI|Qr6b7Ims5?*wKaAbDj!}&U-u|$F z%5<9O#`NPT3D@j?DyF$Cf?0@TK1f9WN(FLcfS6ynMP2$hz#q=H=>{{^n>y9GOjS6- zuG|MIMmV~l<)kuf4LGPr$t_~IvCmm;@wPSDIkC~Gadae?U1uuwKO%Mr8fzDZc9rZLzC|B zg5!&EE$ziri7k~!>ok#}=2N7k)-5f4Mzz#w!spoh)lE>KZ-Dxdpr-?L)yKTt#4)7Y zhek#&g3SuHUif%k>{gkM=yzbV6>1l~y%!ztdEf9iHJnsrLvI0CyTgxg?uC~hv_er6 z8WOCpY>V3TwE$%}waiwvB<1N^ z`Vj+b09D%nr1z!9nDKJ~E!I9B<%1p(}yLQCrJQDpm6tn@hFbR5leUJv7C`2;jh&d8_B4W61HF+UDWjTh7Dm1E;rkpiStl z<0M6wylmV9Fgy#drrr(AAAr;LQ4UJ7b6?|6*R`qlcN}OA$7AT-c`rwCu3ge%4)Qg8 z)~R}UCQdxD=x!SLuVFxgN7G?+9jZoN2df7y)kZzZL^dFqo~UqNK$gP_+W@dAZ=ht6 zdTxo#Lt2sq0ZUha`DBjix-PX)0anu89F$?@CjzEx04?kH-PxgcYfvuH5cfs#(GjRq z)0)h=X9p%^wfK!1QVZWEpttfXLgkEz<2)_!^nnt8iqjxP3}^DIbS)q5kC9k2BsIo4 z9li>2fwk_-^&1%N>1!F2Pa=&TlRZ#mb6D!s`>~i1@%)5zzxSDoH_!om%21xUc#*x) z`YFSweuuq{RNBZlAc5zZi`>RA%%(v%#WLxJi-mfu3Ak-?r#zWt4NC9*V44w}!h*2@ z%oBOCaxlxABJ;qX@gAs^%==Vh&s{K`GEHEjFClFr9uH6O)rleL=Hv`>WF}ZhO68f3 znFiWyu8S6;d-&$W82*}-=`sf7xe3vn;jZ~X>3IL5d3NLhKh|ie(aThSf>-4dFL>6r zCW!H5)l>mm%<=8iA%`0hW@})k)y`hT0`1JA6%>pD||6k(k`ax>PDXZro3J-~x zqu)16x7nk2b3F!dNV`*B+S|h6mUbNS*hL4N@Z?pPJ72Ymb~_WL|NQCY2kgQFfrH88 z4Bje#oL$(|=i@C&Ne^T}4D?@SzHg2GVLh|3i9cTlx&KX$lR#2-OG}?0J0&HJ+X4>` zX7p)kF_Ol;UQyHIL!AlfxL*1IZy1*NQactpAUBz#cbcUUd-NV2UC*s8KRsJcf=s+0?dSD8&sP)4Ynpd8f8p+d2X;?H zFINQW765fgM({1#jwha}-6rvOSkuQxSNX87}mXGFHvKB54@z%Aav&{ixn| z^r-LA(%j8hHT#OD(%yF**c#e2`4lTNG_R!h9iW}#0xhWz3b%OqtX~0yBbrVci-oS{O%dcoA$NIix+hiM{(F z8g226gku!n0O&$3{`RQQnE3_qSIILa#3cE-tO<$QDc}hBb(fD9EdRb`sKa_I-(abA zu~MI<4Qpwdv1$riZ~3HM*mHC)wFM+AU*8KBw1`IcHr}<NUq+F3|CU~RDlb9zR2J9$f}9@LS*a_g*`E&}ZL^6UB@rK51B#}(GvL^K zAJTe;^$;YKcZ_T5?nX>=owFWa&rJO=3~+2WfpRd^Zj_a$@F_4E+7C87NUX+AKklHNt*^6BbWuc$gUlUnAyptxo_isw+5Iar>N&Bnb3o7vYZf4{dSABRM-)`cwh zKo1nZIX1|7e>z`(>%_B9lNt}#+cUkr4fAHSYwwE~NCbl@91N^`u3s}kCrTUSz(RL` z9X$l%vL}7oJT>18ab|`TF_UTRU&|CGH-g(kx|sGT1{NdLjc|nJ-f%Q4X>I6E_yOLw z=5b24X~o&@>J#H^cIg~+q4|Ae5TG1t7tIlxLcc!)V637!vBv)lyw>TI(A|KtMO`&t zODKEEZSsbFD~E=J;|zG}R2n2>R>PIxp})czyAqt|pSx~N?P%G&JjE=XVUDgb%V%4o zI$C9!h!};Jx2nw1L9@KtvMIYl{tk)0qG;W#GR|iZP#c%BXA=4!|0s{)1aW~Hrtm6> zD_uk4eCDs{bPGXK{R9TO+o|KlQEg702uIaQ!Iv!CTVZO0r#CqYK}6>+6}DI}dMw~+ z0{FD$ef_2wcv9BEfGY~6B_HX5DhhWc6z$9=-Lb?=))M*AA>t1gEqEM|+T}CYc)N6gqMRx7749DcF9{dTr*g$EuaYEkFb9SH zOeeX32%lMnZJcXJL&nSHJ4XLU>5t#=ZWZsBe z)XCPdob4-7PKxv`ksA5222#9(uMl6H14ZsQJVkc%Qlvb>i(c&VH=)TLaWpBfzNFcu zixiA9EkC@8G+DmT86(%BMR79Na)6E(TV0wA-6fOMB7%7V!M+iGv_nSR=?wTYTBct| zX-|J|65C;hQb`=(JVyq=?|DJS>|6()FiP+kZurk}@RtPz2=F&B-M%5C*9S%@8%T=w z#s{#ltcbk=Gw4PweN@2{y&T=CR$t`xcQfb%EV%7S8{l8|XD|@+U}PX3?{a2s6Dmv66wLxI_&rHL$8K2;n@Jl@mD&PR?~b+Cjy)mdTGt21!DD2L%0&8H7eBAxQ3%i{63u%d@YswewxvuPE&IL~>vr`nkib`S|LqN9+mt=ryG? zL8IOxvnupsU4LTy^~=`%xAX1Ri$UD>{aqwWHsl3hB*3v%*wY%Ghr3VtG$bCdrtJJZ zhoX8#hskPiEWjGn(=6S<1SRQpNyy)0(}hKiXJV$u+|L1-TDpN$i(4j$xQo8|hO=#T z2>kJh)WV)8qY6BJfbYik4MuP_T44?Ha|`BUadyEYT~_-6MzDlc!#yBP#5y zqzepPtN~a?H&O({>VkKwvUaZ73;nG296ZIdUoJTTry9zl3iG8!Z2$*bjv$f5`hd0& z#~Wy@;r)7-r5Q80e8J5r$vx^FA=E0&JHD`|5hAqq@NT4dAP^WKK=G`R_O-6_l zYSp9-Nk(WrUEdzUf($vTCN(1Hegx&^8KFDzTlXF2#ApRvm{Ss9`h-X-Ul;uaD&-oO zcock_-&k<6%8tncMD?bh|7AFB^ppkd@#`r}7Q% zoo5Qs|G4512h$j5xpuimy`Q9+bGd?pua&QHC}gg20puC(k#L z8D@-EOOc!uFhg0S9C|>7oP>}V-x*B4gRP08j0zl5pI)9>T^_Ew2C9pNU^sZm2qN)C zc4i0&N=hAGQeqYk#$I*lwhH5wD0dFpnez(R%ug(m01$KP~nhxyNi1rtD~nQ1hnK_KMc7}T{2g+ z4Xsg5obm#hzSBIQ2CrcD1<$W8ua6XAxddK?LcK@toRm2|vy+uJpmGrs_Ac>Fe7E^I%&R!VGPhl@XT=;J#S5@#EFF_QjflfEH-hUh^%m{u$n59>&@o8NTT&VZ&@gyWq z#G+S^dqBw&nqydCDqs|6OH&oOW}pI6cOXy$K$8QrI2oYD{hmmb8Tn+HkxjWY%$zkB zajU5M)U|Rl?ZPhBim0oxfD$rL9O|W|AOi)Te*HAh^ZIEEROV{Xgm9f0kl)W5p5MD5 z&9HZ&2D>Dg#5ye9cqy+y9`b~`u;m25AKz>v#5-c6WF6>3lmbJ1v!O5UgM%KvSA#KQ z31KX10-k{|rGI}OL5Zj~LAqzdB0xqMj^FEdjRp0~Z2)&A5XXdrln4NzY42h7kaBw~_8}>bN0;-M{u#H;T!i#jHuj9i`+KZh9 z^&o+8ph`H1#^oqo}E+uwQgHe%-yl$~3hQlhq}^lPcSjmB<#IT6}z&sP3;%RQIExNfp3@N8P_% ztNZ(a$MmRgeqIK!+V_)t3D3F@3?BJ<`~aB&Fw6cZrAkHNQvrvXc&NJar7 zf^ae%7Vn{On2IIoUJM*8GD7SxZ*keWxH?^2krY?C)SKoqoo1Cz(-~=G-^H7#yH2z~ zC;9<9mQ*tEUQlnk9y;BB>2#ZQy8MK6m+Evc=yVH_F3KlofIDw_xjNlOoi3=$BjtP3 zU9Qu8pwr#R@_wbtBf2+#&A}lw%_k{I)0gA7RX_WG<@E6Y|3iU;!~7=(4i@`+I6Yg# zI#HES?s>Y-9lFkl>?E>>#HPkg_Yx0>^H_GX=Zikls{ zV%rXW<+hF6pKMzn{J4A9wB>T<-<>@)6EcF-Wsv{3nuac|fJq6ap+jI#RjAyUb~cj2 zk7CRS6v@2bYFa7Bh)Lwa8Wz*)md11{bOPp7u_>PSeB0k*#Rq+sT?1{Kc9M!oHep03H1fm1%nJBK6By z-G|ai&+G=+7nI1}rn#>9Pn=tJB1`021xNEDk;&tDw!gr^Zkc~b;NWooan3MS;}gUo zCcYKmG*dAIA zw&p!&Yj`7l0|(C-m*zkVJJs$eI|hqk(|SVpM{^^AfnVB^rGYs?12e(}Cce#`bvkFB z>2`#4XX|w5>GFI?2ZHiDbCDMjXX&)3=(O*HFDXRC*Nr`CA=0ySx<#IJ#8;OuTzq}2 z`#;M5_turI%Wx*PyHG~-O{R*i%|s_83$r>s()rTO5^EMkRI_}MEw}e#Pd^{_4#q0z zw#yrxu}OWs2*;s^z=aaz^h>$+x*6fZA~&KmjD91??ImH7RFMP@buy+(-l-|re8>L1 zG4)PlnF1Iyz*295+avvMLtaPv&4=cioQmuB6@NY&n}R)r@k&asJw}MjSf~W6dL|jc zyHT`56VyuZf}5D>LBU=nQJjPvi;|;nqhb$F%0k|MO^#3Gx$mLzPD{o?ZS1tvx%8|2N7P`fz-yo%_>d;%xe(;It zx#E}0k|7m_bw z5hQnTW8-%`x?5?EGqC>!tw><`8lu&xJ{KN4kcsqWsEP!xv>&xKaEC)ddj&Qn~ zvs=U+khpv+z;g0?Nf;(Lvd5LomAbqh5mgWON%FsC_3sY7eRxVw+EDmcSyGWR82&y@ zNaHz>1`<836aBWw{=iB?jr*(b!e9nn^j=DTWtG)Gn`_(=02!tnThNVm|Bft8?~PMlg5FYtXAfD-y+^B z^kE6_LmE35B%5P~b^-#ce-|?p5l1&Ov|AkA&7wJ0|6JURY4yh=$n#+9@=7lNR?7^c zSubtm{zw%XYliX4_8P{jEp%JGV0#;*zU_(agBRJ}N%a`)89<>sC%~WfgO_MQ;PttPP)VDxw-)flyX`F8H=!x}jD@9tnZ*THg6 zh2?Nj)8EVEaxri)t(x`du4wO5GB!(Xb;`8!&fmwEMNo zFojcSQvjmvejwF>FV)U`jm_)2+Ri);kB*xKxDeZRz+7Sb91vY zXe}ksW@YtZ>%}1TBU+ny;4N{c1&+RX>WH-m&4O+g-X|~UZWW;#r}mM=nyNkI2UAf1 zSWAf#bLn`pnGg}CFOn9!8;<$If|W}Q+ABtfASsT2kQa$=tPh{D!CuI|le}A9qyva;yQ_ zfG^7w;opQUKjEVkX@{gX&SWYM@U5y+@ck9gI1_k?sxYfo#wbX2ST~qP39#8Lsy2t; zP#1iU0odi009M$NJ~0*>x|zw=LoD6ymyEI0P0H@h@5)?!?U2+az)Bo|JxKu@dJzoM z>HSA(R#MXgG!EYWA534rpq5Dru|2eLvAIEF*(Gx=b?Pg>br`7 z>;5^EN={_O5T(+9BF!f#E~LY2^@q5SLDVf}ELp!T8`k6qH$6$N#AIe@K8m#@r5Rcv zZdIDY0#4zs7NsR4SVt$S`vJ+E>OlEPQeCDQ^07Lbv0`(xw2m%JfO~$+>X^(7t&l31 z(hSv$Tb1Tihcl9>4icOZJWW@(2g#i3Fir1cF33HhgK*e3W2LoJQBDN-GinW1&~ zT9VQXZ4kFA&8e<~R3{?d~szi)Ik0Ynie= zRQihlGbj&1it`8Cq6j5Drg1r9FBOppRgQr^#e*0wpGh9KqjTdCa~DFiBq-)`_EM%H zVh%Hh^urti0G1N~Emy?P+hWFP7GzsemRXQv=_)neLgmsDsR9Mv_Zu{>fI%>}g#Tvx ze~ZS4C0o3ubySWegoLP&_6nxu{iK!3nZBQ zFGz^^6ud7i4M>RSgB*NCLS&|}%+@3gC15zRoX^tpzG-K&!J&@))@I>rNk);}Yb6d6 z&xD6m%L-9xaX`wLuV_uuY)-#dNL=)zSZT3%6r z)V#HMp*AqAn~m;%4)Ak@t|0ndEZ@{{(K=b8=!KoSjDE(03jJM?Eih?b5{$y(3Ky-B zWmas3s0{Carcwv{Ax#u#^IM`9pt&p=r$>H%CH~@5w8~|Ev1Un#$v1*ArLiEv;Lp&*91Py!xhhVU_ zn!>YGQ()@aX0VcymR_$L!3<9077vM;jW{o6`;sfHS$wsw0@t8hq9U<|rI{Jw{4_QT z@6sU-S57RKG~6B=$2rN<4D6c4Ucj>y$gpJy8^P;1Z1vvR0@SPY*T+%Vh_^sW(FMSe z$&@Gbp2PVtwCOiU+7N*ylb{I*X-N(n)tuZt_z?Dl`_z|Q!xL5-9ihGGx1&C_wEh1$ zc|{Nw`30F6R};?>(3qTkQN5j4{NM@IETF!*3o;<>Rvrza00NMI; zXt~_SuI7reLM2S$OdNac`2|Tho2?M$LYf}UsLZAHTA_8wQ+Lkv(t30mgykxAM|U`IJFCE7I55_A-Q~Lcu4|&};x;M& zv|aiB_R8G(I+SWxZeB*)W^+$uRX#eMt7D+}B@iMB;ID&Ik{k=>K4DowCJ@h3Sydui z;MIKQ49(!Gfq^kD_ZOfRWb_AMB^=0h!Rq3=a$Fa6uKe@9{g>p%X1cB{*VWN=rMa#Q z*OjhamONo$jZK5m%+Kt_+gOFHxf6LcSL_b2W~x{#evdgzuhXS4^+@a82({Jf9i4lC zvxd@Xm84O;8P*v$L(Jkp-M>272=0W@USPt+WD$ojAaHKLy~4*Q+O4j8phA`_e8$QZ zK4Wu-xEJ_XB{`_vXa-1qs;!qd(-f<48bg)idIGeYNaR#F_z5RPVm3ZnKt$=}PE zHcF-JZUi=Uk~|k1!N0*}O#Lm+V6SfXgsEDHOM&!lXqRl;6VrmDBwPCaN#Mlwmpy+b2V)DS%Z^( z$%8X|mQ{@&QS){*PZR>e)i9u6#BLKZ??NMxCv{ehBxDEjpiGM1r;aP&d!)4jJJI%r zrnaepCO87CQ)0RAOS1<0y6#QAR8w|Yx;Zw(EXk}IpO@r67k3UU8w34281luvV+{HH zJjIaD?oS3oesUfeK}DY=aFsb10G#Dgb1`(=eiCDfbs6+>6;A=z*$d2>XwK$XZNXCV!=hwjT1CEBR=#5)pAG19Qm}#mPyK zcds;8gEX`8AoiIg-8y{X$Hcrt{D0~UKPKhStME$aBkSwPn!1z)T8bIm>*GQT?+t6I z$((f&kmd!iklG5!wXX<^kx}Qyp7Sh33#4w8XUM@>@HP zXj)0#ysg4X@E9nY?xXp`{iED&(%pISCU#Ko!cj(W+=UAU7KNg#yCfy`In+W{a2A~Q(vAR;zyPI~ zBSod5$L5n0_r|U|SPgwT38sM62|j4aFGCG@vHE5B0`;k)<5IhF7?z8LCveopFy~#S zv)_`UXOY_uOaaDIg&$fErdjv;x*kgHWq#{jikQo}S~9H?eiskM*ChbbyQUzElUX?6 zENm=c<2>4Dan)mPjHW<+vo;`#5BP9{4I7`1I5M>~U__YPU=D7O)R;GvZT5KdrZ-(z zoo<*;*Hfn}LpsqF1dCM;-+4&Mk{+p}JRB`Rg)ZF6#Fit>+=%wugOj^kJxrNKtOtD< ze)fozY%9hN7R#KpxSQaCGrlR0AQNzOqIA04xrXWr-&cUQMT=OU5nKu;i!2B8uB1zgNS$!0bD+Y-^E;_ z0^K3x^`a3hQK}fJ(YSZL0-`-&RY0_0q9YI(5`xCw3W)Dv*ZA)aS%pP4Sud?ZH<@;j z-`Z+?ogpjX90z$gTY1mkmXUbt7;uo%hY8fS?4)IT3ZM>=J-f)axu|Jr7cvJZx;=LUa6?6@xa$_BkImpF%F+>N*s>a+3-jw+mm!~C@T>*eqQwxB%#DhsFaMl7u$&FR*(PI^ z2mK}4UNj34N2d?(r1HgXr^w1zqTAt73?dm6`wo0wioFu0lOFqNioGVRDE2x)r6{%( zE~Yr1l!Ad}E|GCI00p`I1L+&$Mw=r~`Lk{(Vl1v0O<6&*q?^FV<0h^vP^L9}jP0vM zc}b~-H{wRRF;-I57~hxC05CaSCdwf0zB?Pn$5q?YDo;@R)$NQ>IzrS10`|%>;`;^S z`(Wf}m$C;23u(q*6`*c$#u#u2{kq3#dZ+v50`?O~^PH~Popa}kEDu!oR4bM;rjC=tu zY?}%;xxi-xug9-659n^Z8jTPoP=OLjDG&8a!91rlNUrSr#v_z{|Jgh@6KkzFiAv-i zN>rRQ97P0gP6&%Q!7gn+r>d^$?%sE#_^)q~K;Cxj!zC0%2u6P2KFS94ls;rRoZd6h zt>%FWv+{l8rM1shVV?J|;Dg|qIg#uExK^iZZ{R!MxW5Gsw(}!BsAu>?}$w>=5MRgloToL)q~H1d z>z$I+zj^NA*n-&Cn=2V1S}YV;Mq5ojDXNUsyN*h)(MOT(DD)f-EF!()FC3^-4!D+R z*V@1ex(H4?Juh5?^3(vjTmv**r?~fdX;cpZXbl4GvSiCz2M0F0>>W_2s(ba#S&VGh z(bmq*IGlCnbg8tuI8X7a81WR~!c8nDSdg=ltlcKPN~?D2a;CqPIS<0e^ zmIE~7p=qty@W8q@T(nMhe2bN_vf3QJ=cgi!1jk@muqe5@xQ`{hPHbL+i9}gL8^Lqo zuA0pC_svj=*s_Oj&mw(z?NRslPfi-DZ4ryRTcJ4uL9P{=D~_IV9P+lEpuWYFXQu2* zBjIkWm~x29gTWFZR5B#l6#gHlt{6ypOPfQ|!b;f+m|}=%i!~O8rLs#|c`M^F%5DT? z*EQ^FYc3_HYd%LY|8Txq4CRA8fy(o#9!d)Qg-P8Ht=^7hOpAbF$z+ils7EqW z_>Dz%K)S|K=xU@y$*5DW(2`+?LJ0c8>RBuU`oj2C%H2QtH-Uz9T#bfGdhD+;4>Ww* zR*iw=gM6UCfBuxKsMz+OZP!X8Mkrdn^x;I_MS`r1=;1Dr!%SAe~a)e*tD zMT65;fwLCR>$xImJH#mwP1c@PUXMT+IyRX}2c!j}sa?O-3c7@$0OjSD+}# zr`PO#h1dKFG*e==_bL*xnq_C((&f_M97gvbp*ja4Om99&9ZYY=o2P-))aATlxE^4H zyR$c!0|KlmshB%^^s%T37=_lXdGKM|h(8TG+Sr*HrjV+&SfnyX;t-+4+yb#g!UJo4 z5Jt=`fpCVBNM7(EDnXDVztNOy=d&rHe*D&!;OkmS_Qb4iFP6oO45l8C;Yh_mSyFQ+ z=zm+p8wlsSXEPXW*eyiF;(8=YK15zp`JNh2GRb0c95GTzyWXyqx=f(UsBCSwC~=A$UR$NsfacXE%G<{ruku>-^r+jIT?QivVJYH;_uFVmRW zMY>0n4PPl?Gj%Agl9n5LsN}1BsY-@eQssJGc=JM~l*_gXv)HABve}>C04?ZGJF|VS zMs#SSS(trieNU+z7WnAO%ln}#3p=tOe_%fj&%#wIS$A&giMh@y%rL<)dE5h!Iw(0j zadNv6<1RM2`GnHa@WteojvqU85IC`GCBic+++4uPt(KAINK9@&(1FR#PGSi|vQ2fW zAdp0gvwZlrs=w8I$J-f9dk?>%efZk7P5g!=+%w

  • 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

    jlH} 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≀xL$EH?jc5RwRYDeiIDeKzS2#tQs2^bGbj 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 ac~Ux3@~EEwhA=TAnTojx)M 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VMENU.COM b/Images/Source/hd0/s0/u15/VMENU.COM new file mode 100644 index 0000000000000000000000000000000000000000..af4eee94e53f52df1952b8c9c63bbaf700fd42b0 GIT binary patch literal 5888 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 Mrqq89{D1BLe>V6IOaK4? literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VMENU.HLP b/Images/Source/hd0/s0/u15/VMENU.HLP new file mode 100644 index 00000000..2db7bd92 --- /dev/null +++ b/Images/Source/hd0/s0/u15/VMENU.HLP @@ -0,0 +1,903 @@ +; + + + The ZCPR3 VMENU Shell + + -- ZCPR3 Utilities -- + 1 - VMENU + 2 - VMENUCK + + -- Using VMENU -- -- Programming VMENU -- + U - Using VMENU P - Programming *.VMN Files + S - Summary of User Cmds C - *.VMN Internal Commands + E - VMENU Error Messages M - Programming Cmd Summary + Z - VMENU and ZCPR3 + +:1 +Command: VMENU 1.0 + +Syntax: + VMENU <-- run MENU.VMN on all files in dir +or + VMENU afn <-- run MENU.VMN on files selected by afn +or + VMENÕ afî ufî <-- ruî menõ (ufn© on selecteä files + +Function: + + VMENÕ  ió thå ZCPR³ menõ front-enä processor®  Iô ió á +ZCPR³ Shelì whicè readó á *.VMÎ filå anä processeó  commandó +froí it. + +Options: None + +Comments: + VMENÕ  ió á truå ZCPR³ Shell®  Iô ió describeä iî thió +HELÐ file. + Selected Error Messages: + + "Nï Commanä Line¢ meanó thaô thå ZCPR³ Systeí doeó  noô +supporô  aî externaì Commanä Linå Buffer®  VMENÕ musô  havå +thió tï run. + + "Nï  Shelì Stack¢ meanó thaô thå ZCPR³ Systeí doeó  noô +supporô á Shelì Stack® VMENÕ musô havå thió tï run. + + "Shelì  Stacë Full¢ meanó thaô thå Shelì Stacë ió  fulì +anä VMENÕ cannoô pusè itselæ ontï thå stack. + + "Shelì  Stacë Size¢ meanó thaô thå Shelì Stacë elementó +arå toï shorô foò VMENÕ tï storå itó parameters. + + "TPÁ  Full¢ meanó thaô therå ió noô enougè rooí iî  thå +TPÁ tï loaä thå *.VMÎ file. + +Examples of Use: + See this HELP file + + VMENÕ ió thå ZCPR³ Menu-Orienteä Commanä  Preprocessor® +Iô  actó aó á front-enä tï ZCPR3¬  providinç á menu-orienteä +useò interfacå tï ZCPR3® Itó functioî caî bå representeä bù +thå followinç diagram: + ------- ------- ------- ------- + |V | |Z | |B | |P | + User | M | | C | | D | | g | + Menu ---->| E |--->| P |--->| O |--->| m | + Command | N | | R | | S | | s | + | U| | 3| | | | | + ------- ------- ------- ------- + + Thå "Useò Menõ Command¢ ió á singlå characteò thaô  thå +useò  strikeó  whicè instructó VMENÕ tï perforí á  function® +Oncå  VMENÕ  beginó processinç thió function¬  iô  buildó  á +commanä  linå  foò ZCPR3¬  optionallù askinç  thå  useò  foò +furtheò  inpuô  (sucè aó á filå name)¬  anä theî passeó  thå +commanä  linå tï ZCPR³ viá thå Commanä Linå  Buffer®  ZCPR³ +theî runó thå commanä linå returnó tï VMENU. + + VMENÕ  buildó commanä lineó baseä oî simplå inpuô  froí +thå user®  Thå useò neeä neveò kno÷ whaô thå actuaì commanä +linå is® Thå commanä linå itselæ ió alwayó oæ thå form: + + + + Aó  aî example¬  á commanä builô bù VMENÕ tï  ruî  XDIÒ +witè  useò inpuô foò á filå namå specification¬  coulä  looë +likå thå following: + + XDIR + + + Wheî VMENÕ ió executed¬  iô lookó foò thå filå MENU.VMÎ +iî thå currenô directory®  Iæ iô findó one¬ iô loadó iô anä +beginó  processing®  Iæ  iô doeó noô finä  one¬  iô  simplù +exits®  Á  filå namå maù bå specifieä iî thå VMENÕ  commanä +linå tï selecô á filå otheò thaî MENU.VMN. + + Thå  MENU.VMΠ filå caî contaiî uð tï 25µ menuó  tï  bå +processeä bù VMENU®  Thå VMENÕ wilì begiî processinç aô thå +firsô menõ iî MENU.VMN. + + + VMENÕ  itselæ  ió á COÍ file¬  likå anù  otheò  prograí +undeò  ZCPR3®  Unlikå  mosô  otheò  programs¬  however¬  iô +generateó  commanä lineó tï bå executeä bù ZCPR³ anä  storeó +itó  returî commanä iî thå Shelì Stack®  Iî thió waù á looð +ió seô up: + + -->--+->- VMENU ->- ZCPR3 ->-+ + ^ v + | | + +-<- Command Line -<----+ + + Onlù  VMENÕ  itselæ  oò á ZCPR³ tooì  likå  SHCTRÌ  caî +terminatå thió loop® Iæ thå VMENÕ programmeò wishes¬ hå caî +seô  uð  thå MENU.VMÎ filå sï thaô thió looð wilì  neveò  bå +exited¬ oò hå caî seô uð thå filå tï allo÷ anyonå tï exiô aô +anù  timå oò jusô á speciaì persoî whï knowó á  passworä  tï +exiô  wheî  hå  wisheó to®  Therå ió á loô  oæ  flexibilitù +designeä intï thå system¬  anä iô wilì bå discusseä lateò iî +thå sectioî oî programminç MENU.VMÎ files. + Á  MENU.VMΠ filå caî bå seô uð tï  executå  anù  ZCPR³ +commanä oò sequencå oæ commands® Thå MENU.VMÎ filå caî alsï +bå seô uð tï noô allo÷ thå useò tï leavå VMENU¬ tï allo÷ hií +tï leavå VMENÕ aô will¬  oò tï allo÷ hií tï leavå VMENÕ onlù +iæ hå knowó á password. + + Thió  HELÐ filå ió divideä intï twï basiã  parts®  Thå +infï  sectionó  oî  "Usinç  VMENU¢  anä  "Summarù  oæ  VMENÕ +Commands¢ arå designeä tï bå reaä bù á persoî wantinç tï uså +VMENÕ  buô  noô wantinç tï learî ho÷ VMENÕ workó oò  ho÷  tï +prograí  it®  Theså sectionó describå ho÷ tï movå froí  onå +menõ  tï another¬  ho÷ tï issuå VMENÕ commands¬  anä ho÷  tï +leavå VMENÕ iæ thå optioî ió presenteä tï him. + + Thå  otheò  sectionó  oæ thió HELР filå  describå  thå +programminç  aspectó oæ VMENÕ anä arå intendeä tï bå useä aó +aî  onlinå referencå foò thå VMENÕ  programmer®  Thå  VMENÕ +commanä  programminç summarù ió especiallù usefuì iî thaô iô +provideó   á  summarù  oæ  thå  commandó  whicè  thå   VMENÕ +programmeò maù issuå tï VMENÕ withiî á *.VMÎ file. +:U + + Wheî VMENÕ ió firsô invoked¬  iô wilì bå installeä aó á +Shell¬   anä  controì  wilì  returî  tï  thå  ZCPR³  commanä +processoò  foò  thå  nexô commanä iî  thå  line®  Wheî  thå +commanä  linå ió exhausted¬  ZCPR³ wilì realizå thaô á shelì +has been installed and invoke VMENU as a shell. + + VMENÕ wilì theî comå up¬ loaä thå nameó oæ thå fileó iî +thå currenô disë directory¬  loaä thå menõ file¬ anä displaù +uð  tï sixteeî fileó anä thå firsô menõ iî thå menõ filå  tï +the user. The user will then be prompted for a command. + + Iæ  aô anù timå á Menõ Displaù ió garbled¬  jusô strikå +thå ^Ò key® ^Ò refresheó thå menõ aô alì times. + + + Thå  prompô  whicè appearó aô thå bottoí  oæ  thå  Menõ +displaù haó thå followinç generaì form: + +Command (=Menu,^C=Z3,*=1st Menu,<=Prev Menu,>=Next Menu) - + + Therå  caî  bå uð tï 25µ menuó iî onå  VMENU.VMΠ file® +Thå  VMENÕ  commanä  prompô varieó  tï  reflecô  this®  Foò +instance¬  iæ  onlù  onå Menõ waó presenô anä thå optioî  tï +aborô ouô oæ VMENÕ tï ZCPR³ waó noô available¬ theî thå Menõ +Commanä prompô woulä takå itó simplesô form¬ lookinç like: + +Command (=Menu) - + + Strikå  ^Ò aô thió timå tï refresè thå Menõ Displaù  oò +strikå thå characteò oæ á Menõ Option®  Theså arå thå  onlù +choices¬  anä  strikinç á characteò whicè ió noô thå  RETURÎ +keù oò á menõ optioî resultó iî thå belì sounding. + + + Iæ  thå  thå optioî tï exiô tï ZCPR³ waó availablå  anä +therå  ió  onlù  onå Menõ iî thå  MENU.VMΠ file¬  theî  thå +commanä linå wilì looë likå this: + +Command (=Menu,^C=Z3) - + + Thå  optioî oæ abortinç tï ZCPR³ bù strikinç  Control-à +(holä  dowî  oî thå Control¬  oò CTRL¬  keù anä  strikå  thå +letteò C© ió no÷ available®  Thió wilì returî tï ZCPR³  anä +exiô VMENU. + + Onå  brieæ notå oî optioî letteró beforå goinç on®  Iæ +onå  oæ youò optionó ió á letteò iî thå rangå froí Á  tï  Z¬ +theî caså ió noô significant¬  anä yoõ caî invokå thå optioî +A¬ say¬ bù strikinç aî upper- oò lower-caså A. + + + Iæ  therå ió morå thaî onå menõ iî thå *.VMÎ file¬  thå +commanä linå optionó becomå slightlù morå complex¬  buô theù +arå stilì quitå easù tï follow. + + Iî  thå followinç examples¬  assumå thaô thå optioî  tï +exiô tï ZCPR³ ió off¬ sï thå "^C=Z3¢ optioî wilì NOÔ appear. + + Froí thå firsô menõ iî thå file¬  thå commanä linå wilì +looë likå thå following: + +Command (=Menu,>=Next Menu) - + + Tï advancå tï thå nexô menu¬  strikå thå ">¢ oò thå ".¢ +character®  Oî mosô keyboards¬ ">¢ ió thå shifô oæ thå "."¬ +sï VMENÕ permitó easù movemenô withouô havinç tï worrù abouô +shiftinç thå keyboarä alì thå time. + + + Iæ aô thå lasô menõ iî thå file¬  thå commanä linå wilì +looë likå thå following: + +Command (=Menu,*=1st Menu,<=Prev Menu) - + + Thió  allowó  thå useò tï strikå thå "*¢  characteò  tï +jumð  bacë tï thå firsô menõ iî hió *.VMÎ file®  Iæ "<¢  oò +",¢  ió strucë ("<¢ ió usuallù thå shifô oæ thå  ",")¬  theî +thå  useò wilì bacë uð onå menõ tï thå previouó menõ iî  thå +file. + + Iæ thå useò ió somewherå iî thå middlå oæ thå  MENU.VMÎ +file¬ hió commanä linå wilì looë likå this: + +Command (=Menu,*=1st Menu,<=Prev Menu,>=Next Menu) - + + Again¬  "*¢ wilì gï directlù tï thå firsô menu¬  "<¢ oò +",¢ wilì gï tï thå previouó menu¬  anä ">¢ oò ".¢ wilì gï tï +thå  nexô  menu®  Strikinç thå RETURÎ keù wilì refresè  thå +menõ display. + + Iî  summary¬  movinç abouô withiî VMENÕ ió quitå  easy® +"*¢  moveó thå useò tï thå firsô menu¬  "<¢ tï thå  previouó +menu¬ ">¢ tï thå nexô menu. + +:S + + The full Menu Command Line looks like the following: + +Command (=Menu,^C=Z3,*=1st Menu,<=Prev Menu,>=Last Menu) - + + The Menu Commands are: + + Command Function + + ^R Refresh Menu Display (RETURN Key) + ^C Exit to ZCPR3 (Control-C) + * Jump to the First Menu + < or , Jump to the Previous Menu + > or . Jump to the Next Menu + other Menu Option or Invalid Command; letters are + automatically capitalized, so a=A + +:P + + Programming *.VMN Files + + Thå  *.VMΠ filå  ió simplù á texô filå  whicè  maù  bå +createä  witè  anù  conventionaì  CP/Í   editor¬   includinç +WordStar®  VMENÕ  ignoreó  thå Mosô Significanô Biô oæ  alì +bytes¬ sï editoró likå WordStar¬ whicè occasionallù seô thió +bit¬ caî bå used. + + Alì *.VMÎ fileó havå thå samå generaì  structure®  Thå +firsô  linå ió eitheò á globaì optioî linå oò thå  beginninç +oæ á menõ display®  Iæ á globaì optioî line¬ iô beginó witè +thå  characteò  "-"¬   anä  thió  characteò  ió  immediatelù +followeä  bù  globaì optioî characters®  Thå globaì  optioî +line¬ theî lookó likå this: + +-option + + Afteò thå globaì optioî line¬  iæ any¬  comeó thå firsô +menu® Eacè menõ ió structureä aó follows: + + #option + + # + menu commands + + The following are two sample Menu File structures: + + -option #option + #option + # + # commands + commands ## + #option + + # + commands + ## + Therå ió onå optioî character®  Iî usinç it¬  caså  ió +noô significant®  Thió optioî characteò ió "X"¬ whicè telló +VMENÕ tï allo÷ thå useò tï exiô tï ZCPR3. + + Thå  Ø  optioî enableó thå facilitù whicè  permitó  thå +useò tï typå ^à anä returî tï ZCPR3. + + Wheî VMENÕ firsô comeó up¬  thå Ø optioî ió turneä off® +Thå useò cannoô exiô tï ZCPR3. + + Thå  globaì optionó line¬  which¬  iæ present¬  ió  thå +firsô linå oæ thå file¬  turnó oî thió optioî foò thå courså +oæ  thå sessioî iî general®  Thaô is¬  iæ á globaì  optionó +linå like + + -x + +ió useä (caså ió insignificant)¬ theî thå abilitù tï exiô tï +ZCPR3 is enabled for all menus. + + + Thå  globaì optionó linå turnó oî thå Ø optioî foò  alì +menuó iî general® However¬ thå Ø optioî maù bå presenteä oî +thå  firsô  linå  oæ eacè menõ  immediatelù  afteò  thå  "#¢ +characteò  tï  temporarilù complemenô thå settinç foò thå  Ø +optioî foò onlù thaô menu. + + Iæ  thå Ø optioî ió NOÔ includeä iî thå globaì  optionó +line¬  iô  ió  turneä OFÆ foò alì  menuó  iî  general®  Thå +defaulô  selecteä  bù  usinç  thå  globaì  optionó  linå  ió +overriddeî oî á per-menõ basió bù thå locaì menõ options. + + Example: + + + -x + #x + No exit to ZCPR3 is permitted + # + commands + #x + No exit to ZCPR3. + # + commands + # + Thå useò maù exit to ZCPR3. + # + commands + ## + +:C + + *.VMN Commands + + Thió   sectioî  describeó  thå  techniquå  anä  optionó +availablå  foò creatinç commanä lineó iî *.VMΠ files®  Thå +informatioî  hereiî ió organizeä intï thå followinç  subjecô +areas: + + o Syntax of the command line + + o :nn Option + + o ! Option + + o "text" prompts and input + + o Variables ($D, $U, $Fn, $Nn, $Tn, $Pp, $$) + + o Highlighting (^A, ^B) + + Syntax + Thå commandó iî á *.VMÎ filå follo÷ á simplå structure® +Eacè commanä occupieó onlù onå line¬  anä blanë lineó iî thå +commanä  grouð  arå  noô permitted®  Thå  commanä  linå  ió +structureä aó follows: + + l[o][command] + +where: + l is the single character used to invoke the command + note that it may be upper- or lower-case + o is an opening option, which is one of: + :nn -- go to Menu nn + ! -- have VMENU wait when the command is finished + command is an optional ZCPR3 command; note that if + the option is ":nn", then a command here makes no + sense + + :nn Opt + Thå  ":nn¢  optioî telló VMENÕ tï movå tï  á  differenô +menõ  iî  thå  *.VMÎ file®  Thå firsô  menõ  ió  numbeò  1® +Example: + + -x + # + 1st Menu: A - Goto Menu 2 3 - Goto Menu 3 + # + a:2 + 3:3 + # + 2nd Menu Command: 3 - Goto Menu 3 + # + 3:3 + #x + 3rd Menu Command: 2 - Goto Menu 2 + # + 2:2 + ## + :nn Opt + Iî thå firsô menu¬ thå useò maù strike: + + "a¢ oò "A¢ tï gotï Menõ 2 + "3¢ tï gotï Menõ 3 + ">¢  oò  ".¢ tï gotï thå nexô menõ (Menõ 2) + ^à tï gotï ZCPR3 + + In the second menu, the user may strike: + + "3" to goto Menu 3 + "*" or "<" or "," to goto Menu 1 + ">" or "." to goto Menu 3 + ^C to goto ZCPR3 + + In the third menu, the user may strike: + + "2" or "<" or "," to goto Menu 2 + "*" to goto Menu 1 + + ! Opt + Thå  "!¢ optioî causeó VMENÕ tï pauså anä asë thå  useò +tï "Strikå Anù Key¢ beforå continuinç afteò thå commanä linå +haó  beeî processed®  Iî thió way¬  iæ á commanä  generateó +informatioî  tï bå reaä bù thå useò beforå VMENÕ clearó  hió +screen¬  thå "!¢ optioî maù bå useä tï givå thå useò alì thå +timå hå wantó tï reaä thió display. + + "prompt" + Embeddeä  withiî  anù commanä linå maù bå á prompô  foò +useò input® Thió prompô takeó thå forí of + + "prompt to user" + +Wheî  encountered¬  VMENÕ wilì advancå tï thå nexô linå  anä +prinô thå texô containeä withiî thå quotes® VMENÕ wilì theî +waiô foò thå useò tï inpuô anù texô hå desireó followeä bù á +RETURN®   Aô  thió  point¬  thå  texô  thå  useò  inpuô  ió +capitalizeä anä placeä intï thå commanä linå aô thå poinô oæ +thå prompt. + + Iæ  thå  prompô appearó aô thå enä oæ á  VMENÕ  commanä +line¬  thå trailinç quotå ió noô required®  Aó manù promptó +aó   desireä  maù  appeaò  withiî  á  VMENÕ  commanä   line® +Examples: + + "prompt" + -x + # + A - Run XDIR without Pause or Input + B - Run XDIR and Pause before Returning to VMENU + C - Run XDIR, Allow User Input, and Pause before + Returning to VMENU + M - Run MCOPY, Allow User Input of Dest Dir, Allow + User Input of Source Dir and File, and Pause + before returning to VMENU + Z - Run Any ZCPR3 Command and Pause before + Returning to VMENU + # + m!mcopy "Destination Dir? "="Source DIR:AFN? " + z!"Enter Command Line -- + axdir + b!xdir + c!xdir "Enter Ambiguous File Name -- + ## + + "prompt" + Notå  thå Spacå righô beforå thå "Prompô forí iî thå  Ã +command®  Thió spacå ió significanô tï keeð thå commanä anä +useò  inpuô froí runninç together®  Thió "ruî together¢  ió +desireä  foò thå Ú command®  Alsï notå thå duaì prompô  foò +thå Í command. + + Witè thå Í command¬  thå followinç promptó wilì  appeaò +(anä samplå input): + + Destination Dir? BACKUP: + Source DIR:AFN? *.TXT + +anä thå followinç commanä linå ió built: + + MCOPY BACKUP:=*.TXT + + Variables + Thå  commanä  texô  whicè  ió specifieä  iî  thå  VMENÕ +commanä linå caî contaiî embeddeä variableó whicè VMENÕ wilì +expanä wheî thå commanä linå ió processed® Theså variables¬ +whicè  arå denoteä bù á dollaò sigî ($© followeä bù  onå  oò +twï characters¬ arå defineä aó follows: + + Variable Expands as + -------- ---------- + $D Current Disk + $U Current User Area + $Fn FILENAME.TYP for ZCPR3 System File n + $Nn FILENAME for ZCPR3 System File n + $Tn TYP for ZCPR3 System File n + $Pp Name of File being Pointed to + $$ Place a single $ in command line + + Theså  variableó  caî alsï bå useä iî thå menõ  displaù +itself¬  anä  theiò  valueó  wilì bå  substituteä  wheî  thå +displaù ió generated® Example: + Variables + -x + # + Menu to Run M80 Assembler + Current File: $F1 + Directory: $D$U + F - Define File + E - Edit $F1 P - Page $F1 + A - Assemble $F1 + # + fsetfile 1 "Filename? " + eedit $f1 + azex m80 $n1 + ppage $f1 + ## + + Variables +Notes: + + 1® Thå ZCPR³ utilitù SETFILÅ ió useä tï definå thå namå +oæ  á  ZCPR³  Systeí File®  Therå  arå  fouò  Systeí  Fileó +available¬  anä theù caî bå referenceä bù $F± tï $F4¬ $N± tï +$N4¬ anä $T± tï $T4. + + 2®  Thå Á commanä showó thå executioî oæ ZEX® VMENÕ ió +á truå ZCPR³ Shell¬ and¬ aó such¬ ZEØ commandó caî bå issueä +froí  iô anä wilì ruî oî toð oæ it®  Thå prompô foò thå ZEØ +commanä lineó wilì bå "Menu>". + + 3®  Assuminç thaô "MYFILE.MAC¢ ió assigneä tï thå ZCPR³ +Systeí Filå ± anä thå useò ió loggeä intï disë  useò 1¬ thå +followinç  screeî  showó ho÷ thå displaù anä  thå  resultinç +commanä lineó wilì bå expandeä wheî executioî occurs: + + Variables + Display + + Menu to Run M80 Assembler + Current File: MYFILE.MAC + Directory: B1 + F - Define File + E - Edit MYFILE.MAC P - Page MYFILE.MAC + A - Assemble MYFILE.MAC + + + Command Lines + Menu Command Expansion + + fsetfile 1 "Filename? " SETFILE 1 "Filename? " + eedit $f1 EDIT MYFILE.MAC + azex m80 $n1 ZEX M80 MYFILE + ppage $f1 PAGE MYFILE.MAC + + Highlighting + Jusô  likå thå HELÐ utilitù caî takå advantagå  oæ  thå +highlightinç facilitù provideä iî thå Z3TCAP¬  sï caî VMENU® +Foò  thoså  ZCPR³  Systemó witè á  properly-installeä  TCAP¬ +VMENÕ  wilì  uså  thå cleaò screeî commanä  tï  refresè  thå +user'ó  screeî anä highlightinç caî bå enableä anä  disableä +bù  embeddinç ^Á (tï turî oî highlighting© anä ^  (tï  turî +ofæ highlighting© intï thå *.VMÎ file. + + Iô  ió recommendeä thaô wheî highlightinç ió turneä on¬ +iô  shoulä  bå turneä ofæ iî thå samå linå  foò  consistencù +sakå anä appearance. + + Example: + + Highlighting + # + ^AThis is highlighted^B and this is not + # + +wilì appeaò witè "Thió ió highlighted¢ iî á highlighteä modå +likå this: + + This is highlighted and this is not + + + Variables + + Thå  $Pð  variablå ió alsï availablå tï thå useò  undeò +VMENU®  $Pð returnó informatioî oî thå filå currentlù beinç +pointeä tï bù thå useò oî thå screen® Thió variablå haó thå +following forms: + + Form Expands Into + $PF FILENAME.TYP of the pointed-to file + $PN FILENAME of the pointed-to file + $PT TYP of the pointed-to file + + Foò instance¬ iæ thå filå currentlù beinç pointeä tï ió +named MYFILE.TXT, then the command line: + + ECHO FILENAME.TYP=$PF FILENAME=$PN TYP=$PT + +will output: + + FILENAME.TYP=MYFILE.TXT FILENAME=MYFILE TYP=TXT + Variables + Example: + + -x + # + Menu to Run M80 Assembler + Directory: $D$U + Å - Ediô Pointed-tï Filå + Ð - Pagå Pointed-tï File + A - Assemble Pointed-to File + # + eedit $pf + azex m80 $pn + ppage $pf + ## + + Variables +Notes: + + 1® Thå Å anä Ð commandó builä commanä lineó containinç +the full file name and type of the file being pointed to. + + 2®  Thå Á commanä showó thå executioî oæ ZEX® VMENÕ ió +á truå ZCPR³ Shell¬ and¬ aó such¬ ZEØ commandó caî bå issueä +froí  iô anä wilì ruî oî toð oæ it®  Thå prompô foò thå ZEØ +commanä lineó wilì bå "VMenu>". + + 3® Assuminç thaô MYFILE.MAà ió beinç pointeä tï bù thå +user¬ thå followinç showó thå expansioî oæ thå commanä lineó +for this example: + + Menu Command Expansion + eedit $pf EDIT MYFILE.MAC + azex m80 $pn ZEX M80 MYFILE + ppage $pf PAGE MYFILE.MAC + + Variables + + Thå  firsô entrù iî anù VMENÕ filå displaù ió nameä "Nï +File"¬  anä  thió  entry¬  wheî pointeä tï bù thå  useò  anä +expandeä intï thå commanä line¬  ió translateä intï á prompô +foò thå useò tï inpuô thå namå oæ á file®  Thió featurå  ió +provideä  aó á conveniencå tï thå useò sï thaô hå wilì  havå +thå  abilitù  tï easilù specifù ne÷ fileó whicè dï  noô  yeô +exisô  tï thå VMENÕ commandó (sucè aó foò aî editoò  commanä +in which the user wants to create a new file). + + Iæ  thå  pointeò ió aô "Nï File¢ anä thå  commanä  linå +useó  severaì  referenceó  tï thå pointeò (aó  iî  thå  ECHÏ +commanä examplå above)¬  theî thå useò ió prompteä onlù oncå +foò  thå  namå oæ thå file¬  anä eacè referencå deriveó  itó +information from this name. + + Closing + Closing Notes + + Aó  manù commandó aó thå printablå ASCIÉ characteò  seô +(withouô   lower-caså   letteró   anä  thå   VMENÕ   commanä +characters©  wilì allo÷ arå permitteä bù VMENU®  Thå  text¬ +however¬  foò eacè menõ musô bå ablå tï fiô oî á screeî witè +thå filå directorù displaù aô thå toð anä thå commanä prompô +aô  thå bottom®  Thió meanó thaô thå texô cannoô exceeä  1¶ +lines. + + VMENÕ  fitó iî nicelù tï thå ZCPR³ Systeí oæ  programs® +Thå  informatioî  sectioî oî "VMENU'ó  Relationshið  tï  thå +ZCPR³  System¢  explainó  ho÷  VMENÕ  anä  thå  otheò  ZCPR³ +programó worë together. + + Thå  followinç  ASCIÉ  characteró maù NOÔ  bå  useä  aó +commandó sincå theù arå useä elsewhere: + + # % , . < > * + +:M + + VMENU Programming Command Summary + + Eacè  VMENÕ commanä occupieó onlù onå line¬  anä  blanë +lineó  iî thå commanä grouð arå noô permitted®  Thå commanä +linå ió structureä aó follows: + + l[o][command] + +where: + l is the single character used to invoke the command + note that it may be upper- or lower-case + o is an opening option, which is one of: + :nn -- go to Menu nn + ! -- have VMENU wait when the command is finished + command is an optional ZCPR3 command; note that if + the option is ":nn", then a command here makes no + sense + + +The VMENU commands are: + + Command Function + + :nn Goto Menu nn, where the first menu is Menu 1 + ! Wait after command line is executed before + processing the menu + "Prompt" Prompt the user for input and accept it + + +The VMENU variables are: + + Variable Expands to + + $D Current Disk + $U Current User + $Fn FILENAME.TYP for System File n + $Nn FILENAME for System File n + $Tn TYP for System File n + $PF FILENAME.TYP for Pointed-to File + $PN FILENAME for Pointed-to File + $PT TYP for Pointed-to File + $$ $ + +Noteº Systeí Fileó caî bå defineä bù thå SETFILÅ command. + +The Highlighting Embedded Characters are: + + ^A Turn ON Highlighting + ^B Turn OFF Highlighting + +Noteº  Iô ió recommendeä thaô iæ highlightinç ió turneä  on¬ +it should be turned off in the same line. + + + +Thå  followinç ASCIÉ characteró maù NOÔ bå useä aó  commandó +sincå theù arå useä elsewhere: + + # % , . < > * + + + +:Z + + VMENU's Relationship to the ZCPR3 System + + VMENU¬ likå mosô oæ thå ZCPR³ utilities¬ interactó witè +thå systeí aó á wholå anä cannoô bå useä witè systemó  otheò +thaî  ZCPR3®   Iî  particular¬  VMENÕ  requireó  thå  ZCPR³ +Multiplå  Commanä Linå Buffeò anä Shelì Stacë facilitieó  tï +bå  availablå  tï  iô anä cannoô ruî  withouô  them®  VMENÕ +invokeó  commanä  lineó  viá thå  Commanä  Linå  Buffeò  anä +returnó  tï itselæ thrõ thå Shelì Stack®  Iô alsï useó  thå +ZCPR³  Systeí Fileó foò somå oæ itó variableó anä thå Z3TCAÐ +facilitù foò itó screeî manipulatioî (highlighting). + + VMENU is installed by Z3INS. + + + Also¬ CÄ (Changå Directory© anä STARTUÐ (or¬ SÔ foò CD© +caî  comå intï plaù witè VMENU®  Wheî CÄ logó intï  tï  ne÷ +directory¬  iô  lookó foò thå filå ST.COÍ anä executeó iô iæ +therå  ió one®  SÔ ió simplù STARTUÐ renamed¬  anä  STARTUÐ +wilì  loaä thå Multiplå Commanä Linå Buffeò witè  á  commanä +linå anä theî terminate. + + Froí thå poinô oæ vie÷ oæ VMENU¬  thå commanä loadeä bù +SÔ  coulä bå VMENU®  Thå effecô oæ thió ió tï automaticallù +enteò  VMENÕ  wheî  thå useò employó CÄ  tï  enteò  á  giveî +directory. + + Hence¬  bù  usinç CD¬  á useò caî enteò á directorù anä +suddenlù  finä  himselæ iî á menõ insteaä oæ  aô  thå  ZCPR³ +commanä  level®  Thió  ió  gooä foò  applicationó  wherå  á +directorù  ió  seô  asidå foò á specifiã  purposå  anä  onlù +certaiî  operationó  arå  tï bå performeä  iî  it¬  sucè  aó +cataloginç diskó oò handlinç accounts. + + + No÷  thaô VMENÕ ió runninç foò thå directory¬  á  VMENÕ +commanä  coulä  bå anotheò CÄ tï anotheò directory®  Oò  iô +coulä simplù bå á DUº form® Example: + + # + A - Enter ZCPR Directory + B - Enter A0: + # + acd zcpr: + ba0: + # + + Here¬  iæ Á ió issued¬ theî CÄ wilì movå intï ZCPRº anä +executå ST.COÍ iæ therå ió onå there®  Iæ  ió issued¬  thå +useò ió loggeä intï A0:®  VMENÕ ió thå nexô commanä iî botè +caseó (invokeä aó á Shell)¬ sï VMENÕ automaticallù reinvokeó +anä lookó foò MENU.VMN®  Iæ iô findó it¬  wå arå iî anotheò +VMENÕ  system¬  and¬  iæ iô doesn't¬  wå arå bacë  tï  ZCPR³ +commanä level. + + Undeò thå Á option¬ iæ CÄ findó ST.COM¬ SÔ wilì executå +itó functioî and¬  unlesó thió functioî popó thå Shelì Stacë +(SHCTRÌ  POР command)¬  VMENÕ  wilì reinvokå  afteò  iô  ió +complete. + + Undeò  thå  option¬  wå wilì ruî VMENÕ nexô anä simplù +exiô iæ á MENU.VMÎ filå ió noô found. + + + VMENÕ  interactó  heavilù witè thå ZCPR³  Systeí  Fileó +whicè  arå  defineä  aó  á parô  oæ  thå  ZCPR³  Environmenô +Descriptor®  Therå arå fouò Systeí Files¬ anä threå oæ theí +are used by VMENU for various purposes: + + File Purpose + 2 Name of Current File + 3 Name of Menu File + 4 Name (containing wild cards) used to + Select Files for VMENU File Display + + Systeí  Filå  ² containó thå namå oæ thå currenô  VMENÕ +file®  Bù  changinç thió name¬  á transienô caî  causå  thå +pointeò  oæ VMENÕ tï poinô tï somå otheò filå wheî VMENÕ  ió +reinvoked. + + + Systeí  Filå ³ containó thå namå oæ thå menõ filå whicè +VMENÕ ió usinç tï derivå menõ displayó anä commanä from® Bù +changinç thió entry¬  á transienô caî selecô differenô  menõ +files dynamically. + + Systeí  Filå ´ ió useä tï indicatå whicè fileó (sucè aó +*.TXÔ  oò *.*© arå selecteä foò displaù bù VMENÕ wheî iô  ió +invoked®  Bù  changinç thió entry¬  thå naturå oæ thå  filå +display can be changed dynamically. + +:E + + VMENU Error Messages + + Iî ordeò tï makå VMENÕ aó smalì aó possible¬  thå erroò +messageó havå beeî reduceä tï á minimum®  VMENÕ provideó  á +minimuí indicatioî thaô somethinç ió wronç anä aborts. + + Thå  prograí  VMENUCË  ió  designeä tï  telì  yoõ  morå +specificallù  whaô  ió wrong®  VMENUCË ió  á  *.VMΠ Syntaø +Checker¬ anä iô lookó foò alì sortó oæ erroò conditionó thaô +caî occuò iî á *.VMÎ file. + + VMENÕ provideó thå followinç minimaì erroò messages: + + + Message Meaning + + No Shell Stack Shell Stack Not Available + No Command Line Command Line Buffer Not Avail + Shell Stack Full Shell Stack is Full + Shell Stack Size Shell Stack Entries are too + short for VMENU cmd line + File x.typ Not + Found Menu File Not Found + TPA Full Memory is Full + User Command is in Error + Structure Error *.VMN File Structure Error + +:2 + +Command: VMENUCK 1.0 + +Syntax: + VMENUCK dir:ufn <-- default file type is VMN + +Function: + + VMENUCË ió useä tï checë thå syntaø oæ á *.VMÎ filå foò +thå  ZCPR³ Menõ Shell¬  VMENU®  VMENÕ ió optimizeä foò sizå +anä speed¬  and¬  iî deepinç iô small¬  built-iî diagnosticó +werå reduceä tï thå minimum® VMENUCË ió intendeä tï bå useä +tï  analyzå *.VMÎ fileó anä providå informativå  diagnosticó +oî anù syntacticaì erroró witè them. + +Options: + None + + +Comments: + + VMENUCË checkó tï seå iæ thå sizå oæ thå *.VMÎ filå  ió +toï largå foò thå TPÁ availablå tï thå VMENÕ command®  Thió +ió aî additionaì checë beyonä thå normaì syntaø check. + + VMENUCË  identifieó  thå  locatioî oæ  erroró  bù  linå +number® Thå firsô linå iî thå filå ió linå numbeò 1. + +Selected Error Messages: + + Self-Explanatory. + +Examples of Use: + + VMENUCK MYMENU + -- perform check on MYMENU.VMN + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/VMENU.MAC b/Images/Source/hd0/s0/u15/VMENU.MAC new file mode 100644 index 00000000..fb91e70f --- /dev/null +++ b/Images/Source/hd0/s0/u15/VMENU.MAC @@ -0,0 +1,2655 @@ +; PROGRAM: VMENU +; VERSION: 1.0 +; DATE: 26 June 84 +; AUTHOR: Richard Conn +; PREVIOUS VERSIONS: None +; +z3env equ 0f400h +VERS EQU 10 ;version number + +; VMENU is copyright (c) 1984 by Richard Conn +; All Rights Reserved +; VMENU may be used freely by the ZCPR3 Community + +; VMENU is a screen-oriented, ZCPR3-specific file utility. It can not be +; installed to run under conventional CP/M. VMENU +; extensively employs cursor addressing to position a pointer on the +; screen, allow the user to manipulate the pointer (up, down, right, left, +; next screen, previous screen, GOTO file). The pointer points to files +; in the current user directory and displays the user's position dynamically +; on the screen. Once pointing to a file, user commands can be used to +; manipulate the file according to options presented in the menu displayed to +; the user. MENU and VMENU are compatible. In the way of being ZCPR3- +; specific, VMENU can chain to external programs via the Command Line Buffer +; and then return, and it recognizes Named Directories (so the user can log +; into B:, B4:, and MYDIR:, for example). + +; VMENU is installed by Z3INS. + +; VMENU works with ZCPR3 only, with 32k or more of RAM. + +; VMENU can be assembled for use with a Z80 or 8080 microprocessor. + +; +; SYSLIB, Z3LIB, and VLIB References +; + ext z3vinit,cls,gotoxy,ereol,vprint,envptr,stndout,stndend + ext pafdc,dutdir + ext qshell,getefcb,shpush,shpop,getcrt,getfn2,zprsfn + ext putshm,getshm,getsh,getzrun,getcl1,putzex,putcst + ext cin,cout,caps,crlf,bline,sksp + ext f$open,f$read,f$close,initfcb + ext retud + ext codend + +; +; Basic Definitions +; +TRUE EQU 0FFH ;define true and.. +FALSE EQU 0 ;..false. +; +DIM EQU 1 ;GOTO DIM +BRIGHT EQU 2 ;GOTO BRIGHT +ELTSIZ EQU 11 ;size of file name and type element + +; +; User-Customized Definition +; +VMNAME MACRO ;;Name of VMENU + DB 'VMENU' + ENDM +VMNFILL MACRO ;;Spaces to fill out name to 8 chars + DB ' ' + ENDM +; +Z80 EQU TRUE ;TRUE to use Z80 Instructions +WARMBOOT EQU FALSE ;set TRUE to warmboot on exit +EPS EQU 4*4 ;N lines x 4 cols per screen + ; EPS = Entries Per Screen + +; +; Command Line Builder Constants +; +FPESC EQU '%' ;escape char +FPDISK EQU 'D' ;disk only (D) +FPUSER EQU 'U' ;user only (U) +FPFILE EQU 'F' ;filename.typ +FPNAME EQU 'N' ;file name only +FPTYPE EQU 'T' ;file type only +FPPTR EQU 'P' ;file entry being pointed to +MNOTE EQU '#' ;denotes comment area in macro file +UIN1 EQU 27H ;single quote for user input +UIN2 EQU 22H ;double quote for user input + +; +; Menu Constants +; + +; 1 Special Menu Command Chars +RNM EQU '>' ;NEXT MENU +RNMP EQU '.' ;NEXT MENU PRIME (ALTERNATE) +RLM EQU '<' ;LAST MENU +RLMP EQU ',' ;LAST MENU PRIME (ALTERNATE) +RFM EQU '*' ;FIRST MENU + +; 2 Internal Menu Control Chars +MCMD EQU ':' ;COMMAND TO JUMP TO ANOTHER MENU +PCHAR EQU '"' ;INDICATES AUTO PROMPT FOR SPECIFIC CMD +MINDIC EQU '#' ;MENU SECTION INDICATOR +MFIRST EQU '%' ;FIRST MENU INDICATOR +GOPTION EQU '-' ;GLOBAL OPTION INDICATOR +WOPTION EQU '!' ;ACTIVATES WAIT UPON RETURN + +; 3 Menu Option Chars +XOPTION EQU 'X' ;DISABLE ZCPR3 RETURN + +; 4 Miscellaneous +IBUFSZ EQU 254 ;SIZE OF INPUT LINE BUFFER +VARFLAG EQU '$' ;VARIABLE FLAG + ;(FOLLOWED BY D,U,Fn,Nn,Tn) +CMDSEP EQU ';' ;ZCPR3 COMMAND SEPARATOR + +; +; Cursor Positioning Addresses +; +EPSLINE EQU (EPS/4)+3 ;position of last line of EPS + 1 +BANADR EQU 1*256+24 ;banner address +CURHOME EQU 3*256+1 ;home address of cursor +BOTADR EQU 23*256+1 ;bottom of screen +CPMADR EQU 22*256+1 ;command prompt message +CPADR EQU CPMADR+27 ;command prompt address (cursor position) +ERADR EQU CPMADR+256+15 ;error message +FNADR EQU 1*256+62 ;address of current file name +MOREADR EQU FNADR+1*256 ;address of more files message +DUADR EQU 1*256+4 ;address of current DU + +; +; System Functions +; +RDCON EQU 1 +WRCON EQU 2 +PUNCH EQU 4 +LIST EQU 5 +DIRCON EQU 6 +RDBUF EQU 10 +CONST EQU 11 +LOGIN EQU 14 +OPEN EQU 15 +CLOSE EQU 16 +SRCHF EQU 17 +SRCHN EQU 18 +ERASE EQU 19 +READ EQU 20 +WRITE EQU 21 +MAKE EQU 22 +REN EQU 23 +INQDISK EQU 25 +SETDMA EQU 26 +INQALC EQU 27 +ATTR EQU 30 +GETPARM EQU 31 +SGUSER EQU 32 +COMPSZ EQU 35 + +; +; System Addresses +; +OS$BASE EQU 000H ;system base.. +CCP EQU 800H ;..and 'ccp' length in bytes. +GET EQU 0FFH ;get user area e-reg value +BDOS EQU OS$BASE+05H +FCB EQU OS$BASE+5CH +FCBEXT EQU FCB+12 +FCBRNO EQU FCB+32 +FCB2 EQU OS$BASE+6CH +TBUFF EQU OS$BASE+80H +TPA EQU OS$BASE+100H + +; +; ASCII Definitions +; +CTRLC EQU 'C'-'@' ;..control-C.. +CTRLD EQU 'D'-'@' +CTRLE EQU 'E'-'@' +CTRLR EQU 'R'-'@' +CTRLS EQU 'S'-'@' ;..XOFF.. +CTRLX EQU 'X'-'@' +BEL EQU 07H ;..bell.. +BS EQU 08H ;..backspace.. +TAB EQU 09H ;..tab.. +LF EQU 0AH ;..linefeed.. +FF EQU 0CH ;..formfeed.. +CR EQU 0DH ;..carriage return.. +CAN EQU 18H ;..cancel.. +EOFCHAR EQU 1AH ;..end-of-file.. +CTRLZ EQU 1AH ;..clear screen.. +ESC EQU 1BH ;..and escape character. + +; +; MACROS TO PROVIDE Z80 EXTENSIONS +; MACROS INCLUDE: +; +; BR - JUMP RELATIVE +; BRC - JUMP RELATIVE IF CARRY +; BRNC - JUMP RELATIVE IF NO CARRY +; BRZ - JUMP RELATIVE IF ZERO +; BRNZ - JUMP RELATIVE IF NO ZERO +; BJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; +BR MACRO ?N ;;JUMP RELATIVE + IF Z80 + .z80 + jr ?N + .8080 + ELSE + jmp ?N + ENDIF + ENDM +; +BRC MACRO ?N ;;JUMP RELATIVE ON CARRY + IF Z80 + .z80 + jr c,?N + .8080 + ELSE + jc ?N + ENDIF + ENDM +; +BRNC MACRO ?N ;;JUMP RELATIVE ON NO CARRY + IF Z80 + .z80 + jr nc,?N + .8080 + ELSE + jnc ?N + ENDIF + ENDM +; +BRZ MACRO ?N ;;JUMP RELATIVE ON ZERO + IF Z80 + .z80 + jr z,?N + .8080 + ELSE + jz ?N + ENDIF + ENDM +; +BRNZ MACRO ?N ;;JUMP RELATIVE ON NO ZERO + IF Z80 + .z80 + jr nz,?N + .8080 + ELSE + jnz ?N + ENDIF + ENDM +; +BJNZ MACRO ?N ;;DECREMENT B AND JUMP RELATIVE ON NO ZERO + IF Z80 + .z80 + djnz ?N + .8080 + ELSE + dcr b + jnz ?N + ENDIF + ENDM +; +; END OF Z80 MACRO EXTENSIONS +; + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; Once Environment is Initialized, One of Three Major Functions +; will be Performed: +; 1. VMENU will be installed as a Shell if invoked explicitly +; by user command +; 2. The VMENU Function will be performed if VMENU is invoked +; by ZCPR3 as a Shell and ZEX is not Running +; 3. A Command Line will be Input by VMENU from ZEX and Passed +; on to ZCPR3 without Processing +; + call z3vinit ;initialize the ZCPR3 Env and the VLIB Env +; +; Set Opsys Stack Pointer +; + if not WARMBOOT + lxi h,0 ;clear hl-pair then.. + dad sp ;..add stack address. + shld stack + endif ;not warmboot + +; +; Check to see if VMENU was executed as a shell +; + call qshell ;get and test message from ZCPR3 + jz runsh ;execute shell procedures +; +; Initialize VMENU as a Shell +; + call shtest1 ;there must be a shell stack + call shtest2 ;there must be a command line buffer +; +; FUNCTION 1: Set Up VMENU as a Shell +; Run Shell Via Exit to Opsys +; + call getefcb ;determine name of program + brz shgo1 ;name not given, so use default + inx h ;pt to name + lxi d,filercmd ;define name of program + mvi b,8 + call moveb ;copy name +shgo1: + lxi h,filercmd ;establish shell + call shpush ;push onto shell stack + brnz shgo2 ;error? +; +; Establish File Selection +; 3rd System File = Name of Menu File (2nd token) +; 4th System File = Name of AFN to Select Files (1st token) +; + call getfn2 ;setup file name + lxi d,11 ;use 2nd system file + dad d + xchg ;destination in DE + lxi h,joker ;pt to joker + mvi b,11 ;copy joker into 2nd system file + call move ;... so selection is on joker + xchg ;HL now pts to 3rd system file + push h ;save ptr to name of Menu File + lxi d,fcb2+1 ;pt to FCB + xchg + mvi b,11 ;copy 11 chars + call move + push d ;save ptr to file spec + lxi h,fcb+1 ;pt to FCB (use 4th system file name) + mvi b,11 ;copy 11 chars + call move + pop d ;get ptr to file spec + lxi h,joker ;make wild if none + mvi b,11 ;11 chars + ldax d ;get first char + cpi ' ' ;wild if space + cz moveb ;copy + ldax d + cpi '/' ;wild if option + cz moveb + pop d ;get ptr to name of menu file + lxi h,menufile ;pt to menu file name (default) + ldax d ;check for no file name given + mvi b,11 ;11 chars + cpi ' ' ;if none, set default + cz moveb + lxi b,8 ;check file type + dad b + xchg + dad b + xchg + ldax d ;check for file type + mvi b,3 ;3 chars + cpi ' ' ;if none, set default + cz move +; +; Print Done Message +; +simsg: + mvi a,0 ;default to menu 0 + mvi b,1 ;shell message 1 contains menu number + call putshm +; + mvi b,0 ;shell message 0 + mvi a,0 ;no wait + call putshm ;set shell message +; + call vprint + db ' Shell Installed',0 +; + jmp os$ccp1 ;return to opsys +; +; Error in Shell Stack Installation +; +shgo2: + cpi 2 ;shell stack full + brnz shgo3 + call vprint + db ' Shell Stack Full',0 + ret +shgo3: + call vprint + db ' Shell Entry Size',0 + ret + +; +; VMENU was invoked as a Shell +; Check for ZEX Input in Progress +; +runsh: + call getzrun ;check ZEX message byte + jnz zexrun ;process ZEX command line if ZEX running +; +; Check for Delay Before Resuming VMENU and Delay if Set +; + mvi b,0 + call getshm ;get shell message 0 + ani 80h ;check MSB + cnz sak ;pause for input + mvi a,0 ;set normal command status + call putcst +; +; FUNCTION 2: Run VMENU and Perform Main Function +; + call setup ;init buffers and pointers + call stackset ;setup stack +; +; Begin VMENU Processing +; +runsh2: + call stackset ;reset stack + call fileload ;load files + call setscr ;set up screen display variables + call findcfile ;locate current file + call menuload ;load menu file +; +; Entry Point for Command Processing +; Display Screen and Input/Process Command +; +runsh3: + call stackset ;reset stack + call refresh ;refresh screen display +; +; Display Current File and Input/Process Command +; +loopfn: + call prcfn1 ;print current file name +; +; Input/Process Command +; +loop: + call stackset ;reset stack + call prompt ;get command from user + call cmdproc ;process command in A + call icmsg ;print invalid command msg + br loop ;continue +; +; Set Stack Pointer +; +stackset: + pop d ;get return address + lhld ibuf ;top of stack + sphl ;start local stack + push d ;return address on new stack + ret +; +; Check for Presence of Shell Stack +; +shtest1: + call getsh ;get shell stack data + rnz + pop psw ;clear stack + call vprint + db 'No Shell Stack',0 + ret + +; +; Check for Command Line +; +shtest2: + call getcl1 ;get command line data + rnz + pop psw ;clear stack + call vprint + db 'No Cmd Line',0 + ret + +; +; FUNCTION 3: Run ZEX on Top of VMENU +; Accept Command Line and Pass it to ZCPR3 +; +zexrun: + call vprint ;print prompt + db 'VMENU> ',0 + mvi a,1 ;tell ZEX that it is prompted + call putzex + call getcl1 ;pt to command line buffer + mov a,l ;set ptr to first char + adi 4 + mov c,a + mov a,h + aci 0 + mov b,a ;BC pts to first char + mov m,c ;store low + inx h + mov m,b ;store high + inx h ;pt to char count + xchg ;... in DE + mvi c,rdbuf ;input line via BDOS + push d ;save ptr + call bdos + pop h ;pt to char count + inx h + mov e,m ;get char count + inx h ;pt to first char + push h ;save ptr + mvi d,0 ;DE=char count + dad d + xra a ;A=0 + mov m,a ;store ending 0 + pop h ;pt to first char + call sksp ;skip to first non-blank character + mov a,m ;get it + cpi ';' ;comment line? + jz zexrun1 ;process comment line + call putzex ;resume ZEX (A=0) + call putcst ;set command status to normal (A=0) + ret ;return to opsys +zexrun1: + call crlf ;new line + jmp zexrun + +; +;************************************************** +; +; CRT Routine for VMENU +; +VCLS: + CALL CLS ;try to clear the screen + RNZ ;OK if done + PUSH H ;save regs + PUSH B + CALL GETCRT ;get CRT Data + INX H ;get number of lines on screen + MOV B,M ;B=number of lines +VCLS1: + CALL CRLF ;new line + BJNZ VCLS1 + POP B ;restore regs + POP H + RET +; +; EREOL Routine for VMENU +; +VEREOL: + CALL EREOL ;try to erase to EOL + RNZ ;OK if done + PUSH B ;save count + MVI A,' ' ;space out + CALL VEREOL1 ;send B spaces + POP B ;get count + MVI A,BS ;backspace in +VEREOL1: + CALL COUT ;send char + BJNZ VEREOL1 ;count down + RET +; +; Setup Screen Display Variables +; +SETSCR: + LXI H,CURHOME ;set cursor home + SHLD CURAT + LHLD RING ;set ring position + CALL SETMORE ;set more flag if more files on screen +; +; Entry to Reset Ring Position at HL +; +SETSCR1: + SHLD RINGPOS ;set current file to first file in ring +; +; Entry to Reset Local Ring Position at HL +; +SETSCR2: + SHLD LOCBEG ;front of ring + LXI D,EPS*ELTSIZ ;new end? + DAD D + XCHG + LHLD RINGEND ;end of ring + XCHG + CALL CMPDEHL + BRC SETSCR3 + XCHG +SETSCR3: + XCHG + SHLD LOCEND + RET + +; +; Set More Flag - Count Files on Screen and See if Display Exceeded +; +SETMORE: + PUSH H ;SAVE REGS + PUSH D + PUSH B + XRA A ;CLEAR FLAG + STA MORE + MVI B,EPS ;COUNT DOWN + LXI D,ELTSIZ ;SIZE OF ELEMENT +SETMORE1: + MOV A,M ;GET CHAR + ORA A ;DONE IF ZERO + JZ SETMDONE + DAD D ;PT TO NEXT + DCR B ;COUNT DOWN + JNZ SETMORE1 + MOV A,M ;GET CHAR + ORA A ;DONE IF ZERO + JZ SETMDONE + MVI A,0FFH ;SET FLAG + STA MORE +SETMDONE: + POP B ;RESTORE REGS + POP D + POP H + RET + +; +; Search for Current File starting at position in HL +; +FINDCFILE: + CALL GETFN2 ;get ptr to current file + LXI D,11 + DAD D ;... which is 2nd System File + XCHG ;... ptr in DE +; +; Next group of EPS files for file display +; +FINDCF1: + LXI H,CURHOME ;set cursor + SHLD CURAT + LHLD LOCBEG ;pt to first file in list + MVI B,EPS ;number of files in display +; +; Check current file +; +FINDCF2: + SHLD RINGPOS ;set position of current ring element +; +; Check for end of file ring +; + MOV A,M ;end of list? + ORA A ;done if so + BRZ FINDCF4 +; +; Compare candidate file against file in ring +; + PUSH H ;save ptr to file + PUSH D ;save ptr to System File + PUSH B ;save count + MVI B,ELTSIZ ;compare + CALL CMPSTR + POP B ;get count + POP D ;get ptr to System File + POP H ;get ptr to file + BRZ FINDCF5 ;we found it + BRC FINDCF5 ;we found following file +; +; Advance to next file in ring +; + PUSH B ;save count + LXI B,ELTSIZ ;pt to next element + DAD B +; +; Advance to next file on screen +; + PUSH H + LHLD CURAT ;get cursor position + MOV A,L + ADI 19 ;advance cursor + MOV L,A + CPI 70 + BRC FINDCF3 + MOV A,H ;get current line + LXI H,CURHOME ;get home row + MOV H,A ;set current line + INR H ;next line +FINDCF3: + SHLD CURAT ;set cursor + POP H + POP B ;get count +; +; Count down files in current display +; + BJNZ FINDCF2 ;count down + MOV A,M ;any following elements in ring? + ORA A ;0=no + BRZ FINDCF4 +; +; End of current display - set new display +; + SHLD LOCBEG ;new local beginning + BR FINDCF1 ;continue search +; +; File beyond end of file display - set pointers to first file +; +FINDCF4: + LXI H,CURHOME ;set cursor to first file + SHLD CURAT + LHLD RING ;pt to first file + SHLD RINGPOS + SHLD LOCBEG ;set local beginning +; +; Done - Set Local Ring +; +FINDCF5: + LHLD LOCBEG ;pt to local ring + JMP SETSCR2 + +; +; Display file name of current file +; Side Effect: Change Name of 2nd System File to Current File +; +PRCFN1: + LXI H,FNADR ;position cursor for file name print + CALL GOTOXY + CALL GETFN2 ;pt to system file name + LXI D,11 ;pt to 2nd System File Name + DAD D + XCHG ;... in DE + LHLD RINGPOS ;pt to current file name + MVI B,11 ;copy into 2nd System File Name + CALL MOVEB + JMP PRFN ;print file name +; +; Process Command +; +ICMSG: + CALL ERMSG + DB 'Invld Cmd: ',0 + MOV A,B ;get char + CPI ' ' ;expand if less than space + JNC COUT + MVI A,'^' ;control + CALL COUT + MOV A,B ;get byte + ADI '@' ;convert to letter + JMP COUT ;return for loop processing + +; +; SET UP BUFFERS +; +SETUP: + CALL RETUD ;get home DU + MOV A,B + STA H$DR ;home drive + MOV A,C + STA H$U$A ;home user area + CALL CODEND ;start of free space + LXI D,256 ;256 bytes/unit + DAD D + SHLD IBUF ;input line buffer and top of stack + MVI M,IBUFSZ ;number of bytes in line + DAD D + SHLD EXPLINE ;expansion line + DAD D + SHLD MENUFCB ;dummy FCB + DAD D ;next page + SHLD BUFFER ;free space to end of TPA + +; +; Begin Further Inits +; + LHLD ENVPTR ;pt to ZCPR3 Env Desc + LXI D,80H+10H ;pt to cursor commands + DAD D + LXI D,CTABLE ;pt to area + MVI B,4 ;4 commands +CURINIT: + MOV A,M ;get command + STAX D ;put it + INX H ;pt to next + INX D + INX D + INX D + BJNZ CURINIT +; + LHLD BUFFER ;base address + SHLD RING ;beginning of ring +; + XRA A ;clear error message flag + STA ERMFLG +; + RET + +; e x i t + +; return to ccp + +; +; Entry point for VMENU exit +; +OS$CCP: + CALL SHPOP ;clear shell stack +; +; Entry point for command line exec +; +OS$CCP1: + LXI D,TBUFF ;..tidy up.. + MVI C,SETDMA ;..before going home. + CALL BDOS + + IF WARMBOOT + JMP OS$BASE + ENDIF ;warmboot + + IF NOT WARMBOOT + LHLD STACK ;put pointer.. + SPHL ;..back to 'sp'. + RET ;return to ccp + ENDIF ;not warmboot + +; +; FLOAD loads the files into the buffer, setting up the ring +; Return with NZ if load OK, Z if no files loaded +; +FILELOAD: +; +; Set up file name from System File 4 +; Select all files if no entry in System File 4 +; + CALL GETFN2 ;pt to first system file name + LXI D,11*3 ;pt to 4th file name + DAD D + LXI D,JOKER ;setup Joker if none + XCHG + LDAX D ;any chars? + MVI B,11 ;11 bytes + CPI ' ' + CZ MOVEB + XCHG ;HL pts to system file name + LXI D,FCB+1 ;pt to FCB + MVI B,11 ;11 bytes + CALL MOVEB +; +; Build ring with filename positioned in default FCB area +; + LHLD RING ;pt to ring + MVI B,ELTSIZ ;set first element to 'noname' +FILEL1: + MVI M,1 ;store ^A's + INX H ;pt to next + BJNZ FILEL1 + SHLD RINGPOS ;set ring position + SHLD RINGEND ;set ring end in case this is the only one + MVI M,0 ;store ending 0 + MVI C,SETDMA ;initialize dma address.. + LXI D,TBUFF ;..to default buffer. + CALL BDOS + XRA A ;clear search 'fcb'.. + STA FCBEXT ;extent byte.. + STA FCBRNO ;..and record number. + LXI D,FCB ;default FCB for search + CMA + MVI C,SRCHF ;..of first occurrence. + CALL BDOS + INR A ; 0ffh --> 00h if no file found + RZ + +; put each found name in ring. a-reg --> offset into 'tbuf' name storage + +SETRING: + DCR A ;un-do 'inr' from above and below + ADD A ;times 32 --> position index + ADD A + ADD A + ADD A + ADD A + ADI TBUFF+1 ;add page offset and.. + MOV L,A ;..put address into.. + MVI H,0 ;..hl-pair. + XCHG + LHLD RINGPOS ;pointer to current load point in ring + XCHG + MVI B,ELTSIZ ;move name to ring + CALL MOVE + XCHG ;de-pair contains next load point address + SHLD RINGPOS ;store and search.. + MVI C,SRCHN ;..for next occurrence. + LXI D,FCB ;filename address field + CALL BDOS + INR A ;if all done, 0ffh --> 00h. + BRNZ SETRING ;if not, put next name into ring. +; +; All filenames in ring -- setup ring size and copy-buffer start point +; + LHLD RINGPOS ;next load point of ring is start of buffer + SHLD RINGEND ;set ring end.. + MVI M,0 ;store ending 0 +; +; Sort ring of filenames +; +SORT: + LHLD RING ;initialize 'i' sort variable and.. + SHLD RINGI + LXI D,ELTSIZ ;..also 'j' variable. + DAD D + SHLD RINGJ +; +; Main Sort Loop +; +SORTLP: + LHLD RINGJ ;compare names 'i & j' + XCHG + LHLD RINGI + PUSH H ;save position pointers.. + PUSH D ;..for potential swap. + +; sort by file name and type + MVI B,ELTSIZ ; # of characters to compare + CALL CMPSTR ;do comparison + +; final test for swapping purposes +NOCMP: + POP D + POP H + MVI B,ELTSIZ + BRNC NOSWAP +; +; Swap if 'j' string larger than 'i' +; +SWAP: + MOV C,M ;get character from one string.. + LDAX D ;..and one from other string. + MOV M,A ;second into first + MOV A,C ;first into second + STAX D + INX H ;bump swap pointers + INX D + BJNZ SWAP +NOSWAP: + LHLD RINGJ ;increment 'j' pointer + LXI D,ELTSIZ + DAD D + SHLD RINGJ + XCHG ;see if end of 'j' loop + LHLD RINGEND + CALL CMPDEHL + BRNZ SORTLP ;no, so more 'j' looping. + LHLD RINGI ;bump 'i' pointer + LXI D,ELTSIZ + DAD D + SHLD RINGI + DAD D ;set start over 'j' pointer + SHLD RINGJ + XCHG ;see if end of 'i' loop + LHLD RINGEND + CALL CMPDEHL + BRNZ SORTLP ;must be more 'i' loop to do + RET +; +; left to right compare of two strings (de-pair points to 'a' string; +; hl-pair, to 'b'; b-reg contains string length.) +; +CMPSTR: + LDAX D ;get an 'a' string character and.. + CMP M ;..check against 'b' string character. + RNZ ;if not equal, set flag. + INX H ;bump compare.. + INX D ;..pointers and.. + BJNZ CMPSTR ;..do next character. + RET + +; +; Process command from table +; +CTPROC: + MOV B,A ;command in B + LXI H,CTABLE ;pt to table + MOV A,M ;any cursor commands? + ORA A + JNZ CTPR1 + LXI H,CTAB1 +; +; Command table scanner +; HL = Table +; B = Command Letter +; +CTPR1: + MOV A,M ;get table command char + ORA A ;end of table? + RZ ;done if so + CMP B ;match? + BRZ CTPR2 + INX H ;skip to next entry + INX H + INX H + BR CTPR1 +CTPR2: + INX H ;pt to address + MOV A,M ;get low + INX H + MOV H,M ;get high + MOV L,A + XTHL ;address on stack + RET ;"jump" to routine + +; Command Table +CTABLE: + DB 0 ;user cursor positioning + DW UP + DB 0 + DW DOWN + DB 0 + DW FORWARD + DB 0 + DW REVERSE +CTAB1: + DB CTRLC ;if exit, then to opsys + DW OS$CCP + DB CTRLR ;screen refresh? + DW RUNSH3 + DB CTRLE ;system cursor positioning + DW UP + DB CTRLX + DW DOWN + DB CTRLD + DW FORWARD + DB CTRLS + DW REVERSE + DB CR ;nop + DW LOOP + DB '+' ;jump forward + DW JUMPF + DB '-' ;jump backward + DW JUMPB + DB ' ' ;go forward + DW FORWARD + DB BS ;back up? + DW REVERSE +; + DB 0 ;end of table + +; +; COMMAND: - (Previous Screen) +; +JUMPB: + LXI H,CURHOME ;set cursor home + SHLD CURAT + LHLD RING ;at front? + XCHG + LHLD LOCBEG + CALL CMPDEHL + BRZ JUMPBW ;back up and wrap around + SHLD LOCEND ;set new end + LXI D,-EPS*ELTSIZ ;back up + DAD D + SHLD LOCBEG ;new beginning + SHLD RINGPOS ;new position + JMP RUNSH3 +JUMPBW: + LHLD LOCBEG ;at first screen? + XCHG + LHLD RING ;pt to first element of ring + CALL CMPDEHL + BRZ JBW0 ;advance to end + LXI H,-EPS*ELTSIZ ;back up + DAD D ;first element of new local ring + BR JFW0 +JBW0: + LXI D,EPS*ELTSIZ ;pt to next screen + DAD D + XCHG + LHLD RINGEND + CALL CMPDEHL + XCHG + BRZ JBW1 + BRC JBW0 +JBW1: + LXI D,-EPS*ELTSIZ + DAD D ;pt to first element of new local ring + BR JFW0 +; +; COMMAND: + (Next Screen) +; +JUMPF: + LXI H,CURHOME ;set cursor to home + SHLD CURAT + LHLD LOCEND ;see if Local End <= Ring End + XCHG + LHLD RINGEND + CALL CMPDEHL + BRZ CMDLOOP + LHLD LOCEND ;new screen starting at LOCEND + BR JFW0 + +; +; Reset to Beginning of RING and Resume Command Looping +; +CMDLOOP: + CALL SETSCR ;reset all screen pointers +CMDLRET: + JMP RUNSH3 +; +; Reset RING Position to HL +; +JFW0: + CALL SETSCR1 ;reset RINGPOS on ... + BR CMDLRET +; +; Reset Local Ring to HL +; +JFW0A: + CALL SETSCR2 ;reset LOCBEG on ... + BR CMDLRET + +; +; COMMAND: ' ', Left-Arrow +; +FORWARD: + CALL CLRCUR ;clear cursor + CALL FOR0 ;position on screen and in ring + CALL SETCUR ;set cursor + JMP LOOPFN +; advance routine +FOR0: + LHLD RINGPOS ;at end of loop yet? + LXI D,ELTSIZ ;i.e., will we be at end of loop? + DAD D + XCHG + LHLD LOCEND + CALL CMPDEHL ;compare 'present' to 'end' + BRNZ FORW ;to next print position + CALL CUR$FIRST ;position cursor + LHLD LOCBEG ;set position pointer to beginning and.. + SHLD RINGPOS + RET +FORW: + LHLD RINGPOS ;advance in ring + LXI D,ELTSIZ + DAD D + SHLD RINGPOS ;new position + CALL CUR$NEXT ;position cursor + RET + +; +; COMMAND: BS, Right-Arrow +; +REVERSE: + CALL CLRCUR ;clear cursor + CALL REV0 ;position on screen and in ring + CALL SETCUR ;set cursor + JMP LOOPFN +; Back Up Routine +REV0: + LHLD LOCBEG + XCHG + LHLD RINGPOS ;see if at beginning of ring + CALL CMPDEHL + BRNZ REV1 ;skip position pointer reset if not.. + CALL CUR$LAST ;end of local ring + LHLD LOCEND ;set to end +1 to backup to end + LXI D,-ELTSIZ + DAD D + SHLD RINGPOS + RET +REV1: + CALL CUR$BACK ;back up 1 +REV2: + LHLD RINGPOS + LXI D,-ELTSIZ ;one ring position.. + DAD D ;..backwards. + SHLD RINGPOS + RET + +; +; COMMAND: Up-Arrow +; +UP: + CALL CLRCUR ;clear cursor + LHLD RINGPOS ;see if wrap around + LXI D,-ELTSIZ*4 ;4 entries + DAD D + XCHG + LHLD LOCBEG ;beginning of local screen + CALL CMPDEHL + BRC UP2 ;wrap around + MVI B,4 ;back up 4 entries +UP1: + PUSH B ;save count + CALL REV0 ;back up in ring and on screen (no print) + POP B ;get count + BJNZ UP1 + BR DOWN1A +UP2: + LHLD RINGPOS ;advance to beyond end + LXI D,ELTSIZ*4 + DAD D + XCHG + LHLD LOCEND ;compare to local end + XCHG + CALL CMPDEHL + BRZ DOWN1A ;at end, so too far + BRC DOWN1A ;beyond end, so back up + SHLD RINGPOS ;new ring position + LHLD CURAT ;advance cursor + INR H ;next line + SHLD CURAT + BR UP2 + +; +; COMMAND: Down-Arrow +; +DOWN: + CALL CLRCUR ;clear cursor + LHLD RINGPOS ;see if wrap around + LXI D,ELTSIZ*4 ;4 entries + DAD D + XCHG + LHLD LOCEND ;end of local screen + XCHG + CALL CMPDEHL + BRZ DOWN2 ;wrap around + BRC DOWN2 ;wrap around + MVI B,4 ;forward 4 entries +DOWN1: + PUSH B ;save count + CALL FOR0 ;advance in ring and on screen (no print) + POP B ;get count + BJNZ DOWN1 +DOWN1A: + CALL SETCUR ;set cursor + JMP LOOPFN +DOWN2: + LHLD CURAT ;preserve column + MOV B,L ;column number in B + LXI H,CURHOME ;home position + SHLD CURAT ;set new position + LHLD LOCBEG ;beginning of local ring + SHLD RINGPOS ;new ring position +DOWN3: + LHLD CURAT ;check for at top of column + MOV A,L ;get col + CMP B ;there? + BRZ DOWN1A + LHLD RINGPOS ;advance in ring + LXI D,ELTSIZ ;ELTSIZ bytes/entry + DAD D + SHLD RINGPOS + LHLD CURAT ;get cursor position + LXI D,19 ;advance 19 bytes/screen entry + DAD D + SHLD CURAT + BR DOWN3 + +; +;************************************************** +; +; WORKHORSE Routines +; +; conin routine (waits for response) +; +KEYIN: + CALL CIN ;get input + JMP CAPS ;capitalize + +; +; Fill buffer with 'spaces' with count in b-reg +; +FILL: + MVI M,' ' ;put in space character + INX H + BJNZ FILL ;no, branch. + RET +; +; Check for legal filename character -- return with carry set if illegal +; +CKLEGAL: + LDAX D ;get character from de-pair + INX D ;point at next character + CPI ' ' ;less than space? + RC ;return carry if unpermitted character + PUSH H + PUSH B + CPI '[' ;if greater than 'z', exit with.. + BRNC CKERR ;..carry set. + MVI B,CHR$TEND-CHR$TBL + LXI H,CHR$TBL +CHR$LP: + CMP M + BRZ CKERR + INX H + BJNZ CHR$LP + ORA A ;clear carry for good character + POP B + POP H + RET + +CKERR: + POP B + POP H + STC ;error exit with carry set + RET + +CHR$TBL: + DB ',',':',';','<','=','>' ;invalid character table +CHR$TEND: + DS 0 +; +; Print file name pted to by HL +; Advance HL 11 bytes +; +PRFN: + MOV A,M ;check for 'noname' + CPI 1 ;no name? + BRZ PRFN1 + MVI B,8 ;8 chars + CALL PRFNS1 + MVI A,'.' + CALL COUT + MVI B,3 ;file type and fall thru +PRFNS1: + MOV A,M ;get char + CALL COUT + INX H ;pt to next + BJNZ PRFNS1 + RET +PRFN1: + CALL VPRINT + DB ' No File' + DB ' ' + DB ' ',0 + MVI B,11 ;advance 11 chars +PRFN2: + INX H ;pt to next + BJNZ PRFN2 + RET + +; +; move subroutine -- move b-reg # of bytes from hl-pair to de-pair +; +MOVE: + MOV A,M ;get hl-pair referenced source byte + ANI 7FH ;strip attributes + STAX D ;put to de-pair referenced destination + INX H ;fix pointers for next search + INX D + BJNZ MOVE + RET + +MOVEB: + PUSH H ;SAVE HL, DE + PUSH D + CALL MOVE + POP D ;RESTORE DE, HL + POP H + RET +; +; Compare de-pair to hl-pair and set flags accordingly +; +CMPDEHL: + MOV A,D ;see if high bytes set flags + CMP H + RNZ ;return if not equal + MOV A,E + CMP L ;low bytes set flags instead + RET +; +; Shift hl-pair b-reg bits (-1) to right (divider routine) +; +SHIFTLP: + DCR B + RZ + MOV A,H + ORA A + RAR + MOV H,A + MOV A,L + RAR + MOV L,A + BR SHIFTLP + +; +;************************************************** +; +; MESSAGE Routines +; +; Print VMENU Banner +; +BANNER: + CALL VCLS ;clear screen + LXI H,BANADR + CALL GOTOXY + CALL VPRINT ;print banner + DB 'VMENU, Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0' + IF Z80 + DB ' ',DIM,'[Z80 Code]',BRIGHT + ELSE + DB ' ',DIM,'[8080 Code]',BRIGHT + ENDIF + DB 0 + RET +; +; Print DU:DIR and MORE Message +; +DIRMORE: + LXI H,DUADR ; POSITION CURSOR + CALL GOTOXY + CALL RETUD ; GET CURRENT DISK AND USER + MOV A,B ; PRINT DISK + ADI 'A' + CALL COUT + MOV A,C ; PRINT USER + CALL PAFDC ; FLOADING DECIMAL + MVI A,':' + CALL COUT + CALL DUTDIR ; GET DIR NAME + BRZ NODIR + MVI B,8 ; 8 CHARS IN NAME +PRNAME: + MOV A,M ; GET CHAR + CPI ' '+1 ; CHECK FOR DONE + BRC PRMORE + CALL COUT ; PRINT CHAR + INX H + BJNZ PRNAME + BR PRMORE +NODIR: + CALL VPRINT + DB 'Noname',0 +PRMORE: + LDA MORE ; CHECK FLAG + ORA A ; 0=NO MORE + RZ + LXI H,MOREADR + CALL GOTOXY ; POSITION CURSOR + CALL VPRINT + DB DIM,'[More Files]',BRIGHT,0 + RET + +; +; Home the Cursor +; +CUR$FIRST: + LXI H,CURHOME ; HOME ADDRESS + SHLD CURAT ; SET CURSOR POSITION + JMP GOTOXY +; +; Last File Position +; +CUR$LAST: + LHLD RINGPOS ; ADVANCE + SHLD LOCPOS ; SET LOCAL POSITION +CL0: + LXI D,ELTSIZ + DAD D + XCHG + LHLD LOCEND ; END OF LOCAL RING? + CALL CMPDEHL + RZ + XCHG ; NEW POSITION + SHLD LOCPOS + PUSH H ; SAVE POSITION + CALL CUR$NEXT ; ADVANCE CURSOR + POP H ; GET POSITION + BR CL0 +; +; Advance the Cursor +; +CUR$NEXT: + LHLD CURAT ; COMPUTE NEW POSITION + MOV A,L ; CHECK FOR NEW LINE + ADI 19 ; SIZE OF EACH ENTRY + CPI 70 + BRNC CN1 ; ADVANCE TO NEXT LINE + MOV L,A ; NEW POSITION + SHLD CURAT + JMP GOTOXY +CN1: + MOV A,H ; GET LINE + LXI H,CURHOME ; GET COL + MOV H,A ; SET LINE AND FALL GO TO CUR$DOWN + SHLD CURAT + BR CUR$DOWN +; +; Back Up the Cursor +; +CUR$BACK: + LXI H,CURHOME ; GET HOME + XCHG ; ... IN DE + LHLD CURAT + CALL CMPDEHL ; COMPARE + BRZ CUR$LAST ; GOTO END IF LAST + MOV A,L ; CHECK FOR FIRST COL + CMP E + BRZ CB1 + SUI 19 ; BACK UP ONE COL + MOV L,A + SHLD CURAT ; NEW POS + JMP GOTOXY +CB1: + MOV A,E ; GET HOME COL + ADI 19*3 ; GET LAST COL + MOV L,A + DCR H ; PREV LINE + SHLD CURAT + JMP GOTOXY +; +; Move Cursor Down One Line +; +CUR$DOWN: + LXI H,CURHOME ; GET HOME ADDRESS + MOV B,H ; LINE IN B + LHLD CURAT ; GET CURRENT ADDRESS + INR H ; MOVE DOWN + MOV A,H ; CHECK FOR TOO FAR + SUB B + CPI EPS/4 + BRNC CD1 + SHLD CURAT ; OK, SO SET POSITION + JMP GOTOXY +CD1: + MOV A,L ; GET COL + LXI H,CURHOME + MOV L,A + SHLD CURAT + JMP GOTOXY +; +; Refresh Screen +; +REFRESH: + LHLD CURAT ; SAVE CURSOR AND RING POSITIONS + SHLD SCURAT + LHLD RINGPOS + SHLD SRINGPOS + CALL BANNER ; PRINT BANNER + CALL DIRMORE ; PRINT CURRENT DIRECTORY AND MORE MESSAGE + CALL DISPFILES ; DISPLAY FILES + CALL DISPMENU ; DISPLAY MENU + LHLD SCURAT ; RESTORE CURSOR AND RING POSITIONS + SHLD CURAT + LHLD SRINGPOS + SHLD RINGPOS + CALL SETCUR ; RESTORE CURSOR ON SCREEN + call atcmd + call vprint + db DIM,'Command (CR=Menu',0 + lda cpmok ;OK to return to ZCPR3? + ora a ;0=No + cnz prmptc + lhld cstart ;pt to first char + mov a,m ;get it + ani 7FH ;mask + cpi MFIRST + cnz prmptf ;print previous menu prompt if not first menu + lda nmenfl ;next menu available? + ora a ;0=No + cnz prmptn ;print next menu prompt + call vprint + db ') - ',BRIGHT,0 + RET + +; +; Print ZCPR3 Return Prompt +; +prmptc: + call vprint + db ', ^C=Z3',0 + ret +; +; Print First/Last Menu Chars +; +prmptf: + call vprint + db ', ',RFM,'=1st Menu, ',RLM,'=Prev Menu',0 + ret +; +; Print next menu message +; +prmptn: + call vprint + db ', ',RNM,'=Next Menu',0 + ret + +; +; Refresh File Display +; +DISPFILES: + CALL CUR$FIRST ; POSITION CURSOR AT FIRST POSITION + LHLD LOCBEG ; PT TO FIRST FILE NAME + SHLD LOCPOS ; SAVE LOCAL POSITION +DSPF1: + LHLD LOCEND ; AT END? + XCHG + LHLD LOCPOS + CALL CMPDEHL + JZ CUR$FIRST ; POSITION AT FIRST ENTRY AND RETURN + MVI B,4 ; 4 SPACES + MVI A,' ' +DSPF2: + CALL COUT + BJNZ DSPF2 + CALL PRFN ; PRINT FILE NAME (HL IS ADVANCED) + SHLD LOCPOS + CALL CUR$NEXT ; ADVANCE CURSOR + BR DSPF1 +; +; Position Cursor at CURAT +; +SETCUR: + LHLD CURAT + CALL GOTOXY + CALL VPRINT + DB '-->',0 + RET +; +; Clear Cursor +; +CLRCUR: + LHLD CURAT + CALL GOTOXY + CALL VPRINT + DB ' ',0 + RET +; +; Working Message +; +WORKMSG: + CALL ERMSG + DB DIM,'Working ...',BRIGHT,0 + RET +; +; Error Message +; +ERMSG: + MVI A,0FFH ; SET ERROR MESSAGE FLAG + STA ERMFLG + LXI H,ERADR ; GET ADDRESS + CALL GOTOXY + JMP VPRINT +; +; Clear Error Message +; +ERCLR: + XRA A ; CLEAR FLAG + STA ERMFLG + LXI H,ERADR ; POSITION + CALL GOTOXY + PUSH B + MVI B,76-(ERADR MOD 255) + CALL VEREOL ; ERASE TO EOL + POP B + RET +; +; Position at Command Prompt and Clear It +; +ATCMD: + LXI H,CPMADR ; POSITION + CALL GOTOXY + PUSH B + MVI B,76-(CPMADR MOD 255) + CALL VEREOL ; CLEAR MESSAGE + POP B + LXI H,CPMADR ; REPOSITION + JMP GOTOXY +; +; Position at Bottom of Screen and Prompt for Continuation +; +BOTTOM: + LXI H,BOTADR ; POSITION + CALL GOTOXY +; +; Prompt for Continuation +; +SAK: + CALL VPRINT + DB DIM,'Strike Any Key -- ',BRIGHT,0 + JMP KEYIN + +; +; Open Menu File +; +menuload: + lhld menufcb ;pt to menu fcb + inx h + push h + call getfn2 ;copy FCB into MENU FCB + lxi d,11*2 ;pt to 3rd system file name + dad d + pop d ;DE pts to first char of MENU FCB file name + mvi b,11 ;11 bytes + call moveb + dcx d ;pt to fcb + call initfcb ;init fcb + call f$open ;open file + brz menu1 ;abort if no menu + call vprint + db CR,LF,' File ',0 + lhld menufcb ;pt to file name + inx h + call prfn + call vprint + db ' Not Found',0 + jmp os$ccp ;abort +; +; Load Menu File from disk +; +menu1: + call menustrt ;get address of buffer for menu load + xchg ;... in DE +; +; Load next block from Menu File -- DE pts to Load Address +; +mload: + lhld menufcb ;pt to FCB + xchg ;... in DE, HL = load address + call f$read ;read in next block + ora a ;error? + brnz mloaddn ;load done if error + lxi d,tbuff ;copy from TBUFF into memory pted to by HL + xchg ;HL is source, DE is dest + mvi b,128 ;128 bytes + call move + lhld bdos+1 ;get address of top of TPA + mov a,h ;set to bottom of ZCPR3 + sui 10 + cmp d ;about to overflow ZCPR3? + brnc mload ;continue if not + call vprint + db CR,LF,' TPA Full',0 + jmp os$ccp + +; +; Init Flags and Clear MSB of all bytes in Menu File +; +mloaddn: + call f$close ;close input file + mvi m,CTRLZ ;ensure EOF mark + xra a ;A=0 + sta cpmok ;turn off ZCPR3 return flag + call menustrt ;pt to first menu char + push h ;save ptr +menul1: + mov a,m ;get byte + ani 7FH ;mask out MSB + mov m,a ;put byte + inx h ;pt to next + cpi CTRLZ ;EOF? + brnz menul1 ;continue if not +; +; Mark all Menu Sections +; + pop h ;HL pts to first byte of menu + mvi b,0FFH ;set menu counter +; +; Skip to Next Menu +; +menul2: + mov a,m ;get byte + cpi CTRLZ ;error? + jz mstrerr ;structure error if so + cpi MINDIC ;menu indicator (start of menu?) + brnz menul4 + ori 80H ;beginning of menu found -- set MSB + mov m,a ;put byte + inr b ;increment menu count + inx h ;pt to next + mov a,m ;get byte + cpi MINDIC ;menu indicator (end of menu?) + brz menul5 ;done if so + cpi CTRLZ ;error? + jz mstrerr +; +; Skip out Menu Display +; +menul3: + call lskipt ;skip to beginning of next line + brz menul4 ;found menu indicator + cpi CTRLZ ;error? + jz mstrerr + br menul3 ;continue if not +; +; Skip to Next Menu +; +menul4: + call lskipt ;skip to beginning of next menu + brz menul2 ;resume if at beginning of next menu + cpi CTRLZ ;error? + jz mstrerr + br menul4 +; +; Check Menu Options +; +menul5: + call menustrt ;pt to first menu char + mov a,m ;check for option + cpi GOPTION ;global option char? + jnz mfile ;if no global option, scan for menu files + inx h ;pt to option char +option: + mov a,m ;get option char + call caps ;capitalize + inx h ;pt to next + cpi CR ;done? + brz optdn + cpi XOPTION ;exit OK? + jnz mstrerr ;option error if not +; +; Disable Exit to ZCPR3 +; + mvi a,0FFH ;turn flag off + sta cpmok + br option +; +; Option Processing Done +; +optdn: + inx h ;skip LF + +; +; Check for Menu Display +; +mfile: + mov a,m ;get first byte + ani 7FH ;mask + cpi MINDIC ;start of menu? + jnz mstrerr + +; +; Check and Set First Menu +; + shld mstart ;save start address of first menu item + mvi m,MFIRST+80H ;set first char of first menu + ret + +; +; Entry Point for Menu Display +; +dispmenu: + mvi h,epsline ;pt to first line of menu + mvi l,1 ;col 1 + call gotoxy ;position there + lhld mstart ;pt to first byte of current menu + mvi b,1 ;shell message 1 contains menu number + call getshm ;get menu number flag + cnz mchc0 ;skip to proper menu + shld cstart ;save start address of current menu + inx h ;pt to first char after menu indicator char +dispm1: + mov a,m ;get char + call caps ;capitalize + inx h ;pt to next + cpi CR ;end of options? + brz dispm2 + cpi XOPTION ;ZCPR3 return? + jnz mstrerr ;error if not +; +; Toggle ZCPR3 Return Option +; + lda cpmok ;get flag + cma ;toggle + sta cpmok + br dispm1 +; +; Done with Menu-Specific Option Processing +; +dispm2: + call lskip ;skip to LF + call getnlines ;get line count in A + sta pagcnt ;set count +; +; Print Next Line of Menu if not Starting with ESCAPE Char (MINDIC) +; +dispm3: + mov a,m ;get first char of line + ani 7FH ;mask + cpi MINDIC ;done? + brz dispm4 + call expand ;expand line pted to by HL + push h ;save ptr to next line + xchg ;HL pts to expanded line + call lprintx ;print line pted to by HL ending in + pop h ;pt to next line + br dispm3 +; +; Done with Menu Display +; +dispm4: + call lskip ;skip to first char of next line (option char) + shld optstrt ;set start address of options +; +; Determine if Another Menu Follows +; + xra a ;A=0 + sta nmenfl ;set for no next menu +dispm5: + mov a,m ;ok? + ani 7FH ;mask + cpi CTRLZ ;error if EOF + jz mstrerr + cpi MINDIC ;next menu? + brnz dispm6 + inx h ;double indicator if end + mov a,m + cpi MINDIC ;end? + rz + mvi a,0FFH ;set next menu + sta nmenfl + ret +dispm6: + call lskip ;skip to next line + br dispm5 + +; +; Ready for Option Input +; The following Flags/Values are now set: +; OPTSTRT -- Address of First Menu Option +; NMENFL -- 0 if no next menu, 0FFH if next menu +; CSTART -- Address of First Char of Current Menu +; MSTART -- Start Address of MINDIC Before Menu Display +; (MSTART)=MFIRST with MSB Set +prompt: + lxi h,cpadr ;position for input + call gotoxy + mvi a,0ffh + sta pagcnt ;turn off paging + call keyin ;get user input + PUSH PSW ;save command + LDA ERMFLG ;error message? + ORA A ;0=no + CNZ ERCLR ;erase old error message + POP PSW ;get command + ret + +; +; Process Command +; +cmdproc: + call ctproc ;process movement or exit command + +; +; Check for Command to Return to First Menu +; + lhld cstart ;pt to first char of menu + mov a,m ;get it + ani 7FH ;mask + cpi MFIRST + brz prmpt1 + mov a,b ;get command + cpi RFM ;return to first menu? + brnz prmpt1 + lhld mstart ;pt to first menu + mvi b,1 ;shell message 1 is menu number + xra a ;A=0=menu 0 + jmp putshm ;reenter shell at first menu + +; +; Check for Command to go to Next Menu +; +prmpt1: + lda nmenfl ;next menu available? + ora a ;0=No + brz prmpt2 + mov a,b ;get command + cpi RNMP ;goto next menu? + brz rnmx + cpi RNM ;goto next menu? + brnz prmpt2 +rnmx: + mvi b,1 ;shell message 1 is menu number + call getshm ;increment menu number + inr a + call putshm ;reenter menu system at new menu + jmp os$ccp1 +; +; Check for Command to go to Last Menu +; +prmpt2: + mov a,m ;get menu char + ani 7FH ;at first menu? + cpi MFIRST + brz prmpt3 ;skip if at first menu + mov a,b ;get command + cpi RLMP ;goto last menu? + brz lstmnu + cpi RLM ;goto last menu? + brnz prmpt3 +lstmnu: + mvi b,1 ;shell message 1 is menu number + call getshm ;decrement menu number + dcr a + call putshm ;reenter shell at last menu + jmp os$ccp1 +; +; This is where additional functions may be added +; +prmpt3: + +; +; Check for Option Letter +; + lhld optstrt ;pt to first option char +prmptx: + mov a,m ;get it + ani 7FH ;mask MSB + call caps ;capitalize + cpi MINDIC ;at next menu? + rz + cmp b ;match user selection? + brz prmptd + call lskip ;skip to next line + br prmptx + +; +; Process Option +; +prmptd: + mvi b,0 ;shell message 0, bit 7 = wait flag + call getshm + ani 7FH ;set no wait + call putshm + inx h ;pt to first letter of command + mov a,m ;get it + cpi MCMD ;invoke other menu? + jz mchcmd ;menu change command + cpi WOPTION ;turn on wait? + brnz prmptg + mvi b,0 ;shell message 0, bit 7 = wait flag + call getshm + ori 80h ;set wait flag + call putshm ;set shell message + inx h ;skip option char +prmptg: + call expand ;expand line, DE pts to result +; +; Run Command Pted to by DE +; +runcmnd: + call getcl1 ;get address of command buffer + mov b,h ;... in BC also + mov c,l + mvi a,4 ;HL=HL+4 for address of first char + add l + mov l,a + mov a,h + aci 0 + mov h,a + mov a,l ;store address + stax b + inx b + mov a,h + stax b +; +; Copy Command Line in DE into Buffer in HL +; +cmdcpy: + ldax d ;get command letter + call caps ;capitalize it + ora a ;done? + brz ccpyd + cpi CR ;done? + brz ccpyd + cpi PCHAR ;prompt? + brz ccpyp + mov m,a ;store it + inx h ;pt to next + inx d + br cmdcpy +ccpyd: + mvi m,0 ;store ending 0 + jmp os$ccp1 ;optionally display command +; +; Prompt User for Input and Accept It +; +ccpyp: + inx d ;pt to first char of prompt + call crlf ;new line +ccpyp1: + ldax d ;get char + cpi PCHAR ;end of prompt? + brz ccpyp2 + cpi CR ;new line? + brz ccpyp3 + call cout ;echo char + inx d ;pt to next char + br ccpyp1 ;continue looping +ccpyp2: + inx d ;pt to char after closing PCHAR +ccpyp3: + push d ;save ptr to next char + xchg ;DE pts to buffer + mvi a,0FFH ;capitalize input from user + lhld ibuf ;input line buffer + call bline ;get input from user + xchg ;HL pts to buffer, DE pts to user input +cmdlp: + ldax d ;get char from user + ora a ;end of input? + brz cmdlp1 ;store rest of line + mov m,a ;store char + inx h ;pt to next + inx d + br cmdlp +cmdlp1: + pop d ;DE pts to next char, HL pts to buffer + br cmdcpy ;resume copying + +; +; Menu Change Command -- Jump to Specified Menu +; +mchcmd: + inx h ;pt to menu number + call eval ;convert to decimal number in A + sta menuno ;save menu number + call mchc0 ;skip to desired menu to check for it + lda menuno ;get menu number + mvi b,1 ;menu number is shell message 1 + jmp putshm ;set message and reenter shell + +; +; Entry Point if MENU is Reinvoked +; +mchc0: + mov b,a ;menu number in B + inr b ;increment for following decrement + lhld mstart ;pt to start of menu +mchc1: + dcr b ;count down + rz ;done if found +mchc2: + call lskipt ;skip to next line + brnz mchc2 ;continue if not end of menu display + cpi CTRLZ ;EOF? + jz mstrerr +mchc3: + call lskipt ;skip to next line + brnz mchc3 ;continue if not at end of menu commands + cpi CTRLZ ;EOF? + jz mstrerr + inx h ;end of MENU.MNU? + mov a,m ;yes if double MINDIC + ani 7FH ;mask + cpi MINDIC + jz mstrerr ;error if so + dcx h ;pt to first char + br mchc1 ;continue + +; +; Print Line pted to by HL Ending in +; Decrement PAGCNT +; +lprintx: + call lprint ;print without + jmp crlf ;do +; +; Print Line Pted to by HL; Decrement PAGCNT +; +lprint: + lda pagcnt ;check for page overflow + ora a ;do nothing + brz lskip ;... except skip out line + mvi b,0 ;set tab counter +lprnt0: + mov a,m ;get char + inx h ;pt to next + ani 7FH ;mask MSB + cpi DIM ;goto standout mode? + brz lprnt3 + cpi BRIGHT ;end standout mode? + brz lprnt4 + cpi TAB ;tabulate? + brz lprnt2 + cpi CR ;done? + brz lprnt1 + call cout ;print + inr b ;incr tab counter + br lprnt0 +lprnt1: + inx h ;pt to first char of next line + lda pagcnt ;count down pages + dcr a + sta pagcnt + ret +lprnt2: + mvi a,' ' ;print + call cout + inr b ;incr tab counter + mov a,b ;done? + ani 7 ;every 8 + brnz lprnt2 + br lprnt0 +lprnt3: + call stndout ;enter standout mode + br lprnt0 +lprnt4: + call stndend ;end standout mode + br lprnt0 + +; +; Skip to Beginning of Next Line and Test First Char for Menu Indicator +; +lskipt: + call lskip ;skip + mov a,m ;get char + ani 7FH ;mask + cpi MINDIC ;test + ret + +; +; Skip to Beginning of Next Line +; +lskip: + mov a,m ;get char + ani 7FH ;mask out MSB + cpi CTRLZ ;EOF? + rz + inx h ;pt to next + cpi LF ;EOL? + brnz lskip + ret + +; +; Menu Structure Error -- FATAL +; This message is printed to indicate an error in the structure of +; the MENU.MNU file. +; +mstrerr: + call vprint + db CR,LF,' Structure Error',0 + jmp os$ccp + +; +; Expand Line Pted to by HL into Scratch Area +; Return with HL pting to next line, DE pting to current line +; +expand: + xchg + lxi h,noname ;init no name file + mvi m,1 ;set no entry + lhld expline ;pt to buffer + xchg +exp1: + mov a,m ;get next char + ani 7fh ;mask MSB + stax d ;store char + cpi CR ;end of line? + jz expx + inx h ;pt to next + inx d + cpi VARFLAG ;variable follows? + brnz exp1 +; +; Variable Identified - Process it +; + mov a,m ;get next char + inx h ;pt to next + cpi VARFLAG ;one variable char? + brz exp1 ;resume if double VARFLAG + dcx d ;pt to variable position + ani 7FH ;mask + call caps ;capitalize variable + cpi FPDISK ;current disk? + brz expdisk + cpi FPUSER ;current user? + brz expuser + cpi FPFILE ;filename.typ? + brz expfile + cpi FPNAME ;filename? + brz expname + cpi FPPTR ;file being pointed to? + brz exppfile + cpi FPTYPE ;filetype? + brz exptype + br exp1 ;resume expansion +; +; Expand Exit +; +expx: + inx h ;pt to line feed + mov a,m ;get it + cpi LF ;line feed? + brnz expx1 + inx h ;pt to char after line feed +expx1: + xchg ;DE pts to next line + lhld expline ;pt to expanded line + xchg ;HL pts to next line, DE pts to expanded line + ret + +; +; Expand Disk +; +expdisk: + call retud ;get disk in B + mov a,b ;get disk number (A=0) + adi 'A' ;convert to ASCII + stax d ;store letter + inx d ;pt to next + br exp1 ;resume expansion +; +; Expand User +; +expuser: + call retud ;get user in C + mov a,c ;get user number + mvi b,10 ;subtract 10's + mvi c,'0' ;set char +expu1: + sub b ;-10 + brc expu2 + inr c ;increment digit + br expu1 +expu2: + add b ;+10 + adi '0' ;convert 1's to ASCII + mov b,a ;B=1's + mov a,c ;get 10's + stax d ;store 10's + inx d + mov a,b ;get 1's + stax d ;store 1's + inx d ;pt to next + br exp1 ;resume +; +; Expand File +; +expfile: + call getfnum ;get file number + jz exp1 ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + call putn ;put file name + mvi a,'.' + stax d ;store dot + inx d ;pt to next + call putt ;put file type + pop h ;restore ptr + jmp exp1 ;resume +; +; Expand Name +; +expname: + call getfnum ;get file number + jz exp1 ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + call putn ;put file name + pop h ;restore ptr + jmp exp1 ;resume +; +; Expand Type +; +exptype: + call getfnum ;get file number + jz exp1 ;resume if error + push h ;save ptr to next char + call ptfn ;set ptr to file name + mvi a,8 ;add 8 + add l + mov l,a + mov a,h + aci 0 + mov h,a + call putt ;put file type + pop h + jmp exp1 ;resume +; +; Expand File at Pointer +; +exppfile: + mov a,m ;get option char + ani 7FH ;mask + call caps ;capitalize + cpi FPFILE ;filename.typ? + brz exppf + cpi FPNAME ;filename only? + brz exppn + cpi FPTYPE ;filetype only? + brz exppt + jmp exp1 ;abort if error +; +; Extract full filename.typ of file being pointed to +; +exppf: + inx h ;pt to next char + push h ;save ptr to next char + lhld ringpos ;set ring position + call cknoname ;check and substitute no file + call putn ;put name pted to by HL + mvi a,'.' ;store dot + stax d + inx d + call putt ;put type pted to by HL + pop h + jmp exp1 ;continue +; +; Expand file name of file being pointed to +; +exppn: + inx h ;pt to next char + push h ;save ptr to next char + lhld ringpos ;set ring position + call cknoname ;check and substitute no file + call putn ;put name + pop h + jmp exp1 +; +; Expand file type of file being pointed to +; +exppt: + inx h ;pt to next char + push h ;save ptr to next char + push d ;save DE + lhld ringpos ;pt to ring entry + call cknoname ;check and substitute no file + lxi d,8 ;pt to file type + dad d + pop d ;get DE + call putt ;put type + pop h + jmp exp1 +; +; Check to see if HL pts to 'noname' and, if so, substitute name +; +cknoname: + push d ;save DE + push b ;save BC + call ckno ;do check + pop b ;get BC + pop d ;restore DE + ret +ckno: + mov a,m ;get char + cpi 1 ;no name? + rnz + lxi h,noname ;pt to no name + mov a,m ;check for definition + cpi 1 ;no name? + rnz + xchg ;HL pts to file name + call ermsg + db 'File Name? ',0 + lhld ibuf ;pt to input buffer + mvi a,0ffh ;capitalize input + call bline ;get line from user + call sksp ;skip spaces + xchg + lhld menufcb ;pt to dummy FCB + xchg + call zprsfn ;parse file name into FCB + inx d ;pt to first char + lxi h,noname ;pt to name buffer + xchg + mvi b,11 ;copy into buffer + call moveb + ret ;HL pts to name +; +; Pt to File Name whose Number (1-4) is in A +; +ptfn: + mov b,a ;get number in B + call getfn2 ;pt to file name 2 + push d ;save DE + mov a,b ;file 0? + ora a + brz ptfnx + lxi d,11 ;size of file name and type +ptfn1: + dad d ;pt to next + bjnz ptfn1 +ptfnx: + pop d ;restore DE + ret +; +; Put File Name pted to by HL +; +putn: + mvi b,8 ;8 chars + br putc +; +; Put File Type pted to by HL +; +putt: + mvi b,3 ;3 chars +; +; Copy Chars from HL to DE for up to B bytes -- flush if space +; +putc: + mov a,m ;get next char + cpi ' ' ;skip spaces + brz putc1 + stax d ;put next char + inx d ;pt to next +putc1: + inx h ;pt to next + bjnz putc + ret + +; +; Get File Number (1 to 4) +; If valid number, return with value in A and HL pting to next char +; If not valid, return with Z and HL pting to last char (F, N, T) +; +getfnum: + mov a,m ;get char + sui '1' ;convert + brc getfne ;error + cpi 4 ;range? + brnc getfne + inx h ;pt to next char + ret ;NZ from CPI 4 +getfne: + dcx h ;error return + xra a + ret + +; +; Return Number of Lines on CRT in A +; +getnlines: + push h ;save HL + call getcrt ;get CRT info + inx h ;pt to number of lines + mov a,m ;get count + pop h ;restore HL + sui EPSLINE+1 ;subtract number of lines in file display + ; ... + 1 for footer + ret + +; +; Convert char string pted to by HL into decimal number in A +; On Entry, HL pts to first digit char +; On Exit, HL pts to after last digit char and A=number +; +eval: + push b ;save BC + mvi b,0 ;set value +eval1: + mov a,m ;get digit + sui '0' ;convert to binary + brc eval2 + cpi 10 ;range? + brnc eval2 + inx h ;pt to next digit + mov c,a ;new digit in C + mov a,b ;multiply B by 10 + add a ;*2 + add a ;*4 + add b ;*5 + add a ;*10 + add c ;add in new digit + mov b,a ;result in B + br eval1 +eval2: + mov a,b ;result in A + pop b ;restore ptr + ret + +; +; Compute Address of Buffer for Menu Load +; +menustrt: + lhld ringend ;get address of buffer for menu load + inr h ;next page + mvi l,0 + ret + +; +; S T O R A G E +; +; Initialized +; +FILERCMD: + VMNAME ;VMENU Name + VMNFILL ;Filler + DB ' ' ;one space + DB 0 ;end of shell command +JOKER: + DB '???????????' ;*.* equivalent +MENUFILE: + db 'MENU ' + db 'VMN' + +; +; Uninitialized +; +STACK: + DS 2 +BUFFER: + DS 2 ;buffer start +CURAT: + DS 2 ;current cursor position +ERMFLG: + DS 1 ;error message flag +EXPLINE: + DS 2 ;buffer to expand line in +H$DR: + DS 1 ;home drive +H$U$A: + DS 1 ;home user area (must follow H$DR) +IBUF: + DS 2 ;input line buffer +LOCBEG: + DS 2 ;local beginning of ring +LOCEND: + DS 2 ;local end of ring +LOCPOS: + DS 2 ;local ring position (temp) +MENUFCB: + DS 2 ;FCB for Menu File +NONAME: + DS 11 ;dummy user-defined file name +RING: + DS 2 ;ptr to beginning of ring +RINGI: + DS 2 ;ring sort pointer +RINGJ: + DS 2 ;another ring sort pointer +RINGEND: + DS 2 ;current ring end pointer +RINGPOS: + DS 2 ;current ring position in scan +SCURAT: + DS 2 ;save cursor position +SRINGPOS: + DS 2 ;save ring position +; +; Menu Buffers +; +more: + ds 1 ;More Files Flag +optstrt: + ds 2 ;Address of First Option in Current Menu +mstart: + ds 2 ;Address of First Menu +cstart: + ds 2 ;Address of Current Menu +nmenfl: + ds 1 ;Next Menu Available Flag (0=No) +menuno: + ds 1 ;Number of Menu +pagcnt: + ds 1 ;Paging Counter +cpmok: + ds 1 ;OK to Return to ZCPR3 (0=No) + + END + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/VMENU24.LBR b/Images/Source/hd0/s0/u15/VMENU24.LBR new file mode 100644 index 0000000000000000000000000000000000000000..fdab2f952b71a6d4ccd263ed989bc445ca3142a0 GIT binary patch literal 77184 zcmc$_bzIZ$+c!MMHp1G7(Xi1V;OJ5*N5|;y?(Xgqq+6s@V2Gqe2nvXF36dfqNU4Mh z&xh~td)@bQUH5bU{rKV!x3iA(IFEiG1EK!+KM;rz-E8IYwd_A}|yL zH~jCzATo5QJ^-%wP$l zO~NK?NkOK^p03odNia9$C0?NRbrtm9L2Fjv_l|v})q|ufv*8rGlZ5E6lOTGV zDJrzZ(i?+H3rB zku?!-1K|`Y?1C~eUu@v;wSnzU$ehcN1wQv#de$acLO$QvaL@C;%<_brT~FupzSs&B ziUbOlmJFeI;X_b#vB#3D$YZsE%+jyl7~rfR|A5dfX-hc$hv0Iq4kP#OQw}>-ck+jV z$fA!hZJLUa95{Ihks&1EU9I?Oe=h-BEcF28OLqoxzcEL;c>Xaa4TIL z79C2Lj_B|)E}8MbU3)v$Iic`a-vmVmJB+cRpPQ-8xBZkBVHeO#M9}NpkL$cfUM^GN zLSry@6YinunI1$B8yF1sUiW-0>Y?p7ugI`?Sf=R_*S{T0H(>AiGI+`1LMBr)U`^Cc z-ZMKkgRT;>Zu3Pt!b34`yxWIgI)2re=@t}RZ}@3iCN>@RH~h~ ze{d8xaW{_|<4eD|DdjtevB}J?uPxYWbeMHpcYDj%@el#?Rq&e%2r`c0oxC zp2Z`HeCJX1u=x}9?2I#KUG7d7>0@sDoLg^hueSbDJLu$kHfc$7)cs-+SsPL=$aX|H z$EGZEyRIgHy{^QLmaE}q25UNd+Cknbm0P@WlzrB1n}QE5c-}IH)bbvY`(rRVUquh{ zie*f>VVhO4S4Hi!Tjg&TXc@lr-jMMyo6jZoe*ScP$U3{|Mkz8?>-DYJG?+p9B;^;U zzLcWRd8~eP10DBLl0;qCPM4lGdY-tMltlQ`(l}Z<>{;3@`cvz_;_sr7B+etOuoo+T zGHdU%5-6g|gp}3R5)4T#F|08xW7og#E@#OYdD2J^ zlZ_Ib+u3;3K_hCw$`N|GHq=Ns?(seA8f|E#DmP>$fxNdy=Sk)%Gkgw&=nc>zS+(Ga z>g`3y2BTC@ZM~~aR3XODFhhiR**Hj{lBXKMc@z;n*lm;n82&q%x1-F1IrIz01iZP143(iv^ zwUiBmbO!3n#)4Cy`#p-8SJA8I)FCO=tA}#q!Lsx(ppiEt#xU`w4wOE`XxY#Scpf6s z0!NIdW`;;Ym3KMi8VRIXR60NiwiP*Iv=|bi4CQjzNFnJS3WG$X$PfMGEosOz4DwoC(SQ*Gz)n%L3Nc?+GH1uks--8ct+`A8QCXr zLs-KkRT)0lVacAvN zVQ`jKR~uYa;oK1XRHj*QrU-i|8n1mV+wcfS1U>kGxZ8#h*y50gxP_URkjiI^lVmnH zVJdnWGbtMsz&nq+9Rsf*mxXJT8a{ls%EKwEqFIOO;6LN8E~8IQbC>QkNv;(vRsi=4 zldRr>Z~x&o%7j()G*te=RAlsdb(ve#c8fF68nJ@VjGpoocQ>t{yX9Ow%_Mm`GFT=? z@pa+P05u^l`jtv?Rwm6uB2V>9{HL#<5=ha{V_3%C5am;` zd#Fu}>Li}H^g62!K03f>TYu(vaF82RC%8`*w>|jH1Wh$s2q6ts->sjdtXu1Sr%&8HtCO zlgm<9em1Oo#qN4y=BPlz7UPPcq@SW>pG#=P~{;CJqB&|3VBG?W#;>Uc?>B=2)NoX%>j zaQeqMGBAVvTT~Hel!p;XFNmXiUotrh_pub?ud%~%I6-Z(*hBy_yNTh0n=8hwM?$bs z`BHA5An8 zZp1)V$-m({i|Ml7b6zi=UGpoc+ypnxYP|6oY+zcjmQ^A?j->ncY#HgM3v9 z>{bt7Z}gwhQ;mBUBCP|>Rt@adiO7)gBeIH^Bh;)u2*cnaHG3KL24pj_cdV=_H0i~# zq!wsfum?++WPLjt-%h}RZKKuS^b-;d_I z)7vj|psRux2z)PX;WbU9_a!D>GN%0pDo>q(b)HGngFd(Cj_-x}Djx-0TlT;aeQL?% z-@$>AvtK8JqSUR3)(JOf`M_Cj=^lvpzK}6oU^icU*=qdw2?x&6)`Al?(ZZiD8I03{ zy!Vglz8mVLg6fEmKg~?wSO>q)y@!tVf1jApks@Cz0k}AbLl&h62e^g=Ay(#AYLzr# z23DB$*Sh8(5KnDS;X$xY)7&NJJsqqwPl&!mzpthhbBhzX4m&K5N9XgS)B;N$1a?b= z`d4z7I8nhpL~`*gQDL?vq);NLV}N$37YS<=n7pOf-k+SqdeirCkMZ!331bbLbcIYm zg5|9W^BN2-Qrvk{zxw;iH zor+|?6ZLK|?F@k|JxZp2ndY#|h#^TY@lGEo57s5oEK!0Ss0Y3)v1aCmF*6ATB2$|s zxKX4~Ulq8aXka%w)GHA^Ws*Ai9y=b(%iJV+;6-ylYG9!V3Al*rW>3ip%j!#H1IKgn z_l9{FV{(6pA5W-2J}}ArqF~SDJ{`9|Ak{Y%&Wc|TbWB8*=8#LsCu4pk8_h%2SrD-U zOY6}uT#+o9y~lPe6;Y1L_LbMtmo8nMFzTO&RGIlkXK#5kMxIW(!)RTl@r(!dWeJ1QI_&$d_60|V=h$WN}d_RZtT}xJh1vx zpCMbfJ-T4vE-2(cABmCVng7H6gEKKQw&(#T4ClemZBWK-QHA2JsI#sb4<`Jis|5C; zNV*NG$%O0}Rrc7G6xi^~DHhQ>CJ#nfRc7f@(<5>G;M$jj7PkpeBFNf%#WITAvQ_*j zIVeuc!}5AbQYN8MwiQOwlU=WN{C5%AWzZZaeCLrBtw#-aRb3KkMs7$=H>qQZPQ5&a z5G7b2aofT|62=U*A?c}J?YCKZP)nd+L)u=eJbMls5gTQEXEk zXK0=fOxiap_AA7gkkUh-$>|gy*aP-3Rzr@Lf=mOs_Zz0IAh+R2XQ)LmrED@4kMtAkf)!An2$5W|BTB==o>pefU@}(TtguGtst9FD+FEjZu+OF zx*DiN%YpKn6`Y@tfW8g#w>{WYJ6jJb{UD4xosgeiTjxc4u!BzXjrL&ITw8uiBmQ=j zcI(e4?H;18$=Pj4X2K*{HRJSJxOn{UTPaSx?S*D=r)UadP6%A3t3;qnvhXQCy$W74 zjOInhw+M*5df^MN7kcE`!-&oZQV3i}vx~UPm(xHbuO!(NDlDS6L;Qlo4{{n=SU}vd zs?jcE(Eul*Y@5?;4Y7g?clk1_8GdUUo@~9Q1tz(Co?d4Ys|!{^cfqI_49T2s?`F=> zOF{#nAalrYA!U#0Gi?&Ew=5AXnw2b?o=}~Jb59b=X$8kXEacxrNV0coDH%F*p?K-a zYOzDOCb%q)l=;o=AB{K+p>CPU47%5!xDhApp}(x-Tj6Z0@YH$IWX{)?O0X|xq)%El zmL1dkQxA+6=@Y($uziEL@IfVy`#`tT5%f@O^xIwBTjv1E8S&S%1CTT&sb5(0UQ+WF zInB=Dz;2nqlTrs4yF?CwsBYPT_OkY;_AilUq4p&~>_nDenujYcoObYc1{qxjJYgn5 z1B>=G7!HVu_xrqzx3lZviwW=V5=4Zg4jO+3duRA=?`qb`Vlc@*5&FHomo)vacc90%by<$tR!ofG zt!Y;Sbf^(WqTEc-BfO|e@$k(|hirJ{e}CLdSKXM)WiM@)~XYR#xC=qyc{ zaDu=&*CX`Q|t4$xyLV-aXNFR-HW`9;iNWBvbe=p z9iO!5ZCi=VicFva*Mq)rl2N#kS)jm^7qWtssQK>CuDUBe(THOf0n^#VIU$B(D)bVK z4S$M&&?MW@K?`0D26tj{))A0bP|MK6$~=b>kc|r5T3C^^Vt&M&Dn=_n9755?(BOha zzYJJ2myGTbn#g1=&7nV8LX11A#QzA=K1ZZ8-67~@P8Djkr26uJtGe53eP)L3h*L$d zQ?kYN3y4G|26vAc|K+(3hj2eMGLWicg+^wCel1$6M3D1DKAw;y_&J-sx}B_;x-V-p z{CL1EHAoqSb3eKzRYG!G3x|dD+grx2Qhei1k)7M))nI#I;rn~d%eY+2VMUA9S8IsK z$~b)_c)tB$4zDxSHm8PXoinxVQNtihFod)CfW#yk3~O@6Fh5EKf-;0kW54|}-Gw_? zguUIhd$Sw0Ooi|+qA=(_66Af$Wat|T^?0zyZ?G5E4?ExirLQR0-zU=KOx{G=q;?YC zNU^-ftKkXT$&ruy_;f+;K7w6Fz6EbrdI%~GBZ|qBtk{Fbeg&n;sDJJT$Brn1WGuY5 zTE1-g`P|2pMk0{LW0$0e70!dvo3M`lNl!+Im5A{lHi|Sp`Y3O~Db>4)b_McZ*ps=~ z@YXD{iL>aj`!VzE$=5u~k+PAqOlzRcx5D7@mB%78h~T3)n>=27vWrj{cu1f&u5-x$ z=88-Kcdt)uxRfvFp8B+Aifb>coL7^$3`J&OM96Z)3OOCi6Zwa2nsi~A_JBx z_VFY}C5lEPyjBV-9AbM7Z<6!fGG^v$W-i)6Y3lR)1Ex<7>>& zcocj7D69sDf`<7@Yst_>`7w+lWv2AimnuQoqmbPW=O>*PVDnb$F8>5l`pCG4eLTUs zo)^>GW}RZrPc&XLT|oAVwUN(}k&KX<&s4dH*Y5&CFSk-k>91MID5)(hL1Nu#sFH5K-@-zM2};%!tzLA!61Oemj1?!pt)BN2!LY ziK%9hW`?XSr2o!u@NlfwQl(VuK16rA`rK6cR?W%A+Z}yIQ=Xo~Hw#!FagRIv)Yj5; zaPOnndccW?Z&od`gCJSGe)x79zZBKd0{Q=$T|E9fPvPj6x?4ZgPGl z{Pd*>DYZV%wN5Xze4hJ5-h9KwsI_64uX3r152Ew8E^n0{{UI^S$b~{D4eq>oYtP6- z#}BVlF0$NncxHWJ$Iu!6z_I^9hdG1rPMan)(^H9Dqmvq^OLS}PB1`k4^~b8+MD-vQ zr{I#<{uj2M6bcV}kr-D|*cO-6*P4VRVXz{3=}V%_+11n4=1E>OKh>sZITY~jqP!>J zFSwR>?Xo#d`W0fevz+p3eIIao{cykBD>m{a`9vP#ijGZ)qGLY7iHN?G+b?P}F3s2Q zw|^4)vu8F%(`iiyNzrTmcbvWc#pCcNd)_&w4W41XqG1c2Mvw#k{VGRDcCLlrkDVG9 zTG37LS?Uu%YncV^(yrl%rcPEy>o~jkDFr9L5s#Ln*zM&XCD+7dBjL&IM$+95uu&zu z?9mT&V&``%z+i6XUa5@Y)u+R|X1%zR(UPCN681e)AWg>R=EC&6XK@@l%~}X_(2I>* zbW{Xh6fvA3XO;+oIyEMiQFg~SO+knir906>IZ>2k7FN_K-$ElD`!uOxUS7!V;xx<@ zvA@dHlM-CoTeTSw(Rg39w=PL$!mg1NVw-nJb#U0&2L|2yWwrLYrxezL*9?6WUV^pR zFmmEhnN`+#ByBzEUem>tP8h+zXXyl0WWJNW?v_ONrDqXqV-SVNR5cHcC6jncbncuv z`0%hdrIGUfuXC?~>kKa!R7HfADvhC}Bd3tP!#fmOpNll$Jb&zRAs*V+@+Ri6=gUFr z_82%q*T`$_%sG@|sE;sO2D_YR(X;9O^2b}iu zva8Ylzy||poebmQq%nJG@Qzd-qfa9kbtR=K=$l~f7hUX36HBK0m9B~oe-ZthEG6>G zcOK*1>A)ZbpNcbI)wI7%W#uamZDjqN2E7zIp?QGi^&OdDGy z5=}RVRU-H;`6p$!O^;Tvu?55^8FMtwv>H}lbWQNtax#0H;&}v#+GU2j6f#iil>T-# zC{OuNgh;q${LB|HM14knC?~$%W=TegOQRH<<+{Q_tlVi6fzshEG8Ylz!}UDwTF%7G zw^NOkpeJLd_QGR)suM;BmdhQ77TQGGvP^h89;^I-qw6ZJqf^*w$VsHifDpWNK;@OS z)@NIXyE(F=Y0ohnXG{~yrfmRWf1m5eG=EQzstwY_0~axlP%RfZrh86?iOg)yS8|`= ztsa_~J>bD#r@ElR^AV(|lj{Vm4x>(8$eUl$5%6t!7BcQkFzvqzTFab~Ln^Qeiw5d( z*I!8Un(I?xRk{RUHpjvWuibgaW|hH}ltlzPJF&Y@ac1S{Fr|l$|D~e!4!Lmw=p!L- zN&>eaz>_ozgPP{D4uz)YmBqNn9so(2*=&&Sw`cWCSCA=y;I+z>fy2|)r^VM^Es^c! z{GN@P%>NzZB+QVGWdnKBQRw)dg-59^8HL>%dsA8{ZFnwo$#yIZ_Kam>ui&X#kF>7@ zkDS;ZeuDrH1Q)D*QwSpRX4zwr6x4DjU1$R0!+_ zq5U{9&8lUyH$0_zMSRj=6!%S-o@$o|iFWaAm0Jq|9Oh(*TJ=UAEI_A=#j7wfjZdrA z%8jN)R6UtGwBiKV2pjUI5Upu(4Ujq%h(@3)hj-N){5d$b2?n54c3DBdHTUJsAZxfm z_gC0J@vA#_2-7n>V{vY$EoWWp8GL|2ZROTEMChpJ2-R(%AVal1nM=X>Z(%YL8`31& zId`F@hD_5jK?)N0FJD_LE-1dfJ&?w6X*e5PoLJrm*ZhIMU>Rq3a}!$L#xi|l5E=aY z>e(@r@?mPKNGgI%=C}EJUw=>|6#E8h;LO4ir5F*gPLuPUiEFb`EMJCshu4)$a7kCJ z_JZ~rnlC~i@x=SOU7jX2S%en-LIWlZx8AevmWmNcwGv8^jcFqH)>jdJF^E-EXqcvI zr+mNGN>wH-k$`sEseeOGQ5L1iZ>_fT^w!4?SQ&fo#9J@@qZtWn8w1~;XP7Y*gmp`e zb(4tSQ%HLe^O!ZDX;m#i50pN0#n0>+YhLh|kNo-0)rUftpnOD-GFlw(4PzHll9Y8e zeedUQ#^PXVA9!MpvrUMkVooh(Y8IaK?rWr^daFsSO{s}&9Nird0%fOa9LU*!#EV-> zWEK4VWZlSov0E`t^_bd4{#Nx4jzl|6Hugq0vcyUz!bR-(Cu>x+GK+L6ThGOWM4aLb zVHdA|ACIusLS`>h<_~%+Po}4N%uooNyF`}=WRsM5iXj#P(44IqfAHyk)9ZMV&r5fO zwl#xT-sl=@9y$p8i>clOZ1(4ye43ZHI=d>5*o^Ery@_hFFQ_-o4&k_bo71wmx1b^8>v;MK(-U~ z5;oRWof7LwFf7vc`6myP9p%Pkymn}R#?2+HdNjtwLL(&feXsKGDou*x!O45;skX!{@J%M=0-Lg);B)KMNc)h?qoyE}zKJoV!1~d# z`W3Ku$7*_EkbXw7M8_*phLCY!{9Ryn5H6``QsHI zu3UePC@)NL7DK-3soX5$Kt_n$l^UlG(|QHW*~$>&uZFfnU|nFEIxuOu_d48m}~D1o%`AGI-n%c$40eRQn21{ssAgwP$`I{j0UY6pk+l z5Kb+SYF*~$>j2Lp71AR6vGWvP@CPcY@o)jFmXk58w(`3WU)X+B9U*mo$oZeMoqzuJ zQ_qNQ_&f{Xp_Twjg>TD}CR%yVKJA_-@|}SmH1#JfKJpJaHl?3pQr|wDn9&BWP7AG3 zQD%>yZ3>@$lslP@Zm& z9;5U%)GIO+*a}oQb;$?5awUcDwC3ats>-gmngX4%6T@)#a0ANWl)S$_@cg>OpWVuE zzt`f%1LrQR4wd=awT+Fg5Cc|ir|jr1Oc6n$2bnEy!PM{@9cX22rn5HX^)J22;XFkZ;_3m#2?F0)`5i{@Tn4 zs;$o0zhYpJ0n-6$tyz>dMuXi8_h#1w(8nkP73R1m>j=`Hmi=RI!fJFjzfaW7N~2cw zy5w@f5vA|bOMeCH0&aJ7{Z}U%eicOkQM9J0HMm>(XRG@;F}s=hUczNbcL5caarbqf zbiwv~L}}^KGs<^Iw}9t{VkbqmFSJH$db?$d@amA)xH;^GL3US4ikfrQY;rdXcSQmj zZ;Z7vyJ?m26qXWhb8am|>UE9tOrMKSzTszt&s3H5-@9tI5~5yqiiiyz8Zow*_I$4i zSDy(S#8Lu%fQ`?-IKirRx$hZ;d`fGd^De(~B?C8>5c}gN4l22)wOsuB=KDTS(p76| zlJ!YPcosvbFXc$wW!9;gNzlKq71%jy>x!n{>s?f- zfZpa`90`q9Av#$$`MFOw6mB&$UhvD9>-f^~;#Bt6{uA{zg2NW)dyg-SzM=MR`9_(T zoeny0jh3J8Cy0Lf(?$EoXTPNTN%PC)I?-i1SI=X*>PM&#zkmc2VuAV-q2|~${N{ZW zP^=3Ip8{bdogU4}T=xAjf9L3z@A&%m`9mJ?qme&<-{&W=Q6%0AU`Fu6J;0&Li%=8r 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VMENUCK.COM b/Images/Source/hd0/s0/u15/VMENUCK.COM new file mode 100644 index 0000000000000000000000000000000000000000..920b68e413d7278a4579c8521dfe1a3f177f555a GIT binary patch literal 2688 zcmcgudu&@*89#p9XJS)3Yow%rPI4=4aqKiTrISqSE^8iJA$AyPHqh4KG`GQ7Vn>d% z#%prhb>biXU=t4shQ_4+#~w0Nsyw!?Qtqvb?-gg@AXmlOq*|4;N4lmKctRbzT9fU2UmJ*w+0fs8f{pljvdWJQ4@8b0{wBs_a%w)FOyIpe zy(shyGO@AWX6{kX*+9r8ekYSi#}-2_5d=3iCgZ8liTI41h|S79>C7BH5D4JIKah_< ziw9x(e~DuHY>WOIVQe^pbkEa>1o;jbDJE7g+VY;iG3%^@ToG4bC+j6Yv8$%Vuu(uu2yYX5=HsX@Ev3}Vl;ubn#Nr{wMR$#aP&Dj zbz&xY5`*7XPz}uZJRVIZ@uTr6r0;L1m^nUtH+Y8$e!+Ag)cH9hb^e0^bBft+D0Wja zzHcY{o!W?9Qh-tHp)Z&NAPZ~Owwizq*tPOFHY_I=a3hKS7_zUe@|35A zu0WX!k}0bDAtCKLE&5TXWbQU5oUqvMyjM5lTjZ+y^|8 zj6+Q(1LNHaditW@+W zR7`>s1~WKJA@w6hBFFgWbH?>8<$L=n3JnNle^#^E1_FlPS1LS8(i=f2PZHSyv>zZp1i~smEdO_ zn4e~)&`mC9^s(e3YkZp}Z5&X#qylr14Q+7VQVY?!Viq9o(G7jZt=o7cz~yE3sApKI zL{Zmm3@n9ib6(3dd73MVueNd!2BZuZ$a(Hsm9@jvaB#qscXAS=-el>G zx|6FA7awgV3io@ea+}NQmFz(Z-oa7uUAzU}o`a#Kr3w+XUs4Zo^cLL*0>%i0wF6?% zx;RkV)eZ7Bj2 ze!5;Qf3-CrU<7tOosFW|kB(|*ZkE5-j4#5-+UNAXIc%xa+ zKIGj9hztIioB*UAxIW!i-I+=d3HQVekFK5c2GKrC>1GPw!|U$ z8bB`pG`aN3RQYwleN|X~F}d`kDZsuY{MNW6gt0a)vJ@Uh>J_{dge~vZsCR4kdv_a9 zK5lqt7tb4Z(F*Ne7a?bG)H}s+4+I6D7@Z=G7(N+He0f@g9_keJde{YqlBkKq{IcJUJoCmVpkrqglXJSpAGdidop6_6D!0z6rOfc{i}Daris>uD#aQk z8P*`F^{SFH-W1`=JSl0fiItiTpFR1<{9 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VMENUCK.MAC b/Images/Source/hd0/s0/u15/VMENUCK.MAC new file mode 100644 index 00000000..f16f591f --- /dev/null +++ b/Images/Source/hd0/s0/u15/VMENUCK.MAC @@ -0,0 +1,551 @@ +; +; PROGRAM: VMENUCK +; AUTHOR: RICHARD CONN +; VERSION: 1.0 +; DATE: 22 July 84 +; PREVIOUS VERSIONS: None +; DERIVATION: MENUCK 1.0 (18 May 84) +; +VERS EQU 10 ;VERSION NUMBER +z3env SET 0f400h + +; +; VMENUCK is used to check the syntax of a MENU.VMN file for the ZCPR3 +; menu processor, VMENU. VMENU was optimized for size and runtime speed, and +; I tried to keep the size under 2K (and succeeded, for that matter). In +; keeping VMENU small, the error diagnostics it gives are quite limited, with +; a variety of errors producing the message "Str Err" for MENU.VMN +; structure error. +; +; VMENUCK is intended to be used to check the syntax and other features +; of a user's MENU.VMN before allowing VMENU to run with it. In this way, +; many errors may be caught before the MENU.VMN file comes into common use, +; and there is plenty of space for informative diagnostics. +; + +; +; MENU Constants +; +MCMD EQU ':' ;Menu Jump Command +MINDIC EQU '#' ;Menu Indic +GOPTION EQU '-' ;Global Option Indic +XOPTION EQU 'X' +VARFLAG EQU '$' ;Variable Flag + +; +; CP/M Constants +; +bentry equ 5 ;BDOS Entry +fcb equ 5ch ;FCB +tbuff equ 80h ;Temp I/O Buffer +cr equ 0dh +lf equ 0ah +EOF equ 'Z'-'@' ;^Z=EOF + +; +; Externals +; + ext z3init,zfname,z3log + + ext caps,crlf,eval10,retud + ext f$open,f$close,f$read + ext print,cout + ext moveb + ext phldc,padc,pfn2,pafdc + ext codend + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + + call print + db 'VMENUCK Version ' + db (vers/10)+'0','.',(vers mod 10)+'0',0 + + lda fcb+1 ;get first char + cpi ' ' ;no file name? + jz help + cpi '/' ;option? + jnz start1 +; +; Print Help Message +; +help: + call print + db cr,lf,'Syntax:' + db cr,lf,' VMENUCK dir:filename.typ <-- Check File' + db cr,lf,' VMENUCK dir:filename <-- Check filename.VMN' + db 0 + ret + +; +; Begin serious processing -- locate the file pted to by HL +; +start1: + lxi d,fcb ;pt to FCB + call z3log ;log into indicated FCB + +; +; Set File Type to MNU if not specified +; +start2: + lxi h,fcb+9 ;pt to file type + mov a,m ;get first char + cpi ' ' ;set type if + jnz start3 + push b ;save BC + lxi d,mnutyp ;set type to MNU + xchg + mvi b,3 ;3 bytes + call moveb + pop b ;get BC +; +; Try to Open the File +; +start3: + lxi d,fcb ;prepare to open file + xra a ;A=0 to select current disk + stax d + call f$open ;open file + jz readfile ;read in file if OK + call print + db cr,lf,' File Not Found',0 + ret +; +; Read in File +; +readfile: + call codend ;get address of first block +readloop: + lxi d,fcb ;read block + call f$read ;do it + ora a ;check for error + jnz readdone + lxi d,tbuff ;pt to block just read in + mvi b,128 ;128 bytes +readmove: + ldax d ;get byte + ani 7fh ;mask MSB + mov m,a ;put byte + inx h ;pt to next + inx d + dcr b ;count down + jnz readmove + xchg ;DE pts to next block + lhld bentry+1 ;get address of BDOS + mov a,h ;check for possible overflow + sui 10 ;10 pages below BDOS is limit + cmp d ;within range? + xchg ;HL pts to next block + jnc readloop ;continue read if within range + call print + db cr,lf,' TPA Overflow -- VMENU File is Too Big',0 + ret +; +; Read is Done -- Store Ending ^Z and Set Initial Values +; +readdone: + mvi m,EOF ;Store ^Z to ensure EOF + lxi d,fcb ;Close File + call f$close + mvi a,0ffh ;A = -1 + sta menunum ;set menu number + sta maxnum ;set max number of all menus + lxi h,0 ;HL=0 + shld errors ;Set Error Count to 0 + inx h ;HL=1 + shld linenum ;Set Line Number to 1 +; +; Count Number of Menus +; + call codend ;Pt to First Byte + mov a,m ;get first byte +; +; Skip to Beginning of Menu Display +; +mdskip: + cpi EOF ;EOF? + jz mdone + cpi MINDIC ;beginning of display? + jz mcgo ;now go skip commands + call lskip ;skip to next line + jmp mdskip +mcgo: + inx h ;pt to char after MINDIC + mov a,m ;another MINDIC? + cpi MINDIC + jz mdone ;done if 2 in a row + lda maxnum ;get menu number count + inr a ;found another one + sta maxnum +mcskip: + call lskip ;skip to next line + jz mdone ;done if premature EOF + cpi MINDIC ;end of display? + jnz mcskip + inx h ;pt to char after MINDIC + mov a,m ;get it + jmp mdskip +; +; Check for Valid First Character +; +mdone: + call print + db cr,lf,'VMenu Syntax Check on ',0 + call retud ;get dir + mov a,b ;get disk + adi 'A' + call cout + mov a,c ;get user + call pafdc + mvi a,':' + call cout + lxi d,fcb+1 ;pt to FCB + call pfn2 + call print ;Print Header + db cr,lf + db cr,lf,' Line Comment/Error Message' + db cr,lf,' ---- ---------------------',0 + + xra a ;set no global option + sta gopt + call codend ;get address of first byte + mov a,m ;get first char + cpi GOPTION ;global options? + jnz newmenu ;process globals + mvi a,0ffh ;set global option + sta gopt + call lprint + db '** Global Options Detected **',0 + call optchk ;check options + xra a ;set no global option + sta gopt + call nxtline ;advance to next line +; +; This is the main entry point for processing a menu +; +newmenu: + mov a,m ;get Menu Indicator + cpi MINDIC ;must be MINDIC + jz nm1 + call newerr ;add to error count + call lprint + db ' New Menu Expected, But ',MINDIC,' NOT Found -- ' + db 'Aborting',0 + jmp errxit +; +; Print that we have a new menu +; +nm1: + call lprint + db '** Menu Number ',0 + lda menunum ;increment menu number + inr a + sta menunum + call padc + call optchk ;check options +; +; Skip Thru Display +; +nm2: + call nxtline ;skip to next line + jnz nm2a ;continue if no EOF +earlyeof: + call newerr ;add to error count + call lprint + db ' Premature EOF Encountered',0 + jmp errxit +nm2a: + cpi MINDIC ;Menu Indicator? + jnz nm2 ;Continue +; +; Move Thru Menu Commands +; +nm3: + call mcmd1 ;check Menu Command Line + jz earlyeof + call lcheck ;check line + cpi MINDIC ;check for menu indicator + jnz nm3 ;continue until menu indicator encountered + inx h ;check for 2 indicators in a row for end + mov a,m ;get 2nd char + dcx h ;back up in case it is not + cpi MINDIC ;2 in a row? + jnz newmenu ;process as new menu if not +errxit: + call lprint + db '** End of Menu Check **',cr,lf,' ',0 + lhld errors ;check error count + mov a,h ;check for Zero + ora l + jnz err1 + call print + db 'No',0 + jmp err2 +err1: + call phldc ;print as decimal +err2: + call print + db ' Errors Detected',0 + ret + +; +; Utilities +; + +; +; LPRINT -- Print "Line # "+text +; +lprint: + call crlf ;new line + push h ;save HL + lhld linenum ;get line number + call phldc ;print as decimal + pop h ;restore HL + mvi a,' ' ;print + call cout + jmp print ;print text +; +; NXTLINE -- Advance to next line, check for EOF, and increment Line Number +; LSKIP -- Advance to next line and check for EOF +; Return with HL pting to first char of next line and Z Set if EOF +; +nxtline: + push h ;increment line count + lhld linenum ;add 1 + inx h + shld linenum + pop h ;fall thru to skipping +lskip: + mov a,m ;get char + cpi EOF ;EOF? + rz + inx h ;pt to next + cpi lf ;line feed? + jnz lskip ;continue if not + mov a,m ;get first char of next line + cpi EOF ;check for EOF + ret +; +; MCMD1 -- Check Menu Line, check for EOF, and increment Line Number +; Return with HL pting to first char of next line and Z Set if EOF +; +mcmd1: + mov a,m ;get char + cpi EOF ;EOF? + jz mcmdx + inx h ;pt to next + cpi VARFLAG ;variable? + jz mcmd2 + cpi lf ;line feed? + jnz mcmd1 ;continue if not +mcmdx: + push h ;increment line count + lhld linenum ;add 1 + inx h + shld linenum + pop h ;fall thru to skipping + mov a,m ;get first char of next line + cpi EOF ;check for EOF + ret +; +; Check Variable +; +mcmd2: + mov a,m ;get char + ani 7fh ;mask + call caps ;capitalize + inx h ;pt to next + cpi VARFLAG ;OK if double VARFLAG + jz mcmd1 + cpi 'D' ;OK if D + jz mcmd1 + cpi 'U' ;OK if U + jz mcmd1 + cpi 'F' ;filename.typ? + jz mcmd3 + cpi 'N' ;filename? + jz mcmd3 + cpi 'T' ;filetype? + jz mcmd3 + cpi 'P' ;pointed-to file? + jz mcmd6 +; +; Invalid Variable +; + dcx h ;pt to previous (bad char) + push psw ;save char + call lprint + db ' Variable Error (Not $, D, U, F, N, or T) - ',0 + pop psw ;get char + call cout ;print it + call newerr ;increment error count + jmp mcmd1 +; +; Digit from 1 to 4 should follow +; +mcmd3: + mov a,m ;get next char + inx h ;pt to next + ani 7fh ;mask and cap + call caps + cpi '1' ;must be from 1 to 4 + jc mcmd4 + cpi '5' + jc mcmd1 +; +; Invalid Digit +; +mcmd4: + push psw + call lprint + db ' Invalid Digit for F, N, or T Variable (not 1-4) - ',0 +mcmd5: + pop psw + dcx h ;pt to invalid char + call cout + call newerr ;increment error count + jmp mcmd1 + +; +; Check for Pointed to File +; +mcmd6: + mov a,m ;get next char + inx h ;pt to next + ani 7fh ;mask + call caps + cpi 'F' + jz mcmd1 + cpi 'N' + jz mcmd1 + cpi 'T' + jz mcmd1 + push psw ;save char + call lprint + db ' Invalid Pointed-to File Option (not F, N, or T) - ',0 + jmp mcmd5 ;process error and back up ptr + +; +; OPTCHK -- Check Line Pted to by HL for Valid GOPTION and MINDIC options +; Do Not Affect HL +; Print Error Message and Character if Invalid Option Found +; +optchk: + push h ;save HL + push b + inx h ;skip indicator +optclp: + mov a,m ;get char + call caps ;capitalize + inx h ;pt to next + cpi cr ;EOL? + jz optcdn + mov b,a ;char in B + cpi XOPTION ;only exit option allowed + jz optclp + call newerr ;increment error count + call lprint + db ' Invalid Option: ',0 + mov a,b ;get char + call cout ;print char + jmp optclp +optcdn: + pop b + pop h ;restore ptr + ret +; +; Increment Error Count +; +newerr: + push h ;save HL + lhld errors ;increment error count + inx h + shld errors + pop h ;restore HL + ret +; +; Check Line, especially looking for Menu Jump +; +lcheck: + push h ;save ptr to first char + inx h ;pt to 2nd char + mov a,m ;get it + cpi MCMD ;menu jump? + jnz lchk1 + inx h ;pt to menu number + call eval10 ;convert to binary in DE + mov a,d ;D must be 0 + ora a ;check + jz lchk0 +lchker: + call newerr ;increment error count + call lprint + db ' Menu Number Out of Range',0 + jmp lchk1 +lchk0: + lda maxnum ;get max menu number + cmp e ;check for range + jc lchker +lchk1: + pop h ;restore ptr + mov a,m ;get first char in line + ret +; +; Skip HL over Blanks +; +sblank: + mov a,m ;get char + inx h ;pt to next + cpi ' ' ;blank? + jz sblank ;continue skipping + dcx h ;pt to non-blank + ret + +; +; Buffers +; +mnutyp: + db 'VMN' +errors: + ds 2 ;error count +linenum: + ds 2 ;current line number +menunum: + ds 1 ;current menu number +maxnum: + ds 1 ;max menu number +gopt: + ds 1 ;global option flag + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/VMENUFUN.LBR b/Images/Source/hd0/s0/u15/VMENUFUN.LBR new file mode 100644 index 0000000000000000000000000000000000000000..6e9bc62a8c6ee996e09a67510e17c570211c0f15 GIT binary patch literal 9728 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 YVRM~G5*EBLhycTZ|I>@^|KtAu1$*Z@mjD0& literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/WHEEL.COM b/Images/Source/hd0/s0/u15/WHEEL.COM new file mode 100644 index 0000000000000000000000000000000000000000..15a5c85c8cec6e827445eacbf360fa1c1ad77e58 GIT binary patch literal 1408 zcma)4O=ufO6dtiNYia8hI3b}86sFmh*m5ET8+1_1_9w`WX&W2Kai}0EvbBx{vesxf zQQfo(g@@Be=0YwX0z{Hq%&5{Dce;#n!K!Q zD034D%JPaxwSH7Gx6sHU5;^vfBJyB(gXmf;%%f$8-f^rFb#0orTw1J_XwGurGCG(U9jkl1JG#Y6rf zI%n0~BCyTbi;Ga!q4l!60QbU`soY3X*K}V;w_11FS%Ot)OU-GkAkqT|$|HJZ;(hg5PNPx1f2b!q) z74Lgx*rauXv{sZI?}75tO*C*OqDIgC+}c%))12H9%|i3vO~gkESE^LD4cwd3!#rDqU4TRY98 z+fh99oS(oxUt4eQ1tTSLewHL=NgVOBsz9uOMU*|k;yydXBF4VLLT8i+js1qj8McAN z^K27~Q|xOj2>Sxp4gMzS_X?PA6R>c#G@3vOm<8j~24e-I z!yh_@LwGtS4`q|qrUZ6YxBS4=p^&MCItBd|v>^tjPnxJSnlw6?ATV!9*e`E{U|3}$ zf|9WTLv0_(#slz7N>~3ty6fur`}alhvAFkW|9wA5OsgL^Sx$X9i8}s_`v2?y1yD~9 ASO5S3 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/WHEEL.MAC b/Images/Source/hd0/s0/u15/WHEEL.MAC new file mode 100644 index 00000000..63937ed8 --- /dev/null +++ b/Images/Source/hd0/s0/u15/WHEEL.MAC @@ -0,0 +1,218 @@ +; +; PROGRAM: WHEEL +; VERSION: 3.0 +; AUTHOR: RICHARD CONN +; DATE: 8 MAR 84 +; PREVIOUS VERSIONS: 1.1 (24 JAN 83), 1.0 (14 Jan 83) +; +vers equ 30 + +; +; WHEEL is used to set and clear the WHEEL byte. It is invoked by +; one of the following forms: +; +; WHEEL // <-- Print Help +; WHEEL <-- Print Wheel Status +; WHEEL password SET <-- Set Wheel Byte +; WHEEL password <-- Set Wheel Byte +; WHEEL password RESET <-- Reset (Clear) Wheel Byte +; WHEEL /S or WHEEL /R <-- Set or Reset Wheel Byte +; (Type Password Later Sans Echo) +; + +; +; CP/M Constants +; +cpm equ 0 +z3env SET 0f400h ; Environment Descriptor +bdose equ cpm+5 +pass equ cpm+5dh ; 1st FCB is password +cmnd equ cpm+6dh ; 2nd FCB is command +tbuff equ cpm+80h +ctrlz equ 'Z'-'@' +cr equ 0dh +lf equ 0ah + +; +; SYSLIB Routines +; + ext print,caps,codend,inline,z3init,getwhl,putwhl,qprint + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + jmp start0 +; +; ** Wheel Password ** +; + db ctrlz ;prevents reading via TYPE +ppass: + db 'SYSTEM ' ;Wheel Password (8 Chars) +; +; Print Banner +; +start0: + call qprint + db 'WHEEL, Version ' + db vers/10+'0','.',(vers mod 10)+'0',cr,lf,0 + +; +; Begin Processing +; + lda pass ; get password + cpi ' ' ; help? + jz pwhlstat + cpi '/' + jnz start1 + lda pass+1 ; get option + sta cmnd ; store command + cpi 'R' ; reset? + jz inpass + cpi 'S' ; Set? + jz inpass +; +; Print Help Message +; +help: + call print + db cr,lf,' WHEEL is used to Set and Reset (Clear) the Wheel' + db cr,lf,'Byte in order to enable (Wheel Byte is Set) or disable' + db cr,lf,'(Wheel Byte is Reset) certain commands within ZCPR2.' + db cr,lf + db cr,lf,'The forms of the WHEEL command are:' + db cr,lf,' WHEEL // <-- Print Help' + db cr,lf,' WHEEL <-- Print Wheel Byte Setting' + db cr,lf,' WHEEL password SET <-- Set Wheel Byte' + db cr,lf,' WHEEL password <-- Set Wheel Byte' + db cr,lf,' WHEEL password RESET <-- Reset (Clear) Wheel Byte' + db cr,lf,' WHEEL /S or WHEEL /R <-- Set or Reset Wheel Byte' + db cr,lf,' but allow user to type' + db ' in password' + db cr,lf,' without echo' + db cr,lf,0 + ret + +; +; Print Wheel Byte Setting +; +pwhlstat: + call print + db ' Wheel Byte is ',0 + call getwhl ;get wheel byte +pronoff: + ora a ;0=off + jz proff + call print + db 'ON',0 + ret +proff: + call print + db 'OFF',0 + ret + +; +; Input Password without echo and then process it +; +inpass: + call print + db ' Wheel Password? ',0 + call codend ; pt to scratch area + xra a ; no echo + call inline ; get line from user + push h ; save ptr to first char + mvi b,8 ; 8 chars +inp1: + mov a,m ; capitalize input + call caps + mov m,a + inx h ; pt to next + ora a ; done? + jz inp2 + dcr b ;count down + jnz inp1 + jmp inp4 +inp2: + dcx h ;pt to null + mvi a,' ' ;space fill +inp3: + mov m,a ;store space + inx h + dcr b + jnz inp3 +inp4: + pop h ; get ptr to first char + jmp start2 +; +; Process Password +; +start1: + lxi h,pass ; pt to user password +start2: + lxi d,ppass ; pt to WHEEL password + mvi b,8 ; 8 chars max +passlp: + ldax d ; get WHEEL password + cmp m ; match? + jnz nopass + inx h ; pt to next + inx d + dcr b ; count down + jnz passlp +; +; Password Approved +; + lda cmnd ; check command + cpi 'R' ; reset? + jz reset +; +; Set Wheel Byte +; + mvi a,0ffh ;set wheel byte + call putwhl + jmp pwhlstat ;print status +; +; Reset Wheel Byte +; +reset: + xra a ;reset wheel byte + call putwhl + jmp pwhlstat ;print status +; +; Password Not Approved +; +nopass: + call print + db cr,lf,' Invalid Password',0 + ret + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/WILDCAT.TXT b/Images/Source/hd0/s0/u15/WILDCAT.TXT new file mode 100644 index 00000000..2da9d87a --- /dev/null +++ b/Images/Source/hd0/s0/u15/WILDCAT.TXT @@ -0,0 +1,358 @@ +ALIAS-1.LBR +ALIAS-2.LBR +ALIAS.COM +ALIAS.HLP +ALIAS.HQP +ALIAS.ZEX +ALIAS.ZQX +ALIAS0.MAC +ALIAS0.MQC +ALIAS1.MAC +ALIAS1.MQC +CD.COM +CD.MAC +CD.MQC +CLEAND15.LBR +CLEANDIR.COM +CLEANDIR.MAC +CLEANDIR.MQC +CLNDR13B.LBR +CMD.COM +CMD.MAC +CMD.MQC +CMDFILES.HLP +CMDFILES.HQP +CMDRUN.COM +CMDRUN.MAC +CMDRUN.MQC +COMMENT.COM +COMMENT.MAC +COMMENT.MQC +COMPARE.HLP +COMPARE.HQP +CPSEL.COM +CPSEL.MAC +CPSEL.MQC +CRC.COM +CRC.MAC +CRC.MQC +DBRCPREL.LBR +DEBUGRCP.AQM +DEBUGRCP.ASM +DEV.COM +DEV.MAC +DEV.MQC +DEV10.LBR +DEVICE.COM +DEVICE.MAC +DEVICE.MQC +DEVICE10.LBR +DIFF.COM +DIFF.MAC +DIFF.MQC +DIFF21.LBR +DIR.COM +DIR.MAC +DIR.MQC +DIR14.LBR +DIRS.HLP +DIRS.HQP +DPGFILE.LBR +DPROG.COM +DPROG.HLP +DPROG.HQP +DPROG.MAC +DPROG.MQC +DPROG12.LBR +DU3.COM +DU3.HLP +DU3.HQP +DU3.MAC +DU3.MQC +DU312.LBR +ECHO.COM +ECHO.MAC +ECHO.MQC +ERASE.COM +ERASE.MAC +ERASE.MQC +ERROR1.COM +ERROR1.MAC +ERROR1.MQC +ERROR2.COM +ERROR2.MAC +ERROR2.MQC +ERROR3.COM +ERROR3.MAC +ERROR3.MQC +ERROR4.COM +ERROR4.MAC +ERROR4.MQC +ERRORX.COM +ERRORX.MAC +ERRORX.MQC +FINDF.COM +FINDF.MAC +FINDF.MQC +FINDF26.LBR +FINDF26A.LBR +GOTO.COM +GOTO.MAC +GOTO.MQC +GRDEMO.LBR +HELP.COM +HELP.HLP +HELP.HQP +HELP.MAC +HELP.MQC +HELPCK.COM +HELPCK.MAC +HELPCK.MQC +HELPPR.COM +HELPPR.MAC +HELPPR.MQC +HELPSYS.HLP +HELPSYS.HQP +IF.COM +IF.HLP +IF.HQP +IF.MAC +IF.MQC +IFSTAT.COM +IFSTAT.MAC +IFSTAT.MQC +IO.HLP +IO.HQP +LDR-UPD.COM +LDR-UPD.MSG +LDR.COM +LDR.MAC +LDR.MQC +LDR15.LBR +LGET11.LBR +LLF11.LBR +LUZ3.LBR +LX12.LBR +LX14.LBR +MCOPY.COM +MCOPY.MAC +MCOPY.MQC +MCOPY44.LBR +MCOPY45B.LBR +MENU.COM +MENU.HLP +MENU.HQP +MENU.MAC +MENU.MQC +MENUCK.COM +MENUCK.MAC +MENUCK.MQC +MKDIR.COM +MKDIR.MAC +MKDIR.MQC +MU3.COM +MU3.HLP +MU3.HQP +MU3.MAC +MU3.MQC +NDIRS.HLP +NDIRS.HQP +NEWTCAP.Z80 +NEWTCAP.ZZ0 +NOTE.COM +NOTE.MAC +NOTE.MQC +PAGE.COM +PAGE.MAC +PAGE.MQC +PATH.COM +PATH.MAC +PATH.MQC +PATH31.LBR +PPAL.DOC +PRINT.COM +PRINT.MAC +PRINT.MQC +PRINTHLP.LBR +PROTECT.COM +PROTECT.MAC +PROTECT.MQC +PWD.COM +PWD.MAC +PWD.MQC +QUIET.COM +QUIET.MAC +QUIET.MQC +READ.ME +READ.MQ +RECORD.COM +RECORD.MAC +RECORD.MQC +REG.COM +REG.MAC +REG.MQC +RENAME.COM +RENAME.MAC +RENAME.MQC +RENAME31.LBR +SAK.COM +SAK.MAC +SAK.MQC +SETFILE.COM +SETFILE.MAC +SETFILE.MQC +SF.COM +SF.Z80 +SH.COM +SH.HLP +SH.HQP +SH.MAC +SH.MQC +SH11.LBR +SHCTRL.COM +SHCTRL.MAC +SHCTRL.MQC +SHDEFINE.COM +SHDEFINE.MAC +SHDEFINE.MQC +SHFILE.COM +SHFILE.MAC +SHFILE.MQC +SHOW.COM +SHOW.MAC +SHOW.MQC +SHSET.COM +SHSET.MAC +SHSET.MQC +SHUTILS2.LBR +SHVAR.COM +SHVAR.MAC +SHVAR.MQC +SHVAR11.LBR +SUB.COM +SUB.MAC +SUB.MQC +SYSENV.AQM +SYSENV.ASM +SYSENV.LIB +SYSENV.LQB +SYSFCP.AQM +SYSFCP.ASM +SYSFCP1.LIB +SYSFCP1.LQB +SYSFCP11.LBR +SYSFCP2.LIB +SYSFCP2.LQB +SYSIOP.AQM +SYSIOP.ASM +SYSNDR.AQM +SYSNDR.ASM +SYSNDR.LIB +SYSNDR.LQB +SYSRCP.AQM +SYSRCP.ASM +SYSRCP.HLP +SYSRCP.HQP +SYSRCP1.LIB +SYSRCP1.LQB +SYSRCP11.LBR +SYSRCP2.LIB +SYSRCP2.LQB +SYSRCP3.LIB +SYSRCP3.LQB +SYSRCP4.LIB +SYSRCP4.LQB +T3M-HI2.Z80 +T3M-HI2.ZZ0 +T3T-24-1.Z80 +T3T-24-1.ZQ0 +TCCHECK.COM +TCCHECK.MAC +TCCHECK.MQC +TCMAKE.COM +TCMAKE.MAC +TCMAKE.MQC +TCSELECT.COM +TCSELECT.MAC +TCSELECT.MQC +UNERASE.COM +UNERASE.MAC +UNERASE.MQC +VF-BOX11.LBR +VF41.IQF +VF41H.LBR +VF42A.LBR +VFILER.COM +VFILER.HLP +VFILER.HQP +VFILER.MAC +VFILER.MQC +VFILR4-1.LBR +VFILR4-2.LBR +VMENU.COM +VMENU.HLP +VMENU.HQP +VMENU.MAC +VMENU.MQC +VMENU24.LBR +VMENUCK.COM +VMENUCK.MAC +VMENUCK.MQC +VMENUFUN.LBR +WHEEL.COM +WHEEL.MAC +WHEEL.MQC +WYSE.DPG +XD.COM +XD.MAC +XD.MQC +XDIR.COM +XDIR.MAC +XDIR.MQC +Z3BASE1.LIB +Z3BASE1.LQB +Z3BASE2.LIB +Z3BASE2.LQB +Z3FILES.PH1 +Z3FILES.PH2 +Z3FILES.PQ2 +Z3FILES2.PH2 +Z3FILES2.PQ2 +Z3HDR1.LIB +Z3HDR1.LQB +Z3HDR2.LIB +Z3HDR2.LQB +Z3LDRBUG.LBR +Z3LOC.COM +Z3LOC.MAC +Z3LOC.MQC +Z3LOC11.LBR +Z3RES.HLP +Z3RES.HQP +Z3TCAP.AQM +Z3TCAP.ASM +Z3TCAP.HLP +Z3TCAP.HQP +Z3TCAP.TCP +Z3TCAP.TQP +Z3TCAP22.LBR +Z3UTIL1.HLP +Z3UTIL1.HQP +Z3UTIL2.HLP +Z3UTIL2.HQP +Z3UTIL3.HLP +Z3UTIL3.HQP +ZCPR3.AQM +ZCPR3.ASM +ZCPR3.HLP +ZCPR3.HQP +ZCPR3.INS +ZCPR3.IQS +ZCPR3DIR.BQG +ZCPR3DIR.BUG +ZEX.AQM +ZEX.ASM +ZEX.COM +ZEX.ZEX +ZEX.ZQX +ZSYSTEM.INS diff --git a/Images/Source/hd0/s0/u15/WYSE.DPG b/Images/Source/hd0/s0/u15/WYSE.DPG new file mode 100644 index 00000000..9db75516 --- /dev/null +++ b/Images/Source/hd0/s0/u15/WYSE.DPG @@ -0,0 +1,133 @@ +; +; Programming Definitions for Wyse WY-50 Terminal +; Revision 1.0 by John Lin, September 1, 1985 +; +; Character Definitions: +; +-esc (%c) "\1bh" ; The ESCAPE Character +-cr "\r" ; +-del (%c) "\7fh" ; +-ctrlp "^P" ; ^P +; +; +; Define Functions: +; +; A. Function Key: +; +; SEQUENCE: FKEY Fn|FnS SEQ DEL +; fkey - Prefix +; fn or fns - Function Key Number or Number Shifted +; seq - Contents of Function Key (8 Chars) +; del - Terminator +; +-fkey esc "z" +-f1 "@" +-f1s "`" +-f2 "A" +-f2s "a" +-f3 "B" +-f3s "b" +-f4 "C" +-f4s "c" +-f5 "D" +-f5s "d" +-f6 "E" +-f6s "e" +-f7 "F" +-f7s "f" +-f8 "G" +-f8s "g" +-f9 "H" +-f9s "h" +-f10 "I" +-f10s "i" +-f11 "J" +-f11s "j" +-f12 "K" +-f12s "k" +-f13 "L" +-f13s "l" +-f14 "M" +-f14s "m" +-f15 "N" +-f15s "n" +-f16 "O" +-f16s "o" +; +; +; B. Cursor: +; +; 1. C_OFF No Cursor +; 2. C_ON Cursor On +; 3. C_BB Blinking Block +; 4. C_SB Steady Block +; 5. C_BU Blinking Underline +; 6. C_SU Steady Underline +; +-c_off esc "`0" +-c_on esc "`1" +-c_bb esc "`5" +-c_sb esc "`2" +-c_bu esc "`3" +-c_su esc "`4" +; +; +; C. Display User Line: +; +; 1. DISP_USER Display User Line +; 2. UNDSP_USER Turn Off User Line +; +-disp_user esc "A14" +-undsp_user esc "A10" +; +; +; D. Screen: +; +; 1. SCREEN_OFF Turn Screen Off +; 2. SCREEN_ON Turn Screen On +; +-screen_off esc "`8" +-screen_on esc "`9" +; +; +; E. Clear Screen: +; +; 1. CLS Clear the Screen +; +-cls "^Z" +; +; F. Send Message to Host Msg Field: +; +; 1. HMF Send Msg to Host Message Field +; +-hmf esc "F" +; +; +; +; Commands: +; +undsp_user +c_bb +fkey f1 "Dir A:\r" del +fkey f2 "Dir B:\r" del +fkey f3 "Dir E:\r" del +fkey f4 "Dir " del +; +fkey f5 "Type " del +fkey f6 "Era " del +fkey f7 "Ren " del +fkey f8 "Swp\r" del +; +fkey f9 "Multidsk\r" del +fkey f10 "Amprodsk\r" del +fkey f11 "Eset\r" del +fkey f12 "Du\r" del +; +fkey f13 "DDT " del +fkey f14 "Mac " del +fkey f15 "Zex " del +fkey f16 "Safety\r" del +; +cls +hmf "System Key Configuration Activated" cr +; diff --git a/Images/Source/hd0/s0/u15/XD.COM b/Images/Source/hd0/s0/u15/XD.COM new file mode 100644 index 0000000000000000000000000000000000000000..b0009ae577706b12c458d42d951d12f6d18a9eb2 GIT binary patch literal 3584 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 BNPGYQ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/XD.MAC b/Images/Source/hd0/s0/u15/XD.MAC new file mode 100644 index 00000000..4ac66e24 --- /dev/null +++ b/Images/Source/hd0/s0/u15/XD.MAC @@ -0,0 +1,856 @@ +; +; PROGRAM: XD III +; AUTHOR: RICHARD CONN +; VERSION: 1.2 +; DATE: 8 Apr 84 +; PREVIOUS VERSIONS: 1.1 (14 Jan 84), 1.0 (19 Nov 83) +; DERIVATION: XDIR III, Version 1.6 (19 Nov 83) +; +vers equ 12 +z3env SET 0f400h + +; +; XD III -- Simple Extended Disk Directory Program +; ZCPR3 Only +; +; XD III produces a formatted, alphabetized listing of the contents +; of the disk directory of the implied (current logged-in) or specified disk. +; +; XD III is invoked by a command line of the following form -- +; +; XD dir:filename.typ ooo... +; or +; +; XD /oooo... +; +; where: +; dir is an optional directory name or a disk/user specification (du) +; if dir is omitted, XD III defaults to the current disk/user +; filename.typ is an ambiguous file name and type (* and ? may be used) +; o are option letters as follows: +; Aa - Set the attributes of the files to be displayed; +; a=S for System Files, a=N for Non-System Files +; a=A for All Files (System and Non-System) +; Oo - Set Output Parameters; +; o=A to Toggle File Attributes, o=F to Form Feed at end +; o=G to Toggle Grouping, o=H to Toggle Hor/Vert +; P - Print display as well as show it on the screen +; PF - Same as POF +; Options may be combined as desired; note that AA is the same as AS and AN, +; but AS by itself negates AN and vice-versa, with AN taking precident +; + + +; +; CP/M Equates +; +base equ 0 +wboot equ base +bdose equ base+5 +fcb equ base+5ch +buff equ base+80h +cr equ 0dh +ff equ 0ch +lf equ 0ah +esize equ 16 ; size of directory entries +optch equ '/' ; option char +maxent equ 60 ; maximum number of entries/screen + +; +; External Routines +; + ext bdos ; BDOS + ext z3init ; init ZCPR3 environment descriptor ptr + ext z3log ; log into ZCPR3 DU/DIR + ext dirqs ; quick directory load with sizes + ext dfree ; free space computer + ext dparam ; disk parameter extractor + ext fsize ; compute file size + ext retud ; get current user and disk + ext print ; print routines + ext pstr + ext lcrlf ; CRLF to printer + ext caps ; capitalize char + ext cin ; console in char + ext lout ; print char + ext cout ; console out char + ext crlf ; new line + ext fillb ; memory fill + ext moveb ; memory move + ext codend ; beginning of buffer area + ext sctlfl,sout,scrlf,sprint,spstr,shldc,sadc ; S-output + ext dutdir ; DU to DIR form + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env +; +; Branch to Start of Program +; + jmp start0 + +; +; Other Buffers (Set by GENINS) +; +igrp: db 0ffh ; Group by file type and name +ifmt: db 0 ; vertical format +iatt: db 10000000b ; Non-System files only +irs: db 0ffh ; enable attribute display (0=no) +iff: db 0 ; enable form feed at end (0=no) + +; +; Command Line Option Table +; +optab: + db 'A' ; Attribute Selection + dw opta + db 'O' ; Output Control + dw opto + db 'P' ; Print Control + dw optp + db 0 + +; +; **** Start of XD III **** +; +start0: + +; Save stack ptr for return later + lxi h,0 ; get stack + dad sp + shld stack ; save stack ptr for return + call codend ; determine free space (CODEND also pts to Command + ; Line Save Area) + lxi d,100h ; block size to save + dad d + dad d ; allow for 256-byte stack + shld buffer ; start of free buffer area + sphl ; set stack ptr + +; Save command line in CMDLNE buffer + call codend ; pt to command line buffer + xchg ; ... in DE + lxi h,buff+1 ; copy input line into command line buffer +start1: + mov a,m ; get byte + stax d ; put byte + inx h ; pt to next + inx d + ora a ; end of line? + jnz start1 + +; log into DU or DIR + lxi d,fcb ; extract file name into fcb, and get user and disk + call z3log ; ZCPR3 command line interpretation + +; Get and save current user number +noext: + call retud ; get current user and disk + mov a,c ; get user into A + sta aflg ; current user number + +; Set flag values + lda irs ; get RS display option + sta rsflg ; set RS display option + lda iff ; get form feed option + sta ffflg ; set form feed option + lda igrp ; set grouping (file name/type or type/name) + sta gflg + lda ifmt ; set listing format (vertical or horizontal, 0=vert) + sta hflg + lda iatt ; set file attributes + mov c,a ; save in c + lda aflg ; get current user number + ora c ; mask in file attributes + sta aflg ; save flag + xra a ; A=0 + sta pflg ; set no printer output + inr a ; A=1 for console only + sta sctlfl ; set switched output flag + +; Assume wild file name + lxi h,fcb+1 ; store '?' chars + mvi b,11 ; 11 chars + mov a,m ; check for entry specified + cpi ' ' ; test for space (means no entry) + mvi a,'?' ; prep for '?' fill + cz fillb + mov a,m ; check for option caught + cpi optch ; test for option flag + mvi a,'?' ; prep for '?' fill + cz fillb + +; Scan command line for options + call codend ; pt to first char + call sblank ; skip over blanks + ora a ; end of line? + jz xdir ; begin main processing + inx h ; prep for invalid option + cpi optch ; option? + jz opt ; process options + dcx h ; ok to process for dir:filename.typ form +; +; Skip over characters of file name +; +skipo1: + mov a,m ; get char + inx h ; pt to next + cpi ' ' + jz skipo2 + ora a + jnz skipo1 + jmp xdir ; run XDIR if no options follow +; +; Scan complete -- look for possible following option char +; +skipo2: + call sblank ; skip over blanks + mov a,m ; option char follows? + cpi optch + jnz opt + inx h ; skip over option char +; +; Look for options -- main loop; HL pts to next char +; +opt: + mov a,m ; get option char + inx h ; pt to next + ora a ; end of line? + jz xdir ; begin main processing + cpi ' ' ; skip over spaces + jz opt + cpi optch ; option char? + jz opterr ; loop back if so + lxi d,optab ; pt to option table + mov b,a ; option char in b +; +; Scan option table +; +opt1: + ldax d ; get option table char + ora a ; end of table? + jz opterr ; invalid option error + cmp b ; compare to passed option + jz opt2 ; process if match + inx d ; skip address + inx d + inx d ; pt to next opt char + jmp opt1 +; +; Process option found +; +opt2: + inx d ; pt to low-order address + ldax d ; get it + mov c,a ; low in C + inx d ; pt to high-order address + ldax d ; get it + mov b,a ; high in B + push b ; BC on stack + ret ; Process option routine +; +; Option A -- File Attributes +; +opta: + mov a,m ; get next option letter + cpi 'N' ; Non-System files? + jz optan + cpi 'S' ; System files? + jz optas + cpi 'A' ; All files? + jnz opterr ; error if not +; +; Option AA -- All Files +; +optaa: + mvi c,11000000b ; System and Non-system +optaret: + lda aflg ; get flag + ani 3fh ; leave in user selection + ora c ; mask in sys/non-sys + sta aflg ; restore flag + inx h ; pt to next + jmp opt +; +; Option AS -- System Files +; +optas: + mvi c,01000000b ; System Only + jmp optaret +; +; Option AN -- Non-System Files +; +optan: + mvi c,10000000b ; Non-system Only + jmp optaret +; +; Option P -- enable it; Printer output +; +optp: + mvi a,0ffh ; ON + sta pflg + sta sctlfl ; set S-output control + mov a,m ; get possible 2nd letter + cpi 'F' ; set form feed if F + jnz opt ; process as next option letter if not F + inx h ; pt to next + jmp optof +; +; Option O -- control Output parameters +; +opto: + mov a,m ; get 2nd letter + inx h ; pt to next + cpi 'A' ; attributes? + jz optoa + cpi 'F' ; form feed? + jz optof + cpi 'G' ; grouping? + jz optog + cpi 'H' ; horizontal/vertical? + jz optoh + dcx h ; adjust back + jmp opterr +; +; Toggle File Attributes Flag +; +optoa: + lda rsflg ; flip flag + cma + sta rsflg + jmp opt +; +; Toggle Form Feed Flag +; +optof: + lda ffflg ; flip flag + cma + sta ffflg + jmp opt +; +; Toggle Grouping +; +optog: + lda gflg ; flip flag + cma + sta gflg ; 0=file name and type + jmp opt +; +; Toggle Horizontal/Vertical Listing +; +optoh: + lda hflg ; flip flag + cma + sta hflg ; 0=vertical + jmp opt +; +; Option error message +; +opterr: + mvi a,1 ; set console only + sta sctlfl ; set output control flag + call banner ; print banner + call print + db cr,lf,'Syntax:' + db cr,lf,' XD dir:filename.typ ooo...' + db cr,lf,'or XD /oooo...' + db cr,lf,'Option letters are:' + db cr,lf,' Aa - Set and Display of file attributes' + db cr,lf,' a=S for System, a=N for Non-System' + db cr,lf,' a=A for All Files (System and Non-System)' + db cr,lf,' Oo - Toggle Output Control Options' + db cr,lf,' o=A for File Attributes, o=F for Form Feed' + db cr,lf,' o=G for Grouping, o=H for Horiz/Vert Format' + db cr,lf,' P - Send display to printer' + db cr,lf,' PF - Same as POF' + db 0 + +; Return to CP/M +return: + lhld stack ; get old stack ptr + sphl + ret ; return to CP/M + +; Memory Overflow Error +memerr: + call sprint + db 'TPA Error',0 + jmp return + +; Print banner of XD III +banner: + call sprint + db 'XD III Version ' + db vers/10+'0','.',(vers mod 10)+'0',0 + ret + +; +; Begin XD III processing +; +xdir: + lxi d,fcb ; pt to FCB + xra a + stax d ; select current disk + +; Check for Print Option and Print New Line if so +xdirst: + lda pflg ; printer output? + ora a ; 0ffH=yes + cnz lcrlf ; new line + +; Get Files from Disk + push d ; save ptr to FCB + call dparam ; get disk parameters for DFREE + call dfree ; compute amount of free space on disk + xchg ; amount in hl + shld freesiz ; save free space count + pop d ; get regs + lhld buffer ; pt to free space + lda gflg ; get grouping flag + ani 20h ; mask for sort bit (0=name/type) + mov c,a + lda aflg ; get attributes flag + ora c ; mask in grouping bit + call dirqs ; quick directory load with file sizes + jz memerr ; memory overflow error? + shld firstf ; save ptr to first file + mov h,b ; HL=file count + mov l,c + shld fcount ; save file count + shld countf ; save file down count + lxi h,0 ; set file size counter + shld totsiz ; save counter + lda pflg ; set temp flag + sta pflgt + +; +; Main Directory Print Routine -- This routine displays the directory to +; the console, printer, or disk as desired +; +; Print header lines and one screen of entries +xdir2: + lda pflg ; save printer output flag + sta pflgs + lda pflgt ; use temp flag + sta pflg + xra a ; A=0 + sta pflgt ; clear temp flag + +; Print: Main Banner + call banner ; print banner + +; Check for any files + lhld countf ; get file down count + mov a,h ; any files? + ora l + jnz xdir6 + call sprint ; print everywhere + db cr,lf,'No files selected',0 + jmp xdir10 + +; +; This is the main looping entry point for each screen display +; +xdir6: +; +; This is the header which is printed if the files in only one user area are +; displayed +; + call scrlf ; specific user selected + call hdr2 + lda rsflg + ora a ; Z=no + cnz sp0 + call sp2 + call hdr2 + lda rsflg + ora a ; Z=no + cnz sp0 + call sp2 + call hdr2 + lda rsflg + ora a + cnz sp0 + call scrlf + call hdr1 + lda rsflg + ora a + cnz sp1 + call sp2 + call hdr1 + lda rsflg + ora a + cnz sp1 + call sp2 + call hdr1 + lda rsflg + ora a + cnz sp1 + jmp xdir6b +sp0: + call sprint + db ' RS',0 + ret +sp1: + call sprint + db ' --',0 + ret +sp2: + call sprint + db ' ',0 + ret +hdr1: + call sprint + db '-------- --- ------',0 + ret +hdr2: + call sprint + db 'Filename.Typ Size K',0 + ret + +; +; Prepare Columnar Output +; +xdir6b: + lda pflgs ; restore print flag + sta pflg + lhld countf ; get file count down + lxi d,maxent ; assume maxent entries to print + mov a,h ; within range? + ora a ; outside of range if not + jnz xdir7 ; subtract entries to print from total entries + mov a,l ; within range? + cpi maxent ; less than maxent entries left? + jnc xdir7 ; subtract entries to print from total entries + mov d,h ; DE=HL=number of entries to print + mov e,l +xdir7: + mov a,l ; subtract entries to print (DE) from total (HL) + sub e + mov l,a + mov a,h + sbb d + mov h,a ; HL=result + shld countf ; save new down count + mov b,h ; BC=count + mov c,l + lhld firstf ; pt to first file +; +; At this point, BC=number of remaining entries, DE=number of entries to +; print, and HL pts to first entry to print +; + shld ptr1 ; save ptr to 1st entry + lda hflg ; horizontal listing? + ora a ; 0ffh = yes + jnz xdir7c ; don't worry about columns if horizontal + push d ; save count + call divde3 ; divide DE by 3, result*esize in BC, remainder in A + lxi d,esize ; DE=ESIZE (size of entry) + dad b ; add BC as a minimum + ora a ; any remainder? + jz xdir7a ; skip if none + dad d ; add in ESIZE for additional length of 1st col +xdir7a: + shld ptr2 ; save ptr to col 2 + dad b ; add BC as a minimum + cpi 2 ; if remainder 2, add ESIZE for additional + jc xdir7b + dad d ; add in ESIZE +xdir7b: + shld ptr3 ; save ptr to col 3 + pop d ; get count in de +; +; Main entry print routine +; +xdir7c: + mvi d,1 ; set 3's counter +xdir8: + lhld ptr1 ; pt to first entry + call prentry ; print entry + shld ptr1 ; put ptr + lda hflg ; horizontal? + ora a ; 0ffh = yes + jnz xdir9 + dcr e ; count down + jz xdir10 + lhld ptr2 ; get ptr + call prentsp ; print entry with 2 leading spaces + shld ptr2 ; put ptr + dcr e ; count down + jz xdir10 + lhld ptr3 ; get ptr + call prentsp ; print entry with 2 leading spaces + shld ptr3 ; put ptr +xdir9: + dcr e ; count down + jnz xdir8 ; continue if not zero + shld firstf ; save ptr to first of next set of entries to print + lhld countf ; get count of remaining entries +; +; At this point, HL=number of entries left +; + mov a,h ; anything left? + ora l + jz xdir10 + lda pflg ; printer output? + ora a ; 0=no + jnz xdir6 + call print ; screen break + db cr,lf,' --> Screen Break -- Strike any char <-- ',0 + call cin ; get response + cpi 3 ; abort? + jz return + jmp xdir6 ; new screen display +; +; Print end statistics and exit +; +xdir10: +; +; Print DU +; + call sprint ; print everywhere + db cr,lf,' ',0 + call retud ; get current disk + mov a,b ; ... in A + adi 'A' ; convert to ASCII + call sout ; print everywhere + mov a,c ; user in A + call sadc ; get number + call sprint + db ': ',0 + call dutdir ; convert to DIR form + jz xdir11 +; +; Print DIR Name +; + mvi b,8 ; output name +dirout: + mov a,m ; get char + cpi ' ' ; don't print spaces + cnz sout + inx h ; pt to next + dcr b ; count down + jnz dirout + +; +; Print Selected File Statistics +; +xdir11: + call sprint + db ' --',0 + lhld fcount ; print file count + call shldc ; print it everywhere + call sprint + db ' Files Using ',0 + lhld totsiz ; get total of file sizes + call shldc ; print it everywhere + call sprint + db 'K',0 + +; +; Print Space Remaining on Disk +; Entry Point if No Files Found +; + call sprint + db ' (',0 + lhld freesiz ; get amount of free space + call shldc ; print it everywhere + call sprint + db 'K Left)',0 + lda pflg ; new line if printer output + ora a + jz return + call scrlf ; new line for printer + lda pflg ; print output + mov b,a + lda ffflg ; form feed + ana b ; if print and form feed ... NZ is set + mvi a,ff ; form feed char + cnz lout ; form feed to printer + jmp return + +; +; General Utility Routines +; + +; +; Print disk entry for normal directory display functions +; +prentsp: + call sp2 ; print entry with 2 leading spaces +prentry: + dcr d ; count counter + jnz prent1 + mvi d,3 ; reset count + call scrlf +prent1: + shld entptr ; save entry ptr + inx h ; pt to first char of file name + mvi b,8 ; print 8 chars + call prch + mvi a,'.' ; print dot + call sout + push h ; save RS ptr + mvi b,3 ; print 3 chars + call prch + push d ; save de + lhld entptr ; pt to entry + call sp2 ; skip 2 spaces + call fsize ; compute file size + lhld totsiz ; get total file size counter + dad d ; add in new file + shld totsiz ; save new total file size counter + xchg ; get file size into HL + call shldc ; print HL value + pop d ; get de + pop h ; pt to RS + lda rsflg ; print RS fields? + ora a ; Z=no + jz pren2a + mvi a,' ' ; print 1 space + call sout + mvi b,'R' ; letter + call prletx ; print R if bit set + inx h + mvi b,'S' ; letter + call prletx ; print S if bit set + dcx h ; ... for following inx h +pren2a: + inx h ; point correctly +prent3: + lxi b,6 ; pt to next entry + dad b + ret +; +; Print B chars pted to by HL +; +prch: + mov a,m ; get char + inx h ; pt to next + ani 7fh ; mask out msb + cpi ' ' ; within range? + jnc prch1 ; print special char if not valid char + mvi a,'?' ; print ? if not valid char +prch1: + call sout ; print it + dcr b ; count down + jnz prch + ret +; +; Extended Print Routines +; +prletx: + mov a,m ; get byte + ani 80h ; look at msb + jz prlets + mov a,b ; get letter + jmp sout +prlets: + mvi a,' ' ; print + jmp sout +; +; Divide DE by 3; return with BC=result*esize, a=remainder +; +divde3: + push d ; save de, hl + push h + mvi d,0 ; make sure D=0 + mov a,e ; value in A +divd31: + sui 3 ; subtract 3 + jc divd32 + jz divd33 + inr d ; add 1 to result + jmp divd31 +divd32: + adi 3 ; add back in + jmp divd34 +divd33: + inr d ; add 1 for even division +divd34: + sta rem ; save remainder + lxi b,esize + lxi h,0 +divd35: + mov a,d ; done? + ora a ; 0=yes + jz divd36 + dcr d + dad b ; add in another ESIZE + jmp divd35 +divd36: + mov b,h ; BC is result + mov c,l + lda rem ; A is remainder + pop h ; restore regs + pop d + ret +; +; Skip blanks +; +sblank: + mov a,m ; pt to char + cpi ' ' ; blank? + rnz + inx h ; pt to next + jmp sblank + +; +; Buffers +; +aflg: ds 1 ; attibute flag +gflg: ds 1 ; 0=group by name/type +hflg: ds 1 ; 0=vertical list +pflg: ds 1 ; printer output on flag +crcnt: ds 1 ; entry counter +fmark: ds 1 ; first file marker +pflgt: ds 1 +pflgs: ds 1 +rsflg: ds 1 ; RS Display Flag +ffflg: ds 1 ; form feed flag +rem: ds 1 ; remainder buffer +firstf: ds 2 ; ptr to first file of group to print +fcount: ds 2 ; count of files +countf: ds 2 ; down count of files +freesiz: + ds 2 ; amount of free space on disk +totsiz: + ds 2 ; total size of all files +ptr1: ds 2 ; col output ptrs +ptr2: ds 2 +ptr3: ds 2 +entptr: ds 2 ; current entry ptr +buffer: ds 2 ; pointer to free area +stack: ds 2 ; stack ptr + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/XDIR.COM b/Images/Source/hd0/s0/u15/XDIR.COM new file mode 100644 index 0000000000000000000000000000000000000000..71feb005e8d4a95fb2c0be4906ec93b015893877 GIT binary patch literal 7936 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 D5ra&i literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/XDIR.MAC b/Images/Source/hd0/s0/u15/XDIR.MAC new file mode 100644 index 00000000..3ea67b5c --- /dev/null +++ b/Images/Source/hd0/s0/u15/XDIR.MAC @@ -0,0 +1,1888 @@ +; +; PROGRAM: XDIR III +; AUTHOR: RICHARD CONN +; VERSION: 2.0 +; DATE: 9 APR 84 +; PREVIOUS VERSIONS: 1.6 (19 NOV 83) +; PREVIOUS VERSIONS: 1.5 (9 JAN 83), 1.4 (6 JAN 83), 1.3 (7 DEC 82) +; PREVIOUS VERSIONS: 1.2 (2 NOV 82), 1.1 (30 OCT 82), 1.0 (20 OCT 82) +; +vers equ 20 +z3env SET 0f400h + +; +; XDIR III -- Extended Disk Directory Program +; ZCPR3 Version +; +; XDIR III produces a formatted, alphabetized listing of the contents +; of the disk directory of the implied (current logged-in) or specified disk. +; +; XDIR III is invoked by a command line of the following form -- +; +; XDIR dir:filename.typ ooo... +; or +; +; XDIR /oooo... +; +; where: +; dir is an optional directory name or a disk/user specification (du) +; if dir is omitted, XDIR III defaults to the current disk/user +; filename.typ is an ambiguous file name and type (* and ? may be used) +; o are option letters as follows: +; Aa - Set the attributes of the files to be displayed; +; a=S for System Files, a=N for Non-System Files +; a=A for All Files (System and Non-System) +; D - Send Output to Disk as well as screen +; Ff - Engage File Name Buffer Facility +; f=L to Log File Names to Disk +; f=P to Print Names Logged to Disk +; f=S to Scan Disk for File Names and Compare to Logged +; I - Inspect files selected by FL option for inclusion +; N - Negate selection; select those files which do NOT +; match the ambiguous file name +; Oo - Set Output Parameters; +; o=A to Toggle File Attributes, o=F to Form Feed at end +; o=G to Toggle Grouping, o=H to Toggle Hor/Vert +; P - Print display as well as show it on the screen +; PF - Same as POF +; U - Select All User Areas +; +; Options may be combined as desired; note that AA is the same as AS and AN, +; but AS by itself negates AN and vice-versa, with AN taking precident +; + + +; +; CP/M Equates +; +base equ 0 +wboot equ base +bdose equ base+5 +fcb equ base+5ch +buff equ base+80h +ctrlc equ 'C'-'@' +cr equ 0dh +ff equ 0ch +lf equ 0ah +esize equ 16 ; size of directory entries +optch equ '/' ; option char +maxent equ 54 ; maximum number of entries/screen + +; +; External Routines +; + ext bdos ; BDOS + ext dutdir ; convert DU to DIR form + ext z3log ; log into DU or DIR + ext z3init ; init buffers + ext dbuffer ; disk routines + ext dfree + ext diralpha + ext dirsload + ext dirpack + ext dirnpack + ext dirsel + ext dparam + ext fsize + ext fo0$open ; byte-oriented file output + ext fo0$close + ext f0$put + ext fo1$open + ext fo1$close + ext f1$put + ext fi1$open + ext fi1$close + ext f1$get + ext bbline ; input line editor + ext retud ; get current user and disk + ext print ; print routines + ext pstr + ext lpstr + ext lcrlf + ext caps ; capitalize char + ext cin ; console in char + ext lout ; print char + ext cout ; console out char + ext crlf ; new line + ext madc ; a as dec chars in memory + ext mhldc ; hl as dec chars in memory + ext fillb ; memory fill + ext moveb ; memory move + ext codend ; beginning of buffer area + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + jmp start0 +; +; Other Buffers (Set by GENINS) +; +igrp: db 0ffh ; Group by file type and name +ifmt: db 0 ; vertical format +iatt: db 10000000b ; Non-System files only +iscn: db 0 ; 0=dir display, 0ffh=scan for files by default +fenab: db 0ffh ; enable F options (0=no) +lenab: db 0ffh ; enable FL option (0=no) +asenab: db 0ffh ; enable AS option (0=no) +irs: db 0ffh ; enable attribute display (0=no) +iff: db 0 ; enable form feed at end (0=no) + +; +; Command Line Option Table +; +optab: + db 'A' + dw opta + db 'D' + dw optd + db 'F' + dw optf + db 'I' + dw opti + db 'N' + dw optn + db 'O' + dw opto + db 'P' + dw optp + db 'U' + dw optu + db 0 + +; +; **** Start of XDIR III **** +; +start0: + +; +; Save stack ptr for return later +; + lxi h,0 ; get stack + dad sp + shld stack ; save stack ptr for return + call codend ; determine free space (CODEND also pts to Command + ; Line Save Area) + lxi d,100h ; block size to save + dad d + dad d ; allow for 256-byte stack + shld buffer ; start of free buffer area + sphl ; set stack ptr + +; +; Save command line in CMDLNE buffer +; + call codend ; pt to command line buffer + xchg ; ... in DE + lxi h,buff+1 ; copy input line into command line buffer +start1: + mov a,m ; get byte + stax d ; put byte + inx h ; pt to next + inx d + ora a ; end of line? + jnz start1 + +; +; Get and save current user number +; +noext: + call retud ; get current user and disk + mov a,b ; get disk into A + sta curdisk ; current disk number + mov a,c ; set current user + sta curuser + +; +; Log into DU or DIR +; + lxi d,fcb ; use data determined by ZCPR3 + call z3log ; ZCPR3 command line interpretation + call retud ; get current user and disk + mov a,c ; set current user + sta aflg + mov a,b ; set disk + sta disk + +; +; Set flag values +; + lda irs ; get RS display option + sta rsflg ; set RS display option + lda iff ; get form feed option + sta ffflg ; set form feed option + lda igrp ; set grouping (file name/type or type/name) + sta gflg + lda ifmt ; set listing format (vertical or horizontal, 0=vert) + sta hflg + lda iatt ; set file attributes + mov c,a ; save in c + lda aflg ; get current user number + ora c ; mask in file attributes + sta aflg ; save flag + lda iscn ; set initial function (Scan or Dir) + sta fflg + xra a ; A=0 + sta nflg ; set no negation + sta dflg ; set no disk output + sta pflg ; set no printer output + sta iflg ; set no file name inspection (for /FP) + +; +; Assume wild file name +; + lxi h,fcb+1 ; store '?' chars + mvi b,11 ; 11 chars + mov a,m ; check for entry specified + cpi ' ' ; test for space (means no entry) + mvi a,'?' ; prepare for '?' fill + cz fillb + mov a,m ; check for option caught + cpi optch ; test for option flag + mvi a,'?' ; prepare for '?' fill + cz fillb + +; +; Scan command line for options +; + call codend ; pt to first char + call sblank ; skip over blanks + ora a ; end of line? + jz xdir ; begin main processing + inx h ; prep for invalid option + cpi optch ; option? + jz opt ; process options + dcx h ; ok to process for dir:filename.typ form +; +; skip over character of file name +; +skipo1: + mov a,m ; get char + inx h ; pt to next + cpi ' ' + jz skipo2 + ora a + jnz skipo1 + jmp xdir ; run XDIR if no options follow +; +; Scan complete -- look for possible following option char +; +skipo2: + call sblank ; skip over blanks + mov a,m ; option char follows? + cpi optch + jnz opt + inx h ; skip over option char +; +; Look for options -- main loop; HL pts to next char +; +opt: + mov a,m ; get option char + inx h ; pt to next + ora a ; end of line? + jz xdir ; begin main processing + cpi ' ' ; skip over spaces + jz opt + cpi optch ; option char? + jz opterr ; loop back if so + lxi d,optab ; pt to option table + mov b,a ; option char in b +; +; Scan option table +; +opt1: + ldax d ; get option table char + ora a ; end of table? + jz opterr ; invalid option error + cmp b ; compare to passed option + jz opt2 ; process if match + inx d ; skip address + inx d + inx d ; pt to next opt char + jmp opt1 +; +; Process option found +; +opt2: + inx d ; pt to low-order address + ldax d ; get it + mov c,a ; low in C + inx d ; pt to high-order address + ldax d ; get it + mov b,a ; high in B + push b ; BC on stack + ret ; Process option routine +; +; Option A -- File Attributes +; +opta: + mov a,m ; get next option letter + cpi 'N' ; Non-System files? + jz optan + cpi 'S' ; System files? + jz optas + cpi 'A' ; All files? + jnz opterr ; error if not +; +; Option AA -- All Files +; +optaa: + lda asenab ; enable system files? + ora a ; 0=no + jz optan + mvi c,11000000b ; System and Non-system +optaret: + lda aflg ; get flag + ani 3fh ; leave in user selection + ora c ; mask in sys/non-sys + sta aflg ; restore flag + inx h ; pt to next + jmp opt +; +; Option AS -- System Files +; +optas: + lda asenab ; enable system files? + ora a ; 0=no + jz optan + mvi c,01000000b ; System Only + jmp optaret +; +; Option AN -- Non-System Files +; +optan: + mvi c,10000000b ; Non-system Only + jmp optaret + +; +; Option F - select file name buffer functions +; +optf: + mvi a,0ffh ; set flag + sta fflg + mov a,m ; get option char + sta fopt + cpi 'L' ; log file names to disk + jz optfok + cpi 'P' ; print names of files + jz optfok + cpi 'S' ; scan disk for files + jz optfok + jmp opterr ; error otherwise +optfok: + inx h ; pt to next option letter + jmp opt + +; +; Option I -- enable it; inspect for FL option only +; +opti: + mvi a,0ffh ; ON + sta iflg + jmp opt + +; +; Option D -- enable it; Disk output +; +optd: + mvi a,0ffh ; ON + sta dflg + jmp opt + +; +; Option P -- enable it; Printer output +; +optp: + mvi a,0ffh ; ON + sta pflg + mov a,m ; get possible 2nd letter + cpi 'F' ; set form feed if F + jnz opt ; process as next option letter if not F + inx h ; pt to next + jmp optof + +; +; Option O -- control Output parameters +; +opto: + mov a,m ; get 2nd letter + inx h ; pt to next + cpi 'A' ; attributes? + jz optoa + cpi 'F' ; form feed? + jz optof + cpi 'G' ; grouping? + jz optog + cpi 'H' ; horizontal/vertical? + jz optoh + dcx h ; adjust back + jmp opterr +; +; Toggle File Attributes Flag +; +optoa: + lda rsflg ; flip flag + cma + sta rsflg + jmp opt +; +; Toggle Form Feed Flag +; +optof: + lda ffflg ; flip flag + cma + sta ffflg + jmp opt +; +; Toggle Grouping +; +optog: + lda gflg ; flip flag + cma + sta gflg ; 0=file name and type + jmp opt +; +; Toggle Horizontal/Vertical Listing +; +optoh: + lda hflg ; flip flag + cma + sta hflg ; 0=vertical + jmp opt + +; +; Option N -- enable it; Negate Selection +; +optn: + mvi a,0ffh ; ON + sta nflg + jmp opt + +; +; Option U - enable it; Select All User Areas +; +optu: + lda aflg ; get current attributes flag + ori 20h ; select all user areas + sta aflg ; put flag back + jmp opt + +; +; Option error message +; +opterr: + xra a ; set no disk or printer output + sta dflg + sta pflg + call banner ; print banner + call print + db cr,lf,'Syntax:' + db cr,lf,' XDIR dir:filename.typ ooo...' + db cr,lf,'or XDIR /oooo...' + db cr,lf,'Options:' + db cr,lf,' Aa - File Attributes' + db cr,lf,' a=S for System, a=N for Non-System' + db cr,lf,' a=A for All Files (System and Non-System)' + db cr,lf,' D - Send Output to Disk File XDIR.DIR' + db cr,lf,' Ff - Enable a File Buffer Function' + db cr,lf,' f=L for Log Names to FNAMES.DIR' + db cr,lf,' f=P to Print Names stored in FNAMES.DIR' + db cr,lf,' f=S to Scan Disk and Compare to FNAMES.DIR' + db cr,lf,' I - Inspect Logged Files (FL Option Only)' + db cr,lf,' N - Negate Selection' + db cr,lf,' Oo - Toggle Output Features' + db cr,lf,' o=A for File Attributes, o=F for Form Feed' + db cr,lf,' o=G for Grouping, o=H for Horiz/Vert Format' + db cr,lf,' P - Send Display to Printer' + db cr,lf,' PF - Same as POF' + db cr,lf,' U - Select All User Areas' + db 0 + +; +; Return to CP/M +; +return: + lda dflg ; disk output? + ora a ; 0=no + cnz fo0$close ; close file if so + lhld stack ; get old stack ptr + sphl + ret ; return to CP/M + +; +; Memory Overflow Error +; +memerr: + call printx + db cr,lf,'TPA Error',0 + jmp return + +; +; Print banner of XDIR III +; +banner: + call printx + db 'XDIR III, Version ' + db vers/10+'0','.',(vers mod 10)+'0',0 + ret + +; +; Begin XDIR III processing +; +xdir: + +; +; This section disables the /Ff option and /FL option if default set +; + lda fenab ; enable FFLG? (/Ff option) + ora a ; 0=no + jnz xdst1 + xra a ; turn off FFLG + sta fflg +xdst1: + lda lenab ; enable FL option? + ora a ; 0=no + jnz xdst2 + lda fflg ; FFLG on? + ora a ; 0=no + jz xdst2 + lda fopt ; check for L + cpi 'L' + jnz xdst2 + mvi a,'P' ; switch L to P + sta fopt +xdst2: + lda fflg ; file name buffer option? + ora a ; 0=no + jz xdirst + xra a ; A=0 + sta gflg ; group by file name and type + lda fopt ; print immediately if P option + cpi 'P' ; print? + jnz xdirst + call banner ; print banner + jmp xdirfp ; print file names + +; Check for Print Option and Ask for and Print Header if so +xdirst: + lda pflg ; printer output? + ora a ; 0=no + jz xdirgo + call print ; message to user + db cr,lf,'Please Input Header: ',0 + xra a ; no caps + call bbline ; input line from user + ora a ; no chars? + jz xdirgo + call lcrlf ; new line + call lpstr ; print header line + call lcrlf ; new line + +; Get Files from Disk +xdirgo: + lhld buffer ; end of code + call dbuffer ; set buffers + jz memerr ; memory overflow error? + push h ; save regs + push d + call dfree ; compute amount of free space on disk + xchg ; amount in hl + shld freesiz ; save free space count + pop d ; get regs + pop h + call dirsload ; load with sizing information + jz memerr ; memory overflow error? + push h ; save hl + mov h,b ; HL=number of files loaded + mov l,c + shld totfil ; save total count + push b ; save bc + lda curdisk ; prepare to relog in disk + mov e,a + mvi c,14 ; select disk + call bdos + lda curuser ; prepare to relog in user + mov e,a + mvi c,32 ; select user + call bdos + +; Open disk file if necessary for disk output + lda dflg ; disk output? + ora a ; 0=no + jz xdir0 + lxi d,dskfcb ; open disk file for char output + call fo0$open ; open file for output +xdir0: + pop b ; get count + pop h ; get ptr + +; Continue processing; select desired files + lda aflg ; get file attributes + lxi d,fcb ; get ptr to fcb + call dirsel ; select files + +; Now, pack and alphabetize directory + lda nflg ; negate selection? + ora a ; 0=no + cz dirpack ; select marked entries + cnz dirnpack ; select unmarked entries + lda gflg ; get grouping flag + call diralpha ; alphabetize directory + shld firstf ; save ptr to first file + mov h,b ; HL=file count + mov l,c + shld fcount ; save file count + shld countf ; save file down count + lxi h,0 ; set file size counter + shld totsiz ; save counter + lda dflg ; set temp flags + sta dflgt + lda pflg + sta pflgt + +; +; Major feature selection -- +; Two major features of XDIR are selected at this time: +; 1. Directory Display Functions +; 2. File Name Buffer Functions +; At this point, the following key values are know: +; FIRSTF - Pointer to First File +; FCOUNT, COUNTF - Number of Files +; + lda fflg ; get flag + ora a ; Z=Directory Display, NZ=File Name Buffer Fcts + jnz xdirf ; Do File Name Buffer Fcts + +; +; Main Directory Print Routine -- This routine displays the directory to +; the console, printer, or disk as desired +; +; Print header lines and one screen of entries +xdir2: + lda dflg ; save disk and print output flags + sta dflgs + lda pflg + sta pflgs + lda dflgt ; use temp flags + sta dflg + lda pflgt + sta pflg + xra a ; A=0 + sta dflgt ; clear temp flags so no banner 2nd time around + sta pflgt + +; Print: Main Banner + call banner ; print banner + +; Print: Horizontal/Vertical Listing Message + call printx + db ' ',0 + lda hflg ; get horizontal/vertical flag + ora a ; 0=vertical + jnz xdir2a + call printx + db 'Vertical',0 + jmp xdir3 +xdir2a: + call printx + db 'Horizontal',0 + +; Print: Listing by File Name and Type or Type and Name Message +xdir3: + call printx + db ' Listing by File ',0 + lda gflg ; grouping flag + ora a ; 0=name and type + jnz xdir3a + call printx + db 'Name/Type',0 + jmp xdir4 +xdir3a: + call printx + db 'Type/Name',0 + +; +; Print: Disk and User +; +xdir4: + call printx ; print everywhere + db cr,lf,' Disk: ',0 + lda disk ; get current disk + adi 'A' ; convert to ASCII + call coutx ; print everywhere + call printx ; print everywhere + db ' User: ',0 + lda aflg ; get user number + ani 20h ; all? + jz xdir4b + call printx + db 'All',0 + jmp xdir5 +xdir4b: + lda aflg ; get selected user + ani 1fh ; select user number + lxi d,numbuf ; store number in buffer + call madc ; get number + mvi b,3 ; 3 digits + call prnumx ; print number everywhere + +; +; Print: Directory Name +; +xdir5: + lda aflg ; check for all users + mov c,a ; save in C + ani 20h + jnz xdir5fa + mov a,c ; get user + ani 1fh ; mask for just user + mov c,a + lda disk ; select disk + mov b,a + call dutdir ; determine if name available + jz xdir5fa + call printx + db ' Name: ',0 + mvi b,8 ; 8 chars to name +xdir5n: + mov a,m ; get char + inx h ; pt to next + cpi ' ' ; don't print spaces + cnz coutx + dcr b ; count down + jnz xdir5n +; +; Print: Selected File Attributes +; +xdir5fa: + call printx + db ', File Attributes: ',0 + lda aflg ; get flag + push psw ; save A + ani 80h ; Non-system? + jz xdir5a + call printx + db ' Non-System',0 +xdir5a: + pop psw ; get A + ani 40h ; System? + jz xdir5b + call printx + db ' System',0 + +; See if any files selected +xdir5b: + lhld countf ; get file down count + mov a,h ; any files? + ora l + jnz xdir6 + call printx ; print everywhere + db cr,lf,'No files selected -- ',0 + jmp xdir11 + +; +; This is the main looping entry point for each screen display +; +xdir6: + lda aflg ; all users selected? + ani 20h + jnz xdir6a +; +; This is the header which is printed if the files in only one user area are +; displayed +; + call crlfx ; new line + call hdr2 ; pt to header + lda rsflg + ora a ; Z=no + cnz sp0 ; print RS + call sp2 ; print leading spaces + call hdr2 ; print header + lda rsflg + ora a ; Z=no + cnz sp0 ; print RS + call sp2 ; print leading spaces + call hdr2 ; print header + lda rsflg + ora a + cnz sp0 + call crlfx ; new line + call hdr1 ; print underlines + lda rsflg + ora a + cnz sp1 + call sp2 ; leading spaces + call hdr1 ; underlines + lda rsflg + ora a + cnz sp1 + call sp2 ; leading spaces + call hdr1 ; underlines + lda rsflg + ora a + cnz sp1 + jmp xdir6b +; +; General-Purpose Header Print Routines +; +sp0: + call printx + db ' RS',0 + ret +sp1: + call printx + db ' --',0 + ret +sp2: + call printx + db ' ',0 + ret +spu: + call printx + db ' U ',0 + ret +spu1: + call printx + db ' ',0 + ret +spu2: + call printx + db ' - ',0 + ret +hdr1: + call printx + db '-------- --- ------',0 + ret +hdr2: + call printx + db 'Filename.Typ Size K',0 + ret +; +; This is the header which is printed if the files in all user areas are +; displayed +; +xdir6a: + call crlfx + call spu ; print U + call hdr2 ; print header + lda rsflg + ora a + cnz sp0 ; RS + call spu1 + call spu ; print U + call hdr2 ; print header + lda rsflg + ora a + cnz sp0 ; RS + call spu1 + call spu ; print U + call hdr2 ; print header + lda rsflg + ora a + cnz sp0 ; RS + call crlfx + call spu2 ; 1 underscore + call hdr1 ; underscores + lda rsflg + ora a + cnz sp1 + call spu1 + call spu2 ; 1 underscore + call hdr1 ; underscores + lda rsflg + ora a + cnz sp1 + call spu1 + call spu2 ; 1 underscore + call hdr1 ; underscores + lda rsflg + ora a + cnz sp1 + +; +; Prepare Columnar Output +; +xdir6b: + lda dflgs ; restore disk and print flags + sta dflg + lda pflgs + sta pflg + lhld countf ; get file count down + lxi d,maxent ; assume maxent entries to print + mov a,h ; within range? + ora a ; outside of range if not + jnz xdir7 ; subtract entries to print from total entries + mov a,l ; within range? + cpi maxent ; less than maxent entries left? + jnc xdir7 ; subtract entries to print from total entries + mov d,h ; DE=HL=number of entries to print + mov e,l +xdir7: + mov a,l ; subtract entries to print (DE) from total (HL) + sub e + mov l,a + mov a,h + sbb d + mov h,a ; HL=result + shld countf ; save new down count + mov b,h ; BC=count + mov c,l + lhld firstf ; pt to first file +; +; At this point, BC=number of remaining entries, DE=number of entries to +; print, and HL pts to first entry to print +; + shld ptr1 ; save ptr to 1st entry + lda hflg ; horizontal listing? + ora a ; 0ffh = yes + jnz xdir7c ; don't worry about columns if horizontal + push d ; save count + call divde3 ; divide DE by 3, result*esize in BC, remainder in A + lxi d,esize ; DE=ESIZE (size of entry) + dad b ; add BC as a minimum + ora a ; any remainder? + jz xdir7a ; skip if none + dad d ; add in ESIZE for additional length of 1st col +xdir7a: + shld ptr2 ; save ptr to col 2 + dad b ; add BC as a minimum + cpi 2 ; if remainder 2, add ESIZE for additional + jc xdir7b + dad d ; add in ESIZE +xdir7b: + shld ptr3 ; save ptr to col 3 + pop d ; get count in de +; +; Main entry print routine +; +xdir7c: + mvi d,1 ; set 3's counter +xdir8: + lhld ptr1 ; pt to first entry + call prentry ; print entry + shld ptr1 ; put ptr + lda hflg ; horizontal? + ora a ; 0ffh = yes + jnz xdir9 + dcr e ; count down + jz xdir10 + lhld ptr2 ; get ptr + call prentry ; print entry + shld ptr2 ; put ptr + dcr e ; count down + jz xdir10 + lhld ptr3 ; get ptr + call prentry ; print entry + shld ptr3 ; put ptr +xdir9: + dcr e ; count down + jnz xdir8 ; continue if not zero + shld firstf ; save ptr to first of next set of entries to print + lhld countf ; get count of remaining entries +; +; At this point, HL=number of entries left +; + mov a,h ; anything left? + ora l + jz xdir10 + lda dflg ; no message if disk or printer output + mov b,a + lda pflg + ora b + jnz xdir6 + call print ; screen break + db cr,lf,' --> Screen Break -- Strike any char <-- ',0 + call cin ; get response + cpi ctrlc ; abort? + jz return + jmp xdir6 ; new screen display +; +; Print end statistics and exit +; +xdir10: + call crlfx ; new line + lhld fcount ; print file count + call prhlx ; print it everywhere + call printx + db ' Files Using ',0 + lhld totsiz ; get total of file sizes + call prhlx ; print it everywhere + call printx + db 'K, ',0 + lhld totfil ; print total file count + call prhlx ; print it everywhere + call printx + db ' Files on Disk and ',0 + +; +; Print Amount of Free Space Left on Disk +; Entry Point if No Files Found +; +xdir11: + lhld freesiz ; get amount of free space + call prhlx ; print it everywhere + call printx + db 'K Left',0 + lda dflg ; if disk or printer output, new line + mov b,a + lda pflg + ora b + jz return + call crlfx ; new line for disk and/or printer + lda pflg ; print output + mov b,a + lda ffflg ; form feed + ana b ; if print and form feed ... NZ is set + mvi a,ff ; form feed char + cnz lout ; form feed to printer + jmp return + +; +; File Name Buffer Functions +; +xdirf: + call banner ; print banner + lda iscn ; just scan? + ora a ; 0=no + jnz xdirfs + lda fopt ; get option of F command + cpi 'L' ; log names to disk? + jz xdirfl + cpi 'S' ; scan names on disk? + jz xdirfs +; +; File Name Print Option; /FP option +; +xdirfp: + call openin ; open FNAMES.DIR for input +xdfp0: + call printx + db cr,lf,cr,lf + db 'Printout of Recorded File Names --',cr,lf,' ',0 +; +; Extract File Name Count +; + call f1$get ; get low count + jnz geterr + mov l,a ; save in L + call f1$get ; get high count + jnz geterr + mov h,a ; save in H + push h ; save HL + call prhlx ; print HL everywhere + call printx + db ' File Names',cr,lf,0 + call prfhdr ; print file name header + pop h ; get HL + mvi c,0 ; set entry counter + +; +; Loop for extracting names from FNAMES.DIR and printing them +; +xdfp1: + mov a,h ; no more entries? + ora l + jz xdfp2 + dcx h ; count down + call getdfn ; get next disk file name from FNAMES.DIR + call prfnfx ; print file name entry + inr c ; increment count + mov a,c ; new line time? + ani 3 + cz crlfx + jmp xdfp1 +xdfp2: + call fi1$close + call crlfx ; new line + jmp return + +; +; Log File Names to Disk; /FL option +; Structure of FNAMES.DIR file is: +; File Name Count, Low-Order Byte +; File Name Count, High-Order Byte +; File Names, stored as 12 bytes -- User Number, FN, and FT +; +xdirfl: + lxi d,fnfcb ; open file for output + call fo1$open + jz xdfl1 + call printx + db cr,lf,'Cannot Create FNAMES.DIR',0 + jmp return + +; Log Files to Disk with possible initial inspect and select by user +xdfl1: + lda iflg ; inspect? + ora a ; 0=no + cnz flinsp ; inspect if selected + +; Print file count + call printx + db cr,lf,cr,lf + db 'Logging File Names to Disk --',cr,lf,' ',0 + lhld fcount ; get count + call prhlx ; print it + call printx + db ' File Names',cr,lf,0 + +; Check file count and print appropriate header + lhld fcount ; get number of files + mov a,h ; any files? + ora l + jz xdfl1a + call prfhdr ; print file name header + jmp xdfl1b +xdfl1a: + call printx ; no files + db ' No Files to be Logged',0 + +; Store file count to disk +xdfl1b: + mov a,l ; store low count + call f1$put + jnz puterr + mov a,h ; store high count + call f1$put + jnz puterr + xchg ; ... in DE + lhld firstf ; pt to first file + mvi c,0 ; set display counter + +; Loop to store files names +xdfl2: + mov a,d ; done? + ora e + jz xdfl3 + dcx d ; count down + +; Write entry to disk + push d ; save count + push h ; save ptr to file + mov a,m ; get user number + call f1$put ; save it + jnz puterr + lxi d,numbuf ; print user number + push d ; save ptr + call madc + pop d ; get ptr + inx d ; pt to 1st digit + ldax d ; get it + call coutx + inx d ; pt to last digit + ldax d ; get it + call coutx + mvi a,' ' ; + call coutx + inx h ; pt to FN + mvi b,8 ; 8 chars + call xdput + mvi a,'.' + call coutx + mvi b,3 ; 3 chars + call xdput + mvi a,' ' ; print + call coutx + call coutx + inr c ; increment count + mov a,c ; get count + ani 3 + cz crlfx + pop h ; get ptr to first file + pop d ; get count + push b + lxi b,esize ; pt to next file + dad b + pop b + jmp xdfl2 + +; Done with creation of FNAMES.DIR +xdfl3: + call fo1$close ; close file + call crlfx + jmp return + +; Write B chars pted to by HL to FNAMES.DIR and user +xdput: + mov a,m ; get char + call coutx ; print it everywhere + call f1$put ; put it on disk + jnz puterr + inx h ; pt to next + dcr b ; count down + jnz xdput + ret + +; +; Inspect Files for Logging to Disk +; +flinsp: + lhld fcount ; get count of files + xchg ; ... in DE + mov a,d ; any files selected? + ora e + rz ; abort if none + +; Inspection banner + call printx + db cr,lf,'Inspection of Files to be Logged',0 + lhld firstf ; pt to first file + +; Main inspection loop +flil1: + mov a,d ; any files selected? + ora e + jz flil3 ; done if not + dcx d ; count down + push d ; save count + lxi d,dfnbuf ; copy file name to buffer + mvi b,12 ; 12 bytes + call moveb + call printx + db cr,lf,'Log ',0 + call prfnfx ; print file name for prompt + call printx + db ' to Disk (Y/N)? ',0 + call cin ; get response + call caps ; capitalize + call coutx + cpi 'N' ; No? + jz flil2 + mov a,m ; mark user number + ori 80h + mov m,a +flil2: + lxi d,esize ; skip to next entry + dad d + pop d ; get count + jmp flil1 +flil3: + lhld fcount ; get number of files + mov b,h ; count in BC + mov c,l + lhld firstf ; pt to first file + call dirpack ; pack directory + mov h,b ; new count in HL + mov l,c + shld fcount ; set counts + shld countf + ret + +; +; Error Message for Output +; +puterr: + call printx + db cr,lf,'Disk Write Error',0 + jmp return + +; +; Scan Disk for File Names; /FS option +; +xdirfs: + call printx + db cr,lf,'File Name Scanner',0 + call openin ; open FNAMES.DIR for input +xdfs1: + call printx + db cr,lf,'Files Named in FNAMES.DIR missing from Disk --',cr,lf,0 + +; Get file name count + call f1$get ; get file name count from disk + jnz geterr + mov c,a ; store low + call f1$get + jnz geterr + mov b,a ; store high + lhld fcount ; get count of number of files + xchg ; ... in DE + lhld firstf ; pt to first file + xra a ; A=0 + sta crcnt ; set counter for CRLF + sta fmark ; mark no first file yet + +; +; At this point, HL pts to first file in buffer, DE is number of files in +; buffer, and BC is number of files in FNAMES.DIR +; + mov a,b ; any names in FNAMES.DIR? + ora c + jz xdfs5 ; mark all names in buffer if not + call getdfn ; get first disk name +xdfs2: + mov a,b ; see if any more files in FNAMES.DIR + ora c + jz xdfs5 ; mark rest of files in buffer and continue + mov a,d ; see if any more files in buffer + ora e + jz xdfs6 ; name rest of files in FNAMES.DIR as missing and cont + call compfn ; compare to file name pted to by HL + jz xdfs3a ; advance to next file if they match + jc xdfs3 ; mark file name pted to by HL as additional + lda fmark ; first file? + ora a ; 0=yes + jnz xdfs2a + mvi a,0ffh ; set mark + sta fmark + call prfhdr ; print header +xdfs2a: + call prfnfx ; print file name in FNAMES.DIR + dcx b ; count down + mov a,b ; done? + ora c + jz xdfs2 + call getdfn ; get next name + lda crcnt ; get entry counter + inr a ; increment + sta crcnt + ani 3 ; mask + cz crlfx ; new line every 4 + jmp xdfs2 +xdfs3: + mov a,m ; get user number + ori 80h ; mark it + mov m,a ; put it back + jmp xdfs4 +xdfs3a: + call getdfn ; get next name + dcx b ; count down on names +xdfs4: + push d ; save count + lxi d,esize ; pt to next entry + dad d + pop d ; get count + dcx d ; count down + jmp xdfs2 ; continue + +; Mark rest of files in buffer +xdfs5: + mov a,d ; check count + ora e + jz xdfs7 + dcx d ; count down + mov a,m ; get user number + ori 80h ; mark it + mov m,a ; put user number + lxi b,esize ; skip to next file + dad b + jmp xdfs5 ; continue + +; Name rest of files in FNAMES.DIR as missing +xdfs6: + call prfnfx ; print file name in FNAMES.DIR + dcx b ; count down + mov a,b ; done? + ora c + jz xdfs7 ; next phase + lda crcnt ; get entry counter + inr a ; increment + sta crcnt + ani 3 ; mask + cz crlfx ; new line every 4 + call getdfn ; get next name + jmp xdfs6 + +; Part 2 of Scan - Name Additional Files +xdfs7: + lda fmark ; no files printed? + ora a ; 0=none + jnz xdfs7a + call printx + db ' No Files Missing',0 +xdfs7a: + xra a ; A=0 + sta fmark ; set mark for 2nd part + call printx + db cr,lf,'Additional Files on Disk NOT in FNAMES.DIR --',cr,lf,0 + lhld fcount ; get count of files + xchg ; ... in DE + lhld firstf ; pt to first file + xra a ; A=0 + sta crcnt ; set counter +xdfs8: + mov a,d ; check count + ora e + jz xdfs9 ; done if zero + dcx d ; count down + mov a,m ; get user number + ani 80h ; marked? + jz xdfs8b ; skip if not + mov a,m ; get user number + ani 7fh ; mask + mov m,a ; replace + lda fmark ; first time? + ora a ; 0=yes + jnz xdfs8a + mvi a,0ffh ; set mark + sta fmark + call prfhdr ; print header +xdfs8a: + push d ; save count + lxi d,dfnbuf ; copy to buffer for print + mvi b,12 ; 12 bytes + call moveb ; copy + pop d + call prfnfx ; print file name + lda crcnt ; count down + inr a + sta crcnt + ani 3 ; new line? + cz crlfx +xdfs8b: + lxi b,esize ; pt to next entry + dad b + jmp xdfs8 ; continue + +; Done with Scan +xdfs9: + lda fmark ; no files printed? + ora a ; 0=none + jnz xdfs9a + call printx + db ' No Additional Files',0 +xdfs9a: + jmp return + +; +; Compare file name pted to by HL with that in DFNBUF; return with Z if same, +; C if (HL)<(DFNBUF) +; +compfn: + push h ; save regs + push d + push b + lxi d,dfnbuf ; pt to buffer + xchg ; DE pts to file name, HL pts to DFNBUF + push h ; save ptrs + push d + mvi b,11 ; compare FN and FT +cfn1: + inx h ; pt to next + inx d + mov a,m ; get char from DFNBUF + ani 7fh ; mask MSB + mov c,a ; save in C + ldax d ; get name in memory buffer + ani 7fh ; mask MSB + cmp c ; compare to name in DFNBUF + jnz cfn2 ; not same, so exit with flag set + dcr b ; count down + jnz cfn1 + pop d ; same so far, so compare user numbers + pop h + mov a,m ; get user number + ani 7fh ; mask MSB + mov c,a ; save in C + ldax d ; get user number + ani 7fh ; mask MSB + cmp c ; compare + push h ; fill stack for ext + push h +cfn2: + pop h ; clear stack + pop h + pop b ; get regs and exit + pop d + pop h + ret + +; +; General Utility Routines +; + +; +; Print user and file name stored in DFNBUF for /Ff functions +; +prfnfx: + push h ; save regs + push d + push b + lxi h,dfnbuf ; pt to first byte of buffer + mov a,m ; get first byte (user number) + lxi d,numbuf ; convert to chars in memory + call madc + lxi d,numbuf+1 ; pt to first char + ldax d ; get it + call coutx + inx d ; pt to 2nd char + ldax d ; get it + call coutx + mvi a,' ' ; + call coutx + inx h ; pt to FN + mvi b,8 ; 8 chars for FN + call prch + mvi a,'.' + call coutx + mvi b,3 ; 3 chars for FT + call prch + call prfhs ; 2 + pop b ; get regs + pop d + pop h + ret +; +; Get next User Number, FN, and FT from disk and save it in buffer +; +getdfn: + push h ; save regs + push d + push b + lxi h,dfnbuf ; pt to buffer + mvi b,12 ; 12 bytes +getdf1: + call f1$get ; get user + jnz geterr + mov m,a ; store user + inx h ; pt to next + dcr b ; count down + jnz getdf1 + pop b ; restore regs + pop d + pop h + ret +; +; Print File Buffer Names Header Everywhere +; +prfhdr: + mvi b,3 ; 3 times +prfhd1: + call prfh1 ; print header + call prfhs ; print 2 spaces + dcr b + jnz prfhd1 + call prfh1 + call crlfx + mvi b,3 ; 3 times +prfhd2: + call prfh2 ; print header + call prfhs ; print 2 spaces + dcr b + jnz prfhd2 + call prfh2 + call crlfx + ret +prfhs: + call printx + db ' ',0 + ret +prfh1: + call printx + db ' U Filename.Typ',0 + ret +prfh2: + call printx + db ' - -------- ---',0 + ret +; +; Get Error Message and Abort +; +geterr: + call printx + db cr,lf,'Premature EOF',0 + jmp return +; +; Open FNAMES.DIR for byte-oriented input +; +openin: + lxi d,fnfcb ; open file + call fi1$open ; open for input + rz + call printx + db cr,lf,'FNAMES.DIR Not Found',0 + jmp return +; +; Print disk entry for normal directory display functions +; +prentry: + dcr d ; count counter + jnz prent1 + mvi d,3 ; reset count + call crlfx +prent1: + shld entptr ; save entry ptr + lda aflg ; all users selected? + ani 20h + jz prent2 +; +; The following prints the user number if all user numbers are selected +; + push h ; save regs + push d + push b + mov a,m ; get user number + ani 1fh ; mask it + lxi d,numbuf + call madc ; convert to chars in memory + lxi h,numbuf+1 ; pt to first char + mov a,m ; get it + call coutx + inx h ; get 2nd char + mov a,m + call coutx + mvi a,' ' ; print + call coutx + pop b ; get regs + pop d + pop h +prent2: + inx h ; pt to first char of file name + mvi b,8 ; print 8 chars + call prch + mvi a,'.' ; print dot + call coutx + push h ; save RS ptr + mvi b,3 ; print 3 chars + call prch + push d ; save de + lhld entptr ; pt to entry + mvi a,' ' ; skip 2 spaces + call coutx + call coutx + call fsize ; compute file size + lhld totsiz ; get total file size counter + dad d ; add in new file + shld totsiz ; save new total file size counter + xchg ; get file size into HL + call prhlx ; print HL value + pop d ; get de + pop h ; pt to RS + lda rsflg ; print RS fields? + ora a ; Z=no + jz pren2a + mvi a,' ' ; print 1 space + call coutx + mvi b,'R' ; letter + call prletx ; print R if bit set + inx h + mvi b,'S' ; letter + call prletx ; print S if bit set + dcx h ; ... for following inx h +pren2a: + inx h ; point correctly + mvi a,' ' ; 1 space + call coutx + lda aflg ; all users? + ani 20h + jnz prent3 +; +; The following prints 2 additional spaces if only one user area is selected +; + mvi a,' ' ; 2 more spaces for not all users + call coutx + call coutx +prent3: + lxi b,6 ; pt to next entry + dad b + ret +; +; Print B chars pted to by HL +; +prch: + mov a,m ; get char + inx h ; pt to next + ani 7fh ; mask out msb + cpi ' ' ; within range? + jnc prch1 ; print special char if not valid char + mvi a,'?' ; print ? if not valid char +prch1: + call coutx ; print it + dcr b ; count down + jnz prch + ret +; +; Extended Print Routines +; +prletx: + mov a,m ; get byte + ani 80h ; look at msb + jz prlets + mov a,b ; get letter + call coutx + ret +prlets: + mvi a,' ' ; print + call coutx + ret +prhlx: + lxi d,numbuf ; store in number buffer + call mhldc ; hl into memory as decimal + mvi b,5 ; 5 digits +prnumx: + lxi h,numbuf ; pt to buffer +prnum: + mov a,m ; get digit + inx h ; pt to next + call coutx ; print everywhere + dcr b ; count down + jnz prnum + ret +printx: + xthl ; pt to string + call prxl ; print string at HL + xthl + ret +prxl: + mov a,m ; get byte + inx h ; pt to next + ora a ; done? + rz + call coutx ; print everywhere + jmp prxl +coutx: + push b ; save bc + push psw ; save char + ani 7fh ; mask out msb + mov b,a ; char in B + call cout ; print to screen + lda pflg ; printer on? + ora a ; 0=no + mov a,b ; get char + cnz lout ; printer output if on + lda dflg ; disk on? + ora a ; 0=no + mov a,b ; get char + cnz f0$put ; output to file + pop psw ; get char + pop b ; get bc + ret +crlfx: + push psw ; save A + call printx + db cr,lf,0 + pop psw ; get A + ret +; +; Divide DE by 3; return with BC=result*esize, a=remainder +; +divde3: + push d ; save de, hl + push h + mvi d,0 ; make sure D=0 + mov a,e ; value in A +divd31: + sui 3 ; subtract 3 + jc divd32 + jz divd33 + inr d ; add 1 to result + jmp divd31 +divd32: + adi 3 ; add back in + jmp divd34 +divd33: + inr d ; add 1 for even division +divd34: + sta rem ; save remainder + lxi b,esize + lxi h,0 +divd35: + mov a,d ; done? + ora a ; 0=yes + jz divd36 + dcr d + dad b ; add in another ESIZE + jmp divd35 +divd36: + mov b,h ; BC is result + mov c,l + lda rem ; A is remainder + pop h ; restore regs + pop d + ret +; +; Skip blanks +; +sblank: + mov a,m ; pt to char + cpi ' ' ; blank? + rnz + inx h ; pt to next + jmp sblank + +; +; Buffers +; +aflg: ds 1 ; attibute flag +dflg: ds 1 ; disk output on flag +fflg: ds 1 ; 0=no file name buffer function +gflg: ds 1 ; 0=group by name/type +hflg: ds 1 ; 0=vertical list +iflg: ds 1 ; 0=no inspect +nflg: ds 1 ; 0=no negate +pflg: ds 1 ; printer output on flag +fopt: ds 1 ; file name buffer option +crcnt: ds 1 ; entry counter +fmark: ds 1 ; first file marker +dflgt: ds 1 ; temp flags +pflgt: ds 1 +dflgs: ds 1 +pflgs: ds 1 +rsflg: ds 1 ; RS Display Flag +ffflg: ds 1 ; form feed flag +disk: ds 1 ; selected disk +curdisk: + ds 1 ; current disk +curuser: + ds 1 ; current user +rem: ds 1 ; remainder buffer +firstf: ds 2 ; ptr to first file of group to print +totfil: ds 2 ; total number of files on disk +fcount: ds 2 ; count of files +countf: ds 2 ; down count of files +freesiz: + ds 2 ; amount of free space on disk +totsiz: + ds 2 ; total size of all files +ptr1: ds 2 ; col output ptrs +ptr2: ds 2 +ptr3: ds 2 +entptr: ds 2 ; current entry ptr +numbuf: ds 6 ; number buffer +dfnbuf: + ds 12 ; disk file name buffer +dskfcb: + db 0 + db 'XDIR DIR' + db 0,0,0,0 + ds 16 + ds 4 +fnfcb: + db 0 + db 'FNAMES DIR' + db 0,0,0,0 + ds 16 + ds 4 +cmdlne: ds 2 ; pointer to command line +buffer: ds 2 ; pointer to free space buffer +stack: ds 2 ; stack ptr + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3BASE1.LIB b/Images/Source/hd0/s0/u15/Z3BASE1.LIB new file mode 100644 index 00000000..6cf429da --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3BASE1.LIB @@ -0,0 +1,276 @@ +; Z3BASE - Maximum Configuration +; Offset: 5100H + +;**************************************************************** +;* * +;* Z3BASE.LIB -- Base Addresses for ZCPR3 System * +;* by Richard Conn * +;* * +;* These addresses are used by the following System * +;* Segments: * +;* * +;* Segment Function * +;* ------- -------- * +;* ABOOTFD Boot System from Floppy Disk * +;* ABOOTHD Boot System from Hard Disk * +;* BDOSZ Customized BDOS * +;* CBIOSZ Customized BIOS * +;* ZCPR3 ZCPR3 Command Processor * +;* *.ENV All Environment Descriptors * +;* *.FCP All Flow Command Packages * +;* *.IOP All Input/Output Packages * +;* *.NDR All Named Directory Definition Files * +;* *.RCP All Resident Command Packages * +;* * +;* * +;* Memory Map of System: * +;* * +;* Address Range Size Function * +;* ------------- ------- -------- * +;* 0 - FF 256 b Standard CP/M Buffers except * +;* 40 - 4A 11 b for ZCPR3 External Path * +;* 4B 1 b Wheel Byte * +;* 100 - BFFF ~48 K TPA * +;* C000 - C7FF 2 K ZCPR3 Command Processor * +;* C800 - D5FF 3.5K BDOSZ * +;* D600 - E3FF 3.5K CBIOSZ with Buffers * +;* E400 - EBFF 2 K Resident Command Package * +;* EC00 - F1FF 1.5K Redirectable I/O Driver Package * +;* F200 - F3FF 0.5K Flow Command Package * +;* F400 - F4FF 256 b Environment Descriptors * +;* Bytes 00H-7FH: Z3 Parameters * +;* Bytes 80H-FFH: Z3 Terminal Cap * +;* F500 - F57F 128 b ZCPR3 Shell Stack * +;* F580 - F5CF 80 b ZCPR3 Message Buffers * +;* Byte 0: Error Flag (Z/NZ) * +;* Byte 1: IF (8 Levels) * +;* Byte 2: IF Active (8 Levels) * +;* Byte 3: Z3 Cmd Status * +;* 00B - Normal * +;* 01B - Shell * +;* 10B - Error * +;* Bytes 4&5: Error Address if 10B * +;* Byte 6: Program Error Code * +;* Byte 7: ZEX Message Byte * +;* 00B - Normal * +;* 01B - Z3 Prompt * +;* 10B - Suspend Intercept * +;* Byte 8: ZEX Running Flag (0=No) * +;* Bytes 9-10: Address of Next * +;* Char for ZEX to Return * +;* Bytes 11-12: Address of First * +;* Char in ZEX Memory- * +;* Based File Buffer * +;* Byte 13: SH Control Byte * +;* Bit 0: Enable SHCMT * +;* Bit 1: Enable SHECHO * +;* Bit 7: Enable Shell * +;* Entry Wait * +;* Bytes 14-15: Shell Scratch * +;* Bytes 10H-2FH: Error Cmd * +;* Bytes 30H-39H: Registers * +;* Bytes 3AH-3FH: Reserved * +;* Bytes 40H-4FH: User-Defined * +;* F5D0 - F5FF 48 b ZCPR3 External FCB * +;* F600 - F6FF 256 b Memory-Based Named Directory * +;* F700 - F7CF 208 b Multiple Command Line Buffer * +;* F7D0 - F7FF 48 b ZCPR3 External Stack * +;* F800 - FBFF 1 K Disk Controller EPROM * +;* FC00 - FFFF 1 K Disk Controller RAM * +;* * +;**************************************************************** + +; +; True and False +; +FALSE equ 0 +TRUE equ NOT FALSE + + +;* +;* ZCPR3 BASE EQUATES +;* + +; +; 1. VERSION NUMBERS, MEMORY SIZE, and CP/M BASE ADDRESS +; +; The following equates define the version numbers of the ZCPR3 +; Command Processor and the CBIOSZ. They also explicitly state the size +; of the TPA for inclusion in the CBIOSZ header printed at Cold Boot. +; +Z3REV EQU 30 ; ZCPR3 REV NUMBER +CBREV EQU 41 ; CBIOSZ REV NUMBER +MSIZE EQU 48 ; SIZE OF TPA +; +; BASE - Base Address of user's CP/M system (normally 0 for DR version) +; This equate allows easy modification by non-standard CP/M (eg,H89) +; +BASE EQU 0 + +; +; 2. PROCESSOR SELECTION +; +; The following equate selects the use of the 8080/8085 micro or +; the Z80 micro for the target for ZCPR3. Note that selecting the +; 8080/8085 should be done ONLY if you have an 8080 or 8085. If you have +; a Z80, by all means select this one since the code is much smaller and +; you can cram more features into the system as a result. +; If the processor is an 8080 or 8085, set this equate to TRUE. +; If the processor is a Z80, set it to FALSE. +; +I8080 EQU FALSE + +; +; 3. EXTERNAL PATH +; +; The following equates define the address of the ZCPR3 External +; Path and the number of two-byte elements contained in this path (maximum). +; If there is no ZCPR3 External Path, both of these values should be set to 0. +; +EXPATH EQU 40H ; EXTERNAL PATH +EXPATHS EQU 5 ; 5 2-byte Path Elements + ; (PATH SIZE = EXPATHS*2 + 1) + +; +; 4. WHEEL BYTE +; +; The following equate defines the address of the ZCPR3 Wheel Byte. +; If there is no ZCPR3 Wheel Byte, this value should be set to 0. +; +Z3WHL EQU 4BH ; WHEEL BYTE ADDRESS + + +; +; 5. CCP LOCATION +; +; The following equate defines the address of the ZCPR3 Command +; Processor. This address MUST be supplied. +; +CCP EQU 0C000H ; ZCPR3 COMMAND PROCESSOR + + +; +; 6. RCP LOCATION +; +; The following equates define the address of the ZCPR3 Resident +; Command Package and its size in 128-byte blocks. If there is no +; ZCPR3 Resident Command Package, both of these values should be 0. +; +RCP EQU 0E400H ; RESIDENT COMMAND PACKAGE +RCPS EQU 16 ; 16 128-byte Blocks (2K bytes) + + +; +; 7. IOP LOCATION +; +; The following equates define the address of the ZCPR3 Input/Output +; Package and its size in 128-byte blocks. If there is no ZCPR3 Input/Output +; Package, both of these values should be 0. +; +IOP EQU 0EC00H ; REDIRECTABLE I/O PACKAGE +IOPS EQU 12 ; 12 128-byte Blocks (1.5K bytes) + + +; +; 8. FCP LOCATION +; +; The following equates define the address of the ZCPR3 Flow Command +; Package and its size in 128-byte blocks. If there is no ZCPR3 Flow Command +; Package, both of these values should be 0. +; +FCP EQU 0F200H ; FLOW COMMAND PACKAGE +FCPS EQU 4 ; 4 128-byte Blocks (0.5K bytes) + + +; +; 9. ENV LOCATION +; +; The following equates define the address of the ZCPR3 Environment +; Descriptor and its size in 128-byte blocks. If there is no ZCPR3 Environment +; Descriptor, both of these values should be 0. +; +Z3ENV EQU 0F400H ; ENVIRONMENT DESCRIPTORS +Z3ENVS EQU 2 ; SIZE OF ENVIRONMENT DESCRIPTOR IN 128-BYTE BLOCKS + + +; +; 10. SHELL STACK +; +; The following equates define the address of the ZCPR3 Shell Stack, +; the number of entries permitted in the ZCPR3 Shell Stack, and the size +; of each entry in the Shell Stack in terms of bytes. If there is no ZCPR3 +; Shell Stack, all three values should be 0. +; +SHSTK EQU 0F500H ; ZCPR3 SHELL STACK +SHSTKS EQU 4 ; NUMBER OF SHSIZE-BYTE SHELL STACK ENTRIES +SHSIZE EQU 32 ; SIZE OF A SHELL STACK ENTRY + ; (STACK SIZE = SHSTKS * SHSIZE) + + +; +; 11. ZCPR3 MESSAGES +; +; The following equate defines the address of the ZCPR3 Message Buffer. +; This buffer is always 80 bytes long. If there is no ZCPR3 Message Buffer, +; this address should be 0. +; +Z3MSG EQU 0F580H ; ZCPR3 MESSAGE BUFFER + + +; +; 12. EXTERNAL FCB +; +; The following equate defines the address of the ZCPR3 External FCB. +; This buffer is always 36 bytes long. If there is no ZCPR3 External FCB, +; this address should be 0. +; +EXTFCB EQU 0F5D0H ; ZCPR3 EXTERNAL FCB + + +; +; 13. NAMED DIRECTORY BUFFER +; +; The following equates define the address and size (in terms of 18-byte +; entries) of the ZCPR3 Named Directory Buffer. If there is no such buffer, +; both of these values should be 0. +; +Z3NDIR EQU 0F600H ; ZCPR3 NAMED DIRECTORY AREA +Z3NDIRS EQU 14 ; 14 18-byte Named Directory Elements permitted + ; (NDIR SIZE = Z3NDIRS*18 + 1 for trailing 0) + + +; +; 14. COMMAND LINE +; +; The following equates define the address and size (in terms of bytes) +; of the ZCPR3 Command Line Buffer (formerly called the Multiple Command Line +; Buffer under ZCPR2). If there is no such buffer, both of these values should +; be 0. +; +Z3CL EQU 0F700H ; ZCPR3 COMMAND LINE BUFFER +Z3CLS EQU 200 ; SIZE OF COMMAND LINE BUFFER + + +; +; 15. EXTERNAL STACK +; +; The following equate defines the address of the ZCPR3 External Stack. +; This stack is always 48 bytes in size. If there is no such stack, this +; value should be 0. +; +EXTSTK EQU 0F7D0H ; ZCPR3 EXTERNAL STACK + + +; +; 16. USER EQUATES +; +; The following equates are available for the implementer's target +; system. These are implementation-defined. +; +DJEPROM EQU 0F800H ; EPROM BASE ADDRESS + + +;* +;* END of ZCPR3 BASE EQUATES +;* + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3BASE2.LIB b/Images/Source/hd0/s0/u15/Z3BASE2.LIB new file mode 100644 index 00000000..059b0bbc --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3BASE2.LIB @@ -0,0 +1,273 @@ +; Z3BASE - Minimum Configuration +; Offset: 4100H + +;**************************************************************** +;* * +;* Z3BASE.LIB -- Base Addresses for ZCPR3 System * +;* by Richard Conn * +;* * +;* These addresses are used by the following System * +;* Segments: * +;* * +;* Segment Function * +;* ------- -------- * +;* ABOOTFD Boot System from Floppy Disk * +;* ABOOTHD Boot System from Hard Disk * +;* BDOSZ Customized BDOS * +;* CBIOSZ Customized BIOS * +;* ZCPR3 ZCPR3 Command Processor * +;* *.ENV All Environment Descriptors * +;* *.FCP All Flow Command Packages * +;* *.IOP All Input/Output Packages * +;* *.NDR All Named Directory Definition Files * +;* *.RCP All Resident Command Packages * +;* * +;* * +;* Memory Map of System: * +;* * +;* Address Range Size Function * +;* ------------- ------- -------- * +;* 0 - FF 256 b Standard CP/M Buffers except * +;* 40 - 4A 11 b for ZCPR3 External Path * +;* 4B 1 b Wheel Byte * +;* 100 - CFFF ~52 K TPA * +;* D000 - D7FF 2 K ZCPR3 Command Processor * +;* D800 - E5FF 3.5K BDOSZ * +;* E600 - F3FF 3.5K CBIOSZ with Buffers * +;* F400 - F4FF 256 b Environment Descriptors * +;* Bytes 00H-7FH: Z3 Parameters * +;* Bytes 80H-FFH: Z3 Terminal Cap * +;* F500 - F57F 128 b ZCPR3 Shell Stack * +;* F580 - F5CF 80 b ZCPR3 Message Buffers * +;* Byte 0: Error Flag (Z/NZ) * +;* Byte 1: IF (8 Levels) * +;* Byte 2: IF Active (8 Levels) * +;* Byte 3: Z3 Cmd Status * +;* 00B - Normal * +;* 01B - Shell * +;* 10B - Error * +;* Bytes 4&5: Error Address if 10B * +;* Byte 6: Program Error Code * +;* Byte 7: ZEX Message Byte * +;* 00B - Normal * +;* 01B - Z3 Prompt * +;* 10B - Suspend Intercept * +;* Byte 8: ZEX Running Flag (0=No) * +;* Bytes 9-10: Address of Next * +;* Char for ZEX to Return * +;* Bytes 11-12: Address of First * +;* Char in ZEX Memory- * +;* Based File Buffer * +;* Byte 13: SH Control Byte * +;* Bit 0: Enable SHCMT * +;* Bit 1: Enable SHECHO * +;* Bit 7: Enable Shell * +;* Entry Wait * +;* Bytes 14-15: Shell Scratch * +;* Bytes 10H-2FH: Error Cmd * +;* Bytes 30H-39H: Registers * +;* Bytes 3AH-3FH: Reserved * +;* Bytes 40H-4FH: User-Defined * +;* F5D0 - F5FF 48 b ZCPR3 External FCB * +;* F600 - F6FF 256 b Memory-Based Named Directory * +;* F700 - F7CF 208 b Multiple Command Line Buffer * +;* F7D0 - F7FF 48 b ZCPR3 External Stack * +;* F800 - FBFF 1 K Disk Controller EPROM * +;* FC00 - FFFF 1 K Disk Controller RAM * +;* * +;**************************************************************** + +; +; True and False +; +FALSE equ 0 +TRUE equ NOT FALSE + + +;* +;* ZCPR3 BASE EQUATES +;* + +; +; 1. VERSION NUMBERS, MEMORY SIZE, and CP/M BASE ADDRESS +; +; The following equates define the version numbers of the ZCPR3 +; Command Processor and the CBIOSZ. They also explicitly state the size +; of the TPA for inclusion in the CBIOSZ header printed at Cold Boot. +; +Z3REV EQU 30 ; ZCPR3 REV NUMBER +CBREV EQU 41 ; CBIOSZ REV NUMBER +MSIZE EQU 52 ; SIZE OF TPA +; +; BASE - Base Address of user's CP/M system (normally 0 for DR version) +; This equate allows easy modification by non-standard CP/M (eg,H89) +; +BASE EQU 0 + +; +; 2. PROCESSOR SELECTION +; +; The following equate selects the use of the 8080/8085 micro or +; the Z80 micro for the target for ZCPR3. Note that selecting the +; 8080/8085 should be done ONLY if you have an 8080 or 8085. If you have +; a Z80, by all means select this one since the code is much smaller and +; you can cram more features into the system as a result. +; If the processor is an 8080 or 8085, set this equate to TRUE. +; If the processor is a Z80, set it to FALSE. +; +I8080 EQU FALSE + +; +; 3. EXTERNAL PATH +; +; The following equates define the address of the ZCPR3 External +; Path and the number of two-byte elements contained in this path (maximum). +; If there is no ZCPR3 External Path, both of these values should be set to 0. +; +EXPATH EQU 40H ; EXTERNAL PATH +EXPATHS EQU 5 ; 5 2-byte Path Elements + ; (PATH SIZE = EXPATHS*2 + 1) + +; +; 4. WHEEL BYTE +; +; The following equate defines the address of the ZCPR3 Wheel Byte. +; If there is no ZCPR3 Wheel Byte, this value should be set to 0. +; +Z3WHL EQU 4BH ; WHEEL BYTE ADDRESS + + +; +; 5. CCP LOCATION +; +; The following equate defines the address of the ZCPR3 Command +; Processor. This address MUST be supplied. +; +CCP EQU 0D000H ; ZCPR3 COMMAND PROCESSOR + + +; +; 6. RCP LOCATION +; +; The following equates define the address of the ZCPR3 Resident +; Command Package and its size in 128-byte blocks. If there is no +; ZCPR3 Resident Command Package, both of these values should be 0. +; +RCP EQU 00000H ; RESIDENT COMMAND PACKAGE +RCPS EQU 00 ; 00 128-byte Blocks (0K bytes) + + +; +; 7. IOP LOCATION +; +; The following equates define the address of the ZCPR3 Input/Output +; Package and its size in 128-byte blocks. If there is no ZCPR3 Input/Output +; Package, both of these values should be 0. +; +IOP EQU 00000H ; REDIRECTABLE I/O PACKAGE +IOPS EQU 00 ; 00 128-byte Blocks (0K bytes) + + +; +; 8. FCP LOCATION +; +; The following equates define the address of the ZCPR3 Flow Command +; Package and its size in 128-byte blocks. If there is no ZCPR3 Flow Command +; Package, both of these values should be 0. +; +FCP EQU 00000H ; FLOW COMMAND PACKAGE +FCPS EQU 0 ; 0 128-byte Blocks (0K bytes) + + +; +; 9. ENV LOCATION +; +; The following equates define the address of the ZCPR3 Environment +; Descriptor and its size in 128-byte blocks. If there is no ZCPR3 Environment +; Descriptor, both of these values should be 0. +; +Z3ENV EQU 0F400H ; ENVIRONMENT DESCRIPTORS +Z3ENVS EQU 2 ; SIZE OF ENVIRONMENT DESCRIPTOR IN 128-BYTE BLOCKS + + +; +; 10. SHELL STACK +; +; The following equates define the address of the ZCPR3 Shell Stack, +; the number of entries permitted in the ZCPR3 Shell Stack, and the size +; of each entry in the Shell Stack in terms of bytes. If there is no ZCPR3 +; Shell Stack, all three values should be 0. +; +SHSTK EQU 0F500H ; ZCPR3 SHELL STACK +SHSTKS EQU 4 ; NUMBER OF SHSIZE-BYTE SHELL STACK ENTRIES +SHSIZE EQU 32 ; SIZE OF A SHELL STACK ENTRY + ; (STACK SIZE = SHSTKS * SHSIZE) + + +; +; 11. ZCPR3 MESSAGES +; +; The following equate defines the address of the ZCPR3 Message Buffer. +; This buffer is always 80 bytes long. If there is no ZCPR3 Message Buffer, +; this address should be 0. +; +Z3MSG EQU 0F580H ; ZCPR3 MESSAGE BUFFER + + +; +; 12. EXTERNAL FCB +; +; The following equate defines the address of the ZCPR3 External FCB. +; This buffer is always 36 bytes long. If there is no ZCPR3 External FCB, +; this address should be 0. +; +EXTFCB EQU 0F5D0H ; ZCPR3 EXTERNAL FCB + + +; +; 13. NAMED DIRECTORY BUFFER +; +; The following equates define the address and size (in terms of 18-byte +; entries) of the ZCPR3 Named Directory Buffer. If there is no such buffer, +; both of these values should be 0. +; +Z3NDIR EQU 0F600H ; ZCPR3 NAMED DIRECTORY AREA +Z3NDIRS EQU 14 ; 14 18-byte Named Directory Elements permitted + ; (NDIR SIZE = Z3NDIRS*18 + 1 for trailing 0) + + +; +; 14. COMMAND LINE +; +; The following equates define the address and size (in terms of bytes) +; of the ZCPR3 Command Line Buffer (formerly called the Multiple Command Line +; Buffer under ZCPR2). If there is no such buffer, both of these values should +; be 0. +; +Z3CL EQU 0F700H ; ZCPR3 COMMAND LINE BUFFER +Z3CLS EQU 200 ; SIZE OF COMMAND LINE BUFFER + + +; +; 15. EXTERNAL STACK +; +; The following equate defines the address of the ZCPR3 External Stack. +; This stack is always 48 bytes in size. If there is no such stack, this +; value should be 0. +; +EXTSTK EQU 0F7D0H ; ZCPR3 EXTERNAL STACK + + +; +; 16. USER EQUATES +; +; The following equates are available for the implementer's target +; system. These are implementation-defined. +; +DJEPROM EQU 0F800H ; EPROM BASE ADDRESS + + +;* +;* END of ZCPR3 BASE EQUATES +;* + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3FILES.PH1 b/Images/Source/hd0/s0/u15/Z3FILES.PH1 new file mode 100644 index 00000000..952b4976 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3FILES.PH1 @@ -0,0 +1,454 @@ + + + Echelon, Inc. ZCPR3 Distribution Files, Phase 1 + (Copyright 1984 Richard Conn) + + ZCPR3 Core Disk 1 -- + Filename.Typ Size Recs CRC Lines + 1 ALIAS .COM 4K 30 669A N/A + 2 CD .COM 1K 7 49C8 N/A + 3 COMMENT .COM 1K 5 9629 N/A + 4 DIR .COM 2K 16 BE35 N/A + 5 ECHO .COM 1K 4 DB5A N/A + 6 ERROR1 .COM 2K 12 E682 N/A + 7 ERROR2 .COM 3K 18 A088 N/A + 8 HELP .COM 3K 24 5708 N/A + 9 LDR .COM 3K 20 517E N/A + 10 MENU .COM 4K 27 1591 N/A + 11 MENUCK .COM 3K 20 4F74 N/A + 12 MKDIR .COM 6K 41 148B N/A + 13 PATH .COM 2K 10 653A N/A + 14 PWD .COM 1K 8 5DA2 N/A + 15 SYSENV .ASM 1K 5 4C5C 30 + 16 SYSENV .LIB 4K 26 CF64 135 + 17 SYSIOP .ASM 32K 254 1DCD 1220 + 18 SYSNDR .ASM 1K 3 3872 16 + 19 SYSNDR .LIB 2K 10 DA46 82 + 20 Z3BASE1 .LIB 9K 66 2C69 275 + 21 Z3BASE2 .LIB 8K 64 17AD 272 + 22 Z3HDR1 .LIB 19K 150 6B50 608 + 23 Z3HDR2 .LIB 19K 150 2C19 608 + 24 ZCPR3 .ASM 66K 522 2857 2906 + 25 ZCPR3 .INS 4K 28 52CF 160 + + ZCPR3 Core Disk 2 -- + Filename.Typ Size Recs CRC Lines + 1 DISK7 .COM 4K 32 547C N/A + 2 DISK77B .COM 4K 32 1A90 N/A + 3 DISK77B .DOC 6K 45 88BE 95 + 4 PATH .COM 2K 10 653A N/A + 5 PRINT .COM 6K 42 1214 N/A + 6 SAK .COM 1K 7 8616 N/A + 7 SETFILE .COM 1K 4 28D4 N/A + 8 SHOW .COM 8K 62 A876 N/A + 9 SYSFCP .ASM 18K 137 7012 944 + 10 SYSRCP .ASM 44K 352 6315 2305 + 12 Z3TCAP .ASM 24K 189 3701 872 + 13 SYSFCP1 .LIB 6K 43 C3BB 213 + 14 SYSFCP2 .LIB 6K 43 2324 213 + 15 SYSRCP1 .LIB 11K 81 F030 366 + 16 SYSRCP2 .LIB 11K 81 790C 367 + 17 SYSRCP3 .LIB 11K 81 52FB 366 + 18 SYSRCP4 .LIB 11K 81 871D 366 + 19 SYSLIB .REL 21K 161 2921 N/A + 20 VLIB .REL 2K 13 01A1 N/A + 21 Z3LIB .REL 7K 56 61B8 N/A + 22 Z3TCAP .TCP 7K 51 FB17 N/A + + + ZCPR3 Utilities COM Disk 1 -- + Filename.Typ Size Recs CRC Version + 1 ALIAS .COM 4K 30 82D4 1.1 + 2 CD .COM 1K 7 DA48 3.0 + 3 CMDRUN .COM 1K 2 21B5 N/A + 4 COMMENT .COM 1K 5 3C4A 2.0 + 5 CPSEL .COM 1K 8 CCAA 1.0 + 6 CRC .COM 6K 41 A89C 2.0 + 7 DEV .COM 2K 14 F755 1.0 + 8 DEVICE .COM 3K 17 153E 1.0 + 9 DIFF .COM 4K 25 45A7 2.0 + 10 DIR .COM 2K 16 9B8A 1.0 + 11 ECHO .COM 1K 4 F2D6 1.0 + 12 ERASE .COM 3K 20 E71E 5.0 + 13 ERROR1 .COM 2K 12 5EB7 1.0 + 14 ERROR2 .COM 3K 18 2F03 1.0 + 15 ERROR3 .COM 1K 5 8542 1.0 + 16 ERROR4 .COM 1K 5 86D1 1.0 + 17 ERRORX .COM 1K 3 F941 1.0 + 18 FINDF .COM 2K 14 D2A6 2.0 + 19 GOTO .COM 1K 6 6ADA 1.0 + 20 HELP .COM 3K 24 928B 5.0 + 21 HELPCK .COM 2K 16 F3B3 1.0 + 22 HELPPR .COM 5K 35 12E7 1.0 + 23 IF .COM 3K 18 418D 1.1 + 24 IFSTAT .COM 1K 3 6586 1.0 + 25 LDR .COM 3K 20 517E 1.0 + 26 MCOPY .COM 4K 32 8341 4.0 + 27 MENU .COM 4K 27 8CED 3.2 + 28 MENUCK .COM 3K 20 3CDC 1.0 + 29 MKDIR .COM 6K 41 014B 3.0 + 30 NOTE .COM 1K 1 CB9E 1.0 + 31 PAGE .COM 5K 36 DF9F 2.0 + 32 PATH .COM 2K 10 E421 3.0 + 33 PRINT .COM 6K 42 0492 2.0 + 34 PROTECT .COM 4K 28 A130 3.0 + 35 PWD .COM 1K 8 2B9B 1.0 + 36 QUIET .COM 1K 4 DF6B 1.0 + 37 RECORD .COM 1K 8 C2B4 3.0 + 38 REG .COM 1K 8 1CC4 1.0 + 39 RENAME .COM 4K 27 A2F2 3.0 + 40 SAK .COM 1K 7 7842 2.0 + 41 SETFILE .COM 1K 4 00B2 1.0 + 42 SH .COM 4K 28 A89E 1.0 + 43 SHCTRL .COM 1K 7 E37A 1.0 + 44 SHDEFINE.COM 3K 23 0DEA 1.0 + 45 SHFILE .COM 1K 4 634F 1.0 + 46 SHOW .COM 8K 62 808A 1.0 + 47 SHVAR .COM 3K 23 4D89 1.0 + 48 SUB .COM 3K 20 59E5 3.0 + 49 TCCHECK .COM 2K 14 7235 1.0 + 50 TCMAKE .COM 6K 47 B3A0 1.0 + 51 TCSELECT.COM 3K 22 7C29 1.0 + 52 UNERASE .COM 2K 13 5057 1.0 + 53 WHEEL .COM 2K 11 0CD0 3.0 + 54 XD .COM 4K 28 465B 1.2 + 55 XDIR .COM 8K 62 7248 2.0 + 56 Z3INS .COM 2K 16 DFB7 1.0 + 57 Z3LOC .COM 1K 7 A908 1.0 + 58 ZEX .COM 6K 48 5E36 3.0 + + ZCPR3 Utilities HELP Disk 2 -- + Filename.Typ Size Recs CRC Lines + 1 ALIAS .HLP 5K 35 9C58 166 + 2 CMDFILES.HLP 24K 192 4475 728 + 3 COMPARE .HLP 5K 33 26B6 148 + 4 DIRS .HLP 21K 166 29F5 602 + 5 HELP .HLP 1K 7 54CD 20 + 6 HELPSYS .HLP 29K 230 99DA 792 + 7 IF .HLP 13K 99 45A4 457 + 8 IO .HLP 12K 92 21E3 389 + 9 MENU .HLP 32K 253 9059 892 + 10 NDIRS .HLP 16K 122 33D7 439 + 11 SH .HLP 13K 101 6646 419 + 12 SYSRCP .HLP 6K 48 F633 231 + + ZCPR3 Utilities HELP Disk 3 -- + Filename.Typ Size Recs CRC Lines + 1 Z3RES .HLP 8K 64 800E 221 + 2 Z3TCAP .HLP 40K 314 381F 1105 + 3 Z3UTIL1 .HLP 30K 234 4B2D 988 + 4 Z3UTIL2 .HLP 21K 166 D3E6 763 + 5 ZCPR3 .HLP 4K 30 666E 105 + + ZCPR3 Utilities Source Disk 4 -- + Filename.Typ Size Recs CRC Lines + 1 ALIAS .ZEX 2K 9 6DBE 63 + 2 ALIAS0 .MAC 8K 63 5072 431 + 3 ALIAS1 .MAC 10K 75 DB42 513 + 4 CD .MAC 3K 22 4202 151 + 5 CMDRUN .MAC 1K 7 F21D 50 + 6 COMMENT .MAC 4K 28 FF64 195 + 7 CPSEL .MAC 7K 52 2669 364 + 8 CRC .MAC 18K 141 15ED 914 + 9 DEV .MAC 9K 71 D980 492 + 10 DEVICE .MAC 11K 84 6EED 576 + 11 DIFF .MAC 15K 115 B983 724 + 12 DIR .MAC 7K 54 2227 373 + 13 ECHO .MAC 4K 28 824C 180 + 14 ERASE .MAC 10K 79 765E 492 + 15 ERROR1 .MAC 8K 57 7BF1 308 + 16 ERROR2 .MAC 9K 66 DFF6 367 + 17 ERROR3 .MAC 4K 27 85FA 153 + 18 ERROR4 .MAC 4K 31 D179 178 + 19 ERRORX .MAC 2K 9 7F9C 68 + 20 FINDF .MAC 22K 171 4220 1049 + 21 GOTO .MAC 4K 27 4536 203 + 22 HELP .MAC 25K 195 FF6A 1207 + 23 HELPCK .MAC 10K 77 A576 519 + 24 HELPPR .MAC 28K 219 CFB6 1380 + 25 IF .MAC 10K 77 F529 526 + 26 IFSTAT .MAC 2K 11 234E 85 + + ZCPR3 Utilities Source Disk 5 -- + Filename.Typ Size Recs CRC Lines + 1 LDR .MAC 11K 88 E5E0 552 + 2 MCOPY .MAC 22K 170 B694 1059 + 3 MENU .MAC 31K 241 D3F6 1509 + 4 MENUCK .MAC 11K 87 B04C 545 + 5 MKDIR .MAC 19K 145 64CB 981 + 6 NOTE .MAC 1K 7 986F 51 + 7 PAGE .MAC 24K 187 AEFF 1182 + 8 PATH .MAC 9K 69 7D6A 459 + 9 PRINT .MAC 28K 219 A093 1403 + 10 PROTECT .MAC 13K 97 E175 590 + 11 PWD .MAC 5K 37 DF00 248 + 12 QUIET .MAC 3K 17 FA09 138 + 13 RECORD .MAC 4K 30 4EE7 193 + 14 REG .MAC 5K 37 401A 266 + 15 RENAME .MAC 13K 103 C4F5 592 + 16 SAK .MAC 5K 38 62C2 244 + 17 SETFILE .MAC 2K 16 73D5 107 + 18 SHCTRL .MAC 3K 21 CAE6 147 + 19 SHOW .MAC 31K 247 8770 1752 + + ZCPR3 Utilities Source Disk 6 -- + Filename.Typ Size Recs CRC Lines + 1 SH .MAC 16K 125 768D 806 + 2 SHDEFINE.MAC 11K 87 396F 658 + 3 SHFILE .MAC 2K 15 3417 104 + 4 SHVAR .MAC 11K 88 6B60 655 + 5 SUB .MAC 23K 183 4AA9 1042 + 6 TCCHECK .MAC 5K 40 7079 280 + 7 TCMAKE .MAC 19K 148 A0C7 1084 + 8 TCSELECT.MAC 11K 87 927E 571 + 9 UNERASE .MAC 14K 110 A09A 726 + 10 WHEEL .MAC 4K 32 FFCF 217 + 11 XD .MAC 18K 144 B1B2 855 + 12 XDIR .MAC 38K 304 8B4B 1887 + 13 Z3INS .MAC 10K 80 7F27 539 + 14 Z3LOC .MAC 4K 30 3583 211 + 15 ZEX .ASM 45K 360 48BD 2194 + 16 ZEX .ZEX 4K 32 782C 180 + + ZCPR3 Utilities Documentation Disk 7 -- + Filename.Typ Size Recs CRC Lines + 1 Z3INS .IDX 4K 32 6044 232 + 2 Z3INS .SI 31K 241 836B 771 + 3 Z3INS .TOC 13K 101 D54E 207 + 4 Z3INS1 .SI 11K 85 30E0 267 + 5 Z3INS2 .SI 11K 88 2800 339 + 6 Z3INS3 .SI 55K 439 FCCF 1919 + 7 Z3INS4 .SI 28K 224 16D3 998 + 8 Z3INS5 .SI 5K 39 984C 153 + 9 Z3INS6 .SI 33K 259 D8A1 1014 + 10 Z3INS7 .SI 2K 12 F0A3 32 + 11 Z3INS8 .SI 5K 34 EB11 154 + + ZCPR3 Utilities Documentation Disk 8 -- + Filename.Typ Size Recs CRC Lines + 1 Z3USER .IDX 1K 3 9F34 30 + 2 Z3USER .SI 54K 428 7D58 1886 + 3 Z3USER .TOC 1K 6 1810 24 + + SYSLIB3 Source Disk 1 -- + Filename.Typ Size Recs CRC Lines + 1 S0FILEIO.MAC 2K 12 6AA7 86 + 2 S1FILEIO.MAC 2K 12 29E9 86 + 3 S2FILEIO.MAC 2K 12 EE8F 86 + 4 S3FILEIO.MAC 2K 12 B0F6 86 + 5 SALLOC .MAC 3K 22 F78F 113 + 6 SBBLINE .MAC 3K 17 1D79 88 + 7 SBDOS .MAC 1K 4 D833 26 + 8 SBIN .MAC 1K 4 AC82 27 + 9 SBIOS .MAC 3K 17 241E 79 + 10 SBIST .MAC 1K 4 3522 28 + 11 SBLINE .MAC 3K 21 1871 98 + 12 SBOUT .MAC 1K 4 4DF6 30 + 13 SCAPIN .MAC 1K 4 DF2E 28 + 14 SCAPS .MAC 1K 4 22F3 24 + 15 SCAPSTR .MAC 1K 5 FCEA 35 + 16 SCATH .MAC 1K 5 A665 33 + 17 SCCOUT .MAC 2K 9 A488 59 + 18 SCIN .MAC 1K 7 47D4 43 + 19 SCLINE .MAC 2K 11 583E 57 + 20 SCLOUT .MAC 2K 9 2A8B 59 + 21 SCODEND .MAC 1K 8 4F9C 44 + 22 SCOMP .MAC 2K 10 C619 56 + 23 SCOMPHD .MAC 1K 4 67BE 27 + 24 SCONDIN .MAC 1K 6 6666 33 + 25 SCOUT .MAC 1K 7 0A76 46 + 26 SCPOUT .MAC 2K 9 F3B0 59 + 27 SCRC .MAC 3K 24 9649 120 + 28 SCRC1 .MAC 3K 24 7A5D 120 + 29 SCRC2 .MAC 3K 23 E929 118 + 30 SCRLF .MAC 1K 6 6CD3 42 + 31 SCST .MAC 1K 7 B601 45 + 32 SDIR .MAC 2K 15 D2C8 64 + 33 SDIR00 .MAC 2K 15 D5BC 64 + 34 SDIR01 .MAC 2K 12 C259 63 + 35 SDIR02 .MAC 3K 17 5193 104 + 36 SDIR03 .MAC 3K 17 D263 85 + 37 SDIR04 .MAC 2K 11 5228 62 + 38 SDIR05 .MAC 7K 56 754A 282 + 39 SDIR06 .MAC 10K 79 D1DF 423 + 40 SDIR07 .MAC 3K 17 4FA3 111 + 41 SDIR08 .MAC 2K 12 4F2F 65 + 42 SDIR09 .MAC 2K 14 75BA 83 + 43 SDIR10 .MAC 2K 13 3DE7 72 + 44 SDIRBF .MAC 1K 5 F2DC 31 + 45 SDIRQ .MAC 17K 136 6004 708 + 46 SDIRQS .MAC 20K 155 51F3 786 + 47 SEN .MAC 1K 3 F9CF 23 + 48 SEPRINT .MAC 1K 5 2A31 26 + 49 SEPSTR .MAC 2K 15 68B3 91 + 50 SEVAL .MAC 4K 25 13D5 146 + 51 SEVAL1 .MAC 2K 9 782D 66 + 52 SEVAL2 .MAC 2K 11 1BDC 74 + 53 SEVAL3 .MAC 2K 10 BD45 66 + 54 SEVAL4 .MAC 2K 9 10A5 58 + 55 SFCLOS .MAC 1K 4 710C 33 + 56 SFDEL .MAC 1K 4 BB5B 28 + 57 SFEXIST .MAC 1K 5 2C94 31 + 58 SFILEIO .MAC 9K 72 4F9C 418 + 59 SFILL .MAC 2K 10 A547 70 + 60 SFMAKE .MAC 1K 5 5A73 31 + + SYSLIB3 Source Disk 2 -- + Filename.Typ Size Recs CRC Lines + 1 SFNAME .MAC 5K 39 EB46 245 + 2 SFOPEN .MAC 2K 10 6B08 64 + 3 SFREAD .MAC 1K 4 3E4E 30 + 4 SFRENAME.MAC 2K 12 6A58 80 + 5 SFSIZE .MAC 2K 12 DCDF 91 + 6 SFWRIT .MAC 1K 4 67E3 30 + 7 SFXIO .MAC 9K 65 7928 406 + 8 SGFA .MAC 3K 20 DDA9 130 + 9 SGUA .MAC 1K 5 C628 43 + 10 SINITFCB.MAC 1K 8 FFE8 47 + 11 SINLINE .MAC 6K 44 4103 285 + 12 SINSTR .MAC 2K 12 3077 71 + 13 SISALNUM.MAC 1K 6 2867 40 + 14 SISALPHA.MAC 1K 6 02B4 41 + 15 SISCTRL .MAC 1K 6 533C 40 + 16 SISDIGIT.MAC 1K 6 EDAB 38 + 17 SISGRAPH.MAC 1K 6 EEF8 38 + 18 SISHEX .MAC 1K 6 1958 43 + 19 SISPRINT.MAC 1K 6 EC30 38 + 20 SISPUN .MAC 2K 9 0F59 58 + 21 SISSP .MAC 1K 8 7B4B 59 + 22 SLA2HC .MAC 1K 6 70AD 38 + 23 SLADC .MAC 2K 11 72AE 75 + 24 SLAFDC .MAC 2K 10 843B 62 + 25 SLCRLF .MAC 1K 6 A98A 42 + 26 SLFN1 .MAC 1K 6 A6FF 40 + 27 SLFN2 .MAC 1K 6 82BC 41 + 28 SLFN3 .MAC 1K 8 658E 54 + 29 SLHL4HC .MAC 1K 4 DBC3 28 + 30 SLHL5DC .MAC 2K 14 7961 93 + 31 SLHLFDC .MAC 2K 12 2F66 82 + 32 SLOUT .MAC 1K 7 4084 46 + 33 SLPRINT .MAC 1K 4 67D0 25 + 34 SLPSTR .MAC 2K 14 65D7 90 + 35 SMA2HC .MAC 1K 8 0DC7 40 + 36 SMADC .MAC 2K 14 016F 84 + 37 SMAFDC .MAC 2K 12 BEC3 70 + 38 SMFN1 .MAC 1K 6 3A43 42 + 39 SMFN2 .MAC 1K 6 C23B 45 + 40 SMFN3 .MAC 1K 8 002A 57 + 41 SMHL4HC .MAC 1K 5 9C15 28 + 42 SMHL5DC .MAC 3K 19 F0F5 115 + 43 SMHLFDC .MAC 2K 16 1C5D 108 + 44 SMOVE .MAC 3K 19 67FF 131 + 45 SMTH01 .MAC 1K 4 FD05 33 + 46 SMTH02 .MAC 1K 5 47EC 33 + 47 SMTH03 .MAC 1K 4 8800 30 + 48 SMTH04 .MAC 1K 4 FAD3 28 + 49 SMTH05 .MAC 1K 5 41F7 34 + 50 SMTH06 .MAC 1K 5 9661 34 + 51 SMTH07 .MAC 1K 3 78BD 26 + 52 SMTH08 .MAC 1K 3 AD88 26 + 53 SMTH09 .MAC 1K 3 3EC8 26 + 54 SMTH10 .MAC 1K 4 729D 34 + 55 SMTH11 .MAC 2K 13 7150 98 + 56 SMTH12 .MAC 2K 13 E277 95 + +.cp 5 + SYSLIB3 REL and Source Disk 3 -- + Filename.Typ Size Recs CRC Lines + 1 SPA2HC .MAC 1K 6 FD07 38 + 2 SPADC .MAC 2K 11 35AA 74 + 3 SPAFDC .MAC 2K 10 8746 62 + 4 SPAUSE .MAC 3K 23 A2B8 123 + 5 SPFN1 .MAC 1K 6 5BD1 40 + 6 SPFN2 .MAC 1K 6 6756 41 + 7 SPFN3 .MAC 1K 8 B9E6 54 + 8 SPHL4HC .MAC 1K 4 3F9B 28 + 9 SPHL5DC .MAC 2K 14 D706 92 + 10 SPHLFDC .MAC 2K 12 A7C8 82 + 11 SPOUT .MAC 1K 7 915C 46 + 12 SPRINT .MAC 1K 4 A2A3 25 + 13 SPSTR .MAC 2K 14 A7FD 90 + 14 SRAND .MAC 2K 13 476E 81 + 15 SRIN .MAC 1K 7 1844 43 + 16 SRREAD .MAC 2K 9 F01A 58 + 17 SRWRITE .MAC 2K 9 35C7 58 + 18 SSA2HC .MAC 1K 6 6057 38 + 19 SSADC .MAC 2K 11 1A64 75 + 20 SSAFDC .MAC 2K 10 B9F3 62 + 21 SSCANNER.MAC 2K 12 C2D3 73 + 22 SSCFA .MAC 2K 16 E939 117 + 23 SSCOUT .MAC 1K 6 0636 39 + 24 SSCRLF .MAC 1K 5 6327 33 + 25 SSCTLFL .MAC 1K 4 D7AB 21 + 26 SSFA .MAC 2K 16 9FAC 117 + 27 SSFN1 .MAC 1K 6 A43E 41 + 28 SSFN2 .MAC 1K 6 0E8D 42 + 29 SSFN3 .MAC 1K 8 C4B7 55 + 30 SSHL4HC .MAC 1K 4 4D97 28 + 31 SSHL5DC .MAC 2K 14 6FBA 93 + 32 SSHLFDC .MAC 2K 13 C39D 82 + 33 SSKPUN .MAC 1K 8 A057 48 + 34 SSKSP .MAC 1K 8 490D 48 + 35 SSORT .MAC 14K 111 E332 564 + 36 SSOUT .MAC 1K 5 CA1A 39 + 37 SSPRINT .MAC 1K 4 42CC 26 + 38 SSPSTR .MAC 2K 14 9D1B 89 + 39 SSUA .MAC 1K 6 EA5F 47 + 40 SUD1 .MAC 1K 8 635C 74 + 41 SUD2 .MAC 1K 5 589A 50 + 42 SUD3 .MAC 1K 6 A69A 50 + 43 SVERSION.MAC 1K 5 F1A9 30 + 44 SYSLIB .REL 21K 161 2921 N/A + 45 SYSLIB27.REL 14K 107 1C54 N/A + 46 SYSTEST .MAC 4K 26 C997 129 + 47 SYSTEST0.MAC 4K 29 B39E 194 + 48 SYSTEST1.MAC 3K 21 5D8C 114 + 49 SYSTEST2.MAC 4K 30 9E05 151 + 50 SYSTEST3.MAC 4K 26 92EA 148 + 51 SYSTEST4.MAC 6K 46 02CE 244 + 52 SYSTEST5.MAC 2K 16 2DAF 98 + 53 SYSTEST6.MAC 5K 35 A9F5 211 + 54 SYSTEST7.MAC 5K 36 5138 233 + + SYSLIB3 HELP Disk 4 -- + Filename.Typ Size Recs CRC Lines + 1 SYS2-3 .TXT 9K 71 6B3B 239 + 2 SYSLIB .HLP 2K 9 8184 38 + 3 SYSLIB0 .HLP 14K 112 86FE 355 + 4 SYSLIB1 .HLP 20K 159 8FBB 588 + 5 SYSLIB2 .HLP 5K 33 6DD5 154 + 6 SYSLIB3 .HLP 15K 119 F85C 435 + 7 SYSLIB4 .HLP 12K 90 E7A6 390 + 8 SYSLIB5 .HLP 12K 90 F417 412 + 9 SYSLIB6 .HLP 8K 60 F45A 276 + 10 SYSLIB7 .HLP 6K 45 152C 266 + 11 SYSLIB8 .HLP 5K 37 3CA8 173 + 12 SYSLIB9 .HLP 3K 23 4292 82 + 13 SYSLIBA .HLP 7K 55 6442 192 + 14 SYSLIBB .HLP 5K 39 2009 126 + 15 SYSLIBC .HLP 9K 71 F96C 302 + 16 SYSLIBD .HLP 5K 33 489A 134 + 17 SYSLIBE .HLP 8K 62 55D3 232 + 18 SYSLIBF .HLP 4K 25 2A54 104 + 19 SYSLIBG .HLP 3K 21 EE4C 88 + 20 SYSLIBH .HLP 2K 14 6F02 67 + 21 SYSLIBI .HLP 6K 44 DC1E 158 + + + Z3-DOT-COM Disk 1 -- + (Copyright 1984 Alpha Systems Corporation) + Filename.Typ Size Recs CRC + 1 CPY .COM 2K 15 B43A + 2 ENV .SPR 2K 10 BA1F + 3 SYSFCP .SPR 1K 7 DBE6 + 4 SYSRCP .SPR 3K 20 BDBD + 5 VID .COM 2K 12 AF2F + 6 Z3 .INS 1K 1 E205 + 7 Z3BIO .SPR 1K 7 9FE6 + 8 Z3COM .SUB 1K 1 2899 + 9 Z3CPR .SPR 3K 20 2A87 + 10 Z3L .COM 2K 15 D40E + 11 Z3MOV .BIN 1K 1 D93B + + + diff --git a/Images/Source/hd0/s0/u15/Z3FILES.PH2 b/Images/Source/hd0/s0/u15/Z3FILES.PH2 new file mode 100644 index 00000000..b43cc0ce --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3FILES.PH2 @@ -0,0 +1,266 @@ +.po 7 +.cw 10 +.foZCPR3 File Distribution Page # + + + ZCPR3 Files Distributed by Echelon, Inc. + + +ZCPR3 Core Disk 1 -- + Filename.Typ Size Recs CRC + 1 ALIAS .COM 4K 30 669A 12 SYSRCP .ASM 44K 352 6315 + 2 CD .COM 1K 7 49C8 13 SYSRCP1 .LIB 11K 81 F030 + 3 CLEANDIR.COM 2K 12 ADAF 14 SYSRCP2 .LIB 11K 81 790C + 4 CMD .COM 1K 7 ED3B 15 SYSRCP3 .LIB 11K 81 52FB + 5 COMMENT .COM 1K 5 9629 16 SYSRCP4 .LIB 11K 81 871D + 6 DIR .COM 2K 16 BE35 17 TCCHECK .COM 2K 14 0578 + 7 ECHO .COM 1K 4 DB5A 18 TCMAKE .COM 6K 47 817E + 8 ERROR1 .COM 2K 12 E682 19 TCSELECT.COM 3K 22 694E + 9 ERROR2 .COM 3K 18 A088 20 VLIB .REL 2K 13 01A1 + 10 EX .COM 3K 20 8344 21 WHEEL .COM 2K 11 1B9A + 11 HELP .COM 3K 24 1847 22 XD .COM 4K 28 B251 + 12 LDR .COM 3K 21 FFC4 23 Z3INS .COM 2K 16 611D + 13 MENU .COM 4K 29 E81F 24 Z3LIB .REL 8K 61 8F30 + 14 MENUCK .COM 3K 20 4F74 25 Z3LOC .COM 1K 7 0001 + 15 MKDIR .COM 6K 41 49D9 26 Z3TCAP .ASM 27K 213 1B36 + 16 MLOAD .COM 2K 15 5BF0 27 Z3TCAP .TCP 8K 58 D2C1 + 17 MU3 .COM 3K 23 55BD 28 ZCPR3 .INS 2K 10 7557 + 18 PATH .COM 2K 10 653A + 19 PWD .COM 1K 8 5DA2 ZCPR3 Utilities COM Disk 1 -- + 20 RELS .UTL 2K 16 6BF8 Filename.Typ Size Recs CRC + 21 SHSET .COM 1K 7 4F00 1 ALIAS .COM 4K 30 82D4 + 22 SYSENV .ASM 1K 5 4C5C 2 CD .COM 1K 7 DA48 + 23 SYSENV .LIB 4K 26 CF64 3 CMDRUN .COM 1K 2 21B5 + 24 SYSIOP .ASM 32K 254 1DCD 4 COMMENT .COM 1K 5 3C4A + 25 SYSNDR .ASM 1K 3 3872 5 CPSEL .COM 1K 8 CCAA + 26 SYSNDR .LIB 2K 10 DA46 6 CRC .COM 6K 41 A89C + 27 VFILER .COM 11K 84 8923 7 DEV .COM 2K 14 F755 + 28 VMENU .COM 6K 46 A582 8 DEVICE .COM 3K 17 153E + 29 VMENUCK .COM 3K 21 9E17 9 DIFF .COM 4K 25 45A7 + 30 Z3BASE1 .LIB 9K 66 2C69 10 DIR .COM 2K 16 9B8A + 31 Z3BASE2 .LIB 8K 64 17AD 11 DISK7OCC.COM 4K 32 1A90 + 32 Z3HDR1 .LIB 19K 150 6B50 12 DU3 .COM 12K 89 D1BF +.he ZCPR3 File List + 33 Z3HDR2 .LIB 19K 150 2C19 13 ECHO .COM 1K 4 F2D6 + 34 ZCPR3 .ASM 66K 522 2857 14 ERASE .COM 3K 20 E71E + 35 ZCPR3 .INS 2K 10 7557 15 ERROR1 .COM 2K 12 5EB7 + 16 ERROR2 .COM 3K 18 2F03 +ZCPR3 Core Disk 2 -- 17 ERROR3 .COM 1K 5 8542 + Filename.Typ Size Recs CRC 18 ERROR4 .COM 1K 5 86D1 + 1 DISK7 .COM 4K 32 1A90 19 ERRORX .COM 1K 3 F941 + 2 DISK77B .DOC 6K 45 88BE 20 FINDF .COM 2K 14 48F6 + 3 PATH .COM 2K 10 653A 21 GOTO .COM 1K 6 6ADA + 4 PRINT .COM 6K 42 1214 22 HELP .COM 3K 24 928B + 5 SAK .COM 1K 7 8616 23 HELPCK .COM 2K 16 F3B3 + 6 SETFILE .COM 1K 4 28D4 24 HELPPR .COM 5K 35 12E7 + 7 SHOW .COM 8K 62 A876 25 IF .COM 3K 18 418D + 8 SYSFCP .ASM 18K 137 7012 26 IFSTAT .COM 1K 3 6586 + 9 SYSFCP1 .LIB 6K 43 C3BB 27 LDR .COM 3K 21 FFC4 + 10 SYSFCP2 .LIB 6K 43 2324 28 MCOPY .COM 5K 33 A9F4 + 11 SYSLIB .REL 21K 161 2921 29 MENU .COM 4K 29 E81F + + 30 MENUCK .COM 3K 20 3CDC ZCPR3 Utilities HELP Disk 3 -- + 31 MKDIR .COM 6K 41 49D9 Filename.Typ Size Recs CRC + 32 MU3 .COM 3K 23 55BD 1 CLEANDIR.COM 2K 12 ADAF + 33 NOTE .COM 1K 1 CB9E 2 CMD .COM 1K 7 ED3B + 34 PAGE .COM 5K 36 DF9F 3 DU3 .HLP 38K 300 B790 + 35 PATH .COM 2K 10 E421 4 MU3 .HLP 7K 50 20CF + 36 PRINT .COM 6K 42 0492 5 SHSET .COM 1K 7 4F00 + 37 PROTECT .COM 4K 28 A130 6 VFILER .HLP 21K 165 40BB + 38 PWD .COM 1K 8 2B9B 7 VMENU .COM 6K 46 A582 + 39 QUIET .COM 1K 4 DF6B 8 VMENU .HLP 32K 253 7DE7 + 40 RECORD .COM 1K 8 C2B4 9 VMENUCK .COM 3K 21 9E17 + 41 REG .COM 1K 8 1CC4 10 Z3RES .HLP 8K 64 800E + 42 RENAME .COM 4K 27 A2F2 11 Z3TCAP .HLP 40K 314 381F + 43 SAK .COM 1K 7 7842 12 Z3UTIL1 .HLP 30K 234 4B2D + 44 SETFILE .COM 1K 4 00B2 13 Z3UTIL2 .HLP 21K 166 D3E6 + 45 SH .COM 4K 28 A89E 14 Z3UTIL3 .HLP 7K 52 0A0F + 46 SHCTRL .COM 1K 7 E37A 15 ZCPR3 .HLP 4K 30 666E + 47 SHDEFINE.COM 3K 23 0DEA + 48 SHFILE .COM 1K 4 634F  ZCPR3 Utilities Source Disk 4 -- + 49 SHOW .COM 8K 62 808A Filename.Typ Size Recs CRC + 50 SHVAR .COM 3K 23 4D89 1 ALIAS .ZEX 2K 9 6DBE + 51 SUB .COM 3K 20 59E5 2 ALIAS0 .MAC 8K 63 5072 + 52 TCCHECK .COM 2K 14 7235 3 ALIAS1 .MAC 10K 75 DB42 + 53 TCMAKE .COM 6K 47 B3A0 4 CD .MAC 3K 22 4202 + 54 TCSELECT.COM 3K 22 F8DA 5 CMDRUN .MAC 1K 7 F21D + 55 UNERASE .COM 2K 13 030A 6 COMMENT .MAC 4K 28 FF64 + 56 VFILER .COM 11K 84 8923 7 CPSEL .MAC 7K 52 2669 + 57 WHEEL .COM 2K 11 0CD0 8 CRC .MAC 18K 141 15ED + 58 XD .COM 4K 28 465B 9 DEV .MAC 9K 71 D980 + 59 XDIR .COM 8K 62 7248 10 DEVICE .MAC 11K 84 6EED + 60 Z3INS .COM 2K 16 DFB7 11 DIFF .MAC 15K 115 B983 + 61 Z3LOC .COM 1K 7 E319 12 DIR .MAC 7K 54 2227 + 62 ZCPR3 .INS 2K 10 7557 13 ECHO .MAC 4K 28 824C + 63 ZEX .COM 6K 48 5E36 14 ERASE .MAC 10K 79 765E + 15 ERROR1 .MAC 8K 57 7BF1 +ZCPR3 Utilities HELP Disk 2 -- 16 ERROR2 .MAC 9K 66 DFF6 + Filename.Typ Size Recs CRC 17 ERROR3 .MAC 4K 27 85FA + 1 ALIAS .HLP 5K 35 9C58 18 ERROR4 .MAC 4K 31 D179 + 2 CMDFILES.HLP 24K 192 4475 19 ERRORX .MAC 2K 9 7F9C + 3 COMPARE .HLP 5K 33 26B6 20 FINDF .COM 2K 14 48F6 + 4 DEBUGRCP.ASM 28K 218 454D 21 GOTO .MAC 4K 27 4536 + 5 DIRS .HLP 21K 166 29F5 22 HELP51 .MAC 25K 196 73A1 + 6 DPROG .MAC 19K 148 F153 23 HELPCK .MAC 10K 77 A576 + 7 HELP .HLP 1K 7 54CD 24 HELPPR .MAC 28K 219 CFB6 + 8 HELPSYS .HLP 29K 230 99DA 25 IF .MAC 10K 77 F529 + 9 IF .HLP 13K 99 45A4 26 IFSTAT .MAC 2K 11 234E + 10 IO .HLP 12K 92 21E3 + 11 MENU .HLP 32K 253 9059  ZCPR3 Utilities Source Disk 5 -- + 12 NDIRS .HLP 16K 122 33D7 Filename.Typ Size Recs CRC + 13 READ .ME 1K 3 9089 1 LDR11 .MAC 13K 97 F1DA + 14 SH .HLP 13K 101 6646 2 MCOPY41 .MAC 22K 172 D935 + 15 SYSRCP .HLP 6K 48 F633 3 MENU34 .MAC 32K 253 56E5 + 16 ZCPR3 .HLP 4K 30 666E 4 MENUCK .MAC 11K 87 B04C + + + + 5 MKDIR31 .MAC 19K 145 AB4B  SYSLIB3 Source Disk 1 -- + 6 NOTE .MAC 1K 7 986F Filename.Typ Size Recs CRC + 7 PAGE .MAC 24K 187 AEFF 1 S0FILEIO.MAC 2K 12 6AA7 + 8 PATH .MAC 9K 69 7D6A 2 S1FILEIO.MAC 2K 12 29E9 + 9 PRINT .MAC 28K 219 A093 3 S2FILEIO.MAC 2K 12 EE8F + 10 PROTECT .MAC 13K 97 E175 4 S3FILEIO.MAC 2K 12 B0F6 + 11 PWD .MAC 5K 37 DF00 5 SALLOC .MAC 3K 22 F78F + 12 QUIET .MAC 3K 17 FA09 6 SBBLINE .MAC 3K 17 1D79 + 13 RECORD .MAC 4K 30 4EE7 7 SBDOS .MAC 1K 4 D833 + 14 REG .MAC 5K 37 401A 8 SBIN .MAC 1K 4 AC82 + 15 RENAME .MAC 13K 103 C4F5 9 SBIOS .MAC 3K 17 241E + 16 SAK .MAC 5K 38 62C2 10 SBIST .MAC 1K 4 3522 + 17 SHOW .MAC 31K 247 8770 11 SBLINE .MAC 3K 21 1871 + 12 SBOUT .MAC 1K 4 4DF6 +ZCPR3 Utilities Source Disk 6 -- 13 SCAPIN .MAC 1K 4 DF2E + Filename.Typ Size Recs CRC 14 SCAPS .MAC 1K 4 22F3 + 1 SETFILE .MAC 2K 16 73D5 15 SCAPSTR .MAC 1K 5 FCEA + 2 SH .MAC 16K 125 768D 16 SCATH .MAC 1K 5 A665 + 3 SHCTRL .MAC 3K 21 CAE6 17 SCCOUT .MAC 2K 9 A488 + 4 SHDEFINE.MAC 11K 87 396F 18 SCIN .MAC 1K 7 47D4 + 5 SHFILE .MAC 2K 15 3417 19 SCLINE .MAC 2K 11 583E + 6 SHVAR .MAC 11K 88 6B60 20 SCLOUT .MAC 2K 9 2A8B + 7 SUB31 .MAC 24K 187 945E 21 SCODEND .MAC 1K 8 4F9C + 8 TCCHECK .MAC 5K 40 7079 22 SCOMP .MAC 2K 10 C619 + 9 TCMAKE .MAC 19K 148 A0C7 23 SCOMPHD .MAC 1K 4 67BE + 10 TCSELECT.MAC 11K 87 927E 24 SCONDIN .MAC 1K 6 6666 + 11 UNERASE .MAC 14K 111 41BF 25 SCOUT .MAC 1K 7 0A76 + 12 WHEEL .MAC 4K 32 FFCF 26 SCPOUT .MAC 2K 9 F3B0 + 13 XD .MAC 18K 144 B1B2 27 SCRC .MAC 3K 24 9649 + 14 XDIR .MAC 38K 304 8B4B 28 SCRC1 .MAC 3K 24 7A5D + 15 Z3INS .MAC 10K 80 7F27 29 SCRC2 .MAC 3K 23 E929 + 16 Z3LOC11 .MAC 4K 32 7C65 30 SCRLF .MAC 1K 6 6CD3 + 17 ZEX .ASM 45K 360 48BD 31 SCST .MAC 1K 7 B601 + 18 ZEX .ZEX 4K 32 782C 32 SDIR .MAC 2K 15 D2C8 + 33 SDIR00 .MAC 2K 15 D5BC +ZCPR3 Utilities Doc Disk 7 -- 34 SDIR01 .MAC 2K 12 C259 + Filename.Typ Size Recs CRC 35 SDIR02 .MAC 3K 17 5193 + 1 Z3INS .IDX 4K 32 6044 36 SDIR03 .MAC 3K 17 D263 + 2 Z3INS .SI 31K 241 836B 37 SDIR04 .MAC 2K 11 5228 + 3 Z3INS .TOC 13K 101 D54E 38 SDIR05 .MAC 7K 56 754A + 4 Z3INS1 .SI 11K 85 30E0 39 SDIR06 .MAC 10K 79 D1DF + 5 Z3INS2 .SI 11K 88 2800 40 SDIR07 .MAC 3K 17 4FA3 + 6 Z3INS3 .SI 55K 439 FCCF 41 SDIR08 .MAC 2K 12 4F2F + 7 Z3INS4 .SI 28K 224 16D3 42 SDIR09 .MAC 2K 14 75BA + 8 Z3INS5 .SI 5K 39 984C 43 SDIR10 .MAC 2K 13 3DE7 + 9 Z3INS6 .SI 33K 259 D8A1 44 SDIRBF .MAC 1K 5 F2DC + 10 Z3INS7 .SI 2K 12 F0A3 45 SDIRQ .MAC 17K 136 6004 + 11 Z3INS8 .SI 5K 34 EB11 46 SDIRQS .MAC 20K 155 51F3 + 47 SEN .MAC 1K 3 F9CF +ZCPR3 Utilities Doc Disk 8 -- 48 SEPRINT .MAC 1K 5 2A31 + Filename.Typ Size Recs CRC 49 SEPSTR .MAC 2K 15 68B3 + 1 Z3USER .IDX 1K 3 9F34 50 SEVAL .MAC 4K 25 13D5 + 2 Z3USER .SI 54K 428 7D58 51 SEVAL1 .MAC 2K 9 782D + 3 Z3USER .TOC 1K 6 1810 52 SEVAL2 .MAC 2K 11 1BDC + 53 SEVAL3 .MAC 2K 10 BD45 + 54 SEVAL4 .MAC 2K 9 10A5 46 SMTH02 .MAC 1K 5 47EC + 55 SFCLOS .MAC 1K 4 710C 47 SMTH03 .MAC 1K 4 8800 + 56 SFDEL .MAC 1K 4 BB5B 48 SMTH04 .MAC 1K 4 FAD3 + 57 SFEXIST .MAC 1K 5 2C94 49 SMTH05 .MAC 1K 5 41F7 + 58 SFILEIO .MAC 9K 72 4F9C 50 SMTH06 .MAC 1K 5 9661 + 59 SFILL .MAC 2K 10 A547 51 SMTH07 .MAC 1K 3 78BD + 60 SFMAKE .MAC 1K 5 5A73 52 SMTH08 .MAC 1K 3 AD88 + 53 SMTH09 .MAC 1K 3 3EC8 +SYSLIB3 Source Disk 2 -- 54 SMTH10 .MAC 1K 4 729D + Filename.Typ Size Recs CRC 55 SMTH11 .MAC 2K 13 7150 + 1 SFNAME .MAC 5K 39 EB46 56 SMTH12 .MAC 2K 13 E277 + 2 SFOPEN .MAC 2K 10 6B08 + 3 SFREAD .MAC 1K 4 3E4E  SYSLIB3 REL and Source Disk 3 -- + 4 SFRENAME.MAC 2K 12 6A58 Filename.Typ Size Recs CRC + 5 SFSIZE .MAC 2K 12 DCDF 1 SPA2HC .MAC 1K 6 FD07 + 6 SFWRIT .MAC 1K 4 67E3 2 SPADC .MAC 2K 11 35AA + 7 SFXIO .MAC 9K 65 7928 3 SPAFDC .MAC 2K 10 8746 + 8 SGFA .MAC 3K 20 DDA9 4 SPAUSE .MAC 3K 23 A2B8 + 9 SGUA .MAC 1K 5 C628 5 SPFN1 .MAC 1K 6 5BD1 + 10 SINITFCB.MAC 1K 8 FFE8 6 SPFN2 .MAC 1K 6 6756 + 11 SINLINE .MAC 6K 44 4103 7 SPFN3 .MAC 1K 8 B9E6 + 12 SINSTR .MAC 2K 12 3077 8 SPHL4HC .MAC 1K 4 3F9B + 13 SISALNUM.MAC 1K 6 2867 9 SPHL5DC .MAC 2K 14 D706 + 14 SISALPHA.MAC 1K 6 02B4 10 SPHLFDC .MAC 2K 12 A7C8 + 15 SISCTRL .MAC 1K 6 533C 11 SPOUT .MAC 1K 7 915C + 16 SISDIGIT.MAC 1K 6 EDAB 12 SPRINT .MAC 1K 4 A2A3 + 17 SISGRAPH.MAC 1K 6 EEF8 13 SPSTR .MAC 2K 14 A7FD + 18 SISHEX .MAC 1K 6 1958 14 SRAND .MAC 2K 13 476E + 19 SISPRINT.MAC 1K 6 EC30 15 SRIN .MAC 1K 7 1844 + 20 SISPUN .MAC 2K 9 0F59 16 SRREAD .MAC 2K 9 F01A + 21 SISSP .MAC 1K 8 7B4B 17 SRWRITE .MAC 2K 9 35C7 + 22 SLA2HC .MAC 1K 6 70AD 18 SSA2HC .MAC 1K 6 6057 + 23 SLADC .MAC 2K 11 72AE 19 SSADC .MAC 2K 11 1A64 + 24 SLAFDC .MAC 2K 10 843B 20 SSAFDC .MAC 2K 10 B9F3 + 25 SLCRLF .MAC 1K 6 A98A 21 SSCANNER.MAC 2K 12 C2D3 + 26 SLFN1 .MAC 1K 6 A6FF 22 SSCFA .MAC 2K 16 E939 + 27 SLFN2 .MAC 1K 6 82BC 23 SSCOUT .MAC 1K 6 0636 + 28 SLFN3 .MAC 1K 8 658E 24 SSCRLF .MAC 1K 5 6327 + 29 SLHL4HC .MAC 1K 4 DBC3 25 SSCTLFL .MAC 1K 4 D7AB + 30 SLHL5DC .MAC 2K 14 7961 26 SSFA .MAC 2K 16 9FAC + 31 SLHLFDC .MAC 2K 12 2F66 27 SSFN1 .MAC 1K 6 A43E + 32 SLOUT .MAC 1K 7 4084 28 SSFN2 .MAC 1K 6 0E8D + 33 SLPRINT .MAC 1K 4 67D0 29 SSFN3 .MAC 1K 8 C4B7 + 34 SLPSTR .MAC 2K 14 65D7 30 SSHL4HC .MAC 1K 4 4D97 + 35 SMA2HC .MAC 1K 8 0DC7 31 SSHL5DC .MAC 2K 14 6FBA + 36 SMADC .MAC 2K 14 016F 32 SSHLFDC .MAC 2K 13 C39D + 37 SMAFDC .MAC 2K 12 BEC3 33 SSKPUN .MAC 1K 8 A057 + 38 SMFN1 .MAC 1K 6 3A43 34 SSKSP .MAC 1K 8 490D + 39 SMFN2 .MAC 1K 6 C23B 35 SSORT .MAC 14K 111 E332 + 40 SMFN3 .MAC 1K 8 002A 36 SSOUT .MAC 1K 5 CA1A + 41 SMHL4HC .MAC 1K 5 9C15 37 SSPRINT .MAC 1K 4 42CC + 42 SMHL5DC .MAC 3K 19 F0F5 38 SSPSTR .MAC 2K 14 9D1B + 43 SMHLFDC .MAC 2K 16 1C5D 39 SSUA .MAC 1K 6 EA5F + 44 SMOVE .MAC 3K 19 67FF 40 SUD1 .MAC 1K 8 635C + 45 SMTH01 .MAC 1K 4 FD05 41 SUD2 .MAC 1K 5 589A + + 42 SUD3 .MAC 1K 6 A69A + 43 SVERSION.MAC 1K 5 F1A9 + 44 SYSLIB .REL 21K 161 2921 + 45 SYSLIB27.REL 14K 107 1C54 + 46 SYSTEST .MAC 4K 26 C997 + 47 SYSTEST0.MAC 4K 29 B39E + 48 SYSTEST1.MAC 3K 21 5D8C + 49 SYSTEST2.MAC 4K 30 9E05 + 50 SYSTEST3.MAC 4K 26 92EA + 51 SYSTEST4.MAC 6K 46 02CE + 52 SYSTEST5.MAC 2K 16 2DAF + 53 SYSTEST6.MAC 5K 35 A9F5 + 54 SYSTEST7.MAC 5K 36 5138 + +SYSLIB3 HELP Disk 4 -- + Filename.Typ Size Recs CRC + 1 SYS2-3 .TXT 9K 71 6B3B + 2 SYSLIB .HLP 2K 9 8184 + 3 SYSLIB0 .HLP 14K 112 86FE + 4 SYSLIB1 .HLP 20K 159 8FBB + 5 SYSLIB2 .HLP 5K 33 6DD5 + 6 SYSLIB3 .HLP 15K 119 F85C + 7 SYSLIB4 .HLP 12K 90 E7A6 + 8 SYSLIB5 .HLP 12K 90 F417 + 9 SYSLIB6 .HLP 8K 60 F45A + 10 SYSLIB7 .HLP 6K 45 152C + 11 SYSLIB8 .HLP 5K 37 3CA8 + 12 SYSLIB9 .HLP 3K 23 4292 + 13 SYSLIBA .HLP 7K 55 6442 + 14 SYSLIBB .HLP 5K 39 2009 + 15 SYSLIBC .HLP 9K 71 F96C + 16 SYSLIBD .HLP 5K 33 489A + 17 SYSLIBE .HLP 8K 62 55D3 + 18 SYSLIBF .HLP 4K 25 2A54 + 19 SYSLIBG .HLP 3K 21 EE4C + 20 SYSLIBH .HLP 2K 14 6F02 + 21 SYSLIBI .HLP 6K 44 DC1E + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3FILES.PQ2 b/Images/Source/hd0/s0/u15/Z3FILES.PQ2 new file mode 100644 index 0000000000000000000000000000000000000000..185f977702c12f07c6078c447a7279bdb065afcd GIT binary patch literal 9984 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 HIsbnEtoDg! literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/Z3HDR1.LIB b/Images/Source/hd0/s0/u15/Z3HDR1.LIB new file mode 100644 index 00000000..826021a7 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3HDR1.LIB @@ -0,0 +1,609 @@ +; Z3HDR - Maximum Configuration +; Offset: 5100H + +************************************************************************* +* * +* Z C P R 3 -- Z80-Based Command Processor Replacement, Version 3.0 * +* * +* Copyright (c) 1984 by Richard Conn * +* Copyright Pending, US Government * +* All Rights Reserved * +* * +* ZCPR3 was written by Richard Conn, who assumes no responsibility * +* or liability for its use. ZCPR3 is released to the CP/M user * +* community for non-commercial use only. * +* * +* All registered users of CP/M are encouraged to freely copy and use * +* ZCPR3 and its associated utilities on their registered systems for * +* non-commercial purposes. * +* * +* Any commercial use of ZCPR3 is prohibited unless approved by the * +* author, Richard Conn, or his authorized agent, Echelon, Inc, in * +* writing. * +* * +* This is the RELEASE VERSION of ZCPR3. * +* * +************************************************************************* + +; +; Module: Z3HDR +; Author: Richard Conn +; Module Used By: ZCPR3 Version 3.x +; Note: Z3HDR contains the key customization equates for ZCPR3. These +; equates allow the user to select various ZCPR3 options and do an +; extensive amount of tailoring of ZCPR3 to the user's desires. +; + +; +; 1. BASIC SYSTEM DEFINITIONS +; +; The following equates may be used to customize this CPR for the user's +; system and integration technique. The following equate are provided: +; +; REL - TRUE if integration is to be done via MOVCPM +; - FALSE if integration is to be done via DDT and SYSGEN +; +; CPRLOC - Base Page Address of CPR; this value can be obtained by running +; the CCPLOC program on your system, and if REL is FALSE, this +; value is supplied through the Z3BASE.LIB CCP equate +; +REL EQU FALSE +; + IF REL +CPRLOC EQU 0 + ELSE +CPRLOC EQU CCP ;VALUE PROVIDED IN Z3BASE.LIB + ENDIF + +; +; 2. DEFAULT FILE TYPES +; +; The following macros define the file types of the command object files +; (COM files under CP/M 2.2) to be loaded when a non-resident ZCPR3 command +; is given and of the indirect command files (SUB files under CP/M 2.2) to +; be used to extract commands from when the indirect command facility is +; invoked. +; +COMTYP MACRO + DB 'COM' + ENDM + +SUBTYP MACRO + DB 'SUB' + ENDM + +; +; 3. SUBMIT FILE PROCESSING +; +; The following flag enables the ability of ZCPR3 to process +; SUBMIT files (command files of the form $$$.SUB). If SUBON is TRUE, then +; ZCPR3 will process such files like CP/M's CCP normally does; if SUBON is +; FALSE, ZCPR3 will not process such files (ignore them). In such a case, +; only indirect command file facilities like ZEX will work. Much code is +; saved inside of the ZCPR3 Command Processor if SUBON is set to FALSE, +; but this rather useful facility is lost. +; +SUBON EQU TRUE + + +; +; 4. COMMAND PREFIX +; +; The following flag allows ZCPR3 to accept commands of the form +; "du:command params" or "dir:command params". If DRVPREFIX is TRUE, +; this form is accepted; if FALSE, this form is not accepted. +; +DRVPREFIX equ TRUE + + +; +; 5. COMMAND ATTRIBUTES +; +; The following equate allows the user to select the attributes of the +; COM files which are selected for execution. The ZCPR3 Command Processor +; can be made to execute only COM files with the System attribute set, with +; the Directory (non-System) attribute set, or with either attribute set. +; The following values are defined for this equate: +; +; COMATT Files Selected +; 0 System +; 80H Directory +; 1 Both System and Directory +; +COMATT equ 01H + + +; +; 6. ZCPR3 RESIDENT COMMAND ACTIVATION AND WHEEL FACILITY +; +; The following equates enable various ZCPR3-resident commands. +; The user may invoke these as desired, but should keep in mind the size +; of the resulting ZCPR3 and make sure it does not exceed the required +; limits. +; +DIRON equ FALSE ;DIR COMMAND +LTON equ FALSE ;LIST, TYPE COMMANDS +GOON equ TRUE ;GO COMMAND +ERAON equ FALSE ;ERA COMMAND +SAVEON equ TRUE ;SAVE COMMAND +RENON equ FALSE ;REN COMMAND +GETON equ TRUE ;GET COMMAND +JUMPON equ FALSE ;JUMP COMMAND +NOTEON equ FALSE ;NOTE COMMAND + +; +; The Wheel equate table enables the WHEEL facility of ZCPR3. With this +; facility, a WHEEL BYTE, which exists somewhere in memory, is examined +; before a set of installer-selected commands are executed. +; If this byte is not zero, then the command proceeds. If it is zero, +; then the command is not allowed to proceed and is exited with an error +; message. +; +; The following set of equates make each of the indicated commands +; selectable to respond to the Wheel Byte or not. For instance, if +; WERA=TRUE, then it responds to the Wheel Byte; if WERA=FALSE, it does not. +; + IF Z3WHL NE 0 ;IF A WHEEL BYTE ADDRESS IS DEFINED +WERA equ FALSE ;Make ERA a Wheel-Oriented Command +WREN equ FALSE ; " REN " " " " +WLT equ FALSE ; " L/T " " " " (LIST/TYPE) +WGO equ FALSE ; " GO " " " " +WSAVE equ FALSE ; " SAVE " " " " +WGET equ FALSE ; " GET " " " " +WJUMP equ FALSE ; " JUMP " " " " +WDU equ FALSE ; " DU: " " " " (DU/DIR Change) +WHEEL equ WERA OR WREN OR WLT OR WGO OR WSAVE OR WGET OR WJUMP OR WDU + ENDIF ;Z3WHL + +; +; 7. ZCPR3 RESIDENT COMMAND TABLE +; +; This table consists of the names of the various ZCPR3-resident +; commands and their addresses. The NCHARS equate defines how many +; characters long each name may be, and all table entries must be exactly +; the indicated number of characters (trailing spaces are used to fill +; out shorter names). +; +; Each table entry is structured as follows: +; +; DB 'CMND' ;Name of Command (NCHARS long) +; DB CMNDADR ;Address of Command within ZCPR3 +; +; The installer should only change the names of the commands as +; desired and should not, as a rule, touch the address definition since +; this is fixed within the body of ZCPR3. +; +NCHARS EQU 4 ;NUMBER OF CHARS/COMMAND + +CTABLE MACRO +; + IF DIRON + DB 'DIR ' + DW DIR ;DIRECTORY DISPLAY COMMAND + ENDIF +; + IF LTON + DB 'LIST' + DW LIST ;LIST FILE ON PRINTER COMMAND + DB 'TYPE' + DW TYPE ;TYPE FILE ON CONSOLE COMMAND + ENDIF +; + IF GOON + DB 'GO ' + DW GO ;EXECUTE CURRENT TPA COMMAND + ENDIF +; + IF ERAON + DB 'ERA ' + DW ERA ;ERASE FILES COMMAND + ENDIF +; + IF SAVEON + DB 'SAVE' + DW SAVE ;SAVE TPA COMMAND + ENDIF +; + IF RENON + DB 'REN ' + DW REN ;RENAME FILES COMMAND + ENDIF +; + IF GETON + DB 'GET ' + DW GET ;LOAD FILE INTO TPA COMMAND + ENDIF +; + IF JUMPON + DB 'JUMP' + DW JUMP ;JUMP TO ANY MEMORY LOCATION COMMAND + ENDIF +; + IF NOTEON + DB 'NOTE' + DW NOTE ;NOTE - NULL COMMAND (NOP) + ENDIF +; + ENDM + + +; +; 8. CONTROLS ON ZCPR3 RESIDENT COMMANDS +; +; The following sets of equates provide special controls and +; parameters on various ZCPR3-resident commands. +; + +; +; The following equates set the width of the spacing between the +; file names for the DIR command and the character used to separate file +; names from one another on the same line. +; +; Assuming that FENCE is set to the character '|', If WIDE is TRUE, +; then the output will look like: +; +; filename.typ__|__filename.typ ... +; +; while if WIDE is FALSE, the output will look like: +; +; filename.typ_|_filename.typ ... +; +; (underscore represents a space) +; +WIDE EQU TRUE +FENCE EQU '|' + +; +; The following equates define two flags which are used in +; conjunction with the DIR command on the command line. SYSFLG is +; the character used to indicate to DIR that all files, both System +; and Non-System, are to be displayed. SOFLG is the character used +; to indicate to DIR that only the System files are to be displayed. +; By default, DIR displays non-System files. +; +; For example, if SYSFLG is set to 'A' and SOFLG is set to +; 'S', then: +; DIR *.COM A +; +; displays all COM files with both System and non-System attributes +; while: +; DIR *.COM S +; +; displays only COM files with the System attribute. Naturally: +; +; DIR *.COM +; +; displays only COM files with the non-System attribute. +; +SYSFLG EQU 'A' +SOFLG EQU 'S' + +; +; The following equate causes ERA to confirm the files to be erased +; before it goes ahead and erases them. If ERAOK is TRUE, then the user +; will be prompted each time; if it is FALSE, then the user will not be +; prompted. +; +ERAOK equ FALSE + +; +; If ERAOK is TRUE, the following equate adds a Verify option to the +; ERA command which causes the user to be prompted only if the Verify +; option letter, defined by ERDFLG, is given after the file name. If +; ERAV is TRUE, then the user will be asked to verify only when ERDFLG +; is contained in the command line; if ERAV is FALSE, the user will always +; be asked to verify. +; +; For example, if ERAOK is TRUE, ERAV is TRUE, and ERDFLG is 'V', +; then the command: +; ERA *.* V +; will result in the file names being displayed and the user being asked +; for verification. If the V option were not given, the user would not +; be asked for verification. +; +ERAV equ FALSE +ERDFLG equ 'V' + +; +; The following equates set the paging parameters for the TYPE +; command. +; +; PGDFLT determines if TYPE pages by default. If PGDFLT is TRUE, +; then: +; TYPE FILE.TXT +; +; will be paged. If PGDFLT is FALSE, the above command will not be paged. +; +; PGDFLG defines the option character in the TYPE command line which +; is used to toggle the default set by PGDFLT. Assuming that PGDFLG is set +; to 'P', then: +; TYPE FILE.TXT P +; +; will page the file listing if PGDFLT is FALSE and not page it if PGDFLT is +; TRUE. +; +PGDFLT EQU TRUE +PGDFLG EQU 'P' + +; +; The following equate defines the number of lines on the user's CRT +; screen for use by the TYPE command when it is paging. This value is usually +; 24. +; +NLINES EQU 24 + +; +; The following equate defines the option letter used with the +; SAVE command to indicate that the associated number is 128-byte sectors +; as opposed to 256-byte pages. For example, if SECTFLG is set to 'S', then: +; +; SAVE 25 FILE.BIN S +; +; save 25 128-byte sectors starting at location 100H into the file named +; FILE.BIN. IF the S option was not present, SAVE would have saved 25 +; 256-byte blocks starting at location 100H into the file named FILE.BIN. +; +SECTFLG EQU 'S' + +; +; 9. PATH DEFINITION +; +; The following equate specifies the address of the PATH to be followed +; for the PATH command-search if the PATH is to be initialized by the BIOS +; and set by the user via a PATH.COM program. The value of PATH should +; be the address of the PATH data area in memory. If the internal PATH +; provided by ZCPR3 is to be used, then PATHBASE should be equated to 0, +; which selects the PATH located just after the MEMLOAD routine. If the +; external PATH is to be used, then PATHBASE should be set to the address +; of the external path. +; +; A PATH is a series of byte-pairs, terminated by a binary 0. The first +; byte of each pair is the disk number (1-16 for disks A-P), and the second +; byte of each pair is the user number (0-31). The special character '$' +; indicates the current user or current disk. For example, the path +; from current disk/current user to current disk/user 0 to disk A/user 0 +; is selected by the following sequence: +; +; DB '$$' ;current disk/user +; DB '$',0 ;current disk/user 0 +; DB 1,0 ;disk A/user 0 +; DB 0 ;end of path +; + IF EXPATH NE 0 ;External Path Selected +; +; This equate defines the base address of the external path +; +PATH equ EXPATH ;External ZCPR3 PATH at CBIOS Buffer Area + + ELSE ;Internal Path Selected +; +; The following macro defines the n-element internal path +; +IPATH MACRO + db 'A'-'@','$' ;Disk A, Current User + db 'A'-'@',0 ;Disk A, User 0 + db 0 ;End of Path -- MUST be here + ENDM +; + ENDIF + +; +; The following flag enables ZCPR3 to perform an optimized path +; search when it is searching along a path for a file. If this equate +; is TRUE, ZCPR3 will build a path in memory of absolute entries (A1, B7, etc) +; from the symbolic path (one containing '$') which is the path it would +; otherwise use. This new path would contain no duplicate path elements, +; where a symbolic path analysis may. For example, if the path is: +; +; db 'A'-'@','$' ;disk A, current user +; db 'A'-'@',15 ;disk A, user 15 +; db 0 +; +; then if the user is logged into A15, setting the below equate to TRUE +; would allow ZCPR3 to build the path: +; +; db 'A'-'@',15 ;only one entry +; db 0 +; +; in the analysis of this symbolic path, while with this equate FALSE, +; ZCPR3 may log into A15 as many as three times (once for the default +; and twice more for the symbolic path) in looking for a file which is +; not found before it gives up. Using this minimum path facility costs +; some code in ZCPR3, but it speeds up processing noticably in some cases. +; +; Enable this equate if MINIMUM PATH SEARCH is to be employed. +; +MINPATH EQU TRUE + +; +; In searching for a file along a path, ZCPR3 can be commanded +; to always look in the current logged-in directory before beginning +; the path search. This equate controls this feature. If SCANCUR +; is set to TRUE, the current directory need never be referenced in +; a symbolic path expression (DB '$','$') since SCANCUR insures that +; the current directory is scanned. +; +; Enable this equate if the current DU is always to be scanned. +; +SCANCUR EQU TRUE + + +; +; 10. DU AND DIR CONTROLS +; + +; +; The following equate enables the appearance of the current disk/user +; in the ZCPR3 prompt. If set to FALSE, the prompt appears as '>' (assuming +; > is the current value of CPRMPT). If set to TRUE, the prompt appears +; as 'd>' or 'dn>'. (see INCLNDR below) +; +INCLDU equ TRUE + +; +; The following equate allows ZCPR3 to accept the DU: prefix or +; login form for input. Set this to TRUE if DU: prefix is to be allowed. +; +; Setting this equate to TRUE allows the following forms: +; +; A>B1: +; A>TYPE B4:FILE.TXT +; A>B: +; A>1: +; +ACCPTDU EQU TRUE + +; +; This equate enables ZCPR3 to process DIR: forms internally +; through the memory-based named directory buffer. This equate and +; the NDBASE address should be TRUE (non-zero) in order to enable +; ZCPR3 to process named directories. +; +; If NDINCP is TRUE, the following forms are allowed: +; +; A>ROOT: +; A>TYPE TEXT:FILE.TXT +; +; if the other associated equates (below) are set correctly. +; +NDINCP EQU TRUE + +; +; The following equate will cause the name of the current directory +; to be displayed as part of the prompt along with the DU form if enabled. +; (see INCLDU above) +; +; For example, if INCLNDR is TRUE, the prompt would look like: +; +; B7:TEXT> -- if INCLDU is also TRUE +; TEXT> -- if INCLDU is FALSE +; +INCLNDR EQU TRUE + +; +; The following equate allows ZCPR3 to accept the DIR: prefix or +; login form for input. Set this to TRUE if DIR: prefix is to be allowed. +; +; Setting this equate to TRUE allows the following forms: +; +; A>ROOT: +; A>TYPE TEXT:FILE.TXT +; +ACCPTND EQU TRUE + +; +; The following equate determines the hierarchy of DU:/DIR: evaluation. +; Set this to TRUE if DU: is to be tested for before DIR: or set this to +; FALSE if DIR: is to be tested for before DU:. If this is FALSE, named +; directories like C: (standing for C work area - NOT disk C) are permitted. +; +; Assuming that a directory for C programs, named 'C', and a root +; directory, named 'ROOT', exist, then if DUFIRST is set to FALSE: +; +; A>C: -- logs the user into the directory named 'C' +; A>ROOT: -- logs the user into the directory named 'ROOT' +; +; while if DUFIRST is set to TRUE: +; +; A>C: -- logs the user into disk C: (dir C can't be accessed) +; A>ROOT: -- logs the user into the directory named 'ROOT' +; +DUFIRST EQU FALSE + +; +; Enable password check on named directory references. If a named +; directory is referenced and has a password associated with it, ZCPR3 +; will ask the user for this password and approve the reference only +; if he gives a valid response. One and only one try is permitted. +; Setting this equate to TRUE will enable the password check facility. +; +PWCHECK EQU TRUE + + +; +; 11. COMMAND LINE BUFFER CONTROL +; +; The MULTCMD equate enables the feature of having more than +; one command on the same line, separated by a separation char +; which is defined by the CMDSEP equate. If this feature is +; enabled, the command line buffer and buffer pointers are +; moved outside of ZCPR3 at the indicated address of Z3CL. +; +; MULTCMD indicates if the ability to have more than one command +; on a line is to be enabled, and CMDSEP is the character used to separate +; these commands. For example, if CMDSEP is ';' and MULTCMD is TRUE, then +; commands like this are possible: +; +; ERA *.BAK;DIR +; + IF Z3CL NE 0 +MULTCMD equ TRUE + ELSE +MULTCMD equ FALSE + ENDIF +CMDSEP equ ';' + + +; +; 12. CMDRUN -- ZCPR3 EXTENDED COMMAND PROCESSING FACILITY +; +; This equate enables the ZCPR3 CMDRUN facility. If CMDRUN is TRUE, then +; another stage of command processing is invoked should ZCPR3 fail to find +; a COM file when the user gives a command. This stage involves invoking +; the COM file specified by CMDFCB and giving it the current command line +; as an argument. In this way, if, say, M80 PROG2 fails as a command, +; a new command like LRUNZ M80 PROG2, SUB M80 PROG2, or ZEX M80 PROG2 may +; be processed. If the new command fails, an appropriate error message is +; given. +; +; The ROOTONLY option causes ZCPR3 to only look at the Root (bottom of +; path) for the Extended Command Processor if it is set to TRUE. If it +; is set to FALSE, the path is searched for the Extended Command Processor. +; The tradeoff here is that ROOTONLY = TRUE is less flexible but somewhat +; faster than ROOTONLY = FALSE. +; +CMDRUN equ FALSE ; Enable the Facility + + if CMDRUN +ROOTONLY equ TRUE ; TRUE if look at Root Only for Extended + ; Command Processor, FALSE if look along + ; path +CMDFCB MACRO + db 0 + db 'CMDRUN ' ;Name of Program + db 'COM' ;File Type + ENDM + endif ;CMDRUN + + +; +; 13. FLOW COMMAND FACILITY +; +; This equate enables ZCPR3 to respond to IF processing. +; ZCPR3 simply flushes commands if a FALSE IF is currently engaged. +; FCPs must be enabled for IFON to work correctly. +; +IFON EQU TRUE + + +; +; 14. MISCELLANEOUS EQUATES +; +MAXUSR EQU 31 ;MAXIMUM USER NUMBER ACCESSABLE +MAXDISK EQU 4 ;MAXIMUM NUMBER OF DISKS ACCESSABLE + +SUPRES EQU TRUE ;SUPRESSES USER # REPORT FOR USER 0 + +SPRMPT EQU '$' ;CPR PROMPT INDICATING SUBMIT COMMAND +CPRMPT EQU '>' ;CPR PROMPT INDICATING USER COMMAND + +NUMBASE EQU 'H' ;CHAR USED TO SWITCH FROM DEFAULT NUMBER BASE + +CURIND EQU '$' ;SYMBOL FOR CURRENT DISK OR USER + +COMMENT EQU ';' ;LINES BEGINNING WITH THIS CHAR ARE COMMENTS + +; +; END OF ZCPR3 CUSTOMIZATION SECTION +; + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3HDR2.LIB b/Images/Source/hd0/s0/u15/Z3HDR2.LIB new file mode 100644 index 00000000..400f0838 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3HDR2.LIB @@ -0,0 +1,609 @@ +; Z3HDR - Minimum Configuration +; Offset: 4100H + +************************************************************************* +* * +* Z C P R 3 -- Z80-Based Command Processor Replacement, Version 3.0 * +* * +* Copyright (c) 1984 by Richard Conn * +* Copyright Pending, US Government * +* All Rights Reserved * +* * +* ZCPR3 was written by Richard Conn, who assumes no responsibility * +* or liability for its use. ZCPR3 is released to the CP/M user * +* community for non-commercial use only. * +* * +* All registered users of CP/M are encouraged to freely copy and use * +* ZCPR3 and its associated utilities on their registered systems for * +* non-commercial purposes. * +* * +* Any commercial use of ZCPR3 is prohibited unless approved by the * +* author, Richard Conn, or his authorized agent, Echelon, Inc, in * +* writing. * +* * +* This is the RELEASE VERSION of ZCPR3. * +* * +************************************************************************* + +; +; Module: Z3HDR +; Author: Richard Conn +; Module Used By: ZCPR3 Version 3.x +; Note: Z3HDR contains the key customization equates for ZCPR3. These +; equates allow the user to select various ZCPR3 options and do an +; extensive amount of tailoring of ZCPR3 to the user's desires. +; + +; +; 1. BASIC SYSTEM DEFINITIONS +; +; The following equates may be used to customize this CPR for the user's +; system and integration technique. The following equate are provided: +; +; REL - TRUE if integration is to be done via MOVCPM +; - FALSE if integration is to be done via DDT and SYSGEN +; +; CPRLOC - Base Page Address of CPR; this value can be obtained by running +; the CCPLOC program on your system, and if REL is FALSE, this +; value is supplied through the Z3BASE.LIB CCP equate +; +REL EQU FALSE +; + IF REL +CPRLOC EQU 0 + ELSE +CPRLOC EQU CCP ;VALUE PROVIDED IN Z3BASE.LIB + ENDIF + +; +; 2. DEFAULT FILE TYPES +; +; The following macros define the file types of the command object files +; (COM files under CP/M 2.2) to be loaded when a non-resident ZCPR3 command +; is given and of the indirect command files (SUB files under CP/M 2.2) to +; be used to extract commands from when the indirect command facility is +; invoked. +; +COMTYP MACRO + DB 'COM' + ENDM + +SUBTYP MACRO + DB 'SUB' + ENDM + +; +; 3. SUBMIT FILE PROCESSING +; +; The following flag enables the ability of ZCPR3 to process +; SUBMIT files (command files of the form $$$.SUB). If SUBON is TRUE, then +; ZCPR3 will process such files like CP/M's CCP normally does; if SUBON is +; FALSE, ZCPR3 will not process such files (ignore them). In such a case, +; only indirect command file facilities like ZEX will work. Much code is +; saved inside of the ZCPR3 Command Processor if SUBON is set to FALSE, +; but this rather useful facility is lost. +; +SUBON EQU TRUE + + +; +; 4. COMMAND PREFIX +; +; The following flag allows ZCPR3 to accept commands of the form +; "du:command params" or "dir:command params". If DRVPREFIX is TRUE, +; this form is accepted; if FALSE, this form is not accepted. +; +DRVPREFIX equ TRUE + + +; +; 5. COMMAND ATTRIBUTES +; +; The following equate allows the user to select the attributes of the +; COM files which are selected for execution. The ZCPR3 Command Processor +; can be made to execute only COM files with the System attribute set, with +; the Directory (non-System) attribute set, or with either attribute set. +; The following values are defined for this equate: +; +; COMATT Files Selected +; 0 System +; 80H Directory +; 1 Both System and Directory +; +COMATT equ 01H + + +; +; 6. ZCPR3 RESIDENT COMMAND ACTIVATION AND WHEEL FACILITY +; +; The following equates enable various ZCPR3-resident commands. +; The user may invoke these as desired, but should keep in mind the size +; of the resulting ZCPR3 and make sure it does not exceed the required +; limits. +; +DIRON equ FALSE ;DIR COMMAND +LTON equ TRUE ;LIST, TYPE COMMANDS +GOON equ TRUE ;GO COMMAND +ERAON equ TRUE ;ERA COMMAND +SAVEON equ FALSE ;SAVE COMMAND +RENON equ FALSE ;REN COMMAND +GETON equ FALSE ;GET COMMAND +JUMPON equ FALSE ;JUMP COMMAND +NOTEON equ TRUE ;NOTE COMMAND + +; +; The Wheel equate table enables the WHEEL facility of ZCPR3. With this +; facility, a WHEEL BYTE, which exists somewhere in memory, is examined +; before a set of installer-selected commands are executed. +; If this byte is not zero, then the command proceeds. If it is zero, +; then the command is not allowed to proceed and is exited with an error +; message. +; +; The following set of equates make each of the indicated commands +; selectable to respond to the Wheel Byte or not. For instance, if +; WERA=TRUE, then it responds to the Wheel Byte; if WERA=FALSE, it does not. +; + IF Z3WHL NE 0 ;IF A WHEEL BYTE ADDRESS IS DEFINED +WERA equ FALSE ;Make ERA a Wheel-Oriented Command +WREN equ FALSE ; " REN " " " " +WLT equ FALSE ; " L/T " " " " (LIST/TYPE) +WGO equ FALSE ; " GO " " " " +WSAVE equ FALSE ; " SAVE " " " " +WGET equ FALSE ; " GET " " " " +WJUMP equ FALSE ; " JUMP " " " " +WDU equ FALSE ; " DU: " " " " (DU/DIR Change) +WHEEL equ WERA OR WREN OR WLT OR WGO OR WSAVE OR WGET OR WJUMP OR WDU + ENDIF ;Z3WHL + +; +; 7. ZCPR3 RESIDENT COMMAND TABLE +; +; This table consists of the names of the various ZCPR3-resident +; commands and their addresses. The NCHARS equate defines how many +; characters long each name may be, and all table entries must be exactly +; the indicated number of characters (trailing spaces are used to fill +; out shorter names). +; +; Each table entry is structured as follows: +; +; DB 'CMND' ;Name of Command (NCHARS long) +; DB CMNDADR ;Address of Command within ZCPR3 +; +; The installer should only change the names of the commands as +; desired and should not, as a rule, touch the address definition since +; this is fixed within the body of ZCPR3. +; +NCHARS EQU 4 ;NUMBER OF CHARS/COMMAND + +CTABLE MACRO +; + IF DIRON + DB 'DIR ' + DW DIR ;DIRECTORY DISPLAY COMMAND + ENDIF +; + IF LTON + DB 'LIST' + DW LIST ;LIST FILE ON PRINTER COMMAND + DB 'TYPE' + DW TYPE ;TYPE FILE ON CONSOLE COMMAND + ENDIF +; + IF GOON + DB 'GO ' + DW GO ;EXECUTE CURRENT TPA COMMAND + ENDIF +; + IF ERAON + DB 'ERA ' + DW ERA ;ERASE FILES COMMAND + ENDIF +; + IF SAVEON + DB 'SAVE' + DW SAVE ;SAVE TPA COMMAND + ENDIF +; + IF RENON + DB 'REN ' + DW REN ;RENAME FILES COMMAND + ENDIF +; + IF GETON + DB 'GET ' + DW GET ;LOAD FILE INTO TPA COMMAND + ENDIF +; + IF JUMPON + DB 'JUMP' + DW JUMP ;JUMP TO ANY MEMORY LOCATION COMMAND + ENDIF +; + IF NOTEON + DB 'NOTE' + DW NOTE ;NOTE - NULL COMMAND (NOP) + ENDIF +; + ENDM + + +; +; 8. CONTROLS ON ZCPR3 RESIDENT COMMANDS +; +; The following sets of equates provide special controls and +; parameters on various ZCPR3-resident commands. +; + +; +; The following equates set the width of the spacing between the +; file names for the DIR command and the character used to separate file +; names from one another on the same line. +; +; Assuming that FENCE is set to the character '|', If WIDE is TRUE, +; then the output will look like: +; +; filename.typ__|__filename.typ ... +; +; while if WIDE is FALSE, the output will look like: +; +; filename.typ_|_filename.typ ... +; +; (underscore represents a space) +; +WIDE EQU TRUE +FENCE EQU '|' + +; +; The following equates define two flags which are used in +; conjunction with the DIR command on the command line. SYSFLG is +; the character used to indicate to DIR that all files, both System +; and Non-System, are to be displayed. SOFLG is the character used +; to indicate to DIR that only the System files are to be displayed. +; By default, DIR displays non-System files. +; +; For example, if SYSFLG is set to 'A' and SOFLG is set to +; 'S', then: +; DIR *.COM A +; +; displays all COM files with both System and non-System attributes +; while: +; DIR *.COM S +; +; displays only COM files with the System attribute. Naturally: +; +; DIR *.COM +; +; displays only COM files with the non-System attribute. +; +SYSFLG EQU 'A' +SOFLG EQU 'S' + +; +; The following equate causes ERA to confirm the files to be erased +; before it goes ahead and erases them. If ERAOK is TRUE, then the user +; will be prompted each time; if it is FALSE, then the user will not be +; prompted. +; +ERAOK equ FALSE + +; +; If ERAOK is TRUE, the following equate adds a Verify option to the +; ERA command which causes the user to be prompted only if the Verify +; option letter, defined by ERDFLG, is given after the file name. If +; ERAV is TRUE, then the user will be asked to verify only when ERDFLG +; is contained in the command line; if ERAV is FALSE, the user will always +; be asked to verify. +; +; For example, if ERAOK is TRUE, ERAV is TRUE, and ERDFLG is 'V', +; then the command: +; ERA *.* V +; will result in the file names being displayed and the user being asked +; for verification. If the V option were not given, the user would not +; be asked for verification. +; +ERAV equ FALSE +ERDFLG equ 'V' + +; +; The following equates set the paging parameters for the TYPE +; command. +; +; PGDFLT determines if TYPE pages by default. If PGDFLT is TRUE, +; then: +; TYPE FILE.TXT +; +; will be paged. If PGDFLT is FALSE, the above command will not be paged. +; +; PGDFLG defines the option character in the TYPE command line which +; is used to toggle the default set by PGDFLT. Assuming that PGDFLG is set +; to 'P', then: +; TYPE FILE.TXT P +; +; will page the file listing if PGDFLT is FALSE and not page it if PGDFLT is +; TRUE. +; +PGDFLT EQU TRUE +PGDFLG EQU 'P' + +; +; The following equate defines the number of lines on the user's CRT +; screen for use by the TYPE command when it is paging. This value is usually +; 24. +; +NLINES EQU 24 + +; +; The following equate defines the option letter used with the +; SAVE command to indicate that the associated number is 128-byte sectors +; as opposed to 256-byte pages. For example, if SECTFLG is set to 'S', then: +; +; SAVE 25 FILE.BIN S +; +; save 25 128-byte sectors starting at location 100H into the file named +; FILE.BIN. IF the S option was not present, SAVE would have saved 25 +; 256-byte blocks starting at location 100H into the file named FILE.BIN. +; +SECTFLG EQU 'S' + +; +; 9. PATH DEFINITION +; +; The following equate specifies the address of the PATH to be followed +; for the PATH command-search if the PATH is to be initialized by the BIOS +; and set by the user via a PATH.COM program. The value of PATH should +; be the address of the PATH data area in memory. If the internal PATH +; provided by ZCPR3 is to be used, then PATHBASE should be equated to 0, +; which selects the PATH located just after the MEMLOAD routine. If the +; external PATH is to be used, then PATHBASE should be set to the address +; of the external path. +; +; A PATH is a series of byte-pairs, terminated by a binary 0. The first +; byte of each pair is the disk number (1-16 for disks A-P), and the second +; byte of each pair is the user number (0-31). The special character '$' +; indicates the current user or current disk. For example, the path +; from current disk/current user to current disk/user 0 to disk A/user 0 +; is selected by the following sequence: +; +; DB '$$' ;current disk/user +; DB '$',0 ;current disk/user 0 +; DB 1,0 ;disk A/user 0 +; DB 0 ;end of path +; + IF EXPATH NE 0 ;External Path Selected +; +; This equate defines the base address of the external path +; +PATH equ EXPATH ;External ZCPR3 PATH at CBIOS Buffer Area + + ELSE ;Internal Path Selected +; +; The following macro defines the n-element internal path +; +IPATH MACRO + db 'A'-'@','$' ;Disk A, Current User + db 'A'-'@',0 ;Disk A, User 0 + db 0 ;End of Path -- MUST be here + ENDM +; + ENDIF + +; +; The following flag enables ZCPR3 to perform an optimized path +; search when it is searching along a path for a file. If this equate +; is TRUE, ZCPR3 will build a path in memory of absolute entries (A1, B7, etc) +; from the symbolic path (one containing '$') which is the path it would +; otherwise use. This new path would contain no duplicate path elements, +; where a symbolic path analysis may. For example, if the path is: +; +; db 'A'-'@','$' ;disk A, current user +; db 'A'-'@',15 ;disk A, user 15 +; db 0 +; +; then if the user is logged into A15, setting the below equate to TRUE +; would allow ZCPR3 to build the path: +; +; db 'A'-'@',15 ;only one entry +; db 0 +; +; in the analysis of this symbolic path, while with this equate FALSE, +; ZCPR3 may log into A15 as many as three times (once for the default +; and twice more for the symbolic path) in looking for a file which is +; not found before it gives up. Using this minimum path facility costs +; some code in ZCPR3, but it speeds up processing noticably in some cases. +; +; Enable this equate if MINIMUM PATH SEARCH is to be employed. +; +MINPATH EQU TRUE + +; +; In searching for a file along a path, ZCPR3 can be commanded +; to always look in the current logged-in directory before beginning +; the path search. This equate controls this feature. If SCANCUR +; is set to TRUE, the current directory need never be referenced in +; a symbolic path expression (DB '$','$') since SCANCUR insures that +; the current directory is scanned. +; +; Enable this equate if the current DU is always to be scanned. +; +SCANCUR EQU TRUE + + +; +; 10. DU AND DIR CONTROLS +; + +; +; The following equate enables the appearance of the current disk/user +; in the ZCPR3 prompt. If set to FALSE, the prompt appears as '>' (assuming +; > is the current value of CPRMPT). If set to TRUE, the prompt appears +; as 'd>' or 'dn>'. (see INCLNDR below) +; +INCLDU equ TRUE + +; +; The following equate allows ZCPR3 to accept the DU: prefix or +; login form for input. Set this to TRUE if DU: prefix is to be allowed. +; +; Setting this equate to TRUE allows the following forms: +; +; A>B1: +; A>TYPE B4:FILE.TXT +; A>B: +; A>1: +; +ACCPTDU EQU TRUE + +; +; This equate enables ZCPR3 to process DIR: forms internally +; through the memory-based named directory buffer. This equate and +; the NDBASE address should be TRUE (non-zero) in order to enable +; ZCPR3 to process named directories. +; +; If NDINCP is TRUE, the following forms are allowed: +; +; A>ROOT: +; A>TYPE TEXT:FILE.TXT +; +; if the other associated equates (below) are set correctly. +; +NDINCP EQU TRUE + +; +; The following equate will cause the name of the current directory +; to be displayed as part of the prompt along with the DU form if enabled. +; (see INCLDU above) +; +; For example, if INCLNDR is TRUE, the prompt would look like: +; +; B7:TEXT> -- if INCLDU is also TRUE +; TEXT> -- if INCLDU is FALSE +; +INCLNDR EQU TRUE + +; +; The following equate allows ZCPR3 to accept the DIR: prefix or +; login form for input. Set this to TRUE if DIR: prefix is to be allowed. +; +; Setting this equate to TRUE allows the following forms: +; +; A>ROOT: +; A>TYPE TEXT:FILE.TXT +; +ACCPTND EQU TRUE + +; +; The following equate determines the hierarchy of DU:/DIR: evaluation. +; Set this to TRUE if DU: is to be tested for before DIR: or set this to +; FALSE if DIR: is to be tested for before DU:. If this is FALSE, named +; directories like C: (standing for C work area - NOT disk C) are permitted. +; +; Assuming that a directory for C programs, named 'C', and a root +; directory, named 'ROOT', exist, then if DUFIRST is set to FALSE: +; +; A>C: -- logs the user into the directory named 'C' +; A>ROOT: -- logs the user into the directory named 'ROOT' +; +; while if DUFIRST is set to TRUE: +; +; A>C: -- logs the user into disk C: (dir C can't be accessed) +; A>ROOT: -- logs the user into the directory named 'ROOT' +; +DUFIRST EQU FALSE + +; +; Enable password check on named directory references. If a named +; directory is referenced and has a password associated with it, ZCPR3 +; will ask the user for this password and approve the reference only +; if he gives a valid response. One and only one try is permitted. +; Setting this equate to TRUE will enable the password check facility. +; +PWCHECK EQU FALSE + + +; +; 11. COMMAND LINE BUFFER CONTROL +; +; The MULTCMD equate enables the feature of having more than +; one command on the same line, separated by a separation char +; which is defined by the CMDSEP equate. If this feature is +; enabled, the command line buffer and buffer pointers are +; moved outside of ZCPR3 at the indicated address of Z3CL. +; +; MULTCMD indicates if the ability to have more than one command +; on a line is to be enabled, and CMDSEP is the character used to separate +; these commands. For example, if CMDSEP is ';' and MULTCMD is TRUE, then +; commands like this are possible: +; +; ERA *.BAK;DIR +; + IF Z3CL NE 0 +MULTCMD equ TRUE + ELSE +MULTCMD equ FALSE + ENDIF +CMDSEP equ ';' + + +; +; 12. CMDRUN -- ZCPR3 EXTENDED COMMAND PROCESSING FACILITY +; +; This equate enables the ZCPR3 CMDRUN facility. If CMDRUN is TRUE, then +; another stage of command processing is invoked should ZCPR3 fail to find +; a COM file when the user gives a command. This stage involves invoking +; the COM file specified by CMDFCB and giving it the current command line +; as an argument. In this way, if, say, M80 PROG2 fails as a command, +; a new command like LRUNZ M80 PROG2, SUB M80 PROG2, or ZEX M80 PROG2 may +; be processed. If the new command fails, an appropriate error message is +; given. +; +; The ROOTONLY option causes ZCPR3 to only look at the Root (bottom of +; path) for the Extended Command Processor if it is set to TRUE. If it +; is set to FALSE, the path is searched for the Extended Command Processor. +; The tradeoff here is that ROOTONLY = TRUE is less flexible but somewhat +; faster than ROOTONLY = FALSE. +; +CMDRUN equ FALSE ; Enable the Facility + + if CMDRUN +ROOTONLY equ TRUE ; TRUE if look at Root Only for Extended + ; Command Processor, FALSE if look along + ; path +CMDFCB MACRO + db 0 + db 'CMDRUN ' ;Name of Program + db 'COM' ;File Type + ENDM + endif ;CMDRUN + + +; +; 13. FLOW COMMAND FACILITY +; +; This equate enables ZCPR3 to respond to IF processing. +; ZCPR3 simply flushes commands if a FALSE IF is currently engaged. +; FCPs must be enabled for IFON to work correctly. +; +IFON EQU FALSE + + +; +; 14. MISCELLANEOUS EQUATES +; +MAXUSR EQU 31 ;MAXIMUM USER NUMBER ACCESSABLE +MAXDISK EQU 4 ;MAXIMUM NUMBER OF DISKS ACCESSABLE + +SUPRES EQU TRUE ;SUPRESSES USER # REPORT FOR USER 0 + +SPRMPT EQU '$' ;CPR PROMPT INDICATING SUBMIT COMMAND +CPRMPT EQU '>' ;CPR PROMPT INDICATING USER COMMAND + +NUMBASE EQU 'H' ;CHAR USED TO SWITCH FROM DEFAULT NUMBER BASE + +CURIND EQU '$' ;SYMBOL FOR CURRENT DISK OR USER + +COMMENT EQU ';' ;LINES BEGINNING WITH THIS CHAR ARE COMMENTS + +; +; END OF ZCPR3 CUSTOMIZATION SECTION +; + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3LDRBUG.LBR b/Images/Source/hd0/s0/u15/Z3LDRBUG.LBR new file mode 100644 index 0000000000000000000000000000000000000000..8a70b2e98c66c6c4a97c1cd8982d6a0c32d17f38 GIT binary patch literal 5632 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 R@7FTM8hRXT|97?eKL9QVh7$k) literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/Z3LOC.COM b/Images/Source/hd0/s0/u15/Z3LOC.COM new file mode 100644 index 0000000000000000000000000000000000000000..e7f7844d9d07babdaefb871c77f05e16e6171939 GIT binary patch literal 896 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 SZ#DDMd5yz9GU7R;&;LK;U-+s3 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/Z3TCAP.ASM b/Images/Source/hd0/s0/u15/Z3TCAP.ASM new file mode 100644 index 00000000..a698a4a9 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3TCAP.ASM @@ -0,0 +1,1024 @@ +; ZCPR3 System Segment: Z3TCAP (Terminal Capabilities File) +; Author: Richard Conn +; Version: 1.3 + +; Modified slightly and added some more terminals. 13 Sep 84 jww +; More terminals. 25 Sept 84 jww +; More terminals. 12 Oct 84 jww +; More terminals. 28 Oct 84 jww (Version 1.3) + +esc equ 1bh ; Escape character jww + +; +; Z3TCAP is divided into to main parts -- the index, which contains +; a set of 16-byte entries describing the names of the terminals to follow +; and the main body, which contains the details on the terminals themselves. +; Origin does not make any difference since everything is relative anyway. +; The index is always an integral number of 128-byte blocks in size, and +; each terminal entry in the main body is 128 bytes in size. +; + + ORG 100H ; just for consistency + +; +; Z3TCAP INDEX +; Structure is: +; DS 16 ; Name of Terminal +; ... +; DB ' ' ; Blank Entry Marks End +; DS 16*n ; Required to fill out last 128-byte block +; + DB 'AA Ambassador ' ;Name of Terminal + DB 'ADDS Consul 980 ' ;Name of Terminal + DB 'ADDS Regent 20 ' ;Name of Terminal + DB 'ADDS Viewpoint ' ;Name of Terminal + DB 'ADM 2 ' ;Name of Terminal + DB 'ADM 31 ' ;Name of Terminal + DB 'ADM 3A ' ;Name of Terminal + DB 'ADM 42 ' ;Name of Terminal + DB 'Bantam 550 ' ;Name of Terminal + DB 'CDC 456 ' ;Name of Terminal + DB 'Concept 100 ' ;Name of Terminal + DB 'Concept 108 ' ;Name of Terminal + DB 'CT82 ' ;Name of Terminal + DB 'DEC VT52 ' ;Name of Terminal + DB 'DEC VT100 ' ;Name of Terminal + DB 'Dialogue 80 ' ;Name of Terminal + DB 'Direct 800/A ' ;Name of Terminal + DB 'Epson GENEVA ' ;Name of Terminal + DB 'Epson QX-10 ' ;Name of Terminal + DB 'General Trm 100A' ;Name of Terminal + DB 'Hazeltine 1420 ' ;Name of Terminal + DB 'Hazeltine 1500 ' ;Name of Terminal + DB 'Hazeltine 1510 ' ;Name of Terminal + DB 'Hazeltine 1520 ' ;Name of Terminal + DB 'H19 (ANSI Mode) ' ;Name of Terminal + DB 'H19 (Heath Mode)' ;Name of Terminal + DB 'HP 2621 ' ;Name of Terminal + DB 'IBM 3101 ' ;Name of Terminal + DB 'Kaypro II ' ;Name of Terminal + DB 'Kaypro 10 ' ;Name of Terminal + DB 'Micro Bee ' ;Name of Terminal + DB 'Microterm ACT IV' ;Name of Terminal + DB 'Microterm ACT V ' ;Name of Terminal + DB 'NorthStar Advant' ;Name of Terminal + DB 'Osborne I ' ;Name of Terminal + DB 'P Elmer 1100 ' ;Name of Terminal + DB 'P Elmer 1200 ' ;Name of Terminal + DB 'Qume QVT 102 ' ;Name of Terminal + DB 'SOROC 120 ' ;Name of Terminal + DB 'Super Bee ' ;Name of Terminal + DB 'TAB 132 ' ;Name of Terminal + DB 'Teleray 1061 ' ;Name of Terminal + DB 'Teleray 3800 ' ;Name of Terminal + DB 'TTY 4424 ' ;Name of Terminal + DB 'TVI 912 ' ;Name of Terminal + DB 'TVI 920 ' ;Name of Terminal + DB 'TVI 950 ' ;Name of Terminal + DB 'TVI 970 ' ;Name of Terminal + DB 'VC 404 ' ;Name of Terminal + DB 'VC 415 ' ;Name of Terminal + DB 'Visual 200 ' ;Name of Terminal + DB 'WYSE 50 ' ;Name of Terminal + + DB ' 1.3 ' ; Last Entry +; +; Compute Space Remaining to Fill 128-byte Block +; +endsp equ 128-($-$/128*128) + if (endsp eq 128) + DS 0 + else + DS endsp + endif + +; +; TERMS - Terminal Data +; Structure is: +; DS 16 ; Name of Terminal +; DS 1 ; Char for Cursor UP +; DS 1 ; Char for Cursor DOWN +; DS 1 ; Char for Cursor RIGHT +; DS 1 ; Char for Cursor LEFT +; DS 1 ; Delay After CL +; DS 1 ; Delay After CM +; DS 1 ; Delay After CE +; DS N ; CL string, ending in 0 +; DS N ; CM string, ending in 0 +; DS N ; CE string, ending in 0 +; DS N ; SO string, ending in 0 +; DS N ; SE string, ending in 0 +; DS N ; TI string, ending in 0 +; DS N ; TE string, ending in 0 +; + +; Terminal xxxx +TTABLE: + DB 'AA Ambassador ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 156 ;CL Delay + DB 00 ;CM Delay + DB 05 ;CE Delay + DB esc,'[H',esc,'[J',0 ;CL String + DB esc,'[%i%d;%dH',0 ;CM String + DB esc,'[K',0 ;CE String + DB esc,'[7m',0 ;SO String + DB esc,'[m',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'ADDS Consul 980 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',80h,'K'-'@','@',0 ;CL String + DB 'K'-'@','%+@',esc,'E'-'@','%2',0 ;CM String + DB 0 ;CE String + DB 'Y'-'@',1eh,'N'-'@',0 ;SO String + DB 'O'-'@',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'ADDS Regent 20 ' ;Name of Terminal + DB 'Z'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'F'-'@' ;Cursor RIGHT + DB 'U'-'@' ;Cursor LEFT + DB 0 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'ADDS Viewpoint ' ;Name of Terminal + DB 'Z'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'F'-'@' ;Cursor RIGHT + DB 'U'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB 'N'-'@',0 ;SO String + DB 'O'-'@',0 ;SE String + DB esc,'0A',0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'ADM 2 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 0 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,';',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'ADM 31 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 0 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'*',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,'G1',0 ;SO String + DB esc,'G0',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'ADM 3A ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 01 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB 0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'ADM 42 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,';',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,'G4',0 ;SO String + DB esc,'G0',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Bantam 550 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 20 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'K',0 ;CL String + DB esc,'X%+ ',esc,'Y%+ ',0 ;CM String + DB esc,'I',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'CDC 456 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Y'-'@','X'-'@',0 ;CL String + DB esc,'1%+ %+ ',0 ;CM String + DB 'V'-'@',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Concept 100 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 16 ;CE Delay + DB 'L'-'@','L'-'@',0 ;CL String + DB esc,'a','%+ %+ ',0 ;CM String + DB esc,'U'-'@',0 ;CE String + DB esc,'E',esc,'D',0 ;SO String + DB esc,'d',esc,'e',0 ;SE String + DB esc,'U',esc,'v 8p',esc,'p',0dh,0 ;TI String + DB esc,'v ',80h,80h,80h,80h,80h,80h + DB esc,'p',0dh,0ah,0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Concept 108 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 16 ;CE Delay + DB esc,'?',esc,'E'-'@',0 ;CL String + DB esc,'a','%+ %+ ',0 ;CM String + DB esc,'S'-'@',0 ;CE String + DB esc,'D',0 ;SO String + DB esc,'d',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'CT82 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB '%r','K'-'@','%.%.',0 ;CM String + DB 'F'-'@',0 ;CE String + DB 1eh,'V'-'@',0 ;SO String + DB 1eh,'F'-'@',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'DEC VT52 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'H',esc,'J',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'DEC VT100 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 50 ;CL Delay + DB 05 ;CM Delay + DB 03 ;CE Delay + DB esc,'[;H',esc,'[2J',0 ;CL String + DB esc,'[%i%d;%dH',0 ;CM String + DB esc,'[K',0 ;CE String + DB esc,'[7m',0 ;SO String + DB esc,'[m',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Dialogue 80 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 75 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'*',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'t',0 ;CE String + DB esc,'j',0 ;SO String + DB esc,'k',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Direct 800/A ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'[1;1H',esc,'[2J',0 ;CL String + DB esc,'[%i%d;%dH',0 ;CM String + DB esc,'[K',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Epson GENEVA ' ;Name of Terminal + DB 00 ;Cursor UP + DB 00 ;Cursor DOWN + DB 00 ;Cursor RIGHT + DB 00 ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'*',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Epson QX-10 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,')',0 ;SO String + DB esc,'(',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'General Trm 100A' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB esc,'f%r%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB esc,'b',0 ;SO String + DB esc,'a',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Hazeltine 1420 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,1ch,0 ;CL String + DB esc,'Q'-'@','%r%.%+ ',0 ;CM String + DB esc,'O'-'@',0 ;CE String + DB esc,1fh,0 ;SO String + DB esc,'Y'-'@',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Hazeltine 1500 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB '~',1ch,0 ;CL String + DB '~','Q'-'@','%r%.%+ ',0 ;CM String (correct - not same + DB '~','O'-'@',0 ;CE String as UNIX TERMCAP entry) + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Hazeltine 1510 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,1ch,0 ;CL String + DB esc,'Q'-'@','%r%.%+ ',0 ;CM String (correct?) + DB esc,'O'-'@',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Hazeltine 1520 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB '~',1ch,0 ;CL String + DB '~','Q'-'@','%r%.%+ ',80h,0 ;CM String (correct?) + DB '~','O'-'@',0 ;CE String + DB '~',1fh,0 ;SO String + DB '~','Y'-'@',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'H19 (ANSI Mode) ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'[2J',0 ;CL String + DB esc,'[%d;%dH',0 ;CM String + DB esc,'[K',0 ;CE String + DB esc,'[7m',0 ;SO String + DB esc,'[m',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'H19 (Heath Mode)' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'E',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB esc,'p',0 ;SO String + DB esc,'q',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'HP 2621 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'H',esc,'J',0 ;CL String + DB esc,'&a%r%dc%dY',0 ;CM String + DB 0 ;CE String + DB esc,'&dD',0 ;SO String + DB esc,'&d@',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'IBM 3101 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'K',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'I',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Kaypro II ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB 0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Kaypro 10 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB 'X'-'@',0 ;CE String + DB esc,'B1',0 ;SO String + DB esc,'C1',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Micro Bee ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'E',0 ;CL String + DB esc,'F%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB esc,'dP',0 ;SO String + DB esc,'d@',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Microterm ACT IV' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB 'T'-'@','%.%.',0 ;CM String + DB 1eh,0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Microterm ACT V ' ;Name of Terminal + DB 'Z'-'@' ;Cursor UP + DB 'K'-'@' ;Cursor DOWN + DB 'X'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB 'T'-'@','%.%.',0 ;CM String + DB 1eh,0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'NorthStar Advant' ;Name of Terminal + DB 'B'-'@'+80h ;Cursor UP + DB 'J'-'@'+80h ;Cursor DOWN + DB 'F'-'@'+80h ;Cursor RIGHT + DB 'H'-'@'+80h ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 1EH,0FH,0 ;CL String + DB ESC,'=%+ %+ ',0 ;CM String + DB 0EH,0 ;CE String + DB 1,0 ;SO String + DB 2,0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Osborne I ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,')',0 ;SO String + DB esc,'(',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'P Elmer 1100 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 132 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'H',esc,'J',0 ;CL String + DB esc,'X%+ ',esc,'Y%+ ',0 ;CM String + DB esc,'I',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'P Elmer 1200 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 132 ;CL Delay + DB 00 ;CM Delay + DB 06 ;CE Delay + DB esc,'H',esc,'J',0 ;CL String + DB esc,'X%+ ',esc,'Y%+ ',0 ;CM String + DB esc,'I',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Qume QVT 102 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,'(',0 ;SO String + DB esc,')',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'SOROC 120 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 02 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'*',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Super Bee ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 03 ;CL Delay + DB 00 ;CM Delay + DB 03 ;CE Delay + DB esc,'H',esc,'J',0 ;CL String + DB esc,'F%r%3%3',0 ;CM String + DB esc,'K',0 ;CE String + DB esc,'_1',0 ;SO String + DB esc,'_0',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'TAB 132 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 50 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'[;H',esc,'[2J',0 ;CL String + DB esc,'[%i%d;%dH',0 ;CM String + DB 0 ;CE String + DB esc,'[7m',0 ;SO String + DB esc,'[m',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Teleray 1061 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 01 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB esc,'RD',0 ;SO String + DB esc,'R@',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Teleray 3800 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'K',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'TTY 4424 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'[2;H',esc,'[J',0 ;CL String + DB esc,'[%i%2;%2H',esc,'[B',0 ;CM String + DB esc,'[K',0 ;CE String + DB esc,'[7m',0 ;SO String + DB esc,'[m',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'TVI 912 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,')',0 ;SO String + DB esc,'(',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'TVI 920 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'Z'-'@',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,')',0 ;SO String + DB esc,'(',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'TVI 950 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'V'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'*',0 ;CL String + DB esc,'=%+ %+ ',0 ;CM String + DB esc,'t',0 ;CE String + DB esc,')',0 ;SO String + DB esc,'(',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'TVI 970 ' ;Name of Terminal + DB 0 ;Cursor UP + DB 0 ;Cursor DOWN + DB 0 ;Cursor RIGHT + DB 0 ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'[2J',0 ;CL String + DB esc,'[%2;%2H',0 ;CM String + DB esc,'[0K',0 ;CE String + DB esc,'[2;7m',0 ;SO String + DB esc,'[7;0m',0 ;SE String + DB esc,'[0;0z',0 ;TI String + DB esc,'[0;1z',0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'VC 404 ' ;Name of Terminal + DB 'Z'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'U'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 40 ;CL Delay + DB 00 ;CM Delay + DB 20 ;CE Delay + DB 'X'-'@',0 ;CL String + DB 'P'-'@','%+ %+ ',0 ;CM String + DB 'V'-'@',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'VC 415 ' ;Name of Terminal + DB 'Z'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'U'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 'L'-'@',0 ;CL String + DB 'P'-'@','%.%.',0 ;CM String + DB 'V'-'@',0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'Visual 200 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'v',0 ;CL String + DB esc,'Y%+ %+ ',0 ;CM String + DB esc,'x' ;CE String (4 times) + DB esc,'x' + DB esc,'x' + DB esc,'x' + DB 0 ;End of CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB 'WYSE 50 ' ;Name of Terminal + DB 'K'-'@' ;Cursor UP + DB 'J'-'@' ;Cursor DOWN + DB 'L'-'@' ;Cursor RIGHT + DB 'H'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB esc,'+',0 ;CL String + DB esc,'%ia%dR%dC',0 ;CM String + DB esc,'T',0 ;CE String + DB esc,')',0 ;SO String + DB esc,'(',0 ;SE String + DB 0 ;TI String + DB 0 ;TE String + +; Terminal xxxx + ORG $/80H*80H+80H ;Next Record + DB ' 1.3 ' ;Name of Terminal + DB 'E'-'@' ;Cursor UP (Wordstar Defaults) + DB 'X'-'@' ;Cursor DOWN + DB 'D'-'@' ;Cursor RIGHT + DB 'S'-'@' ;Cursor LEFT + DB 00 ;CL Delay + DB 00 ;CM Delay + DB 00 ;CE Delay + DB 0 ;CL String + DB 0 ;CM String + DB 0 ;CE String + DB 0 ;SO String + DB 0 ;SE String + DB 0 ;TI String + DB 0 ;TE String + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3TCAP.HLP b/Images/Source/hd0/s0/u15/Z3TCAP.HLP new file mode 100644 index 00000000..d9424054 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3TCAP.HLP @@ -0,0 +1,1106 @@ +; + + + ZCPR3 Terminal Capabilities (TCAP) + + -- Utilities -- -- Documentation -- + 1 - TCCHECK I - Introduction + 2 - TCMAKE S - Z3T Structure + 3 - TCSELECT G - General Control Seqs + C - Cursor Control Seqs + 4 - Z3TCAP V - VLIB Overview + + +:I + ZCPR3 Terminal Capabilities (TCAP) + Introduction + Thå  ZCPR³ Terminaì Capabilitieó (TCAP© Facilitù ió  aî +integraì  parô oæ thå ZCPR³ System®  Bù meanó oæ  thå  TCAÐ +Facility¬  thå user'ó terminaì ió defineä tï ZCPR³ iî sucè á +waù  thaô programó iî thå ZCPR³ Systeí caî perforí á varietù +oæ screen-orienteä functionó witè thå user'ó terminal®  Thå +TCAÐ Facilitù ió fundamentaì tï ZCPR3¬  anä iô ió á parô  oæ +thå ZCPR³ Environmenô Descriptor. + + Thå  TCAÐ entrieó contaiî thå followinç informatioî  oî +their respective terminals: + + o initialization/deinitialization sequences + o characters generated by the arrow keys + o sequence for clearing the screen + o sequence for positioning the cursor + o sequence for erasing to end of line + o highlight/non-highlight sequences + + Introduction + Witè thió information¬  programó sucè aó VFILER¬ VMENU¬ +anä  HELР caî  perforí theiò functionó witè á  mucè  higheò +degreå  oæ  "flash¢ anä user-friendlinesó  thaî  theù  woulä +otherwise®  Bù  simplù  loadinç thå TCAÐ entrù foò  anotheò +terminaì intï thå environmenô descriptor¬ alì ZCPR³ programó +arå automaticallù reconfigureä foò thå ne÷ terminaì anä  caî +continue to function without modification. + + Twï  utilitieó  arå provideä tï assisô thå useò iî  thå +creatioî  oæ Z3T fileó foò hió terminals®  TCSELECÔ  allowó +thå  useò  tï selecô á predefineä terminaì froí  thå  Z3TCAÐ +file¬  anä TCMAKÅ allowó thå useò tï definå á terminaì whicè +is not covered by the Z3TCAP file. + + Mosô  oæ  thå  informatioî iî thió  HLР filå  provideó +detailó  oî  thå structurå oæ thå Z3T fileó  anä  giveó  thå +TCMAKÅ useò enougè detaiì tï definå hió terminal® Providinç +this information is the main purpose of this HLP file. + + Introduction + Thå   filå  Z3TCAР containó  informatioî  oî  oveò  4° +terminals®  Thå  TCSELECÔ prograí printó á numbeò oæ  menuó +containinç  thå  nameó  oæ thå terminaló iî  thió  filå  anä +allowó  thå  useò tï selecô  one¬  storinç  itó  informatioî +eitheò   directlù   intï  thå  memory-residenô   Environmenô +Descriptoò  oò  intï á filå oæ typå Z3T whicè maù  lateò  bå +loadeä bù thå LDÒ utility. + + Iæ  thå user'ó terminaì ió noô alreadù defineä  iî  thå +Z3TCAР file¬  thå  TCMAKÅ  prograí ió useä  tï  definå  hió +terminal®  TCMAKÅ  allowó thå useò tï interactivelù  definå +eacè oæ thå keù attributeó oæ hió terminaì anä creatå á filå +oæ typå Z3T wheî done® Thió filå maù lateò bå loadeä bù thå +LDÒ utility. + + +:S + Internal Structure of a Z3T File + Structure + Á  Z3T Filå defineó thå characteristicó oæ á particulaò Introduction +terminal® Eacè Z3T filå containó thå followinç information: + + o the name of the terminal + o the codes generated by the arrow keys + o the byte sequences required: + to clear the screen + to position the cursor + to clear to end of line + to highlight chars + to initialize and deinitialize the terminal + + Iî  detail¬  thå followinç ió thå exacô structurå oæ  á +Z3T file: + + Structure + Z3T File Structure, Overview Introduction + +Z3T_FILE: +name: + DS 16 ; Name of Terminal +arrows: + DS 4 ; Bytes generated by arrow keys +delays: + DS 3 ; Delays for Screen Clear, Cursor Motion, and + ; Clear to End-of-Line + +cl: DS N1+1 ; Sequence used for Screen Clear +cm: DS N2+1 ; Sequence used for Cursor Motion (gotoxy) +ce: DS N3+1 ; Sequence used for Clear to End-of-Line +so: DS N4+1 ; Sequence used to begin highlighting +se: DS N5+1 ; Sequence used to end highlighting +ti: DS N6+1 ; Sequence used to initialize terminal +to: DS N7+1 ; Sequence used to deinitialize terminal + + Structure + Thå  followinç frameó definå thå TCAР records®  Theså Introduction +records are: + + 1. the name of the terminal + 2. the definition of the arrow keys + 3. the delay constants for screen clear, cursor + motion, and clear to end-of-line + 4. the definition of the screen clear char sequence + 5. the defn of the cursor motion char seq + 6. the defn of the clear to EOL char seq + 7. the defn of the highlight/end-highlight char seq + 8. the defn of the init/deinit terminal char seq + + Eacè  oæ  theså recorä  definitionó  ió  similarº  thå +structurå  oæ thå recorä (iî assemblù languagå terminology)¬ +commentó  oî ho÷ thå recorä ió defineä anä whaô  valueó  arå +valiä  foò it¬  anä exampleó oæ valiä recorä structureó  arå +provideä foò eacè recorä definition. + + Structure +1. Terminal Name 1 Term Name + +Structure: + DS 16 ; Name of Terminal (Space Fill on Right) + +Comment: + Thå  namå oæ thå terminaì ió alwayó 1¶ byteó long®  Iæ +thå namå takeó lesó thaî 1¶ bytes¬  spacå filì occuró  righô +of the last character. + +Examples: + DB 'ADDS Consul 980 ' + DB 'ADM 2 ' + + + Structure +2. Arrow Keys 2 Arrow Keys + +Structure: + DS 1 ; Byte Generated by Cursor UP + DS 1 ; Byte Generated by Cursor DOWN + DS 1 ; Byte Generated by Cursor RIGHT + DS 1 ; Byte Generated by Cursor LEFT + +Comment: + Iæ  youò  terminaì haó arro÷ keyó oî iô WHICÈ  GENERATÅ +ONLÙ ONÅ BYTÅ WHEÎ DEPRESSED¬ theî theså keyó maù bå defineä +iî thå Z3T file®  Wheî á prograí calló foò thå uså oæ arro÷ +keys, it will use the values stored here. + + Structure + Iæ youò terminaì doeó noô havå arro÷ keyó oò haó  arro÷ 2 Arrow Keys +keyó whicè generatå morå thaî onå bytå wheî depressed¬ theså +keyó maù noô bå defineä iî thå Z3T file® Zerï (0© ió storeä +iî alì fouò byteó oæ thå "arro÷ key¢ record®  Iî thió case¬ +thå  prograí  wilì  responä  tï thå  Worä  Staò  (trademark¬ +Micropro© arro÷ keù conventioî (^Å ió UP¬  ^Ø ió DOWN¬ ^Ä ió +RIGHT, and ^S is LEFT): + + ^E + ^ + | + ^S <--+--> ^D + | + v + ^X + + Structure +Examples: 2 Arrow Keys + DB 'K'-'@' ; ADM 31 ^K for Cursor UP + DB 'J'-'@' ; ^J for Cursor DOWN + DB 'L'-'@' ; ^L for Cursor RIGHT + DB 'H'-'@' ; ^H for Cursor LEFT + + DB 0,0,0,0 ; None for H19 because of 2-char seqs + ; Word Star Convention will be used + + + Structure +3. Function Delays 3 Delays + +Structure: + DS 1 ; Delay (in mS) after sending clear screen + DS 1 ; Delay (in mS) after sending gotoxy + DS 1 ; Delay (in mS) after sending clear to EOL + +Comment: + Eacè oæ theså byteó defineó thå numbeò oæ  millisecondó +á  prograí wilì delaù afteò sendinç á particulaò sequencå tï +thå  user'ó terminal®  Somå terminaló requirå thió typå  oæ +delay®  Iæ á sequencå requireó nï delay¬  thå valuå oæ zerï +(0) should be placed in the corresponding byte. + +Examples: + DB 20,0,0 ; BANTAM 550 - 20mS for Clear Screen, 0 + ; for Cursor Motion and Clear to EOL + + DB 0,0,0 ; TVI 950 - No Delays + Structure +4. Clear Screen Sequence 4 Clear Screen + +Structure: + DS N1 ; Bytes in clear screen sequence + DB 0 + +Comment: + Thió  sequencå oæ bytes¬  uð tï buô noô  includinç  thå +terminatinç  0¬  ió senô tï thå user'ó terminaì iî ordeò  tï +cleaò  hió screen®  Iæ iô ió necessarù tï includå á  binarù +zero in this sequence, the two bytes + + DB '\',0 + +wilì  transmiô aô onå binarù 0 and + + DB '\\' + +wilì transmiô aó onå backslash® + Structure + Iî general¬ á backslasè (\© ió thå quotå character¬ anä 4 Clear Screen +anù  bytå  whicè followó iô ió transmitteä literallù tï  thå +user'ó terminal. + + Iæ  á terminaì requireó thaô trailinç nulló follo÷  thå +lasô  characteò  oæ thå sequencå foò thå purposå  oæ  screeî +settlinç  (ratheò thaî usinç thå delaù byte)¬  nulló caî  bå +appended into the sequence by using the quote character. + + +Examples: + DB 1BH,';',0 ; Clear Screen for ADM2 + DB 'L'-'@',0 ; Clear Screen for ADDS Viewpoint + DB 1BH,'?',1BH,'E'-'@',0 + ; Clear Screen for Concept 108 + + Structure +5. Cursor Motion (GOTOXY) Sequence 5 Cursor Motion + +Structure: + DS N2 ; Bytes in gotoxy sequence + DB 0 + +Comments: + Thió  sequencå oæ byteó ió senô tï thå user'ó  terminaì +iî  ordeò tï positioî thå cursoò oî hió screen®  Thå  quotå +characteò  (\©  caî  bå used¬  likå  iî  thå  Cursoò  Motioî +sequence¬ tï allo÷ quotå characteró anä nulló tï bå sent. + + Unlikå  thå  otheò sequenceó iî thå TCAР records¬  thå +Cursoò Motioî sequenceó varù dependinç upoî thå positioî  oî +thå  screen® + + Structure + Foò  instance¬  tï placå thå cursoò aô ro÷ 4¬  columî ´ 5 Cursor Motion +(homå ió ro÷ 0¬ coì 0© oî á TVÉ 950¬ thå sequence + + DB 1BH,'=$$',0 + +is used, but to position at row 6, column 6, the sequence + + DB 1BH,'=&&',0 + +is used. + Iî ordeò tï expresó sucè variable-valuå sequences¬  thå +ZCPR³  TCAР provideó  foò  equationó whicè  definå  ho÷  tï +compute the byte to be output. The TCAP sequence: + + DB 1BH,'=%+ %+ ',0 + +defineó  ho÷ tï computå thå valueó tï bå outpuô iî ordeò  tï +move the cursor for the TVI 950. + Structure + The TCAP Cursor Motion sequence 5 Cursor Motion + + DB 1BH,'=%+ %+ ',0 + +is broken down as follows: + + Element Meaning + ------- ------- + 1BH Output 1B hex (the ESCAPE char) + '=' Output the character '=' + '%« ' Adä § § (20H© tï thå ro÷ valuå anä output + '%+ ' Add ' ' (20H) to the column value and output + + Thå  percenô characteò (%© instructó thå cursoò  motioî +sequencå interpreteò tï looë foò á command¬ anä iô processeó +thå  followinç  characteró aó such®  Iæ iô  ió  desireä  tï +outpuô '%§ itself¬ thå sequencå '\%§ ió used. + + Structure + Thå  commandó recognizeä bù thå cursoò  motioî  commanä 5 Cursor Motion +interpreteò wilì no÷ bå discusseä iî detail® Theså commandó +are the following (case is not significant): + + %R - Reverse order from row/col to col/row + %I - Home position is (1,1) rather than (0,0) + %. - Print current value (row or col) in binary + %2 - Print current value as 2 ASCII decimal digits + %3 - Print current value as 3 ASCII decimal digits + %d - Print current value as N ASCII decimal digits + (no leading zeroes) + %+n - Add n to current value and output in binary + %>xù - Adä ù tï currenô valuå iæ iô ió greater + than x + + Structure + Thå cursoò motioî sequencå interpreteò assumeó thaô thå 5 Cursor Motion +valuå  oæ  thå  ro÷ wilì bå outpuô beforå thå valuå  oæ  thå +column. If the column is to be first, the command + + '%r' or '%R' + +instructó  thå cursoò motioî sequencå interpreteò tï  outpuô +thå  columî  anä theî thå row®  Thå '%R§  commanä  musô  bå +presenô  iî  thå sequencå beforå thå firsô valuå ió  output¬ +anä  '%R§ actó solelù tï commanä thå interpreteò  (nï  byteó +are output by '%R'). + + Structure + Thå  cursoò  motioî sequencå interpreteò  alsï  assumeó 5 Cursor Motion +thaô thå valuå oæ thå homå positioî ió ro÷ 0¬  columî 0® Iæ +iô  ió convenienô tï seô thió positioî tï ro÷ 1¬  columî  1¬ +the command + + '%i' or '%I' + +ió  used®  Likå '%R'¬  '%I§ musô bå useä beforå  thå  firsô +valuå ió output. + + The TVI 950 can be defined in two ways: + + DB 1BH,'=%+ %+ ',0 +or + DB 1BH,'%i=%+',1FH,'%+',1FH,0 + + Structure + Thå  resô  oæ thå cursoò  motioî  sequencå  interpreteò 5 Cursor Motion +commandó deaì witè thå formaô oæ thå output® Theù allo÷ thå +following types of outputs: + +%. binary value (^A is output as 1) +%2 2 ASCII Decimal Digits (^A is output as '01') +%3 3 ASCII Decimal Digits (^A is output as '001') +%d As many ASCII Decimal Digits as needed (^A as '1') +%+n Add offset ('%+ ' outputs ^A as 1+' ' or '!') +%>xy Add offset if limit reached ('%> '1 outputs ^A as 1 + and '!' as '"') + + Tï summarize: + + Structure + Cursor Motion Interpreter Commands 5 Cursor Motion + + Command Output Format + ------- ------------- + %. Binary Value + %2 2 ASCII Decimal Digit Chars ('23') + %3 3 ASCII Decimal Digit Chars ('123') + %ä Aó manù ASCIÉ Decimaì Digiô Charó aó needed + %+n Add the value of the byte following the '+' + and output in binary + %>xy If value > x, output value+y in binary; else + output value in binary + + Command Cursor Motion Interpreter Action + ------- -------------------------------- + %i Set Home to 1,1 (default is 0,0) + %r Output Col, then Row (default is Row, then Col) + + Structure +Examples: 5 Cursor Motion + DB 1BH,'Y%+ %+ ',0 ; ADDS Viewpoint + + 1BH = output 1BH (ESCAPE char) + 'Y' = output char 'Y' + '%+ ' = output row + ' ' (20H) in binary + '%+ ' = output col + ' ' (20H) in binary + + DB 1BH,'[%d;%dH',0 ; H19 (ANSI Mode) + + 1BH = output 1BH (ESCAPE char) + '[' = output char '[' + '%d' = output row as ASCII decimal digits + ';' = output char ';' + '%d' = output col as ASCII decimal digits + 'H' = output char 'H' + + Structure +6. Clear to End of Line 6 Clear to EOL + +Structure: + DS N3 ; Bytes in clear to end of line sequence + DB 0 + +Comments: + Thå  Cleaò tï Enä oæ Linå sequencå ió useä tï cleaò thå +linå  startinç  aô  thå cursoò positioî tï thå  enä  oæ  thå +screen. Only this part of the current line is cleared. + + Thå ruleó foò specifyinç thió sequencå arå thå samå  aó +those for Screen Clear. + +Example: + DB 1BH,'T',0 ; ADM 2 + + + Structure +7. Begin Highlighting (Standout Mode) and End Highlighting 7 Highlighting + +Sequences: + DS N4 ; Bytes in sequence to begin highlighting + DB 0 + + DS N5 ; Bytes in sequence to end highlighting + DB 0 + +Comments: + Thå  "begiî  highlighting¢  sequencå ió useä  tï  begiî +highlighô modå oî thå user'ó terminal®  Thió maù bå reverså +video¬ dim¬ oò somå otheò non-standarä methoä foò displayinç +characteró  oî  thå  screen®  Iî ordeò foò  á  terminaì  tï +supporô thió feature¬ thå followinç musô bå true: + + Structure + 1® Issuinç thió sequencå musô NOÔ changå thå positioî 7 Highlighting +oæ thå cursoò oî thå screen. + + 2®  Characteró highlighteä musô bå outpuô iî exactlù +thå samå waù non-highlighteä characteró arå (eg¬ settinç thå +MSB of the highlighted chars is not allowed). + + These sequences are always used as follows: + + 1. the BEGIN HIGHLIGHT sequence is output + 2. a set of characters to highlight is output + 3. the END HIGHLIGHT sequence is output + + Thå  ruleó foò specifyinç theså sequenceó arå thå  samå +aó thoså foò Screeî Clear. + + Structure +Example: 7 Highlighting + DB 'N'-'@',0 ;ADDS Viewpoint + + Structure +8. Terminal Initialization and Deinitialization 8 Term Init + +Sequences: + DS N6 ; Bytes in sequence to init terminal + DB 0 + + DS N7 ; Bytes in sequence to deinit terminal + DB 0 + +Comments: + Beforå  anù videï routineó arå executed¬  thå  terminaì +initializatioî sequencå ió senô tï thå terminal®  Afteò thå +uså  oæ  thå  terminaì  ió  completeä  bù  á  program¬   thå +deinitialization sequence is sent. + + Thå ruleó foò specifyinç thió sequencå arå thå samå  aó +those for Screen Clear. + + +:G + General Terminal Control Sequences + Control 1 + The structure of most TCAP control sequences is: + + DS N ; Bytes in sequence + DB 0 + + Thió  sequencå  oæ bytes¬  uð tï buô noô includinç  thå +terminatinç  0¬  ió senô tï thå user'ó terminaì iî ordeò  tï +perforí  somå  function®  Iæ iô ió necessarù tï  includå  á +binarù zerï iî thió sequence¬ thå twï bytes + + DB '\',0 + +wilì transmiô as onå binarù ° and + + DB '\\' + +wilì transmiô aó onå backslash® + + Control 1 + Á  backslasè (\© ió thå quotå character¬  anä anù  bytå +whicè  followó  iô ió transmitteä literallù  tï  thå  user'ó +terminal. + + Iæ  á terminaì requireó thaô trailinç nulló follo÷  thå +lasô  characteò  oæ thå sequencå foò thå purposå  oæ  screeî +settlinç  (ratheò thaî usinç thå delaù byte)¬  nulló caî  bå +appended into the sequence by using the quote character. + + Cursoò  Motioî  sequenceó follo÷ theså ruleó  witè  thå +additioî  thaô  thå characteò "%¢ prefixeó á  cursoò  motioî +interpreteò command® Iæ iô ió desireä tï simplù outpuô thió +characteò iî á cursoò motioî sequence¬  thå quotå  characteò +can be used: + + DB '\%' + +:C + Cursor Motion Control Sequences + Control 2 + Cursoò  Motioî  sequenceó arå differenô froí thå  otheò +sequenceó  defineä  iî  thå  TCAР iî  thaô  cursoò   motioî +sequenceó  contaiî  embeddeä commandó foò thå cursoò  motioî +interpreter®   Alì  Cursoò  Motioî  sequenceó  arå  oæ  thå +following general format: + + + + Foò example¬  thå DEà VT10° terminaì useó thå followinç +sequence for cursor motion: + + DB 1BH,'[%i%d;%dH',0 +where: + 1BH,'[' = prefix chars 1BH (ESCAPE) and '[' + %i = command: home is 1,1 + %d = command: output row as ASCII dec chars + ';' = infix char ';' + %d = command: output col as ASCII dec chars + 'H' = suffix char 'H' + Control 2 + Thå prefix¬  infix¬ anä postfiø sequenceó arå optional¬ +anä onlù thå commandó tï outpuô thå ro÷ anä coì arå requireä +in any cursor motion sequence definition. + + Cursoò Motioî ió thå onlù requireä entrù iî á TCAР foò +á  terminal®  Alì otheò sequenceó maù bå emptù (null)¬  anä +thå  lacë oæ theså otheò sequenceó wilì bå compensateä  for® +Cursoò motion¬  however¬  cannoô bå simulateä easilù anä  ió +required. + + Thå followinç tablå summarizeó alì oæ thå Cursoò Motioî +interpreter commands. + + Control 2 + Cursor Motion Interpreter Commands + + Command Output Format + ------- ------------- + %. Binary Value + %2 2 ASCII Decimal Digit Chars ('23') + %3 3 ASCII Decimal Digit Chars ('123') + %ä Aó manù ASCIÉ Decimaì Digiô Charó aó needed + %+n Add the value of the byte following the '+' + and output in binary + %>xy If value > x, output value+y in binary; else + output value in binary + + Command Cursor Motion Interpreter Action + ------- -------------------------------- + %i Set Home to 1,1 (default is 0,0) + %r Output Col, then Row (default is Row, then Col) + + Control 2 +Examples: + DB 1BH,'Y%+ %+ ',0 ; ADDS Viewpoint + + 1BH = output 1BH (ESCAPE char) + 'Y' = output char 'Y' + '%+ ' = output row + ' ' (20H) in binary + '%+ ' = output col + ' ' (20H) in binary + + DB 1BH,'[%d;%dH',0 ; H19 (ANSI Mode) + + 1BH = output 1BH (ESCAPE char) + '[' = output char '[' + '%d' = output row as ASCII decimal digits + ';' = output char ';' + '%d' = output col as ASCII decimal digits + 'H' = output char 'H' + +:V + Overview of VLIB + VLIB + VLI (Videï LIBrary© ió thå ZCPR³ librarù whicè ió useä +tï  providå á serieó oæ low-leveì routineó foò Z3TCAÐ accesó +tï thå ZCPR³ systeí programmer®  VLI ió describeä iî  mucè +morå  detaiì  iî thå VLIB.HLÐ file¬  anä thió overvie÷  onlù +serves to summarize its capabilities. + + Thå VLI routinå Z3VINIÔ ió useä tï initializå VLI foò +uså  witè  á  ZCPR³  system®   Thå  addresó  oæ  thå  ZCPR³ +environmenô  descriptoò ió passeä tï thå Z3VINIÔ routinå  iî +HL¬  anä  alì VLI routineó kno÷ thå addresó oæ  thå  Z3TCAÐ +entry from that point forward. + + The low-level functions provided by VLIB are: + + VLIB + Routine Function + ------- -------- + TINIT Initialize terminal + DINIT Deinitialize terminal + + CLS Clear screen + + EREOL Erase to End of Line + + GOTOXY Position Cursor + + STNDOUT Begin highlighting + STNDEND End highlighting + + AT Position Cursor + + GXYMSG Print message, with highlighting, at XY + VPRINT Print message with highlighting + +:4 + Standard ZCPR3 TCAP File + Z3TCAP + Thå  filå  Z3TCAР containó  informatioî  oî  oveò   4° +terminals®  Iô  ió provideä aó á parô oæ thå ZCPR³  System¬ +anä iô ió useä bù TCSELECT®  TCSELECÔ caî displaù thå nameó +oæ  thå terminaló containeä iî Z3TCAÐ anä allo÷ thå useò  tï +selecô one¬ generatinç á *.Z3T filå oò storinç thå selectioî +directlù  intï memorù foò immediatå uså bù thå ZCPR³  Systeí +utilities. + +:1 + +Command: TCCHECK 1.0 + +Syntax: + TCCHECK ufn <-- default file type is TCP +or + TCCHECK <-- check Z3TCAP.TCP + +Function: + TCCHECË  checkó á Z3TCAP.TCÐ filå foò valiä formaô  anä +reports any errors and statistical information on it. + +Options: + None + + +Comments: + TCCHECË   ió   intendeä  tï  ruî  iî  á   non-installeä +environmenô (sucè aó wheî thå useò firsô receiveó ZCPR3)¬ sï +thå  Z3TCAP.TCР filå beinç checkeä musô bå iî  thå  currenô +directory. + +Selected Error Messages: + Self-Explanatory + +Examples of Use: + + TCCHECK + -- check Z3TCAP.TCP + + TCCHECK - TCAP Check Program + TCCHECK + TCCHECË   ió   useä  tï  checë  thå  Z3TCAР filå   foò +consistency® Itó solå functioî ió tï ensurå thå validitù oæ +the Z3TCAP file and provide some statistics on it. + + Sample run of TCCHECK: + +B4:SCR2>tccheck +TCCHECK, Version 1.0 File Z3TCAP .TCP Not Found - Aborting + -- Note: Z3TCAP.TCP MUST be in the same directory + +B4:SCR2>root: +A15:ROOT>tccheck +TCCHECK, Version 1.0 +Z3TCAP File Check of Z3TCAP .TCP Version 1.1 + File Checks with 44 Terminals Defined + + + +:2 + +Command: TCMAKE 1.0 + +Syntax: + TCMAKE ufn <-- default file type is Z3T + +Function: + TCMAKÅ  allowó  thå useò tï  interactivelù  definå  thå +characteristicó  oæ hió terminaì anä storå thió  informatioî +iî thå filå referenced® Thió filå maù theî bå loadeä bù thå +LDR utility. + +Options: + None + + +Comments: + A sample TCMAKE session is located in this HELP file. + +Selected Error Messages: + Self-Explanatory + +Examples of Use: + See following frames + + + + TCMAKE - TCAP Entry Definition Program + TCMAKE + TCMAKÅ ió useä tï creatå á *.Z3T file®  Oncå  created¬ +thå  ZCPR³ utilitù LDÒ caî loaä iô intï memorù aô thå propeò +location (command is "LDR filename.Z3T"). + + Sample run of TCMAKE: + +B4:SCR2>tcmake // +TCMAKE, Version 1.0 +TCMAKE - Create a Z3T File +Syntax: + TCMAKE outfile -or- TCMAKE outfile.typ + +where "outfile" is the file to be generated by +the execution of TCMAKE. If no file type is +given, a file type of Z3T is the default. + + TCMAKE +B4:SCR2>tcmake myterm2 +TCMAKE, Version 1.0 + + ** Z3TCAP Main Menu for File MYTERM2 .Z3T ** + +Define: 1. Clear Screen Sequence + 2. Cursor Motion Sequence + 3. Clear to End of Line Sequence + 4. Standout Mode Sequences + 5. Terminal Init/Deinit Sequences + 6. Arrow Keys + 7. Terminal Name + +Status: S. Print Status (Definitions so far) + +Exit: X. Exit and Write File + Q. Quit and Abort Program without Writing File + +Command? 2 + TCMAKE +Cursor Motion Definition + 1. Timing Delay + Enter Delay Time in Milliseconds: 5 + 2. Enter R if Row/Column or C for Column/Row: R + 3. Enter Equation for Row: %+ + 4. Enter Equation for Column: %+ + 5. Enter Prefix Byte Sequence + Char #1 - Type Char, .=Number, or =Done: Enter Number: 1bh + Char #2 - Type Char, .=Number, or =Done: Char = + Char #3 - Type Char, .=Number, or =Done: + 6. Enter Middle Byte Sequence + Char #1 - Type Char, .=Number, or =Done: + 7. Enter Suffix Byte Sequence + Char #1 - Type Char, .=Number, or =Done: + + TCMAKE + ** Z3TCAP Main Menu for File MYTERM2 .Z3T ** + +Define: 1. Clear Screen Sequence + 2. Cursor Motion Sequence + 3. Clear to End of Line Sequence + 4. Standout Mode Sequences + 5. Terminal Init/Deinit Sequences + 6. Arrow Keys + 7. Terminal Name + +Status: S. Print Status (Definitions so far) + +Exit: X. Exit and Write File + Q. Quit and Abort Program without Writing File + +Command? 6 + + TCMAKE +Arrow Key Definition + Your Terminal's Arrow Keys may be defined ONLY + if they generate only one character each. If they + do, type Y to continue. If not, type anything else. + Define Arrow Keys (Y/N)? Y + Strike the Appropriate Arrow Key + 1. Arrow UP? ^K + 2. Arrow DOWN? ^V + 3. Arrow RIGHT? ^L + 4. Arrow LEFT? ^H + + TCMAKE + ** Z3TCAP Main Menu for File MYTERM2 .Z3T ** + +Define: 1. Clear Screen Sequence + 2. Cursor Motion Sequence + 3. Clear to End of Line Sequence + 4. Standout Mode Sequences + 5. Terminal Init/Deinit Sequences + 6. Arrow Keys + 7. Terminal Name + +Status: S. Print Status (Definitions so far) + +Exit: X. Exit and Write File + Q. Quit and Abort Program without Writing File + +Command? S + + TCMAKE + ** Z3TCAP Status for File MYTERM2 .Z3T ** + +Review: 1. Clear Screen Definition + 2. Cursor Motion Definition + 3. Clear to End of Line Definition + 4. Standout Mode Definition + 5. Terminal Init/Deinit Definition + 6. Arrow Key Definition + 7. Terminal Name Definition + +Exit: X. Exit to Main Menu + +Command? 1 +Review of Clear Screen Definition + 1. Timing Delay = 0 Milliseconds + 2. Clear Screen Sequence: + (1) ^[ 1BH (2) * 2AH + Strike Any Key to Continue - + + TCMAKE + ** Z3TCAP Status for File MYTERM2 .Z3T ** + +Review: 1. Clear Screen Definition + 2. Cursor Motion Definition + 3. Clear to End of Line Definition + 4. Standout Mode Definition + 5. Terminal Init/Deinit Definition + 6. Arrow Key Definition + 7. Terminal Name Definition + +Exit: X. Exit to Main Menu + +Command? 2 + + TCMAKE +Review of Cursor Motion Data + 1. Timing Delay = 5 Milliseconds + 2. Row or Column First: R + 3. Row Equation: -->%+ <-- + 4. Column Equation: -->%+ <-- + 5. Prefix Byte Sequence: + (1) ^[ 1BH (2) = 3DH + 6. Middle Byte Sequence: + -- Empty -- + 7. Suffix Byte Sequence: + -- Empty -- + Strike Any Key to Continue - + + TCMAKE + ** Z3TCAP Status for File MYTERM2 .Z3T ** + +Review: 1. Clear Screen Definition + 2. Cursor Motion Definition + 3. Clear to End of Line Definition + 4. Standout Mode Definition + 5. Terminal Init/Deinit Definition + 6. Arrow Key Definition + 7. Terminal Name Definition + +Exit: X. Exit to Main Menu + +Command? 6 + + TCMAKE +Review of Arrow Key Definitions + 1. Arrow UP = ^K + 2. Arrow DOWN = ^V + 3. Arrow RIGHT = ^L + 4. Arrow LEFT = ^H + Strike Any Key to Continue - + + TCMAKE + ** Z3TCAP Status for File MYTERM2 .Z3T ** + +Review: 1. Clear Screen Definition + 2. Cursor Motion Definition + 3. Clear to End of Line Definition + 4. Standout Mode Definition + 5. Terminal Init/Deinit Definition + 6. Arrow Key Definition + 7. Terminal Name Definition + +Exit: X. Exit to Main Menu + +Command? X + + TCMAKE + ** Z3TCAP Main Menu for File MYTERM2 .Z3T ** + +Define: 1. Clear Screen Sequence + 2. Cursor Motion Sequence + 3. Clear to End of Line Sequence + 4. Standout Mode Sequences + 5. Terminal Init/Deinit Sequences + 6. Arrow Keys + 7. Terminal Name + +Status: S. Print Status (Definitions so far) + +Exit: X. Exit and Write File + Q. Quit and Abort Program without Writing File + +Command? X + Selected Terminal is: Rick's Terminal -- Confirm (Y/N)? Y +File MYTERM2 .Z3T Created +:3 + +Command: TCSELECT 1.0 + +Syntax: + TCSELECT ufn <-- default file type is Z3T +or + TCSELECT <-- selection stored in Env Desc + +Function: + + TCSELECÔ  allowó  thå useò tï interactivelù revie÷  thå +contentó oæ á Z3TCAP.TCÐ filå anä selecô á terminaì froí it® +Iæ aî unambigouó filå namå ió specifieä iî thå commanä line¬ +TCSELECÔ storeó thå selectioî intï thå indicateä  file®  Iæ +nï  filå  namå  ió  given¬  TCSELECÔ  storeó  thå  selectioî +directlù   intï   thå  TCAР sectioî  oæ  thå   memory-baseä +Environmenô Descriptor. + +Options: + None + +Comments: + None + +Selected Error Messages: + Self-Explanatory + +Examples of Use: + See following frames + + + TCSELECT - TCAP Entry Selection Program + TCSELECT + TCSELECÔ ió useä tï selecô á terminaì froí thå standarä +Z3TCAÐ file®  Thå selecteä terminaì maù bå loadeä  directlù +intï memorù oò á *.Z3T filå maù bå created® Iæ á *.Z3T filå +ió created¬ thå ZCPR³ utilitù LDÒ caî loaä iô intï memorù aô +the proper location (command is "LDR filename.Z3T"). + + Sample run of TCSELECT: + + TCSELECT +B4:SCR2>tcselect // +TCSELECT, Version 1.0 +TCSELECT - Select Entry from Z3TCAP.TCP +Syntax: + TCSELECT outfile -or- TCSELECT outfile.typ + +where "outfile" is the file to be generated by +the execution of TCSELECT. If no file type is +given, a file type of Z3T is the default. + +Syntax: + TCSELECT + +where this alternate form may be used to store +the Z3TCAP entry for the selected terminal directly +into the Z3 Environment Descriptor. + + TCSELECT +Example 1: Create MYTERM.TCP Example 1 + +B4:SCR2>tcselect myterm +TCSELECT, Version 1.0 + +** Terminal Menu 1 for Z3TCAP Version 1.1 ** + +A. AA Ambassador K. Concept 100 +B. ADDS Consul 980 L. Concept 108 +C. ADDS Regent 20 M. CT82 +D. ADDS Viewpoint N. DEC VT52 +E. ADM 2 O. DEC VT100 +F. ADM 31 P. Dialogue 80 +G. ADM 3A Q. Direct 800/A +H. ADM 42 R. General Trm 100A +I. Bantam 550 S. Hazeltine 1420 +J. CDC 456 T. Hazeltine 1500 + +Enter Selection, + for Next, or ^C to Exit - + + TCSELECT +** Terminal Menu 2 for Z3TCAP Version 1.1 ** Example 1 + +A. Hazeltine 1510 K. P Elmer 1200 +B. Hazeltine 1520 L. SOROC 120 +C. H19 (ANSI Mode) M. Super Bee +D. H19 (Heath Mode) N. TAB 132 +E. HP 2621 O. Teleray 1061 +F. IBM 3101 P. Teleray 3800 +G. Micro Bee Q. TTY 4424 +H. Microterm ACT IV R. TVI 912 +I. Microterm ACT V S. TVI 920 +J. P Elmer 1100 T. TVI 950 + +Enter Selection, - for Last, + for Next, or ^C to Exit - + + + TCSELECT +** Terminal Menu 3 for Z3TCAP Version 1.1 ** Example 1 + +A. VC 404 +B. VC 415 +C. Visual 200 +D. WYSE 50 + +Enter Selection, - for Last, or ^C to Exit - - + + TCSELECT +** Terminal Menu 2 for Z3TCAP Version 1.1 ** Example 1 + +A. Hazeltine 1510 K. P Elmer 1200 +B. Hazeltine 1520 L. SOROC 120 +C. H19 (ANSI Mode) M. Super Bee +D. H19 (Heath Mode) N. TAB 132 +E. HP 2621 O. Teleray 1061 +F. IBM 3101 P. Teleray 3800 +G. Micro Bee Q. TTY 4424 +H. Microterm ACT IV R. TVI 912 +I. Microterm ACT V S. TVI 920 +J. P Elmer 1100 T. TVI 950 + +Enter Selection, - for Last, + for Next, or ^C to Exit - T + + Selected Terminal is: TVI 950 -- Confirm (Y/N)? N + + TCSELECT +** Terminal Menu 2 for Z3TCAP Version 1.1 ** Example 1 + +A. Hazeltine 1510 K. P Elmer 1200 +B. Hazeltine 1520 L. SOROC 120 +C. H19 (ANSI Mode) M. Super Bee +D. H19 (Heath Mode) N. TAB 132 +E. HP 2621 O. Teleray 1061 +F. IBM 3101 P. Teleray 3800 +G. Micro Bee Q. TTY 4424 +H. Microterm ACT IV R. TVI 912 +I. Microterm ACT V S. TVI 920 +J. P Elmer 1100 T. TVI 950 + +Enter Selection, - for Last, + for Next, or ^C to Exit - S + + Selected Terminal is: TVI 920 -- Confirm (Y/N)? Y + +File MYTERM .Z3T Created + + -- Example 2: Select terminal and store it in memory TCSELECT +B4:SCR2>tcselect Example 2 +TCSELECT, Version 1.0 + +** Terminal Menu 1 for Z3TCAP Version 1.1 ** + +A. AA Ambassador K. Concept 100 +B. ADDS Consul 980 L. Concept 108 +C. ADDS Regent 20 M. CT82 +D. ADDS Viewpoint N. DEC VT52 +E. ADM 2 O. DEC VT100 +F. ADM 31 P. Dialogue 80 +G. ADM 3A Q. Direct 800/A +H. ADM 42 R. General Trm 100A +I. Bantam 550 S. Hazeltine 1420 +J. CDC 456 T. Hazeltine 1500 + +Enter Selection, + for Next, or ^C to Exit - + + + TCSELECT +** Terminal Menu 2 for Z3TCAP Version 1.1 ** Example 2 + +A. Hazeltine 1510 K. P Elmer 1200 +B. Hazeltine 1520 L. SOROC 120 +C. H19 (ANSI Mode) M. Super Bee +D. H19 (Heath Mode) N. TAB 132 +E. HP 2621 O. Teleray 1061 +F. IBM 3101 P. Teleray 3800 +G. Micro Bee Q. TTY 4424 +H. Microterm ACT IV R. TVI 912 +I. Microterm ACT V S. TVI 920 +J. P Elmer 1100 T. TVI 950 + +Enter Selection, - for Last, + for Next, or ^C to Exit - T + + Selected Terminal is: TVI 950 -- Confirm (Y/N)? Y + + ZCPR3 Environment Descriptor Loaded + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3TCAP.TCP b/Images/Source/hd0/s0/u15/Z3TCAP.TCP new file mode 100644 index 0000000000000000000000000000000000000000..1b4c203a17c1d7edddf9d009978ffd7153fbde1c GIT binary patch literal 7680 zcmc&(>rWd;5Z{!7BJ8HA0tncM%$GwXsML41dC02D**Mrm;bqqi;zM+B*Tk(~wGD0f zfKXLcRsV+mv7O!9wbzS*^M#|wbG$S2+nL>+otd+3uQvP_-9;8!>K-Ot=ojRn`sGB{x ztsJD%t3JW#X5-Xrb-_&d41Ic?^W@6wiZ+0)d=4t*bni2tmeM$0b!yG`XC9z!?AfZe zz0)pIiEsEU^Q}&^0o(cAd_|!T-hOTR{M%l`YdbY4x9e<9cEP#uYTatX12e_^qtIzK zWtCWmWuGE>3T1r!03YKbU*kX6!yVdwfYV%W|@Bzy$^PrkF9nSibZY> zfS|=}0p3(kaX9OFVw}@m4`*-Z%22Ef(iPZkw!0rnU8fDUdyZ?f*Ewmn(K@MrAM&-j z*9KF#v`1V10v(*yJvgY8(K&n#N_&TUIWU>2{3)HaP`W>#vYiDp*;_6sdo}d$M-*S> zHcC2)E5sC(%SVt(St(x|(v>1?n2J23duU=@ZZ0Oz#@FO*04liM5i0zJSh6WTuJu10mz7tt)0K|+0UQ-OUCJOfgXQP=&?~X+>GHC@ZTN$S*zo( z`iK~}vFqoZ;UjcuWqxvEn&A_AWGn-I6S@;x zc>qC-{4(T*7_#tNAr3o~S4;tn;ThxL3( z;L`%d+vfp7u%4eWd~1A+9%t|Zw4%QO^?Z=w`7_54%%|Jcl! zLp^YtvJhi>zAID=*dOKn9neM#t22;%~X==r?xKZc*5jJ6Cw7>rLa z8U#=`GK*3V@cKcn|8qjW!U?S46bQxa;{~B}BP$Oepy2a*Mc`jPCzn0^%V<(RK06hk z6)iW|AHb4uEGj-L8;00_MbH74FUVyS3&86=rT&xli`W-w?$11?*P9YQKM?(Ci_l-g zIrt7Ky}p(B{Qg;V@Cdl4hI@n&dC|obVA0*YL*aie!+Eo%mlNT{pZXPH3wtY`xDatxc^=&;n&^A^lvkm%8|GR`ya)Mz>kwDo_#Hh zq$~vUAbthrW3#OOdoX;x-}A>mfBlX43wY(o`tu2SL_P~)S|AaY*xDBg+qG)H9AD{||1bDTKRq_% z_dm7zJ2D68?*qiPki7@K^0@2?w(eGjx8K(?3D$*AWD*zrk9qM4`%{1aFh4o{c!^BS zlBXj3iM0Dh2*X$3cQAZ3Cyw~6`xG%c;%o0$S^6%d%|M~n+a literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/Z3TCAP.TQP b/Images/Source/hd0/s0/u15/Z3TCAP.TQP new file mode 100644 index 0000000000000000000000000000000000000000..6866bc5c6665f27d9581f02ed2bd0661e64065e9 GIT binary patch literal 2688 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 TvoF+&ZU&K<7qO@PU-AD2OjmTS literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/Z3TCAP22.LBR b/Images/Source/hd0/s0/u15/Z3TCAP22.LBR new file mode 100644 index 0000000000000000000000000000000000000000..bcc4cda73b40bae5a5b96903a13fcf5d17c0b011 GIT binary patch literal 12672 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 V0+F^-+i3$H!2a{U<^KO){U3?eemVdE literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/Z3UTIL1.HLP b/Images/Source/hd0/s0/u15/Z3UTIL1.HLP new file mode 100644 index 00000000..ac0ab794 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3UTIL1.HLP @@ -0,0 +1,989 @@ +General-Purpose ZCPR3 Utilities +COMMENT "Block Comment" Utility +ECHO Echo Command Line +ERASE Erase Files +FINDF Search Disks for Files +MCOPY Copy Files +NOTE Comment Line +PAGE Page Files to Console +PRINT Print Files on Printer +PROTECT Set File Protection +RENAME Rename Files +SAK Alarm and Command Line Abort +UNERASE Unerase Files +WHEEL Set/Reset Wheel Byte +:General-Purpose ZCPR3 Utilities + + Thió   seô  oæ  utilitieó  consistó  oæ  thå  followinç +general-purpose programs: + + Command Function + COMMENT Type comment lines + ECHO Echo command line tail to CON: or LST: + ERASE Erase files + FINDF Find files + MCOPY Copy files + NOTE Comment line + PAGE Enhanced TYPE of a file to CON: + PRINT Print a file to LST: + PROTECT Set protection attributes on files + RENAME Rename files + SAK Interrupt command processing + TINIT Program TVI 950 CRT + UNERASE Unerase files + WHEEL Set user priveleges + + Somå  oæ  theså commandó providå functionó  similaò  tï +thoså  provideä iî thå ZCPR³ Commanä Processoò anä  Residenô +Commanä  Packages®  Thå  followinç tablå  summarizeó  theså +relateä commandsº  Thå residenô commandó SAVE¬  JUMP¬  GET¬ +anä  GÏ  havå  nï  counterpartó  bù  thå  naturå  oæ   theiò +functions. + + + +Resident Transient Additional Functions + DIR XDIR Sorts Display, Prints File Sizes, Negative + XD Selection, Disk Output, Printer Output, + DIR File Scan Function + + ERA ERASE File List, Inspect Mode, Can Erase R/O + Files, File Protection + + REN RENAME File List, Inspect Mode, Wild Cards + Permitted, Control Mode, File Protection + + TYPE PAGE File List, Screen Wrap, Speed Change + + LIST PRINT File List, Headings, Page Numbering, + Time Stamp, Paging, Skip to Specified Page + + CP MCOPY File List, AFNs, Verify, Inspect + + + Alì  oæ thå transientó discusseä herå whicè accepô botè +filå  nameó anä optionó aó argumentó wilì noô accepô á  filå +namå  beginninç witè á slash®  Thió ió á trade-ofæ  ..®  iô +shoulä  bå  easù tï omiô thå filå namå (assuminç  alì  fileó +selected© anä jumð righô tï thå options®  Tï bå consistent¬ +thå  slasè waó selecteä tï bå thå optioî delimiteò  wheî  nï +filå nameó werå tï bå specified. + + Aó  á generaì rulå foò alì ZCPR³ transients¬  iæ á filå +namå ió omitted¬ theî thå ¯ characteò musô proceeä thå firsô +option®  Aî invaliä optioî invokeó á built-iî Helð facilitù +withiî  alì  oæ thå transients¬  anä ¯ ió  neveò  aî  optioî +character: + + command filename.typ o... <-- form with file spec + command /o... <-- form without file spec + command // <-- always gives help + + + Manù  transientó supporô filå listó wherå á singlå filå +namå waó giveî before® Iî theså cases¬ thå useò caî specifù +á  lisô oæ filå specó separateä bù commaó iî thå  filå  namå +position: + + command dir:f1.typ,dir:f2.typ,... o... + + Iî general¬  anù timå thaô thå dº  prefiø coulä bå useä +undeò  CP/M¬  thå  DUº  oò  DIRº  prefixeó caî  bå  useä  iî +conjunctioî   witè  ZCPR³  utilities®   Onlù  onå  oò   twï +exceptionó  exisô  foò thió rule¬  anä  theù  arå  logicallù +noted. + +:The COMMENT Command + +Command: COMMENT 2.0 + +Syntax: + + COMMENT + +Function: + + COMMENÔ ió allowó thå useò tï typå aó manù lineó aó  hå +wisheó  withouô  theí beinç processeä bù ZCPR3®  Iô haó  nï +arguments. + + Iæ thå useò strikeó á ^P¬ alì subsequenô lineó hå typeó +will be printed on the printer. + +Options: + + None + + +Comments: + + COMMENÔ   haó  twï  maiî  applicationó  iî  thå   ZCPR³ +environment: + + 1®  Wheî  thå consolå displayó arå  beinç  recorded¬ +COMMENÔ  allowó thå useò tï easilù typå noteó tï thå  futurå +readeò  withouô havinç tï begiî lineó witè á semicoloî  (;)» +alì  oæ  theså lineó arå clearlù showî tï bå commentó  sincå +theù begiî witè thå prompô "Comment>". + + 2®  Wheî consolå I/Ï ió redirecteä tï twï  differenô +users¬  sucè aó CRÔ anä MODEÍ I/Ï iî parallel¬  theî COMMENÔ +maù  bå  useä  tï  providå á simplå mechanisí  foò  theí  tï +communicate»  botè  useró  caî typå tï  eacè  otheò  withouô +havinç   anù   effecô  oî  thå  systeí  (sucè   aó   commanä +processing). + + + COMMENÔ  ió  aborteä  bù  strikinç á ^à aó  thå  firsô +characteò  oæ á line®  Backspacå anä Deletå botè  servå  tï +echï  aó Backspace¬  space¬  backspace¬  anä ^Ø anä ^Õ  botè +eraså thå currenô line® ^Ð toggleó printing. + + Iæ COMMENÔ ió tï bå useä tï chaô betweeî twï users¬  iô +ió  recommendeä  thaô aî over/ouô protocoì bå  employeä  (aó +recommendeä  witè  thå UNIØ  [trademark¬  Belì  LabsÝ  WRITÅ +program)®   Thå  firsô  useò  types¬  and¬  wheî  finished¬ +terminateó  witè thå letteò "o¢ foò over®  Thå seconä  useò +typeó  anä signaló completioî thå samå way®  Completioî  oæ +thå conversatioî maù bå signalleä bù "o+o¢ foò oveò anä out. + + +Selected Error Messages: + + COMMENT generates no error messages. + + +Examples of Use: + +Comment> Hi, Charlie, how's it going? o +Comment> Hi, Rick, fine ... and you? o +Comment> Fine, Charlie +Comment> Here is how I use XDIR -- let me do the typing +Comment¾ froí no÷ on» jusô watch¬ anä I'lì reenteò COMMENT +Comment> when done ... here goes o+o + + +:The ECHO Command + +Command: ECHO 1.0 + +Syntax: + + ECHO text + +Function: + + ECHÏ  echoeó thå texô whicè followó iô tï thå  CONº  oò +LSTº devices® Iæ thå firsô non-blanë characteò oæ thió texô +is a '$', then ECHO sends its output to the LST: device. + +Options: + + None + + +Comments: + + The purpose of ECHO is two-fold: + + 1® tï providå á convenienô waù tï senä messageó tï +thå  consolå  durinç  thå  executioî oæ á  commanä  filå  oò +command line; for example: + + ECHO Assembling;ASM myfile.BBZ;ECHO Loading;LOAD myfile + +aó á singlå multiplå commanä linå wilì prinô thå informativå +messageó  "ASSEMBLING¢ anä "LINKING¢ durinç  thå  respectivå +commands + + + 2®  tï  providå  á convenienô waù tï senä  escapå +sequenceó  tï  thå CRÔ oò printer»  ECHÏ doeó  nï  characteò +translation¬  usinç direcô BIOÓ calls¬  sï sequenceó useä tï +prograí  intelligenô deviceó caî bå issueä bù  runninç  echï +and typing in those sequences; for example: + + ECHO ^Z + +coulä  cleaò thå CRÔ screeî iæ ^Z cleareä thå screeî oî  thå +user's terminal and + ECHO $^L + +wilì forí feeä thå printeò (assuminç thå printeò respondó tï +the form feed character) + + NOTEº   sincå   thå  commanä  inpuô  linå   editoò +capitalizeó   thå   commanä  lines¬   anù   characteró   arå +automaticallù capitalizeä wheî echoed + + +Selected Error Messages: + + ECHO generates no error messages + +Examples of Use: + + ECHO hello, world + -- send text "HELLO, WORLD" to console + + +:The ERASE Command + +Command: ERASE 5.0 + +Syntax: + + ERASE dir:afn1,dir:afn2,... o... + +Function: + + ERASÅ eraseó fileó iî thå filå list®  Onlù  non-systeí +fileó arå selecteä bù default¬ buô thå Ó optioî allowó ERASÅ +to select System files as well. + + +Options: + + S -- Include System Files; if S is not present, then + ERASE does not "see" System Files + + R -- Erase Read/Only Files without asking the user for + permission; if ERASE encounters a Read/Only file + whilå iô ió performinç itó functioî without the R + optioî enabled¬ iô wilì asë thå useò iæ hå wants + to erase the file before it does so; with the R + option, ERASE goes ahead and erases the file + + I -- Inspect; ERASE can be instructed to display each + filå tï thå useò anä asë permissioî beforå the + file is erased; if the user gives permission + and ERASE discovers that the file is R/O with + the R option off, it will ask a second time + before going ahead + + +Comments: + + None + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + ERASE text:*.txt,asm:*.tmp + -- erase the *.TXT files in TEXT: directory and + *.TMP files in ASM: directory + + ERASE *.* I + -- erase *.* in the current directory with + inspection + +:The FINDF Command + +Command: FINDF 2.0 + +Syntax: + + FINDF afn1,afn2,... o + +Function: + + FINDÆ  searcheó througè alì oæ thå knowî diskó anä useò +areaó  foò  anä  fileó matchinç anù oæ  thå  indicateä  filå +specifications. + +Options: + + S - Include System Files + + +Comments: + + FINDÆ  wilì onlù searcè foò Non-Systeí fileó unlesó thå +Ó  optioî  ió includeä iî thå commanä line¬  aô  whicè  timå +FINDÆ wilì searcè foò botè Systeí anä Non-Systeí files. + + Thå  searcè  beginó aô disë Á anä extendó  untiì  FINDÆ +encounteró  thå  lasô possiblå disë oò á disë whicè  ió  noô +loaded. + + All user areas (0 to 31) are examined. + + FINDÆ displayó thå nameó oæ thå fileó found¬ groupeä bù +disk and user area. + + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + FINDF xdir.com s + -- search all files (both System and Non-System) + for XDIR.COM + + FINDF xd.com,help.hlp,myfile.txt + -- searcè alì Non-Systeí fileó foò XD.COM, + HELP.HLP, and MYFILE.TXT + +:The MCOPY Command + +Command: MCOPY 4.0 + +Syntax: + + MCOPY dir:=dir:afn1,afn2,dir:=dir:afn3,... o... + +Function: + + MCOPÙ  ió  á filå copù prograí designeä foò  uså  undeò +ZCPR3®  Iô  supportó manù featureó relateä specificallù  tï +thå ZCPR³ Systeí anä ió verù intimatelù tieä intï thå  ZCPR³ +System. + + Thå  basiã  purposå oæ MCOPÙ ió tï copù fileó froí  onå +directorù (disk/useò area© tï anotheò undeò ZCPR3. + + + MCOPÙ onlù copieó files»  MCOPÙ DOEÓ NOÔ RENAMÅ  FILES® +Thió  ió  á majoò differencå foò thoså useä tï  PIP®  MCOPÙ +text:f1.txt=f2.txô jusô copieó F2.TXÔ intï TEXTº  directory¬ +buô iô ió stilì nameä F2.TXÔ (F1.TXÔ ió ignored). + +Options: + + E -- Test for Existence of File on Destination and + User Approves Copy before Copy is Done + + I -- User Approves Each File before Copy Begins + + M -- Multiple Copy (Repeat) Facility + This allows the user to backup several files to + several disks by copying all the specified files, + prompting the user for a new disk, and then + copying the files again, continuing until the user + tells MCOPY to stop + + + Q -- Quiet Operation (No Activity Displays) + + V -- Verify Copies + + Thå Å optioî (Existencå Test© lookó oî thå  destinatioî +directorù  tï seå iæ thå filå iô ió abouô tï copù ió alreadù +there®  Iô theî telló thå useò oæ itó findingó anä askó hií +iæ hå wantó tï gï aheaä witè thå copy®  Thå useò maù  elecô +tï copù oò noô copù aó hå desires. + + Thå  É optioî (Inspect© displayó alì fileó whicè  matcè +thå  indicateä  sourcå fileó tï thå user¬  allowinç  hií  tï +selecô  whicè  fileó hå wantó tï copy®  Iô theî copieó  thå +selecteä files®  MCOPÙ performó thió operatioî foò eacè seô +oæ fileó iî thå commanä linå (separateä bù commas). + + + Thå Í optioî (Multiplå Copy© pauseó beforå startinç thå +copy¬  allowinç thå useò tï aborô thå procedurå oò inserô  á +disë intï thå source¬  thå destination¬ oò botè anä instrucô +MCOPÙ tï proceed® Afteò copyinç alì oæ thå indicateä files¬ +MCOPÙ  theî pauseó again¬  allowinç thå useò tï agaiî changå +disks® Thió continueó untiì thå useò abortó thå procedure. + + Thå  Ñ  optioî  (Quiet© turnó ofæ  thå  MCOPÙ  activitù +display®  Iî normaì operation¬  MCOPÙ ió constantlù tellinç +thå useò whaô iô ió doing®  É feeì thaô thió ió betteò thaî +quietlù  havinç  problemó withouô thå useò knowinç  whaô  ió +goinç on®  MCOPÙ payó attentioî tï thå QUIEÔ flaç oæ ZCPR3¬ +and the initial mode of MCOPY is set by this flag. + + + Thå Ö optioî (Verify© ió useä tï checë thå copieä  filå +tï insurå thaô thå copù ió good®  Witè thió optioî engaged¬ +MCOPÙ  computeó  á CRà valuå oæ thå sourcå filå aó iô  readó +it®  Wheî  MCOPÙ  haó  completeä thå  copy¬  iô  readó  thå +destinatioî filå back¬  computinç itó CRà value¬  and¬  wheî +complete¬  iô compareó thå twï CRà values¬  tellinç thå useò +iæ aî erroò iî thå copù occurreä (i.e.¬ differenô CRà valueó +resulted). + + +Comments: + + MCOPÙ  ió alsï intendeä tï bå useä foò backuð purposes® +Iô  haó thå abilitù tï repeatedlù copù á seô oæ  fileó  froí +onå  directorù tï another¬  pausinç betweeî successivå  copù +passeó tï allo÷ thå useò tï changå disks®  Á keù tï thå uså +oæ MCOPÙ iî generaì ió thaô oncå MCOPÙ haó beguî operations¬ +thå  useò  neeä neveò concerî himselæ witè Warí Bootinç  thå +systeí afteò changinç disks» MCOPÙ ió doinç thaô foò him. + + Iæ  á  destinatioî directorù ió  noô  specified¬  MCOPÙ +lookó  foò  á directorù nameä BACKUPº  anä  copieó  tï  thió +directorù iæ found® Iæ therå ió nï directorù nameä BACKUP:¬ +MCOPÙ  wilì  copù  tï B0º  (thió caî bå changeä  bù  DDÔ  oò +reassembly). + + + Iî copyinç á filå froí onå directorù tï another¬  MCOPÙ +performó thå followinç steps: + + 1®  Iô  logó intï thå sourcå directorù anä  scanó +foò thå fileó specifieä bù thå user + + 2®   Iô  logó  intï  thå  destinatioî  directory¬ +determineó  iæ á copù oæ thå filå existó oî thå  destinatioî +anä deleteó iô iæ iô does + + 3®  MCOPÙ copieó thå filå iî thå sourcå directorù +intï thå destinatioî directory + + 4®  MCOPÙ setó thå attributeó oæ thå filå iî  thå +destinatioî  directorù tï bå thå samå aó thoså iî thå sourcå +directory + + 5®  MCOPÙ optionallù verifieó botè fileó bù meanó +oæ á CRà Check + +Selected Error Messages: + + "NÏ Fileó -- ^à tï Abort¢ meanó thaô nï fileó  matchinç +the indicated file spec were found. + + "TPÁ  Ovfl¢ meanó thaô therå waó noô enougè rooí iî thå +Transient Program Area to support MCOPY. + + "Disë  Full¢  meanó thaô therå ió nï morå rooí  oî  thå +destination disk for the files. + + +Examples of Use: + + MCOPY FILE1.*,HELP:FILE2.HLP,TEMP:=TEST.TXT,HI.* + + Fileó  matchinç  FILE1.ª iî thå currenô  directorù  arå +copieä tï BACKUP:¬  thå filå FILE2.HLÐ iî directorù HELР ió +copieä  tï  BACKUP:¬   thå  filå  TEST.TXÔ  iî  thå  currenô +directorù ió copieä tï TEMP:¬ anä thå fileó matchinç HI.ª iî +thå currenô directorù arå copieä tï TEMP:. + + Oncå á DIR:½ ió encountered¬ thå defaulô destinatioî ió +redefined®  Encounterinç á differencå source¬ however¬ doeó +noô changå whaô thå defaulô sourcå directorù is. + +:The NOTE Command + +Command: NOTE 1.0 + +Syntax: + + NOTE text + +Function: + + NOTÅ ió á do-nothinç commanä - iô implementó á comment® +No operation is performed at all. + +Options: + + None + + +Comments: + + Anù  linå  beginninç witè á semicoloî (;© ió á  commenô +line®  Witè  multiplå commanä lines¬  however¬  iô  ió  noô +possiblå  tï  embeä  á  commenô  phraså  iî  thå  middlå  oò +beginninç  oæ  á  commanä linå withouô á nulì  routinå  likå +NOTE. NOTE was created to: + + allow comments to be embedded in command lines + + provide a comment that stands out from the simple + semicolon line + +Selected Error Messages: + None + +Examples of Use: + NOTE this is a comment + +:The PAGE Command + +Command: PAGE 2.0 + +Syntax: + + PAGE dir:afn1,dir:afn2,... o... + +Function: + + Thå  PAGÅ commanä ió useä tï lisô fileó oî thå console® +Iô offeró advantageó oveò TYPÅ iî thaô PAGÅ knowó thå  widtè +oæ  thå  screeî  anä  handleó wraparounä  (whicè  ió  á  biç +complainô  witè  TYPÅ  wheî tryinç tï  pagå  througè  "wide¢ +listingó  likå thaô produceä bù thå assemblers)®  PAGÅ alsï +acceptó á filå list. + + +Options: + + 0-9 - Set Character Print Speed Delay + I - Inspect files + L - Number lines + P - Disable pause at end of screen + Sn - Skip to page n and then begin + +Comments: + + Whilå á filå ió beinç pageä tï thå user¬  thå useò  caî +strikå  onå  oæ thå digitó tï varù thå speeä oæ  thå  outpuô +dynamically®  ° ió thå fastest¬  ¹ ió thå slowest® Iî thió +way¬  thå  useò caî easilù scaî á filå bù runninç PAGÅ  witè +thå Ð optioî (sï iô doeó noô stoð wheî thå screeî ió filled© +anä  strikinç  á  digiô froí timå tï timå tï speeä  uð  oveò +sectionó  hå isn'ô interesteä iî anä slo÷ dowî foò  sectionó +hå is. + + + Whilå thå outpuô ió beinç directeä tï thå screen¬  PAGÅ +supportó  thå followinç single-characteò commandó tï  changå +thå outpuô displaù iî onå waù oò another: + + 0 to 9 - change speed (0=slowest, 9=fastest) + + P or p - toggle pause when screen fills + (the user can dynamically turn on and off + the ability to delay when a screen fills) + + ^X - skip to next file + + ^C - abort to operating system + + ^S - pause output; any key will resume, and all + of these commands (except ^S) will work + + + PAGÅ  ió  constantlù acceptinç useò  input¬  anä  theså +commandó arå iî effecô alì oæ thå time®  Thió includeó  thå +timå  wheî  PAGÅ  haó pauseä afteò fillinç thå  screeî  (itó +default)¬  sï thå useò caî turî ofæ paginç oò varù thå speeä +aô thió time¬  iæ sï desired®  Anù otheò characteò wilì  bå +ignored. + +Selected Error Messages: + + Self-Explanatory + + +Examples of Use: + + PAGE *.txt p8 + -- page all *.TXT files, and begin with paging + off (don't pause at the end of the screen) + and speed set to 8 + + PAGE myfile.txt s5 + -- page MYFILE.TXT, starting at page 5 + +:The PRINT Command + +Command: PRINT 2.0 + +Syntax: + + PRINT dir:afn1,dir:afn2,... o... + +Function: + + Thå  PRINÔ commanä ió useä tï prinô á filå oî thå  LSTº +device¬  likå LISÔ does¬  buô offeró manù morå options®  Iô +wilì  prinô  á heading¬  pagå thå file¬  numbeò  thå  pages¬ +numbeò thå lines¬ placå á date/timå stamð oî thå output¬ puô +thå filå namå oî thå output¬ anä others. + + +Options: + + E - Exact Print (Expand Tabs, Form Feed, No Line or + Page Numbers, No Heading) + + F - Toggle default of file name display on page header + (defaulô ió ON¬ so Æ turnó ofæ name display) + + Htext - Define Heading text to appear + at the top of each page + + I - Inspect Files (allow user to select files before + printing begins) + + L - Enable numbering of each line + + + M - Disable Multiple Run Flag + (if multiple run is ON, then no "Set Top of Form" + message appears for each file and PRINT moves + from one file to another unattended); default is + with Multiple Run ON + + N - Disable numbering of each page + + On - Offset each line + Move each line in the indicated number of chars + from the left of the page + + Sn - Start printing on page n + + T - Toggle date/time stamp in the header of each page + (a TIME subroutine must be assembled into PRINT + to enable the date/time stamp feature) + + +Comments: + + Thå  specifiã  featureó oæ thå printeò arå seô  bù  thå +ZCPR³  Environmenô  Descriptor®  Sucè featureó includå  thå +numbeò oæ physicaì lineó oî á page¬  thå numbeò oæ lineó  oæ +texô  oî  á page¬  thå widtè oæ á linå  iî  characters¬  anä +whetheò  thå printeò caî forí feeä oò not®  Thå Environmenô +Descriptoò containó optionó foò fouò printers¬ anä thå CPSEÌ +utilitù caî bå useä tï selecô thå desireä seô oæ attributes. + + Thå date/timå stamð featurå ió verù  machine-dependent¬ +anä PRINÔ haó tï bå reassembleä tï supporô it. + + While PRINT is running, the following commands work: + + ^C Abort and return to operating system + + ^X Skip to top of next page and skip to next file + + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + PRINT text:*.txt,*.txt o10n + -- print all *.TXT files in the TEXT: directory + and in the current directory; offset all + lines by 10 columns, and do not number pages + + PRINT myfile.txt s25 + -- print MYFILE.TXT starting at page 25 + +:The PROTECT Command + +Command: PROTECT 3.0 + +Syntax: + + PROTECT dir:afn1,dir:afn2,... keys o... + +Function: + + Thå   PROTECÔ   commanä  replaceó  thå  attributå   seô +capabilitieó   oæ   thå  STAÔ  transienô   anä   addó   morå +flexibility®  PROTECÔ  ió  designeä  tï allo÷ thå  useò  tï +specifù thå attributeó (Read/Only¬  System¬ anä Archive© anä +taç bitó (thå Mosô Significanô Bitó oæ thå eighô  characteró +iî á filå name© oæ á filå oò seô oæ files. + + PROTECT always "sees" both System and Non-System files. + + +Options: + + Thå  KEYÓ arå thå attributeó selected®  Thå  followinç +keys are allowed: + + R¬ S¬ Á -- Enablå Read/Only¬ System¬ anä Archive + + n, 1 <= n <= 8 -- Set Tag Bits + + The following options are also available: + + I -- Inspect C -- Control + + Inspecô  Modå  allowó  thå useò tï looë  aô  eacè  filå +beforå iô ió "protected¢ anä permiô oò disallo÷ thå functioî +tï bå performeä oî á case-by-caså basis. + + + Controì  Modå  allowó thå useò tï seå thå namå oæ  eacè +filå selecteä anä manuallù seô itó attributeó anä taç  bits® +Iî responså tï thå Controì Modå prompt¬ thå useò caî typå iî +anù combinatioî oæ thå letteró A¬  R¬  S¬ anä thå digitó 1-¸ +(the KEYS). + +Comments: + + None + +Selected Error Messages: + + Self-Explanatory + + +Examples of Use: + + PROTECT A4:*.COM,ROOT:*.COM RSI + Set the Attributes of all COM files in directories A4 + and ROOT to Read/Only and System. Turn off the Archive + attribute and all tag bits. Allow the user to inspect + each file before the operation is performed. + + PROTECT ROOT:*.TXT + Clear all attributes and all tag bits of all files of + type TXT in the directory named ROOT + + PROTECT A: C + Allow the user to manually set all attributes and tag + bits of all files on Disk A in the current user + +:The RENAME Command + +Command: RENAME 3.0 + +Syntax: + + RENAME dir:afn1=afno1,dir:afn2=afno2,... o... + +Function: + + RENAMÅ ió useä tï changå thå namå oæ onå oò morå files® +Ambiguous file names and inspection are permitted. + +Options: + + C - Control Mode; manually specify each file name + I - Inspect and approve each rename + S - Include System files + + +Comments: + + Thå  RENAMÅ  commanä ió á brotheò tï thå  REΠ residenô +command® Therå arå manù majoò differences¬ however: + + . RENAMÅ allowó  ambiguouó filå nameó tï thå used + . RENAMÅ supports an Inspect Mode, where the user is + presented with each name change and allowed to + approve of it before it is done + . RENAME supports a Control Mode, where the user is + presented with each file to be RENAMEd and allowed + to manually enter the new name or not rename the + file + . RENAME accepts a list of files + . RENAME does not "see" System files unless told to + . RENAME can rename Read/Only files + . RENAME sets the attibutes (R/O and SYS) of the + new file names to be the same as those on the + old file names + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + RENAME *.txt C + -- rename all *.TXT files to something else; + display the file name to the user and allow + him to manually enter the new name + + RENAME asm:*.mac=*.asm + -- rename all *.ASM files to *.MAC + +:The SAK Command + +Command: SAK 2.0 + +Syntax: + + SAK o... + + +Function: + + SAË  (Strikå  Anù  Key© waó designeä  tï  providå  somå +simplå  utilitù functions¬  onå oæ whicè ió associateä  witè +thå Multiplå Commanä Linå featurå oæ ZCPR3® Iô waó designeä +foò thå followinç purposes: + + 1. to allow the user to program a wait in a multiple + command line until he instructs the system to + continue + + 2. to allow the user to abort a multiple command line + + 3. to allow the user to program an interruptable delay + in the execution of a multiple command line + + 4. to provide a simple alarm for the user + + +Options: + + A - DO NOT allow the user to abort the command line + + B - Ring the bell at the user's terminal occasionally + + Pn - Pause n seconds and continue if no response by + that time + +Comments: + + Witè NÏ options¬  SAË waitó foò useò input¬  anä iæ thå +useò strikeó á ^C¬ theî thå multiplå commanä linå ió aborteä +anä controì ió returneä tï thå user. + + + SAË  ió  particularlù  usefuì iæ  thå  useò  wisheó  tï +interjecô  á delaù iî á multiplå commanä linå generateä bù á +Menu®  Onå sucè applicatioî waó tï displaù thå timå tï  thå +user¬  calì hió attentioî tï iô (viá ECHO)¬ givå hií á delaù +(viá  SAK)¬  anä  theî invokå dBASÅ IÉ witè aî  initializinç +commanä file. + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + SAK BP10 + -- ring the bell occasionally and pause for 10 + seconds; if the user does not strike a + a command by that time (^C to abort), then + resume command line execution with the next + command +:The UNERASE Command + +Command: UNERASE 1.0 + +Syntax: + + UNERASE afn1,afn2,... o... + +Function: + + UNERASÅ  recoveró  fileó  whicè  havå  beeî  previouslù +eraseä iæ iô ió possiblå tï dï so® Aó á rule¬ UNERASÅ haó á +mucè  greateò  chancå oæ succesó iæ iô ió  useä  immediatelù +after the files were erased. + +Options: + + L - List Erased Files Only (do not attempt recovery) + P - Pause for Disk Change and then try + Z - Place Recovered Files in User Area 0 (default is + current user area) + +Comments: + + Wheî  ZCPR³ (anä CP/M© eraseó á file¬  thå  informatioî +containeä  iî thå filå anä thå directorù referencå  tï  thaô +informatioî  ió  noô  deleteä  immediately®   Instead¬  thå +directorù  entrù  ió simplù markeä aó beinç deleted®  Aó  á +result¬  bù  changinç  thió deletå marë  bacë  tï  somethinç +normal (which is a user number), the file is recovered. + + Afteò  á filå haó beeî deleted¬  twï eventó caî  happeî +whicè caî risë thå successfuì recoverù oæ thå file®  Onå ió +thaô  ne÷ directorù entrieó caî bå madå intï thå  directory¬ +anä  onå oò morå oæ theså maù overwritå thå entrù whicè  waó +madå  foò thå filå tï bå recovered®  Thå otheò ió thaô  thå +spacå  takeî  oî  disë  bù thå filå maù  bå  overwritteî  bù +another file. + + + Eacè  oæ  theså eventó ió possiblå wheî ne÷  fileó  arå +created®  Foò  thió reason¬  UNERASÅ caî bå useä witè  somå +degreå  oæ succesó onlù iæ nï fileó werå createä  afteò  thå +files to be recovered were erased. + + UNERASÅ  ió noô alwayó successful¬  however®  If¬  foò +instance, the following events took place: + + 1. the files MYFILE.TXT, HISFILE.TXT, and T.TXT + were created and then erased + 2. a new file T.TXT was created and then erased + 3. UNERASE T.TXT was issued - it is possible that + both previous T.TXT files would be recovered, + and a "weird" dual file named T.TXT would be + in your directory + + + UNERASÅ printó thå nameó oæ thå fileó iô ió recovering¬ +and¬ iæ á namå appearó twï oò morå times¬ theî theså earlieò +fileó  oæ  thå  samå  namå  arå  beinç   recovered®   Thoså +experienceä  witè DU2/DU³ caî probablù correcô thå situatioî +anä  recoveò thå correcô file®  Otheró wilì simplù  havå  á +corrupteä  directorù  whicè caî onlù bå restoreä bù  erasinç +T.TXT, thereby loosing both files again. + +Selected Error Messages: + + Self-Explanatory + + +Examples of Use: + + UNERASE myfile.txt,hisfile.txt + -- try to recover MYFILE.TXT and HISFILE.TXT + + UNERASE myfile.txt Z + -- trù tï recoveò MYFILE.TXÔ anä placå iô iî Useò 0 + + UNERASE myfile.txt L + -- see if MYFILE.TXT can be recovered (duplicates + may also appear in this way) + +:The WHEEL Command + +Command: WHEEL 3.0 + +Syntax: + + WHEEL password S or WHEEL password <-- Set Wheel Byte +or + WHEEL password R <-- Reset Wheel Byte +or + WHEEL /S or WHEEL /R <-- Enter Password + without echo + +Function: + + Thå WHEEÌ commanä ió useä tï enablå anä disablå certaiî +privelegeä commandó anä commanä features®  Iô doeó thió  bù +setting and resetting the Wheel Byte. + + +Options: + + Shown above + +Comments: + + Thå  Wheeì  Passworä ió hard-codeä intï  thå  WHEEL.COÍ +file. It may be changed by DDT or reassembly. + + WHEEÌ haó aî RCÐ counterpart¬ WHL¬ whicè maù alsï bå iî +effect. WHEEL and WHL can respond to different passwords. + +Selected Error Messages: + + "Invaliä  Password¢  meanó thaô thå giveî passworä  waó +not correct. + + +Examples of Use: + + WHEEL mypass + -- seô Wheeì Bytå iæ MYPASÓ ió thå correcô password + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3UTIL2.HLP b/Images/Source/hd0/s0/u15/Z3UTIL2.HLP new file mode 100644 index 00000000..39a7cc87 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3UTIL2.HLP @@ -0,0 +1,764 @@ +The ZCPR3 System-Oriented Utilities +CMDRUN Extended Command Processor (ECP) +ERRORn Error Handlers +LDR ZCPR3 System Segment Loader +PATH Path Display and Set +QUIET Display and Set the Quiet Flag +REG Register Display and Manipulation +SETFILE System File Assignment +SHCTRL Shell Stack Display and Manipulation +SHOW System Configuration Display and Error Handler +Z3INS ZCPR3 System Installation Program +Z3LOC ZCPR3 System Segment Locator +:The ZCPR3 System-Oriented Utilities + + Thió  HELР filå  containó informatioî oî  thoså  ZCPR³ +utilitieó   whicè  accesó  featureó  oæ  thå  ZCPR³   Systeí +specifically. These features include: + + o Extended Command Processors + o Error Handlers + o the ZCPR3 System Segments + o the ZCPR3 Command Search Path + o the System Registers + o the System Files + o the ZCPR3 System Addresses + o the ZCPR3 System Status + +:CMDRUN Extended Command Processor (ECP) + +Command: CMDRUN + +Syntax: + + CMDRUN text (this command is usually executed by + ZCPR3 itself and not the user) +Function: + + CMDRUΠ ió á samplå Extendeä Commanä Processor®  Iô ió +invokeä automaticallù bù ZCPR³ wheî thå useò commanä ió  noô +founä  viá  thå commanä searcè patè anä nï erroò handleò  ió +engaged. + + Thå  texô  whicè followó thå verâ ió thå  texô  oæ  thå +original command line. + + +Options: + + None + +Comments: + + CMDRUΠ ió  onlù á simplå sample®  Iô showó  thaô  thå +originaì  commanä linå ió no÷ availablå iî thå commanä  taiì +buffeò (aô 80H)®  Thå formaì CMDRUÎ whicè thå useò programó +foò  hió ZCPR³ Systeí caî extracô thå originaì commanä  linå +from this buffer and manipulate it as desired. + +Selected Error Messages: + + None + +Examples of Use: + + None + +:ERRORn Error Handlers + ERROR1 +Command: ERROR1 1.0 + +Syntax: + + ERROR1 + +Function: + + ERROR±  ió  aî Erroò Handler®  Iæ thå useò  runó  thió +program¬ iô installó itselæ aó thå systeí erroò handler® Iæ +ZCPR³ cannoô finä thå COÍ filå referenceä bù á commanä verb¬ +iô  invokeó  thå  installeä Erroò  Handleò  anä  passeó  thå +commanä linå tï it. + +Options: + None + + ERROR1 +Comments: + + ERROR± displayó thå erroò linå tï thå useò anä provideó +hií witè fouò optionó aó tï ho÷ tï procesó thió line: + + 1. Replace the command in error with a new command + 2. Skip the command in error and resume execution + with the next command + 3. Replace the entire command line + 4® Thro÷ awaù thå commanä linå anä resumå user + control + +Selected Error Messages: + Self-Explanatory + +Examples of Use: + + ERROR1 + -- install Error Handler + ERROR2 +Command: ERROR2 1.0 + +Syntax: + + ERROR2 + +Function: + + ERROR2  ió  aî Erroò Handler®  Iæ thå useò  runó  thió +program¬ iô installó itselæ aó thå systeí erroò handler® Iæ +ZCPR³ cannoô finä thå COÍ filå referenceä bù á commanä verb¬ +iô  invokeó  thå  installeä Erroò  Handleò  anä  passeó  thå +commanä linå tï it. + +Options: + None + + ERROR2 +Comments: + + ERROR2 displayó thå erroò linå tï thå useò anä provideó +hií witè fouò optionó aó tï ho÷ tï procesó thió line: + + 1. Replace the command in error with a new command + 2. Skip the command in error and resume execution + with the next command + 3. Replace the entire command line + 4® Thro÷ awaù thå commanä linå anä resumå user + control + + Unlikå ERROR1¬ ERROR² ió screen-oriented¬ havinç á mucè +"flashier" display. It uses the Z3TCAP for support. + +Selected Error Messages: + Self-Explanatory + + ERROR2 +Examples of Use: + + ERROR2 + -- install Error Handler + + ERROR3 +Command: ERROR3 1.0 + +Syntax: + + ERROR3 + +Function: + + ERROR3  ió  aî Erroò Handler®  Iæ thå useò  runó  thió +program¬ iô installó itselæ aó thå systeí erroò handler® Iæ +ZCPR³ cannoô finä thå COÍ filå referenceä bù á commanä verb¬ +iô  invokeó  thå  installeä Erroò  Handleò  anä  passeó  thå +commanä linå tï it. + +Options: + None + + ERROR3 +Comments: + + ERROR³  displayó thå namå oæ thå COÍ filå whicè waó noô +founä anä theî flusheó thå commanä line¬  returninç  controì +to the user. + +Selected Error Messages: + None + +Examples of Use: + + ERROR3 + -- install ERROR3 + + ERROR4 +Command: ERROR4 1.0 + +Syntax: + + ERROR4 + +Function: + + ERROR4  ió  aî Erroò Handler®  Iæ thå useò  runó  thió +program¬ iô installó itselæ aó thå systeí erroò handler® Iæ +ZCPR³ cannoô finä thå COÍ filå referenceä bù á commanä verb¬ +iô  invokeó  thå  installeä Erroò  Handleò  anä  passeó  thå +commanä linå tï it. + +Options: + None + + ERROR4 +Comments: + + ERROR´  printó  thå namå oæ thå COÍ filå whicè waó  noô +founä  anä theî advanceó tï thå nexô commanä iî thå  commanä +linå buffer®  Iæ therå ió nï nexô command¬  useò controì ió +resumed®  Iæ  therå ió á nexô  command¬  commanä  executioî +resumes there. + +Selected Error Messages: + None + +Examples of Use: + + ERROR4 + -- install Error Handler + + ERRORX +Command: ERRORX 1.0 + +Syntax: + + ERRORX + +Function: + + ERRORØ disengageó thå currenô erroò handler¬ leavinç nï +erroò  handleò enabled®  Thå defaulô erroò controì facilitù +oæ ZCPR³ ió no÷ iî effect¬  wherå iæ aî erroò occuró iî  thå +commanä  line¬  thå commanä linå froí thaô poinô forwarä  ió +printed (followed by a '?'). + +Options: + None + + ERRORX +Comments: + + None + +Selected Error Messages: + + No error messages are generated by ERRORX. + +Examples of Use: + + ERRORX + -- disengage any Error Handler currently enabled + +:LDR ZCPR3 System Segment Loader + +Command: LDR 1.0 + +Syntax: + + LDR ufn1,ufn2,... + +Function: + + LDÒ  ió  á  general-purposå Systeí Segmenô  loadeò  foò +ZCPR3® Iô loadó alì oæ thå ZCPR³ Systeí Segmentó intï theiò +appropriatå  buffers¬  checkinç oî theiò formaô anä  contenô +beforå  approvinç  anä completinç eacè  load®  Eacè  Systeí +Segment is specified unambiguously. + +Options: + + None + + Comments: + + Thå  followinç Systeí Segmentó arå loadeä  intï  memorù +buffers by LDR: + + *.ENV files - Environment Descriptors + *.FCP files - Flow Command Packages + *.IOP files - Input/Output Packages + *.NDR files - Named Directory Files + *.RCP files - Resident Command Packages + *.Z3T files - Z3TCAP Entries + + Foò  eacè  filå loaded¬  thå contentó oæ thå  filå  arå +loadeä intï á memorù buffeò anä examined® Baseä oî thå filå +type¬  segment-uniquå  structuraì checkó arå performed®  Iæ +thå  checkó  arå  passed¬  thå segmenô ió  copieä  intï  thå +correcô  memorù  buffeò baseä oî thå datá containeä  iî  thå +Environmenô Descriptor®  Iæ thå checkó arå noô  passed¬  aî +erroò  messagå  ió issueä anä thå nexô filå iî thå  lisô  ió +processed. + + Sincå  thå  Environmenô Descriptoò (whicè ió  currentlù +residinç  iî  itó  memorù buffer© ió  useä  tï  providå  thå +addresó  tï whicè tï copù thå loadeä Systeí Segment¬  iô  ió +importanô  thaô  thå  Environmenô Descriptoò  bå  thå  firsô +segmenô  loadeä bù LDR®  Aî alternativå tï thió ió thaô thå +BIOÓ maù initializå thå Environmenô Descriptoò oî Colä Boot¬ +buô  thió  woulä requirå á relativelù  largå  BIOÓ  overheaä +(over 128 bytes for the initial Environment Descriptor). + + Wheî LDÒ loadó aî Environmenô Descriptor¬  iô placeó iô +aô  thå  addresó  oæ thå Environmenô  Descriptoò  whicè  waó +installeä iî LDÒ durinç thå ZCPR³ Systeí installation®  Anù +otheò  Systeí Segmenô ió loadeä baseä oî thå contentó oæ thå +current Environment Descriptor in memory. + + +Selected Error Messages: + + "filename.tyð ió noô á Valiä Type¢ meanó thaô thå  filå +typå oæ thå indicateä filå ió noô onå oæ ENV¬ FCP¬ IOP¬ NDR¬ +RCP, or Z3T. + + "filename.tyð  Containó  á Formaô Flaw¢ meanó thaô  thå +structure of the indicated file was not correct. + +Examples of Use: + + LDR SYS.ENV,MYIO.IOP,MYCMDS.RCP,MYIFS.FCP + -- loaä SYS.ENV¬ and¬ baseä oî thå datá iî thió + Environment Descriptor, load the I/O Package + MYIO.IOP, the Resident Command Package + MYCMDS.RCP, and the Flow Command Package MYIFS.FCP + + LDR TERM1.Z3T + -- replace the current Z3TCAP entry with TERM1.Z3T +:PATH Path Display and Set + +Command: PATH 3.0 + +Syntax: + + PATH +or + PATH path-expression + +Function: + + PATÈ  allowó thå useò tï dï twï thingó  -- displaù  thå +currenô patè oò seô á ne÷ path®  Thå displaù showó thå patè +iî  threå  formatsº  Symbolic¬  Absolutå  (DU)¬  anä  Nameä +Directorù  (DIR)®  Thå patè expressioî maù intermiø anù  oæ +theså formató aó desireä tï expresó thå ne÷ path. + +Options: + + None + +Comments: + + Thå  PATÈ  Commanä  ió useä  tï  dynamicallù  changå  á +memory-baseä  filå  searcè patè oò thå ZCPR³ commanä  searcè +path®  Witè  PATH¬  thå  useò caî definå á ne÷ patè  tï  bå +followeä oò hå caî vie÷ whaô thå currenô patè is. + + PATÈ determineó thå addresó oæ thå patè iô ió goinç  tï +work with from the ZCPR3 Environment Descriptor. + + Thå  PATÈ commanä dealó witè patè expressions®  Á patè +expressioî  ió  á sequencå oæ directorù nameó whicè  caî  bå +expresseä  aó "ambiguous¢ DÕ forms¬  absolutå DÕ  forms¬  oò +Nameä Directorù forms. + + + Aî  absolutå  DÕ  forí indicateó  jusô  á  disë  letteò +(currenô useò ió assumed)¬  jusô á useò numbeò (currenô disë +ió  assumed)¬  oò botè á disë letteò anä á useò number®  Aî +"ambiguous¢ DÕ forí ió onå iî whicè thå disë letteò oò  useò +numbeò  oò  botè ió replaceä witè á "$¢  character¬  meaninç +"currenô disk¢ oò "currenô user"®  Á Nameä Directorù  form¬ +oæ course¬ ió simplù thå namå oæ á directory. + + Tï illustrate¬  let'ó saù thaô thå useò ió loggeä  intï +B1® Thå path + + $0 A$ A0 ROOT + +represents the sequence + + B0 to A1 to A0 to ROOT + + +Selected Error Messages: + + "Baä Expressioî aô ¢ indicateó therå waó aî erroò +in the path expression at the indicated point. + +Examples of Use: + + PATH $0 A$ A15 + - seô  patè froí currenô disk/useò ° tï disë A/currenô +useò tï disë A/useò 15 + + PATH A$ ROOT + - set path from disk A/current user to ROOT: + +:QUIET Display and Set the Quiet Flag + +Command: QUIET 1.0 + +Syntax: + + QUIET o + +Function: + + QUIEÔ ió useä tï set¬ reset¬ anä displaù thå Quieô Flaç +in the ZCPR3 Environment Descriptor. + +Options: + + D - Display the Quiet Flag + R - Reset (turn OFF) the Quiet Flag + S - Set (turn ON) the Quiet Flag + + +Comments: + + Manù  ZCPR³ utilitieó reaä thå Quieô Flaç iî thå  ZCPR³ +Environmenô  Descriptoò  anä responä  accordingly®  Iæ  thå +Quieô  Flaç ió Seô (ON)¬  theî certaiî informativå  messageó +arå  suppresseä iî ordeò tï cuô dowî oî thå "noise¢  createä +bù thå command®  Iæ thå Quieô Flaç ió Reseô (OFF)¬ theî alì +messages are displayed. + +Selected Error Messages: + + Nï  Erroò Messageó arå generated®  Aî invaliä  commanä +results in the Help screen being displayed. + + +Examples of Use: + + QUIET R + - turn OFF (Reset) the Quiet Flag + + QUIET DISPLAY + - Display the Quiet Flag + +:REG Register Display and Manipulation + +Command: REG 1.0 + +Syntax: + + REG Dr or REG r <-- Display Register r + REG Mr <-- Minus (r=r-1) Register r + REG Pr <-- Plus (r=r+1) Register r + REG Sr value <-- Set (r=value) Register r + +Function: + + REÇ displays¬  addó ± to¬  subtractó ± from¬ anä setó á +valuå tï thå indicateä register® Á ZCPR³ Registeò ió á one- +byte buffer (values are ranged from 0 to 255 decimal). + + Thå  valuå  useä tï indicatå á registeò ió á  characteò +froí '0§ tï '9'®  Thå characteò '#§ indicateó alì registeró +("REG S# 0" stores 0 to all ten registers). + + +Options: + + Shown Above + +Comments: + + Registers are used for two purposes: + + 1. to support looping in ZEX command files + (do something N times) + + 2. to pass parameter values from one program to + another program which is executed later + + REÇ  haó á counterparô commanä iî thå  Systeí  Residenô +Command Package provided in the ZCPR3 distribution. + + +Selected Error Messages: + + "Invlä Reç IDº c¢ meanó thaô thå registeò indicateä waó +not symbolized by '0' to '9' or '#'. + +Examples of Use: + + REG S5 25 + -- Register 5 = 25 + + REG M# + -- 1 is subtracted from all registers + +:SETFILE System File Assignment + +Command: SETFILE 1.0 + +Syntax: + + SETFILE n afn +or + SETFILE n + +Function: + + SETFILÅ seô thå namå oæ ZCPR³ Systeí Filå î (wherå î ió +± tï 4© tï thå indicateä ambiguouó filå name®  Iæ nï AFÎ ió +given¬  thå currenô contentó oæ thå indicateä Systeí Filå ió +displayed. A file number is required. + +Options: + + None + + Comments: + + ZCPR³  Systeí Fileó arå referenceä bù somå oæ thå ZCPR³ +utilities¬  MENÕ  anä ALIAÓ iî particular®  SETFILÅ ió  thå +meanó  bù whicè thå contentó oæ theså filå namå  bufferó  ió +defined. + +Selected Error Messages: + + "Invaliä Filå Namå Numbeò (noô 1-4)¢ meanó thaô á valiä +filå  numbeò waó noô giveî afteò thå SETFILÅ verâ (SETFILÅ î +afn). + +Examples of Use: + + SETFILE 1 myfile.txt + - System File 1 is set to MYFILE.TXT + + SETFILE 4 + - the name of System File 4 is displayed +:SHCTRL Shell Stack Display and Manipulation + +Command: SHCTRL 1.0 + +Syntax: + + SHCTRL o + +Function: + + SHCTRÌ  ió  useä tï providå somå controì oæ  thå  ZCPR³ +Shelì  Stacë  froí thå commanä line®  Thå contentó  oæ  thå +Shelì Stacë caî bå displayeä anä poppeä onå leveì oò cleareä +completely. + + +Options: + + C - Clear the Shell Stack (no Shell is in effect) + D - Display Shell Stack + P - Pop the Shell Stack (the current Shell is stopped + and the next Shell on the stack is invoked) + +Comments: + + Onlù  onå  optioî maù bå useä iî conjunctioî  witè  thå +SHCTRÌ  command®  Anù characteró followinç thió optioî  arå +ignored. + + SHCTRÌ  ió  intendeä tï bå useä iî situationó  wherå  á +directorù changå ió desireä anä á Shell¬ sucè aó MENU¬ ió iî +execution®  Thå  Shelì Stacë caî bå popped¬  thå  directorù +changå   performed¬   anä  thå  originaì  Shelì   explicitlù +reinvoked. + + +Selected Error Messages: + + None - Help is printed if invalid option + +Examples of Use: + + SHCTRL P + - pop the Shell Stack one level + + SHCTRL D + - display the contents of the Shell Stack + + +:SHOW System Configuration Display and Error Handler + +Command: SHOW 1.0 + +Syntax: + + SHOW o + +Function: + + SHO× ió thå ZCPR³ Environmenô Displaù utility® Detailó +oæ thå ZCPR³ Environmenô Descriptor¬  whaô systeí facilitieó +arå  available¬  anä whaô thå statuó oæ theså facilitieó  ió +arå  somå  oæ thå itemó includeä iî  thå  numerouó  displayó +which are generated by SHOW. + + SHO× caî bå invokeä aó aî Erroò Handler¬  iî whicè caså +itó  Erroò Handleò displaù caî givå thå commanä linå  statuó +anä  itó otheò displays¬  sucè aó memorù examine¬  maù provå +useful to analyze the state of the ZCPR3 System. + + Options: + + E - Install SHOW as an Error Handler + (no SHOW displays are invoked) + +Comments: + SHOW provides the following displays to the user: + + 1. Package Data 3. ZCPR3 System + - Flow Command Package - Environment Descriptor + - Input/Output Package - Message Buffers + - Resident Command Package - CRT and Printer Data + - System File Definitions + 2. Environment Data + - Error Handler + - Memory Display Utility + - Named Directory Display + - Path Expression + - Shell Stack + + + SHO× ió screen-orienteä anä wilì noô functioî correctlù +withouô propeò Z3TCAÐ support®  Thå Environmenô  Descriptoò +MUST be installed with a valid Z3TCAP entry. + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + Trù  iô  - you'lì likå it¡  SHO×  ió  totallù  screen- +orienteä  anä  wilì noô begiî tï functioî correctlù  withouô +propeò  Z3TCAР support®  Iæ thå useò enteró  SHO×  withouô +proper support, the X command exits SHOW. + +:Z3INS ZCPR3 System Installation Program + +Command: Z3INS 1.0 + +Syntax: + + Z3INS ufn1 ufn2 + + UFN1 must be an Environment Descriptor + UFN2 must be a Z3INS Installation File + +Function: + + Z3INÓ  installó thå fileó nameä iî á Z3INÓ Installatioî +Filå  witè datá froí thå Environmenô  Descriptoò  specified® +All files must be ZCPR3 Utilities. + + Thå   defaulô   filå  typeó  arå  ENÖ  foò  UFN±   (thå +Environment Descriptor) and INS (the Installation File). + + +Options: + + None + +Comments: + + Z3INÓ ió thå installatioî prograí foò thå ZCPR³ System® +Alì utilitieó provideä iî thå ZCPR³ distributioî excepô  foò +ZEX may be installed for a target system by using Z3INS. + + Á  ZCPR³  Installatioî  Filå  ió  simplù  á  texô  filå +containinç twï typeó oæ linesº á commenô line¬ whicè beginó +witè  á semicoloî (;)¬  anä á linå containinç aî unambiguouó +file name, which is a file to be installed. Example: + + + ; This is an installation file for my new utilities + util1.com + util2.com + ; UTIL3 is really neat + util3.com + + -- Sample Z3INS Installation File -- + + + Caså ió noô significant®  Leadinç spaceó oî eacè  linå +are ignored. Any file name MUST be unambiguous. + + Thå  Environmenô  Descriptoò referenceä iî thå  commanä +linå ió á standarä ZCPR³ Systeî Environmenô descriptoò whicè +is created by assembling a file like SYSENV.ASM. + + +Selected Error Messages: + + Alì   erroò  messageó  arå  verù  completå  anä   self- +explanatory. + +Examples of Use: + + Z3INS SYS.ENV NEWFILES.INS + -- Install the files listed in NEWFILES.INS with + the data contained in SYS.ENV + + Z3INS NEWENV DIST + -- Install the files listed in DIST.INS with + the data contained in NEWENV.ENV + +:Z3LOC ZCPR3 System Segment Locator + +Command: Z3LOC 1.0 + +Syntax: + + Z3LOC o + +Function: + + Z3LOà ió useä tï locatå anä displaù thå  addresseó  oæ +thå runninç ZCPR³ Commanä Processoò Replacement¬  BDOS¬  anä +BIOS®  Iô maù alsï bå ruî undeò conventionaì CP/Í tï locatå +anä  displaù  thå addresseó oæ thå runninç CP/Í 2.²  Consolå +Command Processor, BDOS, and BIOS. + + Z3LOà ió alsï ablå tï displaù thå addresseó oæ á numbeò +oæ  ZCPR³ Systeí Segmentó anä datá areaó iæ thå Ú optioî  ió +given®  Thå  Ú optioî shoulä noô bå giveî iæ runninç  Z3LOà +under CP/M 2.2. + + +Options: + + Z - Display addresses and data on ZCPR3 System Segments + and data areas + +Comments: + + Iæ  thå  Ú optioî ió giveî (Ú shoulä onlù bå  giveî  iæ +runninç  Z3LOà undeò  ZCPR3)¬   thå  followinç   additionaì +address information is provided: + + ï Externaì Patè ï Residenô Commanä Package + o Input/Output Package o Flow Command Package + o Named Directory Buffer o Command Line Buffer + o Shell Stack o Environment Descriptor + o External FCB o ZCPR3 Message Buffer + o External Stack o Wheel Byte + + +Selected Error Messages: + + Z3LOà generateó nï erroò messages®  Aî invaliä optioî +invokes a help screen. + +Examples of Use: + + Z3LOC + -- run Z3LOC for CPR/CCP, BDOS, and BIOS display + (may be used this way under CP/M 2.2) + + Z3LOC Z + -- display ZCPR3 data as well + (may be used this way under ZCPR3 only) + + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/Z3UTIL3.HLP b/Images/Source/hd0/s0/u15/Z3UTIL3.HLP new file mode 100644 index 00000000..83d79d32 --- /dev/null +++ b/Images/Source/hd0/s0/u15/Z3UTIL3.HLP @@ -0,0 +1,237 @@ +Note ZCPR3 Utilities +CLEANDIR Physical Directory Cleanup +CMD Input Command Line +MU Memory Utility RCP +SHSET Define Shell Sequence +:Note ZCPR3 Utilities + + Thió  seô  oæ  ZCPR³ utilitieó arå  general-purposå  iî +naturå  anä  havå  beeî  provideä witè  thå  ZCPR³  Phaså  ² +release® Alì utilitieó excepô thå RCÐ caî bå installeä oî á +targeô ZCPR³ Systeí bù runninç Z3INS. + +:CLEANDIR Physical Directory Cleanup +Command: CLEANDIR 1.0 + +Syntax: + CLEANDIR dir: o +or + CLEANDIR o + +Function: + CLEANDIÒ "cleans¢ á physicaì disë directory®  Iô loadó +thå  directorù  oæ thå targeô disë  intï  memory¬  sortó  iô +alphabeticallù  withiî  eacè useò areá (ascendinç  ordeò  bù +default)¬  anä  writeó iô ouô tï disë witè Eµ filì oæ unuseä +directorù entries. + + Á DIRº  prefiø ió allowed¬  buô onlù thå disë referencå +ió meaningful¬  sï iæ "CLEANDIÒ ROOT:¢ ió issueä wherå ROOTº +is A15:, then disk A is cleaned. + +Options: + D - sort user areas and files in Descending Order + +Comments: + + CLEANDIR'ó  sorô  oî thå disë directorù buyó  thå  useò +several advantages: + + 1®  Utilitieó whicè sorô thå disë directorù  afteò +loadinç  it¬  likå XDIR¬  ruî fasteò sincå thå directorù  ió +already sorted. + + 2®  Thå  possibilitù oæ recoverinç fileó  bù  thå +UNERASÅ commanä ió increaseä iæ CLEANDIÒ haó beeî ruî oî thå +directorù recentlù beforå thå fileó werå erased®  Notå thaô +anù  eraseä fileó absolutelù cannoô bå recovereä bù  UNERASÅ +iæ  CLEANDIÒ  waó ruî betweeî thå timå theù werå eraseä  anä +UNERASE was executed. + + 3®  Uså  oæ DU2/DU³ tï looë aô thå  directorù  ió +facilitated if the directory is already sorted by CLEANDIR. + + +Selected Error Messages: + + Self-Explanatory + +Examples of Use: + + CLEANDIR + -- clean current disk in ascending order + + CLEANDIR A: D + -- clean disk A in descending order + + CLEANDIR TEXT: + -- clean the disk which the directory named TEXT + is defined for in ascending order + + CLEANDIR D + -- clean current disk in descending order + +:CMD Input Command Line +Command: CMD 1.0 + +Syntax: + + CMD cmd1;cmd2;... +or + CMD or CMD;cmd2;... + +Function: + + Iæ  CMÄ haó aî argument¬  iô buildó á ne÷ commanä  linå +whicè  beginó witè thió argumenô anä proceedó witè thå  resô +oæ thå commanä line® Foò example¬ thå firsô form: + + CMD cmd1;cmd2;... + +is translated into: + + cmd1;cmd2;... + + + Thió  ió  gooä  becauså sourceó sucè  aó  MENU¬  VMENU¬ +anä  VFILEÒ  caî  enteò thå "cmd1¢ variablå  froí  thå  useò +selection manually. + + Iæ CMÄ haó nï argument¬ thå useò ió prompteä foò input¬ +anä  thió inpuô ió inserteä intï thå commanä streaí  aô  thå +poinô oæ thå CMÄ command® Thió ió mucè morå useful¬ sucè aó +wheî  SHSEÔ  ió useä tï definå á shelì  sequence¬  anä  thió +sequencå  ió tï bå exiteä aô somå time®  Foò  example¬  thå +second form: + + CMD;cmd2;... + +is translated into: + + mycmd;cmd2;... + +if the user typed in "mycmd" in response to the prompt. + + CMÄ setó thå erroò messagå wheneveò iô runs®  ERROÒ ió +turned on if no line was input to CMD. + +Options: None + +Comments: + + CMÄ  waó  builô  foò uså specificallù  witè  thå  SHSEÔ +command¬  althï iô maù finä otheò applications® Thå probleí +thaô CMÄ addresseó ió thå caså wherå thå maiî prograí iî thå +shelì sequencå knowó nothinç abouô shells¬ anä iô ió desireä +to leave the sequence sometime. CMD provides this out. + + Foò  instance¬  iæ MU³ ió tï bå useä aó thå maiî shell¬ +then: + SHSET MU3;CMD + +wilì ruî MU3¬  allo÷ thå useò tï dï whaô hå wants¬  anä theî +reenter MU3. If the user entered the command + + + SHCTRL POP + +thå shelì stacë woulä bå poppeä anä thå "MU3;CMD¢ looð woulä +be broken. + + Additionally¬  CMÄ setó thå ERROÒ messagå oæ ZCPR3¬  sï +thaô  programó  oî dowî thå linå caî determinå iæ inpuô  waó +madå wheî CMÄ waó run®  Iæ thå useò simplù strikeó á RETURÎ +iî responså tï thå CMÄ prompt¬ aî erroò ió indicated® Testó +caî lateò bå made¬ likå IÆ ERROR¬ tï checë thió anä makå thå +command flow change depending on the outcome. + +Selected Error Messages: + + None - self-explanatory + +Examples of Use: + + See above +:MU Memory Utility RCP +Command: MU RCP 1.0A + +Syntax: + + MU <-- invoke MU at 100H +or MU address <-- invoke MU at indicated address + +Function: + + MÕ ió identicaì tï MU³ iî function¬  witè thå exceptioî +thaô   thå  È  commanä  (Hexadecimaì  Calculator©   ió   noô +supported®  Thå  differencå  betweeî MÕ anä MU³ ió thaô  MÕ +executeó aó aî RCÐ anä MU³ executeó aó á transient®  Aó  aî +RCP¬  MÕ  allowó thå useò tï examinå thå TPÁ withouô concerî +foò sidå effects¬  sï debugginç transientó ió simplifieä  bù +thió command®  Iô ió thå onlù maiî commanä iî thå DEBUG.RCÐ +provided in the ZCPR3 release. + + +Options: None + +Comments: + + MÕ maù bå invokeä aó á Shelì bù thå SHSEÔ command® Thå +à commanä caî bå useä froí withiî MÕ tï executå anù desireä +commanä line¬  includinç thå "SHCTRÌ POP¢ commanä whicè popó +MÕ  froí  thå Shelì Stack¬  terminatinç itó operatioî  aó  á +Shell. + +Selected Error Messages: None + +Examples of Use: + + MU <-- run MU + MU 0F400 <-- run MU but position at 0F400H + +:SHSET Define Shell Sequence +Command: SHSET 1.0 + +Syntax: + + SHSET cmd1;cmd2;... + +Function: + + SHSEÔ  defineó  thå  commandó whicè follo÷  iô  aó  thå +commanä sequencå tï bå placeä oî thå toð oæ thå shelì stack® +Iô placeó thió sequencå there®  Consequently¬ oncå SHSEÔ ió +executeä  oî á sequencå oæ commands¬  theså commandó wilì bå +cycleä  thrõ  timå anä timå agaiî untiì thå shelì  stacë  ió +cleared or popped. + +Options: + + None + + +Comments: + + SHSEÔ  provideó aî easù mechanisí tï makå  anù  commanä +sequencå  intï á shell®  Consequently¬  non-ZCPR³ programs¬ +likå  MBASIC¬  DBASÅ II¬  WORÄ STAR¬  anä otheró caî  becomå +shells under ZCPR3. + + Carå  shoulä bå takeî witè SHSEÔ iî allowinç thå  shelì +tï  bå  exiteä  iæ iô ió sï desired®  Thå  utilitù  CMÄ  ió +sometimes useful for this. + +Selected Error Messages: + + None - self-explanatory + + +Examples of Use: + + SHSET MBASIC;CMD + -- define the sequence MBASIC;CMD to be a shell + + SHSET WS + -- define Word Star to be a shell + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ZCPR3.AQM b/Images/Source/hd0/s0/u15/ZCPR3.AQM new file mode 100644 index 0000000000000000000000000000000000000000..64198f09a5db4895dcd4489b475bd23701dad6a0 GIT binary patch literal 44544 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 z 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 t9;0w8@hRSD^2-otl|sv}C~f|33;ir&9m` literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ZCPR3.ASM b/Images/Source/hd0/s0/u15/ZCPR3.ASM new file mode 100644 index 00000000..33f2a15f --- /dev/null +++ b/Images/Source/hd0/s0/u15/ZCPR3.ASM @@ -0,0 +1,2907 @@ + +************************************************************************* +* * +* Z C P R 3 -- Z80-Based Command Processor Replacement, Version 3.0 * +* * +* Copyright (c) 1984 by Richard Conn * +* Copyright US Government * +* All Rights Reserved * +* * +* ZCPR3 was written by Richard Conn, who assumes no responsibility * +* or liability for its use. ZCPR3 is released to the CP/M user * +* community for non-commercial use only. * +* * +* All registered users of CP/M are encouraged to freely copy and use * +* ZCPR3 and its associated utilities on their registered systems for * +* non-commercial purposes. * +* * +* Any commercial use of ZCPR3 is prohibited unless approved by the * +* author, Richard Conn, or his authorized agent, Echelon, Inc, in * +* writing. * +* * +* This is the RELEASE VERSION of ZCPR3. Dated: 21 Apr 84 * +* * +************************************************************************* + +; +; ZCPR3 -- CP/M Z80 Command Processor Replacement (ZCPR) Version 3.0 +; +; ZCPR3 is based upon ZCPR2 +; +;******** Structure Notes ******** +; +; ZCPR3 is divided into a number of major sections. The following +; is an outline of these sections and the names of the major routines +; located therein. +; +; Section Function/Routines +; ------- ----------------- +; +; -- Opening Comments, Equates, and Macro Definitions +; +; 0 JMP Table into ZCPR3 +; ENTRY +; +; 1 Buffers +; 1. Input Command Line and Default Command +; 2. File Type of COM File +; 3. SUBMIT File Control Block +; 4. Command File Control Block +; 5. Line Count Buffer +; 6. Resident Command Table +; +; 2 CPR Starting Modules +; CPR1 CPR RESTRT RS0 RS1 +; RS2 PARSER SCANNER DUSCAN DIRSCAN +; PASSCK SKSP TSTEOL INITFCB IFCB +; FILL PRNNF +; +; 3 Utilities +; CONIN CRLF CONOUT LCOUT LSTOUT +; PAGER READF READ BDOSB NOTE +; PRINTC PRINT PRIN1 GETDRV DEFDMA +; DMASET RESET BDOSJP LOGIN OPENF +; OPEN GRBDOS CLOSE SEARF SEAR1 +; SEARN SUBKIL DELETE GETUSR SETUSR +; +; 4 CPR Utilities +; SETUD UCASE PROMPT READBUF BREAK +; SDELM ADDAH LDIR NUMBER NUMERR +; HEXNUM FCBLOG SLOGIN WHLCHK CMDSER +; +; 5 CPR-Resident Commands and Functions +; 5A DIR DIRPR PRFN DIRPTR GETSBIT +; 5B ERA +; 5C LIST +; 5D TYPE +; 5E SAVE AMBCHK EXTEST +; 5F REN +; 5G JUMP +; 5H GO +; 5I COMDIR COM CALLPROG +; 5J GET MLOAD DLOGIN PRNLE PATH +; MPATH STACK PWLIN +; + +; +; The following MACLIB statements load all the user-selected equates +; which are used to customize ZCPR3 for the user's working environment. +; + MACLIB Z3BASE + MACLIB Z3HDR +; +CTRLC EQU 03H +TAB EQU 09H +LF EQU 0AH +CR EQU 0DH +; +WBOOT EQU BASE+0000H ;CP/M WARM BOOT ADDRESS +UDFLAG EQU BASE+0004H ;USER NUM IN HIGH NYBBLE, DISK IN LOW +BDOS EQU BASE+0005H ;BDOS FUNCTION CALL ENTRY PT +TFCB EQU BASE+005CH ;DEFAULT FCB BUFFER +TFCB2 EQU TFCB+16 ;2ND FCB +TBUFF EQU BASE+0080H ;DEFAULT DISK I/O BUFFER +TPA EQU BASE+0100H ;BASE OF TPA +BIOS EQU CCP+0800H+0E00H ;BIOS Location +; +$-MACRO ;FIRST TURN OFF THE EXPANSIONS +; +; MACROS TO PROVIDE Z80 EXTENSIONS +; MACROS INCLUDE: +; +; JR - JUMP RELATIVE +; JRC - JUMP RELATIVE IF CARRY +; JRNC - JUMP RELATIVE IF NO CARRY +; JRZ - JUMP RELATIVE IF ZERO +; JRNZ - JUMP RELATIVE IF NO ZERO +; DJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; PUTRG - SAVE REGISTERS +; GETRG - RESTORE REGISTERS +; +; @GENDD MACRO USED FOR CHECKING AND GENERATING +; 8-BIT JUMP RELATIVE DISPLACEMENTS +; +@GENDD MACRO ?DD ;;USED FOR CHECKING RANGE OF 8-BIT DISPLACEMENTS + IF (?DD GT 7FH) AND (?DD LT 0FF80H) + DB 100H,?DD ;Displacement Range Error + ELSE + DB ?DD + ENDIF ;;RANGE ERROR + ENDM +; +; +; Z80 MACRO EXTENSIONS +; +JR MACRO ?N ;;JUMP RELATIVE + IF I8080 ;;8080/8085 + JMP ?N + ELSE ;;Z80 + DB 18H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRC MACRO ?N ;;JUMP RELATIVE ON CARRY + IF I8080 ;;8080/8085 + JC ?N + ELSE ;;Z80 + DB 38H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRNC MACRO ?N ;;JUMP RELATIVE ON NO CARRY + IF I8080 ;;8080/8085 + JNC ?N + ELSE ;;Z80 + DB 30H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRZ MACRO ?N ;;JUMP RELATIVE ON ZERO + IF I8080 ;;8080/8085 + JZ ?N + ELSE ;;Z80 + DB 28H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRNZ MACRO ?N ;;JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + JNZ ?N + ELSE ;;Z80 + DB 20H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +DJNZ MACRO ?N ;;DECREMENT B AND JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + DCR B + JNZ ?N + ELSE ;;Z80 + DB 10H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +PUTRG MACRO + PUSH H ;;SAVE REGISTERS IN ORDER + PUSH D + PUSH B + ENDM +; +GETRG MACRO + POP B ;;RESTORE REGISTERS IN ORDER + POP D + POP H + ENDM +; +; END OF Z80 MACRO EXTENSIONS +; +; +;**** Section 0 **** +; + ORG CPRLOC +; +; ENTRY POINTS INTO ZCPR3 +; +; IF MULTCMD (MULTIPLE COMMANDS ON ONE LINE) is FALSE: +; If ZCPR3 is entered at location CPRLOC (at the JMP to CPR), then +; the default command in CMDLIN will be processed. If ZCPR3 is entered +; at location CPRLOC+3 (at the JMP to CPR1), then the default command in +; CMDLIN will NOT be processed. +; NOTE: Entry into ZCPR3 at CPRLOC is permitted, but in order for this +; to work, CMDLIN MUST be initialized to contain the command line (ending in 0) +; and the C register MUST contain a valid User/Disk Flag +; (the most significant nybble contains the User Number and the least +; significant nybble contains the Disk Number). +; +; IF MULTCMD is TRUE: +; Entry at CPR or CPR1 has the same effect. Multiple command processing +; will still continue. +; +; If MULTCMD is FALSE, a user program need only load the buffer +; CMDLIN with the desired command line, terminated by a zero, in order to +; have this command line executed. If MULTCMD is TRUE, a user program must +; load this buffer as before, but he must also set the NXTCHR pointer to +; point to the first character of the command line. +; +; NOTE: ***** (BIG STAR) ***** Programs such as SYNONYM3 will fail if +; multiple commands are enabled, but this feature is so very useful that I +; feel it is worth the sacrifice. Some ZCPR3 utilities, like ALIAS and MENU, +; require multiple commands, and this feature also permits simple chaining +; of programs to be possible under the ZCPR3 environment. +; +; Enjoy using ZCPR3! +; Richard Conn +; +ENTRY: + JMP CPR ; Process potential default command + JMP CPR1 ; Do NOT process potential default command +; +;**** Section 1 **** +; BUFFERS ET AL +; +; **** 1. INPUT COMMAND LINE AND DEFAULT COMMAND +; + IF MULTCMD ;MULTIPLE COMMANDS ALLOWED? +; +; For Multiple Commands, the command line buffer (CMDLIN) is located external +; to ZCPR3 so that it is not overlayed during Warm Boots; the same is true +; for NXTCHR, the 2nd key buffer. BUFSIZ and CHRCNT are not important and +; are provided so the BDOS READLN function can load CMDLIN directly and +; a user program can see how much space is available in CMDLIN for its text. +; +NXTCHR EQU Z3CL ;NXTCHR STORED EXTERNALLY (2 bytes) +BUFSIZ EQU NXTCHR+2 ;BUFSIZ STORED EXTERNALLY (1 byte) +CHRCNT EQU BUFSIZ+1 ;CHRCNT STORED EXTERNALLY (1 byte) +CMDLIN EQU CHRCNT+1 ;CMDLIN STORED EXTERNALLY (long) +BUFLEN EQU Z3CLS ;LENGTH OF BUFFER +; + ELSE +; +; If no multiple commands are permitted, these buffers are left internal +; to ZCPR3 so that the original CCP command line facility (as used by +; programs like SYNONYM3) can be left intact. +; +BUFLEN EQU 80 ;MAXIMUM BUFFER LENGTH +BUFSIZ: + DB BUFLEN ;MAXIMUM BUFFER LENGTH +CHRCNT: + DB 0 ;NUMBER OF VALID CHARS IN COMMAND LINE +CMDLIN: + DB ' ' ;DEFAULT (COLD BOOT) COMMAND + DB 0 ;COMMAND STRING TERMINATOR + DS BUFLEN-($-CMDLIN)+1 ;TOTAL IS 'BUFLEN' BYTES +; +NXTCHR: + DW CMDLIN ;POINTER TO COMMAND INPUT BUFFER +; + ENDIF ;MULTCMD +; + +; +; **** 2. FILE TYPE FOR COMMAND +; +COMMSG: + COMTYP ;USE MACRO FROM Z3HDR.LIB +; + IF SUBON ;IF SUBMIT FACILITY ENABLED ... +; +; **** 3. SUBMIT FILE CONTROL BLOCK +; +SUBFCB: + DB 1 ;DISK NAME SET TO DEFAULT TO DRIVE A: + DB '$$$' ;FILE NAME + DB ' ' + SUBTYP ;USE MACRO FROM Z3HDR.LIB + DB 0 ;EXTENT NUMBER + DB 0 ;S1 +SUBFS2: + DS 1 ;S2 +SUBFRC: + DS 1 ;RECORD COUNT + DS 16 ;DISK GROUP MAP +SUBFCR: + DS 1 ;CURRENT RECORD NUMBER +; + ENDIF ;SUBON +; +; **** 4. COMMAND FILE CONTROL BLOCK +; + IF EXTFCB NE 0 ;MAY BE PLACED EXTERNAL TO ZCPR3 +; +FCBDN EQU EXTFCB ;DISK NAME +FCBFN EQU FCBDN+1 ;FILE NAME +FCBFT EQU FCBFN+8 ;FILE TYPE +FCBDM EQU FCBFT+7 ;DISK GROUP MAP +FCBCR EQU FCBDM+16 ;CURRENT RECORD NUMBER +; + ELSE ;OR INTERNAL TO ZCPR3 +; +FCBDN: + DS 1 ;DISK NAME +FCBFN: + DS 8 ;FILE NAME +FCBFT: + DS 3 ;FILE TYPE + DS 1 ;EXTENT NUMBER + DS 2 ;S1 AND S2 + DS 1 ;RECORD COUNT +FCBDM: + DS 16 ;DISK GROUP MAP +FCBCR: + DS 1 ;CURRENT RECORD NUMBER +; + ENDIF ;EXTFCB +; + +; +; **** 5. LINE COUNT BUFFER +; + IF LTON +PAGCNT: + DB NLINES-2 ;LINES LEFT ON PAGE + ENDIF ;LTON +; +; **** 6. RESIDENT COMMAND TABLE +; EACH TABLE ENTRY IS STRUCTURED AS FOLLOWS: +; DB 'NAME' ;NCHARS LONG +; DW ADDRESS ;ADDRESS OF COMMAND +; +CMDTBL: + DB NCHARS ;SIZE OF TEXT IN COMMAND TABLE + CTABLE ;DEFINE COMMAND TABLE VIA MACRO IN Z3HDR FILE + DB 0 ;END OF TABLE +; + +; +;**** Section 2 **** +; ZCPR3 STARTING POINTS +; +; START ZCPR3 AND DON'T PROCESS DEFAULT COMMAND STORED IF MULTIPLE COMMANDS +; ARE NOT ALLOWED +; +CPR1: +; + IF NOT MULTCMD ;IF MULTIPLE COMMANDS NOT ALLOWED +; + XRA A ;SET END OF COMMAND LINE SO NO DEFAULT COMMAND + STA CMDLIN ;FIRST CHAR OF BUFFER +; + ENDIF ;NOT MULTCMD +; +; START ZCPR3 AND POSSIBLY PROCESS DEFAULT COMMAND +; +; NOTE ON MODIFICATION BY Ron Fowler: BDOS RETURNS 0FFH IN +; ACCUMULATOR WHENEVER IT LOGS IN A DIRECTORY, IF ANY +; FILE NAME CONTAINS A '$' IN IT. THIS IS NOW USED AS +; A CLUE TO DETERMINE WHETHER OR NOT TO DO A SEARCH +; FOR SUBMIT FILE, IN ORDER TO ELIMINATE WASTEFUL SEARCHES. +; +CPR: + LXI SP,STACK ;RESET STACK +; + IF NOT MULTCMD ;ONLY ONE COMMAND PERMITTED + LXI H,CMDLIN ;SET PTR TO BEGINNING OF COMMAND LINE + SHLD NXTCHR + ENDIF ;NOT MULTCMD +; + PUSH B + MOV A,C ;C=USER/DISK NUMBER (SEE LOC 4) + RAR ;EXTRACT USER NUMBER + RAR + RAR + RAR + ANI 0FH + STA CURUSR ;SET USER + CALL SETUSR ;SET USER NUMBER + CALL RESET ;RESET DISK SYSTEM +; + IF SUBON ;IF SUBMIT FACILITY ENABLED +; + STA RNGSUB ;SAVE SUBMIT CLUE FROM DRIVE A: +; + ENDIF ;SUBON +; + POP B + MOV A,C ;C=USER/DISK NUMBER (SEE LOC 4) + ANI 0FH ;EXTRACT CURRENT DISK DRIVE + STA CURDR ;SET IT + CNZ LOGIN ;LOG IN DEFAULT DISK IF NOT ALREADY LOGGED IN + CALL SETUD ;SET USER/DISK FLAG + CALL DEFDMA ;SET DEFAULT DMA ADDRESS +; + IF SUBON ;CHECK FOR $$$.SUB IF SUBMIT FACILITY IS ON +; + LXI D,SUBFCB ;CHECK FOR $$$.SUB ON CURRENT DISK +RNGSUB EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;2ND BYTE (IMMEDIATE ARG) IS THE RNGSUB FLAG + ORA A ;SET FLAGS ON CLUE + CNZ SEAR1 + STA RNGSUB ;SET FLAG (0=NO $$$.SUB) +; + ENDIF ;SUBON +; + JR RS1 ;CHECK COMMAND LINE FOR CONTENT +; +; PROMPT USER AND INPUT COMMAND LINE FROM HIM +; +RESTRT: + LXI SP,STACK ;RESET STACK +; +; READ INPUT LINE FROM USER OR $$$.SUB +; +RS0: +; + IF Z3MSG NE 0 + XRA A ;SET NO OUTPUT MESSAGE + STA Z3MSG+3 ;ZCPR3 COMMAND STATUS + INR A ;SET ZCPR3 INPUT PROMPT + STA Z3MSG+7 ;ZEX MESSAGE BYTE + ENDIF ;Z3MSG NE 0 +; + LXI H,CMDLIN ;SET POINTER TO FIRST CHAR IN COMMAND LINE + SHLD NXTCHR ;POINTER TO NEXT CHARACTER TO PROCESS + MVI M,0 ;ZERO OUT COMMAND LINE IN CASE OF WARM BOOT + PUSH H ;SAVE PTR + CALL READBUF ;INPUT COMMAND LINE FROM USER (OR $$$.SUB) +; + IF Z3MSG NE 0 + XRA A ;NORMAL PROCESSING RESUMED + STA Z3MSG+7 ;ZEX MESSAGE BYTE + ENDIF +; + POP H ;GET PTR + MOV A,M ;CHECK FOR COMMENT LINE + CPI COMMENT ;BEGINS WITH COMMENT CHAR? + JRZ RS0 ;INPUT ANOTHER LINE IF SO +; +; PROCESS INPUT LINE; NXTCHR PTS TO FIRST LETTER OF COMMAND +; +RS1: + LXI SP,STACK ;RESET STACK +; +; RETURN TO CURRENT DIRECTORY AND POINT TO NEXT CHAR IN COMMAND LINE +; + CALL DLOGIN ;RETURN TO CURRENT DIRECTORY + LHLD NXTCHR ;PT TO FIRST CHAR OF NEXT COMMAND + PUSH H ;SAVE PTR +; +; CAPITALIZE COMMAND LINE +; +CAPBUF: + MOV A,M ;CAPITALIZE COMMAND CHAR + CALL UCASE + MOV M,A + INX H ;PT TO NEXT CHAR + ORA A ;EOL? + JRNZ CAPBUF + POP H ;GET PTR TO FIRST CHAR IN LINE +; +; SET POINTER FOR MULTIPLE COMMAND LINE PROCESSING TO FIRST CHAR OF NEW CMND +; +RS2: + CALL SKSP ;SKIP OVER SPACES + ORA A ;END OF LINE? + JRZ RESTRT + CPI CTRLC ;ABORT CHAR? + JRZ RESTRT +; + IF MULTCMD ;MULTIPLE COMMANDS ALLOWED? + MOV A,M ;GET FIRST CHAR OF COMMAND + CPI CMDSEP ;IS IT A COMMAND SEPARATOR? + JRNZ RS3 + INX H ;SKIP IT IF IT IS + JR RS2 + ENDIF ;MULTCMD +; +RS3: + SHLD NXTCHR ;SET PTR TO FIRST CHAR OF NEW COMMAND LINE + SHLD CURCMD ;SAVE PTR TO COMMAND LINE FOR ERROR RETURN +; +; PARSE COMMAND LINE PTED TO BY HL +; + CALL PARSER ;PARSE ENTIRE COMMAND LINE +; +; CHECK FOR SHELL INVOCATION AND RUN IT IF SO +; + IF Z3MSG NE 0 + LDA Z3MSG+3 ;GET COMMAND STATUS + CPI 1 ;SHELL? + JZ RS4 + ENDIF ;Z3MSG NE 0 +; +; IF IFON AND FCP AVAILABLE, TRY TO RUN FROM FCP +; + IF IFON AND (FCP NE 0) + LXI H,FCP+5 ;PT TO COMMAND TABLE + CALL CMDSCAN ;SCAN TABLE + JZ CALLP ;RUN IF FOUND (NO LEADING CRLF) + ENDIF ;IFON AND (FCP NE 0) +; +; IF IFON, THEN CHECK FOR RUNNING IF AND FLUSH COMMAND LINE IF ENABLED +; + IF IFON + LXI H,Z3MSG+1 ;PT TO IF BYTE + MOV A,M ;GET IT + ORA A ;SEE IF ANY IF + JRZ RS4 ;CONTINUE IF NOT + INX H ;PT TO IF ACTIVE BYTE + ANA M ;SEE IF CURRENT IF IS ACTIVE + JRZ RS1 ;SKIP IF NOT + ENDIF ;IFON +RS4: +; +; IF DIR: PREFIX, HANDLE AS COM FILE +; +COLON EQU $+1 ;FLAG FOR IN-THE-CODE MODIFICATION + MVI A,0 ;COMMAND OF THE FORM 'DIR:COMMAND'? + ORA A ;0=NO + JNZ COMDIR ;PROCESS AS COM FILE IF DIR: FORM +; +; CHECK FOR RESIDENT COMMAND +; + CALL CMDSER ;SCAN FOR CPR-RESIDENT COMMAND + JZ CALLP ;RUN CPR-RESIDENT COMMAND WITH NO LEADING CRLF +; +; CHECK FOR RESIDENT COMMAND PACKAGE +; + IF RCP NE 0 + LXI H,RCP+5 ;PT TO RCP COMMAND TABLE + CALL CMDSCAN ;CHECK FOR RCP + JZ CALLPROG + ENDIF +; +; PROCESS AS COM FILE +; + JMP COM ;PROCESS COM FILE + +; +; ERROR PROCESSOR +; +ERROR: +; + IF SUBON ;IF SUBMIT FACILITY IS ON +; + CALL SUBKIL ;TERMINATE ACTIVE $$$.SUB IF ANY +; + ENDIF ;SUBON +; + CALL CRLF ;NEW LINE +; + IF Z3MSG NE 0 ;MESSAGES ENABLED? +; + LDA Z3MSG+3 ;WAS ERROR CAUSED BY NO SHELL? + ANI 1 ;BIT 0 SAYS ZCPR3 TRIED TO RUN A SHELL + JRNZ ERRSH ;ABORT SHELL + LDA Z3MSG ;GET ERROR HANDLER MESSAGE + MOV B,A ;... IN B + ORA A ;FLUSH AND RESUME? + JRZ ERR0 + MVI A,2 ;SET ERROR FLAG + STA Z3MSG+3 ;IN SHELL STATUS BUFFER + LHLD CURCMD ;PT TO BEGINNING OF ERROR + SHLD Z3MSG+4 ;SAVE IN MESSAGE + LXI H,Z3MSG+10H ;PT TO COMMAND LINE + SHLD NXTCHR ;NEXT CHARACTER TO EXECUTE + JMP RS1 ;RUN CONTENTS OF BUFFER +; +; CLEAR SHELL STACK AND RESTART COMMAND PROCESSING +; +ERRSH: +; + IF SHSTK NE 0 ;IF SHELL STACK AVAILABLE + XRA A ;CLEAR SHELL STACK + STA SHSTK + ENDIF +; + JMP RESTRT ;RESTART PROCESSING +ERR0: +; + ENDIF ;Z3MSG NE 0 +; +CURCMD EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + LXI H,0 ;PT TO BEGINNING OF COMMAND LINE +ERR1: + MOV A,M ;GET CHAR + ORA A ;END OF LINE? + JRZ ERR2 + CALL CONOUT ;PRINT COMMAND CHAR + INX H ;PT TO NEXT CHAR + JR ERR1 ;CONTINUE +ERR2: + CALL PRINT ;PRINT '?' + DB '?'+80H +ERR3: + JMP RESTRT ;RESTART CPR + +; +; PARSE COMMAND LINE PTED TO BY HL +; RETURN WITH NZ IF ERROR IN COMMAND NAME +; +PARSER: +; +; INITIALIZE THE COMMAND AND TOKEN FCBS +; + LXI D,FCBDN ;PT TO COMMAND FCB + CALL INITFCB ;INIT IT + LXI D,TFCB ;PT TO TOKEN FCB + CALL INITFCB ;INIT IT +; +; EXTRACT COMMAND NAME +; + LXI D,FCBDN ;PLACE COMMAND NAME INTO COMMAND FCB + CALL SCANNER ;EXTRACT COMMAND NAME + JRNZ ERROR ;ERROR RETURN +; +; CHECK FOR ERROR IN COMMAND NAME (FILE TYPE GIVEN) +; + LXI D,FCBFT ;PT TO FILE TYPE + LDAX D ;GET FIRST CHAR OF FILE TYPE + CPI ' ' ;MUST BE BLANK, OR ERROR + JRNZ ERROR ;ERROR RETURN +; +; SET TYPE OF COMMAND +; + PUSH H ;SAVE PTR TO NEXT BYTE + LXI H,COMMSG ;PLACE DEFAULT FILE TYPE (COM) INTO FCB + MVI B,3 ;3 BYTES + CALL LDIR + POP H ;GET PTR TO NEXT BYTE +; +; SET DIR: PREFIX FLAG +; +MYCOLON EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;PREVIOUS TOKEN CONTAINED A COLON? + STA COLON +; +; SAVE POINTER TO COMMAND TAIL FOR LATER COPY INTO TBUFF AND FIND END OF +; COMMAND LINE; THIS IS ALSO THE ENTRY POINT FOR CMDRUN FACILITY TO +; PARSE THE ENTIRE COMMAND LINE AS A TAIL +; +PARSET: + SHLD TAILSV ;SAVE PTR TO COMMAND TAIL + PUSH H ;SAVE PTR +CTAIL: + MOV A,M ;GET CHAR + CALL TSTEOL ;AT EOL? + JRZ CTAIL1 + INX H ;PT TO NEXT + JR CTAIL +CTAIL1: + SHLD NXTCHR ;SAVE PTR TO NEXT LINE + POP H ;GET PTR TO COMMAND TAIL +; +; EXTRACT FIRST TOKEN +; + CALL SKSP ;SKIP OVER SPACES + RZ ;DONE IF EOL OR END OF COMMAND + LXI D,TFCB ;STORE FIRST TOKEN IN TFCB + CALL SCANNER ;EXTRACT TOKEN +; +; EXTRACT SECOND TOKEN +; + CALL SKSP ;SKIP OVER SPACES + RZ ;DONE IF EOL OR END OF COMMAND + LXI D,TFCB+16 ;PT TO 2ND FCB AND FALL THRU TO SCANNER +; +; EXTRACT TOKEN FROM COMMAND LINE AND PLACE IT INTO FCB PTED TO BY DE +; FORMAT FCBDN FCB IF TOKEN RESEMBLES FILE NAME AND TYPE (FILENAME.TYP) +; ON INPUT, HL PTS TO NEXT CHAR AND DE PTS TO FCB +; ON OUTPUT, HL PTS TO DELIMITER AFTER TOKEN AND ZERO FLAG IS RESET +; IF '?' IS IN TOKEN +; +; ENTRY POINTS: +; SCANNER - LOAD TOKEN INTO FCB PTED TO BY DE +; +SCANNER: + XRA A ;A=0 + STAX D ;SET DEFAULT DRIVE + STA MYCOLON ;SET NO COLON + STA TEMPDR ;SET TEMPORARY DRIVE NUMBER TO DEFAULT + STA QMCNT ;ZERO QUESTION MARK COUNTER + LDA CURUSR ;GET CURRENT USER + STA TEMPUSR ;SET TEMPUSR + PUSH D ;SAVE PTR TO FIRST BYTE OF FCB + MVI B,8 ;8 CHARS MAX + CALL SCANF ;PLACE FIRST TOKEN INTO FILE NAME FIELD + POP D ;GET PTR TO FIRST BYTE OF FCB + MOV A,M ;GET TERMINATING CHAR + STA ENDCHAR ;SET ENDING CHAR + CPI ':' ;COLON? + JRNZ SCAN1 ;NO, WE HAVE A FILE NAME + STA MYCOLON ;SET COLON + INX H ;PT TO CHAR AFTER COLON +; +; SCAN TOKEN FOR DIR: FORM, WHICH MEANS WE HAVE A USER/DISK SPECIFICATION +; HL PTS TO CHAR AFTER COLON +; + IF (Z3NDIR NE 0) AND NDINCP ;NAMED DIRS AVAILABLE +; + IF DUFIRST ;DU: BEFORE DIR: +; +; CHECK FOR DU: FORM +; + IF ACCPTDU ;PERMIT DU: FORM + PUSH D ;SAVE PTR TO FCB DN + PUSH H ;SAVE PTR TO NEXT CHAR IN LINE + CALL DUSCAN ;CHECK FOR DU: FORM + POP H ;GET PTR TO NEXT CHAR + POP D ;GET PTR TO FCB + JRZ SUD1 ;GOT IT + ENDIF ;ACCPTDU +; +; CHECK FOR DIR: FORM +; + IF ACCPTND ;PERMIT DIR: FORM + PUSH D ;SAVE PTR TO FCB + PUSH H ;SAVE PTR TO NEXT CHAR + CALL DIRSCAN ;CHECK FOR DIR: FORM + POP H ;GET PTR TO NEXT CHAR + POP D ;GET PTR TO FCB + JRNZ SCAN1 ;ERROR IN PREFIX + ENDIF ;ACCPTND +SUD1: +; + ELSE ;DIR: BEFORE DU: +; +; CHECK FOR DIR: FORM +; + IF ACCPTND ;PERMIT DIR: FORM + PUSH D ;SAVE PTR TO FCB + PUSH H ;SAVE PTR TO NEXT CHAR + CALL DIRSCAN ;CHECK FOR DIR: FORM + POP H ;GET PTR TO NEXT CHAR + POP D ;GET PTR TO FCB + JRZ SUD1 ;GOT IT + ENDIF ;ACCPTND +; +; CHECK FOR DU: FORM +; + IF ACCPTDU ;PERMIT DU: FORM + PUSH D ;SAVE PTR TO FCB DN + PUSH H ;SAVE PTR TO NEXT CHAR IN LINE + CALL DUSCAN ;CHECK FOR DU: FORM + POP H ;GET PTR TO NEXT CHAR + POP D ;GET PTR TO FCB + JRNZ SCAN1 ;ERROR IN PREFIX + ENDIF ;ACCPTDU +SUD1: +; + ENDIF ;DUFIRST +; + ELSE ;DU ONLY +; +; CHECK FOR DU: FORM +; + IF ACCPTDU ;ALLOW DU: FORM + PUSH D ;SAVE PTR TO FCB DN + PUSH H ;SAVE PTR TO NEXT CHAR IN LINE + CALL DUSCAN ;CHECK FOR DU: FORM + POP H ;GET PTR TO NEXT CHAR + POP D ;GET PTR TO FCB + JRNZ SCAN1 ;ERROR IN PREFIX + ENDIF ;ACCPTDU +; + ENDIF ;(Z3NDIR NE 0) AND NDINCP +; +; SET DRIVE REFERENCED +; + LDA TEMPDR ;SET DRIVE + STAX D ;... IN FCB +; +; REINIT FCB PTED TO BY DE +; + PUSH D ;SAVE PTR + INX D ;PT TO FN FIELD + CALL IFCB ;ONLY PARTIAL INIT (17 BYTES TOTAL) + POP D +; +; EXTRACT FILENAME FIELD +; + XRA A + STA QMCNT ;ZERO QUESTION MARK COUNTER + PUSH D ;SAVE PTR TO FIRST BYTE OF FCB + MVI B,8 ;8 CHARS MAX + CALL SCANF ;STORE FILE NAME + POP D ;GET PTR TO FIRST BYTE OF FCB + MOV A,M ;GET OFFENDING CHAR + STA ENDCHAR ;SET ENDING CHAR +; +; SKIP TO FILE TYPE FIELD +; HL PTS TO NEXT CHAR, DE PTS TO DN FIELD OF FCB +; +SCAN1: +ENDCHAR EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;GET ENDING CHAR + XCHG + LXI B,8 ;PT TO BEFORE FILE TYPE FIELD OF FCB + DAD B + XCHG +; +; EXTRACT FILETYPE FIELD +; + MVI B,3 ;PREPARE TO EXTRACT FILE TYPE + CPI '.' ;IF '.', WE HAVE A TYPE + JRNZ SCAN2 + INX H ;PT TO CHAR AFTER '.' + PUSH D + CALL SCANF ;GET FCB FILE TYPE + POP D +SCAN2: +; +; SET USER NUMBER REFERENCED +; HL PTS TO NEXT CHAR, DE PTS TO BEFORE FCB FT +; + XCHG + LXI B,5 ;PT TO S1 FIELD + DAD B + XCHG + LDA TEMPUSR ;STORE USER NUMBER HERE + STAX D +; +; SKIP TO SPACE, CHAR AFTER =, OR EOL +; HL PTS TO NEXT CHAR IN LINE +; +SCAN3: + MOV A,M ;GET NEXT CHAR + CPI ' '+1 ;DONE IF LESS THAN SPACE + JRC SCAN4 + CALL TSTEOL ;EOL? + JRZ SCAN4 + INX H ;PT TO NEXT + CPI '=' ;EQUATE? + JRNZ SCAN3 +SCAN4: +; +; SET ZERO FLAG TO INDICATE PRESENCE OF '?' IN DIR:FILENAME.TYP +; +QMCNT EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;NUMBER OF QUESTION MARKS + ORA A ;SET ZERO FLAG + RET +; +; SCANF -- SCAN TOKEN PTED TO BY HL FOR A MAX OF B BYTES; PLACE IT INTO +; FILE NAME FIELD PTED TO BY DE; EXPAND AND INTERPRET WILD CARDS OF +; '*' AND '?'; ON EXIT, DE PTS TO TERMINATING DELIMITER +; +SCANF: + CALL SDELM ;DONE IF DELIMITER ENCOUNTERED + RZ + INX D ;PT TO NEXT BYTE IN FCB + CPI '*' ;IS (DE) A WILD CARD? + JRNZ SCANF1 ;CONTINUE IF NOT + MVI A,'?' ;PLACE '?' IN FCB AND DON'T ADVANCE HL IF SO + STAX D + CALL SCQ ;SCANNER COUNT QUESTION MARKS + JR SCANF2 +SCANF1: + STAX D ;STORE FILENAME CHAR IN FCB + INX H ;PT TO NEXT CHAR IN COMMAND LINE + CPI '?' ;CHECK FOR QUESTION MARK (WILD) + CZ SCQ ;SCANNER COUNT QUESTION MARKS +SCANF2: + DJNZ SCANF ;DECREMENT CHAR COUNT UNTIL 8 ELAPSED +SCANF3: + CALL SDELM ;8 CHARS OR MORE - SKIP UNTIL DELIMITER + RZ ;ZERO FLAG SET IF DELIMITER FOUND + INX H ;PT TO NEXT CHAR IN COMMAND LINE + JR SCANF3 +; +; INCREMENT QUESTION MARK COUNT FOR SCANNER +; THIS ROUTINE INCREMENTS THE COUNT OF THE NUMBER OF QUESTION MARKS IN +; THE CURRENT FCB ENTRY +; +SCQ: + PUSH H ;SAVE HL + LXI H,QMCNT ;GET COUNT + INR M ;INCREMENT + POP H ;GET HL + RET +; +; SCAN FOR AND EXTRACT DISK/USER INFO ASSUMING DU: FORM +; ON ENTRY, DE PTS TO FIRST BYTE OF FCB CONTAINING POSSIBLE DU FORM +; ON EXIT, ZERO FLAG SET MEAN OK AND TEMPDR AND TEMPUSR SET +; + IF ACCPTDU ;ALLOW DU: FORM +DUSCAN: + XCHG ;PTR IN HL + INX H ;PT TO FIRST BYTE OF FN + MOV A,M ;GET FIRST CHAR + CPI 'A' ;CONVERT POSSIBLE DRIVE SPEC TO NUMBER + JRC DUS1 ;IF LESS THAN 'A', MUST BE DIGIT +; +; SET DISK NUMBER (A=1) +; + SUI 'A'-1 ;CONVERT DRIVE NUMBER TO 1-16 + CPI MAXDISK+1 ;WITHIN RANGE? + JRNC DUSE1 ;INVALID DISK NUMBER + STA TEMPDR ;SET TEMPORARY DRIVE NUMBER + INX H ;PT TO NEXT CHAR + MOV A,M ;SEE IF IT IS A SPACE + CPI ' ' + RZ + CALL DIGCK ;CHECK FOR DIGIT + RC +; +; SET USER NUMBER +; +DUS1: + PUSH H ;SAVE PTR TO DIGITS + MVI B,2 ;UP TO 2 DIGITS +DUS1A: + MOV A,M ;CHECK FOR DIGIT OR SPACE + CPI ' ' ;IF SPACE, THEN NO DIGIT + JRZ DUS2 + CALL DIGCK ;CHECK FOR DIGIT + JRC DUSE + INX H + DJNZ DUS1A ;COUNT DOWN + MOV A,M ;3RD CHAR + CPI ' ' ;MUST BE SPACE + JRNZ DUSE +DUS2: + POP H + CALL NUM0A ;GET NUMBER + CPI MAXUSR+1 ;WITHIN LIMIT? + JRNC DUSE1 + STA TEMPUSR ;SAVE USER NUMBER + XRA A ;SET OK + RET +DUSE: + POP H ;CLEAR STACK +DUSE1: + XRA A + DCR A + RET +; + ENDIF ;ACCPTDU +; + IF (Z3NDIR NE 0) AND NDINCP AND ACCPTND +; +; SCAN FOR DIR FORM +; ON ENTRY, DE PTS TO FCB CONTAINING NAME TO CHECK FOR +; ON EXIT, IF FOUND, Z AND TEMPUSR AND TEMPDR SET +; +DIRSCAN: + XCHG ;PTR IN HL + INX H ;PT TO FN + LXI D,Z3NDIR ;PT TO FIRST ENTRY IN MEMORY-BASED DIR +DIRS1: + LDAX D ;GET NEXT CHAR + ORA A ;ZERO IF END OF DIR + JRZ DIRSERR + INX D ;PT TO DIR NAME + INX D + PUSH H ;SAVE PTR TO FILE NAME + PUSH D ;SAVE PTR TO DIR ENTRY + MVI B,8 ;MATCH? +DIRS2: + LDAX D ;GET BYTE + CMP M ;COMPARE + JRNZ DIRS3 + INX H ;PT TO NEXT + INX D + DJNZ DIRS2 ;COUNT DOWN +DIRS3: + POP D ;RESTORE REGS + POP H + JRZ DIRS4 + XCHG ;ADVANCE TO NEXT ENTRY + LXI B,16 ;8 BYTES FOR NAME + 8 BYTES FOR PASSWORD + DAD B + XCHG + JR DIRS1 +; +; NO DIR match +; +DIRSERR: + XRA A ;RETURN NZ + DCR A + RET +; +; DIR match +; +DIRS4: +; + IF PWCHECK + PUSH D ;SAVE PTR TO DE + LXI B,8 ;PT TO PW + XCHG ;HL PTS TO ENTRY + DAD B + CALL PASSCK ;CHECK FOR PW + POP D ;GET PTR + JNZ DIRSERR + ENDIF ;PWCHECK +; + DCX D ;PT TO USER + LDAX D ;GET USER + STA TEMPUSR + DCX D ;PT TO DISK + LDAX D ;GET IT + STA TEMPDR ;A=1 + XRA A ;SET Z + RET +; + ENDIF ;(Z3NDIR NE 0) AND NDINCP AND ACCPTND +; + IF PWCHECK +; +; CHECK FOR PASSWORD PTED TO BY HL +; RETURN WITH ZERO FLAG SET IF MATCH +; +PASSCK: + MOV A,M ;CHECK FOR NO PW + CPI ' ' + RZ + PUSH H ;SAVE PTR + CALL PRINT + DB CR,LF,'PW?',' '+80H + LXI D,PWLIN + MVI A,9 ;SET CHAR COUNT + STAX D + MVI C,10 ;BDOS READLN + PUSH D + CALL BDOS + POP H ;GET PTR TO BUFFER + INX H ;PT TO CHAR COUNT + MOV A,M ;GET CHAR COUNT + INX H ;PT TO FIRST CHAR + PUSH H ;SAVE PTR + CALL ADDAH ;HL PTS TO AFTER LAST CHAR + MVI M,' ' ;PLACE SPACE + POP D ;PT TO USER INPUT + POP H ;PT TO PASSWORD + MVI B,8 ;8 CHARS MAX +PWCK: + LDAX D ;GET NEXT CHAR + CALL UCASE ;CAPITALIZE USER INPUT + CMP M ;COMPARE FOR MATCH + RNZ ;NO MATCH + CPI ' ' ;DONE? + RZ + INX H ;PT TO NEXT + INX D + DJNZ PWCK + XRA A ;SET ZERO FLAG + RET +; + ENDIF ;PWCHECK + +; +; SKIP OVER SPACES PTED TO BY HL +; ON RETURN, ZERO FLAG SET MEANS WE HIT EOL OR CMDSEP +; +SKSP: + MOV A,M ;GET NEXT CHAR + INX H ;PT TO NEXT + CPI ' ' ;SPACE? + JRZ SKSP + DCX H ;PT TO NON-SPACE +; +; CHECK TO SEE IF CHAR IN A IS EOL OR CMDSEP +; +TSTEOL: + ORA A ;EOL? +; + IF MULTCMD ;MULTIPLE COMMANDS SUPPORTED? + RZ ;RETURN WITH FLAG + CPI CMDSEP ;COMMAND SEPARATOR? + ENDIF ;MULTCMD +; + RET + +; +; INIT FCB PTED TO BY DE +; +INITFCB: + XRA A + STAX D ;SET DEFAULT DISK (DN BYTE IS 0) + INX D ;PT TO FILE NAME FIELD + CALL IFCB ;FILL 1ST PART OF FCB; FALL THRU TO IFCB TO RUN AGAIN +; +; FILL FN, FT, EX, S1, S2, RC, AND FOLLOWING CR (OR DN) FIELDS +; +IFCB: + MVI B,11 ;STORE 11 SPACES + MVI A,' ' + CALL FILL + XRA A + STAX D ;SET EX TO ZERO + INX D + LDA CURUSR + STAX D ;SET S1 TO CURRENT USER + INX D + MVI B,3 ;STORE 3 ZEROES + XRA A ;FALL THRU TO FILL +; +; FILL MEMORY POINTED TO BY DE WITH CHAR IN A FOR B BYTES +; +FILL: + STAX D ;FILL WITH BYTE IN A + INX D ;PT TO NEXT + DJNZ FILL + RET +; +; No File Error Message +; +PRNNF: + CALL PRINTC ;NO FILE MESSAGE + DB 'No Fil','e'+80H + RET +; +;**** Section 3 **** +; I/O UTILITIES +; +; OUTPUT CHAR IN REG A TO CONSOLE AND DON'T CHANGE BC +; +CONIN: + MVI C,1 ;INPUT CHAR + CALL BDOS ;GET INPUT CHAR WITH ^S PROCESSING AND ECHO + JMP UCASE ;CAPITALIZE +; +; OUTPUT +; +CRLF: + MVI A,CR + CALL CONOUT + MVI A,LF ;FALL THRU TO CONOUT +; +CONOUT: + PUTRG ;SAVE REGS + MVI C,2 +OUTPUT: + MOV E,A + CALL BDOS + GETRG ;GET REGS + RET +; +LCOUT: + PUSH PSW ;OUTPUT CHAR TO CON: OR LST: DEP ON PRFLG +PRFLG EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;2ND BYTE (IMMEDIATE ARG) IS THE PRINT FLAG + ORA A ;0=TYPE + JRZ LC1 + POP PSW ;GET CHAR +; +; OUTPUT CHAR IN REG A TO LIST DEVICE +; +LSTOUT: + PUTRG ;SAVE REGISTERS + MVI C,5 + JR OUTPUT +LC1: + POP PSW ;GET CHAR + PUSH PSW + CALL CONOUT ;OUTPUT TO CON: + POP PSW +; + IF LTON + CPI LF ;CHECK FOR PAGING + RNZ +; +; PAGING ROUTINES +; PAGER COUNTS DOWN LINES AND PAUSES FOR INPUT (DIRECT) IF COUNT EXPIRES +; PAGSET SETS LINES/PAGE COUNT +; +PAGER: + PUSH H + LXI H,PAGCNT ;COUNT DOWN + DCR M + JRNZ PAGER1 ;JUMP IF NOT END OF PAGE + MVI M,NLINES-2 ;REFILL COUNTER +; +PGFLG EQU $+1 ;POINTER TO IN-THE-CODE BUFFER PGFLG + MVI A,0 ;0 MAY BE CHANGED BY PGFLG EQUATE + CPI PGDFLG ;PAGE DEFAULT OVERRIDE OPTION WANTED? +; + IF PGDFLT ;IF PAGING IS DEFAULT + JRZ PAGER1 ; PGDFLG MEANS NO PAGING + ELSE ;IF PAGING NOT DEFAULT + JRNZ PAGER1 ; PGDFLG MEANS PLEASE PAGINATE +; + ENDIF ;PGDFLG +; + PUSH B ;SAVE REG + CALL BIOS+9 ;BIOS CONSOLE INPUT ROUTINE + POP B ;GET REG + CPI 'C'-'@' ;^C + JZ RS1 ;RESTART CPR +PAGER1: + POP H ;RESTORE HL + + ENDIF ;LTON +; + RET ;RETURN FOR LC1 IF NOT LTON +; +; READ FILE BLOCK FUNCTION +; +READF: + LXI D,TFCB ;FALL THRU TO READ +READ: + MVI C,14H ;FALL THRU TO BDOSB +; +; CALL BDOS AND SAVE BC +; +BDOSB: + PUSH B + CALL BDOS + POP B + ORA A +; +; THIS RETURN IS FOR BDOSB AND FOR THE NULL FUNCTION CALLED NOTE +; +NOTE: + RET +; +; PRINT STRING (ENDING IN CHAR WITH MSB SET) PTED TO BY RET ADR +; START WITH +; +PRINTC: + CALL CRLF ;NEW LINE +; +PRINT: + XTHL ;GET PTR TO STRING + CALL PRIN1 ;PRINT STRING + XTHL ;RESTORE HL AND RET ADR + RET +; +; PRINT STRING (ENDING IN 0 OR BYTE WITH MSB SET) PTED TO BY HL +; +PRIN1: + MOV A,M ;GET NEXT BYTE + INX H ;PT TO NEXT BYTE + ORA A ;END OF STRING? + RZ ;STRING TERMINATED BY BINARY 0 + PUSH PSW ;SAVE FLAGS + ANI 7FH ;MASK OUT MSB + CALL CONOUT ;PRINT CHAR + POP PSW ;GET FLAGS + RM ;STRING TERMINATED BY MSB SET + JR PRIN1 +; +; BDOS FUNCTION ROUTINES +; +; +; RETURN NUMBER OF CURRENT DISK IN A +; +GETDRV: + MVI C,19H + JR BDOSJP +; +; SET 80H AS DMA ADDRESS +; +DEFDMA: + LXI D,TBUFF ;80H=TBUFF +DMASET: + MVI C,1AH + JR BDOSJP +; +RESET: + MVI C,0DH +BDOSJP: + JMP BDOS +; +LOGIN: + MOV E,A + MVI C,0EH + JR BDOSJP ;SAVE SOME CODE SPACE +; +OPENF: + XRA A + STA FCBCR + LXI D,FCBDN ;FALL THRU TO OPEN +; +OPEN: + MVI C,0FH ;FALL THRU TO GRBDOS +; +GRBDOS: + CALL BDOS + INR A ;SET ZERO FLAG FOR ERROR RETURN + RET +; +CLOSE: + MVI C,10H + JR GRBDOS +; +SEARF: + LXI D,TFCB ;SPECIFY FCB +SEAR1: + MVI C,11H + JR GRBDOS +; +SEARN: + MVI C,12H + JR GRBDOS +; +; CHECK FOR SUBMIT FILE IN EXECUTION AND ABORT IT IF SO +; + IF SUBON ;ENABLE ONLY IF SUBMIT FACILITY IS ENABLED +; +SUBKIL: + LXI H,RNGSUB ;CHECK FOR SUBMIT FILE IN EXECUTION + MOV A,M + ORA A ;0=NO + RZ + MVI M,0 ;ABORT SUBMIT FILE + LXI D,SUBFCB ;DELETE $$$.SUB +; + ENDIF ;SUBON +; +DELETE: + MVI C,13H + JR BDOSJP ;SAVE MORE SPACE +; +; GET/SET USER NUMBER +; +GETUSR: + MVI A,0FFH ;GET CURRENT USER NUMBER +SETUSR: + MOV E,A ;USER NUMBER IN E + MVI C,20H ;SET USER NUMBER TO VALUE IN E (GET IF E=FFH) + JR BDOSJP ;MORE SPACE SAVING +; +; END OF BDOS FUNCTIONS +; +; +;**** Section 4 **** +; ZCPR3 UTILITIES +; +; SET USER/DISK FLAG TO CURRENT USER AND DEFAULT DISK +; +SETUD: + CALL GETUSR ;GET NUMBER OF CURRENT USER + ANI 0FH ;MASK SURE 4 BITS + ADD A ;PLACE IT IN HIGH NYBBLE + ADD A + ADD A + ADD A + LXI H,CURDR ;MASK IN CURRENT DRIVE NUMBER (LOW NYBBLE) + ORA M ;MASK IN + STA UDFLAG ;SET USER/DISK NUMBER + RET +; +; CONVERT CHAR IN A TO UPPER CASE +; +UCASE: + ANI 7FH ;MASK OUT MSB + CPI 61H ;LOWER-CASE A + RC + CPI 7BH ;GREATER THAN LOWER-CASE Z? + RNC + ANI 5FH ;CAPITALIZE + RET +; +; PRINT DU (DIR) PROMPT +; +PROMPT: +; +; PRINT PROMPT (DU>) +; + CALL CRLF ;PRINT PROMPT +; + IF INCLDU ;IF DRIVE IN PROMPT + LDA CURDR ;CURRENT DRIVE IS PART OF PROMPT + ADI 'A' ;CONVERT TO ASCII A-P + CALL CONOUT + LDA CURUSR ;GET USER NUMBER +; + IF SUPRES ;IF SUPPRESSING USR # REPORT FOR USR 0 + ORA A + JRZ PRMPT2 + ENDIF ;SUPRES +; + CPI 10 ;USER < 10? + JRC PRMPT1 + SUI 10 ;SUBTRACT 10 FROM IT + PUSH PSW ;SAVE IT + MVI A,'1' ;OUTPUT 10'S DIGIT + CALL CONOUT + POP PSW +PRMPT1: + ADI '0' ;OUTPUT 1'S DIGIT (CONVERT TO ASCII) + CALL CONOUT +PRMPT2: + ENDIF ;INCLDU +; +; PRINT NDIR ENTRY IF ANY +; + IF INCLNDR AND (Z3NDIR NE 0) +; + LDA CURDR ;GET CURRENT DU IN BC + INR A + MOV B,A + LDA CURUSR + MOV C,A + LXI H,Z3NDIR ;SCAN DIRECTORY FOR MATCH +; +; MAIN LOOP FOR SCANNING NDR FOR DU IN BC +; +PRMPT3: + MOV A,M ;END OF NDR? + ORA A + RZ + INX H ;PT TO USER + CMP B ;COMPARE DISK + JRNZ PRMPT5 + MOV A,M ;COMPARE USER + CMP C + JRNZ PRMPT5 +; +; MATCH OF DU +; + IF INCLDU ;SEPARATE DU AND NDR WITH COLON + MVI A,':' ;PRINT SEPARATOR + CALL CONOUT + ENDIF ;INCLDU +; + MVI B,8 ;8 CHARS MAX +PRMPT4: + INX H ;PT TO NEXT CHAR + MOV A,M ;GET NEXT CHAR + CPI ' ' ;DONE IF SPACE + RZ + CALL CONOUT ;PRINT CHAR + DJNZ PRMPT4 ;COUNT DOWN + RET +; +; ADVANCE TO NEXT DU +; +PRMPT5: + LXI D,16+1 ;SKIP USER (1 BYTE) AND NAME/PW (16 BYTES) + DAD D + JR PRMPT3 ;CONTINUE SCAN +; + ENDIF ;INCLNDR AND (Z3NDIR NE 0) +; + RET +; +; INPUT NEXT COMMAND TO CPR +; This routine determines if a SUBMIT file is being processed +; and extracts the command line from it if so or from the user's console +; +READBUF: +; + IF SUBON ;IF SUBMIT FACILITY IS ENABLED, CHECK FOR IT +; + LDA RNGSUB ;SUBMIT FILE CURRENTLY IN EXECUTION? + ORA A ;0=NO + JRZ RB1 ;GET LINE FROM CONSOLE IF NOT + LXI D,SUBFCB ;OPEN $$$.SUB + PUSH D ;SAVE DE + CALL OPEN + POP D ;RESTORE DE + JRZ RB1 ;ERASE $$$.SUB IF END OF FILE AND GET CMND + LDA SUBFRC ;GET VALUE OF LAST RECORD IN FILE + DCR A ;PT TO NEXT TO LAST RECORD + STA SUBFCR ;SAVE NEW VALUE OF LAST RECORD IN $$$.SUB + CALL READ ;DE=SUBFCB + JRNZ RB1 ;ABORT $$$.SUB IF ERROR IN READING LAST REC + LXI D,CHRCNT ;COPY LAST RECORD (NEXT SUBMIT CMND) TO CHRCNT + LXI H,TBUFF ; FROM TBUFF + MVI B,BUFLEN ;NUMBER OF BYTES + CALL LDIR + LXI H,SUBFS2 ;PT TO S2 OF $$$.SUB FCB + MVI M,0 ;SET S2 TO ZERO + INX H ;PT TO RECORD COUNT + DCR M ;DECREMENT RECORD COUNT OF $$$.SUB + LXI D,SUBFCB ;CLOSE $$$.SUB + CALL CLOSE + JRZ RB1 ;ABORT $$$.SUB IF ERROR + CALL PROMPT ;PRINT PROMPT + MVI A,SPRMPT ;PRINT SUBMIT PROMPT TRAILER + CALL CONOUT + LXI H,CMDLIN ;PRINT COMMAND LINE FROM $$$.SUB + CALL PRIN1 + CALL BREAK ;CHECK FOR ABORT (ANY CHAR) + RNZ ;IF NO ^C, RETURN TO CALLER AND RUN + CALL SUBKIL ;KILL $$$.SUB IF ABORT + JMP RESTRT ;RESTART CPR +; +; INPUT COMMAND LINE FROM USER CONSOLE +; +RB1: + CALL SUBKIL ;ERASE $$$.SUB IF PRESENT +; + ENDIF ;SUBON +; +; IF SHELL STACKS ARE IMPLEMENTED, CHECK FOR CONTENT AT THIS TIME +; + IF SHSTK NE 0 +; + LXI H,SHSTK ;PT TO STACK + MOV A,M ;CHECK FIRST BYTE + CPI ' '+1 ;SEE IF ANY ENTRY + JRC RB2 ;GET USER INPUT IF NONE +; + ENDIF ;SHSTK NE 0 +; + IF (SHSTK NE 0) OR (Z3MSG NE 0) +; +RUNBUF: + LXI D,CMDLIN ;PT TO FIRST CHAR OF COMMAND LINE + MVI B,SHSIZE ;COPY SHELL LINE INTO COMMAND LINE BUFFER + CALL LDIR ;DO COPY + XCHG ;HL PTS TO END OF LINE + MVI A,1 ;SAY SHELL WAS INVOKED + STA Z3MSG+3 ;Z3 OUTPUT MESSAGE + JR RB3 ;STORE ENDING ZERO AND EXIT +RB2: +; + ENDIF ;(SHSTK NE 0) OR (Z3MSG NE 0) +; + CALL PROMPT ;PRINT PROMPT + MVI A,CPRMPT ;PRINT PROMPT TRAILER + CALL CONOUT + MVI C,0AH ;READ COMMAND LINE FROM USER + LXI D,BUFSIZ ;PT TO BUFFER SIZE BYTE OF COMMAND LINE + CALL BDOS +; +; STORE ZERO AT END OF COMMAND LINE +; + LXI H,CHRCNT ;PT TO CHAR COUNT + MOV A,M ;GET CHAR COUNT + INX H ;PT TO FIRST CHAR OF COMMAND LINE + CALL ADDAH ;PT TO AFTER LAST CHAR OF COMMAND LINE +RB3: + MVI M,0 ;STORE ENDING ZERO + RET +; +; CHECK FOR ANY CHAR FROM USER CONSOLE; RET W/ZERO SET IF NONE +; +BREAK: + PUTRG ;SAVE REGISTERS + CALL BIOS+6 ;CONSOLE STATUS CHECK + ORA A ;SET FLAGS + CNZ BIOS+9 ;GET INPUT CHAR WITH ^S PROCESSING + CPI 'S'-'@' ;PAUSE IF ^S + CZ BIOS+9 ;GET NEXT CHAR + GETRG ;RESTORE REGISTERS + CPI 'C'-'@' ;CHECK FOR ABORT + RET + +; +; CHECK TO SEE IF HL PTS TO DELIMITER; IF SO, RET W/ZERO FLAG SET +; +SDELM: + MOV A,M ;GET NEXT CHAR FROM LINE + CPI ' '+1 ;DELIM IF <= + JRC ZERO + CPI '=' ;'='=DELIMITER + RZ + CPI 5FH ;UNDERSCORE=DELIMITER + RZ + CPI '.' ;'.'=DELIMITER + RZ + CPI ':' ;':'=DELIMITER + RZ + CPI ',' ;','=DELIMITER + RZ +; + IF CMDSEP NE ';' + CPI ';' ;';'=DELIMITER + RZ + ENDIF +; + CPI '<' ;'<'=DELIMITER + RZ + CPI '>' ;'>'=DELIMITER + RZ + JMP TSTEOL ;CHECK FOR EOL +ZERO: + XRA A ;SET ZERO FLAG + RET +; +; ADD A TO HL (HL=HL+A) +; +ADDAH: + ADD L + MOV L,A + RNC + INR H + RET +; +; COPY FROM HL TO DE FOR B BYTES +; +LDIR: + MOV A,M ;GET BYTE + STAX D ;PUT BYTE + INX H ;PT TO NEXT + INX D + DJNZ LDIR + RET +; +; EXTRACT DECIMAL NUMBER FROM COMMAND LINE +; RETURN WITH VALUE IN REG A; ALL REGISTERS MAY BE AFFECTED +; +NUMBER: + LXI H,TFCB+8 ;PT TO END OF TOKEN FOR CONVERSION + MVI B,8 ;8 CHARS MAX +; +; CHECK FOR SUFFIX FOR HEXADECIMAL NUMBER +; +NUMS: + MOV A,M ;GET CHARS FROM END, SEARCHING FOR SUFFIX + DCX H ;BACK UP + CPI ' ' ;SPACE? + JRNZ NUMS1 ;CHECK FOR SUFFIX + DJNZ NUMS ;COUNT DOWN + JR NUM0 ;BY DEFAULT, PROCESS +NUMS1: + CPI NUMBASE ;CHECK AGAINST BASE SWITCH FLAG + JRZ HEXNUM +; +; PROCESS DECIMAL NUMBER +; +NUM0: + LXI H,TFCB+1 ;PT TO BEGINNING OF TOKEN +NUM0A: + LXI B,1100H ;C=ACCUMULATED VALUE, B=CHAR COUNT + ; (C=0, B=11) +NUM1: + MOV A,M ;GET CHAR + CALL SDELM ;DONE IF DELIMITER + JRZ NUM2 + INX H ;PT TO NEXT CHAR + CALL DIGCK ;CHECK FOR DIGIT IN A + JRC NUMERR + MOV D,A ;DIGIT IN D + MOV A,C ;NEW VALUE = OLD VALUE * 10 + RLC ;*2 + JRC NUMERR + RLC ;*4 + JRC NUMERR + ADD C ;*5 + JRC NUMERR + RLC ;*10 + JRC NUMERR + ADD D ;NEW VALUE = OLD VALUE * 10 + DIGIT + JRC NUMERR ;CHECK FOR RANGE ERROR + MOV C,A ;SET NEW VALUE + DJNZ NUM1 ;COUNT DOWN +; +; RETURN FROM NUMBER +; +NUM2: + MOV A,C ;GET ACCUMULATED VALUE + RET +; +; NUMBER ERROR ROUTINE FOR SPACE CONSERVATION +; +NUMERR: + JMP ERROR ;USE ERROR ROUTINE - THIS IS RELATIVE PT +; +; CHECK TO SEE IF A IS A DIGIT +; IF SO, RETURN ITS VALUE +; IF NOT, RETURN WITH CARRY SET +; +DIGCK: + SUI '0' ;DIGIT? + RC ;ERROR + CPI 10 ;RANGE? + JRNC DIGCK1 + CMC ;FLIP CARRY + RET +DIGCK1: + STC ;SET CARRY + RET +; +; EXTRACT HEXADECIMAL NUMBER FROM COMMAND LINE +; RETURN WITH VALUE IN REG A; ALL REGISTERS MAY BE AFFECTED +; +HEXNUM: + LXI H,TFCB+1 ;PT TO TOKEN FOR CONVERSION + LXI D,0 ;DE=ACCUMULATED VALUE + MVI B,11 ;B=CHAR COUNT +HNUM1: + MOV A,M ;GET CHAR + CPI ' ' ;DONE? + JRZ HNUM3 ;RETURN IF SO + CPI NUMBASE ;DONE IF NUMBASE SUFFIX + JRZ HNUM3 + SUI '0' ;CONVERT TO BINARY + JRC NUMERR ;RETURN AND DONE IF ERROR + CPI 10 ;0-9? + JRC HNUM2 + SUI 7 ;A-F? + CPI 10H ;ERROR? + JRNC NUMERR +HNUM2: + INX H ;PT TO NEXT CHAR + MOV C,A ;DIGIT IN C + MOV A,D ;GET ACCUMULATED VALUE + RLC ;EXCHANGE NYBBLES + RLC + RLC + RLC + ANI 0F0H ;MASK OUT LOW NYBBLE + MOV D,A + MOV A,E ;SWITCH LOW-ORDER NYBBLES + RLC + RLC + RLC + RLC + MOV E,A ;HIGH NYBBLE OF E=NEW HIGH OF E, + ; LOW NYBBLE OF E=NEW LOW OF D + ANI 0FH ;GET NEW LOW OF D + ORA D ;MASK IN HIGH OF D + MOV D,A ;NEW HIGH BYTE IN D + MOV A,E + ANI 0F0H ;MASK OUT LOW OF E + ORA C ;MASK IN NEW LOW + MOV E,A ;NEW LOW BYTE IN E + DJNZ HNUM1 ;COUNT DOWN +; +; RETURN FROM HEXNUM +; +HNUM3: + XCHG ;RETURNED VALUE IN HL + MOV A,L ;LOW-ORDER BYTE IN A + RET +; +; LOG INTO DU CONTAINED IN FCB PTED TO BY DE +; +FCBLOG: + PUSH D ;SAVE PTR TO FCB + XCHG + MOV A,M ;GET DRIVE + STA TEMPDR ;SET TEMP DRIVE + LXI B,13 ;PT TO S1 FIELD + DAD B + MOV A,M ;GET USER + STA TEMPUSR ;SET TEMP USER + CALL SLOGIN ;LOG IN + POP D ;GET PTR TO FCB + RET +; +; CHECK FOR SPECIFIED DRIVE AND LOG IT IN +; +SLOGIN: +TEMPDR EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;2ND BYTE (IMMEDIATE ARG) IS TEMPDR + ORA A ;0=CURRENT DRIVE + JRNZ SLOG1 + LDA CURDR ;LOG IN CURRENT DRIVE + INR A ;ADD 1 FOR NEXT DCR +SLOG1: + DCR A ;ADJUST FOR PROPER DISK NUMBER (A=0) + CALL LOGIN ;LOG IN NEW DRIVE +TEMPUSR EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;2ND BYTE IS USER TO BE SELECTED + JMP SETUSR ;LOG IN NEW USER +; +; ROUTINE TO CHECK FOR A WHEEL BYTE AS NON-ZERO +; IF WHEEL BYTE IS ZERO, THEN ABORT (POP STACK AND RETURN) +; +; + IF WHEEL ;WHEEL FACILITY? +WHLCHK: + LDA Z3WHL ;GET WHEEL BYTE + ORA A ;ZERO? + RNZ ;OK IF NOT + JMP ERROR ;PROCESS AS ERROR + ENDIF ;WHEEL +; + +; +; CMDTBL (COMMAND TABLE) SCANNER +; ON RETURN, HL CONTAINS ADDRESS OF COMMAND IF CPR-RESIDENT +; ON RETURN, ZERO FLAG SET MEANS CPR-RESIDENT COMMAND +; +CMDSER: + LXI H,CMDTBL ;PT TO COMMAND TABLE +; +; ENTRY POINT TO PERMIT RCP TABLE TO BE SCANNED +; +CMDSCAN: + MOV B,M ;GET SIZE OF COMMAND TEXT + INX H ;PT TO FIRST COMMAND +CMS1: + MOV A,M ;CHECK FOR END OF TABLE + ORA A + JRZ CMS5 + LXI D,FCBFN ;PT TO STORED COMMAND NAME + PUSH B ;SAVE SIZE OF COMMAND TEXT +CMS2: + LDAX D ;COMPARE AGAINST TABLE ENTRY + CMP M + JRNZ CMS3 ;NO MATCH + INX D ;PT TO NEXT CHAR + INX H + DJNZ CMS2 ;COUNT DOWN + LDAX D ;NEXT CHAR IN INPUT COMMAND MUST BE + CPI ' ' + JRNZ CMS4 + POP B ;CLEAR STACK + MOV A,M ;GET ADDRESS FROM TABLE INTO HL + INX H + MOV H,M + MOV L,A ;HL CONTAINS ADDRESS + XRA A ;ZERO FLAG SET FOR COMMAND FOUND + RET ;COMMAND IS RESIDENT (ZERO FLAG SET) +CMS3: + INX H ;SKIP TO NEXT COMMAND TABLE ENTRY + DJNZ CMS3 +CMS4: + POP B ;GET SIZE OF COMMAND TEXT + INX H ;SKIP ADDRESS + INX H + JR CMS1 +CMS5: + XRA A ;SET NZ + DCR A ;COMMAND NOT FOUND IF NZ + RET + +; +;**** Section 5 **** +; CPR-Resident Commands +; +; +;Section 5A +;Command: DIR +;Function: To display a directory of the files on disk +;Forms: +; DIR Displays the DIR files +; DIR S Displays the SYS files +; DIR A Display both DIR and SYS files +;Notes: +; The flag SYSFLG defines the letter used to display both DIR and +; SYS files (A in the above Forms section) +; The flag SOFLG defines the letter used to display only the SYS +; files (S in the above Forms section) +; The flag WIDE determines if the file names are spaced further +; apart (WIDE=TRUE) for 80-col screens +; The flag FENCE defines the character used to separate the file +; names +; + IF DIRON ;DIR ENABLED +; +DIR: + LXI D,TFCB ;PT TO TARGET FCB + PUSH D ;SAVE PTR + INX D ;PT TO FILE NAME + LDAX D ;GET FIRST CHAR + CPI ' ' ;IF , MAKE ALL WILD + JRNZ DIR1 + MVI B,11 ;11 BYTES + MVI A,'?' ;WILD + CALL FILL +DIR1: + POP D ;GET PTR TO FCB + LXI D,TFCB ;PT TO TARGET FCB + CALL FCBLOG ;LOG IN TEMP DISK/USER + LDA TFCB2+1 ;LOOK AT NEXT INPUT CHAR + MVI B,80H ;PREPARE FOR DIR-ONLY SELECTION + CPI ' ' + JRZ DIRPR ;THERE IS NO FLAG, SO DIR ONLY + MVI B,1 ;SET FOR BOTH DIR AND SYS FILES + CPI SYSFLG ;SYSTEM AND DIR FLAG SPECIFIER? + JRZ DIRPR ;GOT SYSTEM SPECIFIER + CPI SOFLG ;SYS ONLY? + JRNZ DIRPR + DCR B ;B=0 FOR SYS FILES ONLY + ;DROP INTO DIRPR TO PRINT DIRECTORY + ; THEN RESTART CPR +; + ENDIF ;DIRON +; +; DIRECTORY PRINT ROUTINE; ON ENTRY, B REG IS SET AS FOLLOWS: +; 0 FOR ONLY SYSTEM FILES, 80H FOR ONLY DIR FILES, 1 FOR BOTH +; + IF DIRON OR ERAON +; +DIRPR: + MOV A,B ;GET FLAG + STA SYSTST ;SET SYSTEM TEST FLAG + MVI E,0 ;SET COLUMN COUNTER TO ZERO + PUSH D ;SAVE COLUMN COUNTER (E) + CALL SEARF ;SEARCH FOR SPECIFIED FILE (FIRST OCCURRENCE) + JRNZ DIR3 + CALL PRNNF ;PRINT NO FILE MSG; REG A NOT CHANGED + XRA A ;SET ZERO FLAG IN CASE CALLED BY ERA + POP D ;RESTORE DE + RET +; +; ENTRY SELECTION LOOP; ON ENTRY, A=OFFSET FROM SEARF OR SEARN +; +DIR3: + CALL GETSBIT ;GET AND TEST FOR TYPE OF FILES + JRZ DIR6 + POP D ;GET ENTRY COUNT (= COUNTER) + MOV A,E ;GET ENTRY COUNTER + INR E ;INCREMENT ENTRY COUNTER + PUSH D ;SAVE IT + ANI 03H ;OUTPUT IF 4 ENTRIES PRINTED IN LINE + JRNZ DIR4 + CALL CRLF ;NEW LINE + JR DIR5 +DIR4: + CALL PRINT +; + IF WIDE +; + DB ' ' ;2 SPACES + DB FENCE ;THEN FENCE CHAR + DB ' ',' '+80H ;THEN 2 MORE SPACES +; + ELSE +; + DB ' ' ;SPACE + DB FENCE ;THEN FENCE CHAR + DB ' '+80H ;THEN SPACE +; + ENDIF ;WIDE +; +DIR5: +; MVI B,01H ;PT TO 1ST BYTE OF FILE NAME +; MOV A,B ;A=OFFSET + MVI A,1 ;PT TO 1ST BYTE OF FILE NAME + CALL DIRPTR ;HL NOW PTS TO 1ST BYTE OF FILE NAME + CALL PRFN ;PRINT FILE NAME +DIR6: + CALL BREAK ;CHECK FOR ABORT + JRZ DIR7 + CALL SEARN ;SEARCH FOR NEXT FILE + JRNZ DIR3 ;CONTINUE IF FILE FOUND +DIR7: + POP D ;RESTORE STACK + MVI A,0FFH ;SET NZ FLAG + ORA A + RET +; + ENDIF ;DIRON OR ERAON +; +; PRINT FILE NAME PTED TO BY HL +; +PRFN: + MVI B,8 ;8 CHARS + CALL PRFN1 + MVI A,'.' ;DOT + CALL CONOUT + MVI B,3 ;3 CHARS +PRFN1: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CALL CONOUT ; PRINT CHAR + DCR B ; COUNT DOWN + JRNZ PRFN1 + RET +; +; PT TO DIRECTORY ENTRY IN TBUFF WHOSE OFFSET IS SPECIFIED BY A AND C +; +DIRPTR: + LXI H,TBUFF ;PT TO TEMP BUFFER + ADD C ;PT TO 1ST BYTE OF DIR ENTRY + CALL ADDAH ;PT TO DESIRED BYTE IN DIR ENTRY + MOV A,M ;GET DESIRED BYTE + RET +; +; AFTER A SEARCH, RETURN NZ SET IF DESIRED TYPE OF FILE FOUND, Z IF NOT +; THIS ALGORITHM LOOKS AT THE SYSTEM BIT OF THE LOCATED FILE; THIS +; BIT IS SET TO 1 IF THE FILE IS A SYSTEM FILE AND 0 IF NOT A SYSTEM +; FILE. THE FOLLOWING EXCLUSIVE OR MASKS ARE APPLIED TO RETURN Z OR NZ +; AS REQUIRED BY THE CALLING PROGRAM: +; +; SYSTEM BYTE: X 0 0 0 0 0 0 0 (AFTER 80H MASK, X=1 IF SYS, 0 IF DIR) +; +; SYS-ONLY : 0 0 0 0 0 0 0 0 (XOR 0 = 0 if X=0, = 80H if X=1) +; DIR-ONLY : 1 0 0 0 0 0 0 0 (XOR 80H = 80h if X=0, = 0 if X=1) +; BOTH : 0 0 0 0 0 0 0 1 (XOR 1 = 81H or 1H, NZ in both cases) +; +GETSBIT: + DCR A ;ADJUST TO RETURNED VALUE + RRC ;CONVERT NUMBER TO OFFSET INTO TBUFF + RRC + RRC + ANI 60H + MOV C,A ;OFFSET INTO TBUFF IN C (C=OFFSET TO ENTRY) + MVI A,10 ;ADD 10 TO PT TO SYSTEM FILE ATTRIBUTE BIT + CALL DIRPTR ;A=SYSTEM BYTE + ANI 80H ;LOOK AT ONLY SYSTEM BIT +SYSTST EQU $+1 ;IN-THE-CODE VARIABLE + XRI 0 ; IF SYSTST=0, SYS ONLY; IF SYSTST=80H, DIR + ; ONLY; IF SYSTST=1, BOTH SYS AND DIR + RET ;NZ IF OK, Z IF NOT OK +; +;Section 5B +;Command: ERA +;Function: Erase files +;Forms: +; ERA Erase Specified files and print their names +; ERA V Erase Specified files and print their names, but ask +; for verification before Erase is done +;Notes: +; Several Key Flags affect this command: +; ERAV - If TRUE, the V option is enabled, and the character +; which turns it on (the V) is defined by ERDFLG +; ERAOK - If TRUE, the OK? prompt is enabled +; If ERAOK is FALSE, the verification feature is disabled regardless +; of what value ERAV has +; If ERAOK is TRUE, then: +; If ERAV is TRUE, verification is requested only if the V +; flag (actual letter defined by ERDFLG) is in the +; command line +; If ERAV is FALSE, verification is always requested, and a +; V flag in the command line will cause an error +; message to be printed (V?) after the ERA is completed +; + IF ERAON ;ERA ENABLED? +; +ERA: +; + IF WERA ;WHEEL FACILITY ENABLED? + CALL WHLCHK ;CHECK FOR IT + ENDIF ;WERA +; + IF ERAV AND ERAOK ;V FLAG AND OK? ENABLED? + LDA TFCB2+1 ;GET ERAFLG IF IT'S THERE + STA ERAFLG ;SAVE IT AS A FLAG + ENDIF ;ERAV +; + LXI D,TFCB ;PT TO TARGET FCB + CALL FCBLOG ;LOG INTO DU IN FCB + MVI B,1 ;DISPLAY ALL MATCHING FILES + CALL DIRPR ;PRINT DIRECTORY OF ERASED FILES + RZ ;ABORT IF NO FILES +; + IF ERAOK ;PRINT PROMPT +; + IF ERAV ;TEST VERIFY FLAG +; +ERAFLG EQU $+1 ;ADDRESS OF FLAG + MVI A,0 ;2ND BYTE IS FLAG + CPI ERDFLG ;IS IT A VERIFY OPTION? + JRNZ ERA2 ;SKIP PROMPT IF IT IS NOT +; + ENDIF ;ERAV +; + CALL PRINTC + DB 'OK to Erase','?'+80H + CALL CONIN ;GET REPLY + CPI 'Y' ;YES? + RNZ ;ABORT IF NOT +; + ENDIF ;ERAOK +; +ERA2: + LXI D,TFCB ;DELETE FILE SPECIFIED + JMP DELETE ;DELETE FILE AND REENTER CCP +; + ENDIF ;ERAON +; +;Section 5C +;Command: LIST +;Function: Print out specified file on the LST: Device +;Forms: +; LIST Print file (NO Paging) +;Notes: +; The flags which apply to TYPE do not take effect with LIST +; + IF LTON ;LIST AND TYPE ENABLED? +; +LIST: + MVI A,0FFH ;TURN ON PRINTER FLAG + JR TYPE0 +; +;Section 5D +;Command: TYPE +;Function: Print out specified file on the CON: Device +;Forms: +; TYPE Print file +; TYPE P Print file with paging flag +;Notes: +; The flag PGDFLG defines the letter which toggles the paging +; facility (P in the forms section above) +; The flag PGDFLT determines if TYPE is to page by default +; (PGDFLT=TRUE if TYPE pages by default); combined with +; PGDFLG, the following events occur -- +; If PGDFLT = TRUE, PGDFLG turns OFF paging +; If PGDFLT = FALSE, PGDFLG turns ON paging +; +TYPE: + XRA A ;TURN OFF PRINTER FLAG +; +; ENTRY POINT FOR CPR LIST FUNCTION (LIST) +; +TYPE0: + STA PRFLG ;SET FLAG +; + IF WLT ;WHEEL ON? + CALL WHLCHK ;CHECK WHEEL BYTE + ENDIF ;WLT +; + LDA TFCB2+1 ;GET PGDFLG IF IT'S THERE + STA PGFLG ;SAVE IT AS A FLAG + LXI D,TFCB ;PT TO TARGET FILE FCB + CALL AMBCHK ;CHECK FOR QUESTION MARKS IN TFCB + RZ ;ERROR IF ANY QUESTION MARKS + CALL FCBLOG ;LOG INTO DU IN FCB + LXI D,TFCB ;PT TO SELECT FILE + CALL OPEN ;OPEN SELECTED FILE + JZ PRNNF ;ABORT IF ERROR + CALL CRLF ;NEW LINE + MVI A,NLINES-1 ;SET LINE COUNT + STA PAGCNT + LXI B,080H ;SET CHAR POSITION AND TAB COUNT + ; (B=0=TAB, C=080H=CHAR POSITION) +; +; MAIN LOOP FOR LOADING NEXT BLOCK +; +TYPE2: + MOV A,C ;GET CHAR COUNT + CPI 80H + JRC TYPE3 + PUSH H ;READ NEXT BLOCK + PUSH B + CALL READF + POP B + POP H + RNZ ;ERROR? + MVI C,0 ;SET CHAR COUNT + LXI H,TBUFF ;PT TO FIRST CHAR +; +; MAIN LOOP FOR PRINTING CHARS IN TBUFF +; +TYPE3: + MOV A,M ;GET NEXT CHAR + ANI 7FH ;MASK OUT MSB + CPI 1AH ;END OF FILE (^Z)? + RZ ;RESTART CPR IF SO +; +; OUTPUT CHAR TO CON: OR LST: DEVICE WITH TABULATION +; + CPI CR ;RESET TAB COUNT? + JRZ TYPE4 + CPI LF ;RESET TAB COUNT? + JRZ TYPE4 + CPI TAB ;TAB? + JRZ TYPE5 +; +; OUTPUT CHAR AND INCREMENT CHAR COUNT +; + CALL LCOUT ;OUTPUT CHAR + INR B ;INCREMENT TAB COUNT + JR TYPE6 +; +; OUTPUT OR AND RESET TAB COUNT +; +TYPE4: + CALL LCOUT ;OUTPUT OR + MVI B,0 ;RESET TAB COUNTER + JR TYPE6 +; +; TABULATE +; +TYPE5: + MVI A,' ' ; + CALL LCOUT + INR B ;INCR POS COUNT + MOV A,B + ANI 7 + JRNZ TYPE5 +; +; CONTINUE PROCESSING +; +TYPE6: + INR C ;INCREMENT CHAR COUNT + INX H ;PT TO NEXT CHAR + CALL BREAK ;CHECK FOR ABORT + RZ ;RESTART IF SO + JR TYPE2 +; + ENDIF ;LTON +; +;Section 5E +;Command: SAVE +;Function: To save the contents of the TPA onto disk as a file +;Forms: +; SAVE +; Save specified number of pages (start at 100H) +; from TPA into specified file; is in DEC +; SAVE S +; Like SAVE above, but numeric argument specifies +; number of sectors rather than pages +;Notes: +; The MULTCMD flag (Multiple Commands Allowed) expands the code slightly, +; but is required to support multiple commands with SAVE +; The SECTFLG defines the letter which indicates a sector count +; (S in the Forms section above) +; + IF SAVEON ;SAVE ENABLED? +; +SAVE: +; + IF WSAVE ;WHEEL FACILITY? + CALL WHLCHK ;CHECK FOR WHEEL BYTE + ENDIF ;WSAVE +; + CALL NUMBER ;EXTRACT NUMBER FROM COMMAND LINE + MOV L,A ;HL=PAGE COUNT + MVI H,0 + PUSH H ;SAVE PAGE COUNT + LXI H,TFCB2 ;COPY 2ND FCB INTO POSITION OF FIRST + LXI D,TFCB + PUSH D ;SAVE PTR TO FCB + MVI B,14 ;14 BYTES + CALL LDIR + POP D ;GET PTR TO FCB + CALL AMBCHK ;CHECK FOR AMBIGUOUS + POP H + RZ ;ABORT IF SO + PUSH H + CALL EXTEST ;TEST FOR EXISTENCE OF FILE AND ABORT IF SO + MVI C,16H ;BDOS MAKE FILE + CALL GRBDOS + POP H ;GET PAGE COUNT + JRZ SAVE3 ;ERROR? + LXI D,TPA-128 ;PT TO START OF SAVE AREA (TPA) + DAD H ;DOUBLE 256-BYTE BLOCK COUNT FOR SECTOR COUNT + XCHG ;DE IS COUNT, HL IS NEXT BLOCK - 128 BYTES +SAVE1: + MOV A,D ;DONE WITH SAVE? + ORA E ;DE=0 IF SO + JRZ SAVE2 + DCX D ;COUNT DOWN ON SECTORS + PUSH D ;SAVE PTR TO BLOCK TO SAVE + LXI D,128 ;128 BYTES PER SECTOR + DAD D ;PT TO NEXT SECTOR + PUSH H ;SAVE ON STACK + XCHG ;DE IS ADDRESS + CALL DMASET ;SET DMA ADDRESS FOR WRITE (ADDRESS IN DE) + LXI D,TFCB ;WRITE SECTOR + MVI C,15H ;BDOS WRITE SECTOR + CALL BDOSB ;SAVE BC + POP H ;GET PTR TO NEXT SECTOR IN HL + POP D ;GET SECTOR COUNT IN DE + JRNZ SAVE3 ;WRITE ERROR? + JR SAVE1 ;CONTINUE +SAVE2: + LXI D,TFCB ;CLOSE SAVED FILE + CALL CLOSE + INR A ;ERROR? + JRNZ SAVE4 +SAVE3: + CALL PRNLE ;PRINT 'NO SPACE' ERROR +SAVE4: + JMP DEFDMA ;SET DMA TO 0080 AND RESTART CPR +; + ENDIF ;SAVEON +; + IF LTON OR SAVEON OR RENON ;FOR LIST/TYPE, SAVE, AND REN FCTS +; +; TEST FCB PTED TO BY DE TO SEE IF ANY ? CHARS IN IT +; RETURN WITH Z IF SO, NZ IF NOT; DON'T AFFECT DE +; +AMBCHK: + PUSH D + INX D ;PT TO FIRST CHAR + MVI B,11 ;11 CHARS +AMB1: + LDAX D ;GET CHAR + CPI '?' ;ERROR? + JRZ AMB2 + INX D ;PT TO NEXT + DJNZ AMB1 + DCR B ;SET NZ + POP D ;RESTORE PTR + RET +AMB2: + CALL PRINT + DB CR,LF,'AFN Erro','r'+80H + XRA A ;SET ZERO FLAG + POP D ;RESTORE PTR + RET +; + ENDIF ;LTON OR SAVEON +; +; Test File in FCB for existence, ask user to delete if so, and abort if he +; choses not to +; + IF SAVEON OR RENON ;FOR SAVE AND REN FUNCTIONS +; +EXTEST: + LXI D,TFCB ;PT TO FCB + PUSH D ;SAVE PTR + CALL FCBLOG ;LOG INTO DU + CALL SEARF ;LOOK FOR SPECIFIED FILE + POP D ;GET PTR TO FCB + RZ ;OK IF NOT FOUND + PUSH D ;SAVE PTR TO FCB + CALL PRINTC + DB 'Erase',' '+80H + LXI H,TFCB+1 ;PT TO FILE NAME FIELD + CALL PRFN ;PRINT IT + MVI A,'?' ;PRINT QUESTION + CALL CONOUT + CALL CONIN ;GET RESPONSE + POP D ;GET PTR TO FCB + CPI 'Y' ;KEY ON YES + JNZ ERR3 ;RESTART AS ERROR IF NO + PUSH D ;SAVE PTR TO FCB + CALL DELETE ;DELETE FILE + POP D ;GET PTR TO FCB + RET +; + ENDIF ;SAVEON OR RENON +; +;Section 5F +;Command: REN +;Function: To change the name of an existing file +;Forms: +; REN = Perform function +; + IF RENON ;REN ENABLED? +; +REN: +; + IF WREN ;WHEEL FACILITY? + CALL WHLCHK ;CHECK FOR WHEEL BYTE + ENDIF ;WREN +; + LXI D,TFCB ;CHECK FOR AMBIGUITY IN FIRST FILE NAME + CALL AMBCHK + RZ + LXI D,TFCB2 ;CHECK FOR AMBIGUITY IN SECOND FILE NAME + CALL AMBCHK + RZ + CALL EXTEST ;TEST FOR FILE EXISTENCE AND RETURN + ; IF FILE DOESN'T EXIST; ABORT IF IT DOES + MVI B,16 ;EXCHANGE NEW AND OLD FILE NAMES + LXI H,TFCB ;PT TO NEW + LXI D,TFCB2 ;PT TO OLD +REN0: + LDAX D ;GET OLD + MOV C,A + MOV A,M ;GET NEW + STAX D ;PUT NEW + MOV M,C ;PUT OLD + INX H ;ADVANCE + INX D + DJNZ REN0 +; +; PERFORM RENAME FUNCTION +; + LXI D,TFCB ;RENAME FILE + XRA A + STAX D ;SET CURRENT DISK + MVI C,17H ;BDOS RENAME FCT + CALL GRBDOS + RNZ + JMP PRNNF ;PRINT NO FILE MSG +; + ENDIF ;RENON +; +;Section 5G +;Command: JUMP +;Function: To Call the program (subroutine) at the specified address +; without loading from disk +;Forms: +; JUMP Call at ; is in HEX +; + IF JUMPON ;JUMP ENABLED? +; +JUMP: + +; + IF WJUMP ;WHEEL FACILITY? + CALL WHLCHK ;CHECK FOR WHEEL BYTE + ENDIF ;WJUMP +; + CALL HEXNUM ;GET LOAD ADDRESS IN HL + JR CALLPROG ;PERFORM CALL +; + ENDIF ;JUMPON +; +;Section 5H +;Command: GO +;Function: To Call the program in the TPA without loading +; loading from disk. Same as JUMP 100H, but much +; more convenient, especially when used with +; parameters for programs like STAT. Also can be +; allowed on remote-access systems with no problems. +; +;Form: +; GO +; + IF GOON ;GO ENABLED? +; +GO: + +; + IF WGO ;WHEEL FACILITY? + CALL WHLCHK ;CHECK FOR WHEEL BYTE + ENDIF ;WGO +; + LXI H,TPA ;Always to TPA + JR CALLPROG ;Perform call +; + ENDIF ;GOON +; +;Section 5I +;Command: COM file processing +;Function: To load the specified COM file from disk and execute it +;Forms: +;Notes: +; COM files are processed as follows -- +; 1. File name buffers are initialized and a preliminary +; error check is done +; 2. MLOAD is used to search for the file along the Path +; and load it into the TPA +; 3. CALLPROG is used to set up the buffers to be used by +; the transient (FCB at 5CH, FCB at 6CH, BUFF at 80H) +; and run the program +; The flag MULTCMD comes into play frequently here; it mainly serves +; to save space if MULTCMD is FALSE and enables Multiple +; Commands on the same line if MULTCMD is TRUE +; +COMDIR: + IF DRVPREFIX +; + LDA FCBFN ;ANY COMMAND? + CPI ' ' ;' ' MEANS COMMAND WAS 'DIR:' TO SWITCH + JRNZ COM ;NOT , SO MUST BE TRANSIENT OR ERROR +; +; ENTRY POINT TO SELECT USER/DISK VIA DIR: PREFIX +; + IF WDU ;WHEEL FACILITY? + CALL WHLCHK ;CHECK FOR WHEEL BYTE + ENDIF ;WDU +; + LDA FCBDN+13 ;GET SELECTED USER + CPI 16 ;OUT OF RANGE? + JNC ERROR + LXI D,FCBDN ;PT TO FCB + CALL FCBLOG ;LOG INTO DU + LDA TEMPUSR ;GET TEMPORARY USER + STA CURUSR ;SET CURRENT USER (MAKE PERMANENT) + LDA TEMPDR ;GET SELECTED DISK + ORA A ;IF 0 (DEFAULT), NO CHANGE + JRZ COMDR + DCR A ;ADJUST FOR LOGIN + STA CURDR ;SET CURRENT DRIVE +COMDR: + CALL SETUD ;SET UD BYTE + JMP RS1 ;RESUME COMMAND LINE PROCESSING +; + ENDIF ;DRVPREFIX +; +; PROCESS COMMAND +; +COM: +; + IF CMDRUN ;COMMAND RUN FACILITY AVAILABLE? + MVI A,0FFH ;USE IT IF AVAILABLE (MLOAD INPUT) + ENDIF ;CMDRUN +; + +; +; SET EXECUTION AND LOAD ADDRESS +; + LXI H,TPA ;TRANSIENT PROGRAM AREA + PUSH H ;SAVE TPA ADDRESS FOR EXECUTION + CALL MLOAD ;LOAD MEMORY WITH FILE SPECIFIED IN CMD LINE + POP H ;GET EXECUTION ADDRESS; FALL THRU TO CALLPROG +; +; CALLPROG IS THE ENTRY POINT FOR THE EXECUTION OF THE LOADED +; PROGRAM; ON ENTRY TO THIS ROUTINE, HL MUST CONTAIN THE EXECUTION +; ADDRESS OF THE PROGRAM (SUBROUTINE) TO EXECUTE +; +CALLPROG: + CALL CRLF ;LEADING NEW LINE +CALLP: + SHLD EXECADR ;PERFORM IN-LINE CODE MODIFICATION +; +; COPY COMMAND TAIL INTO TBUFF +; +TAILSV EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + LXI H,0 ;ADDRESS OF FIRST CHAR OF COMMAND TAIL + LXI D,TBUFF ;PT TO TBUFF + PUSH D ;SAVE PTR + MVI B,0 ;SET COUNTER + INX D ;PT TO FIRST CHAR +TAIL: + MOV A,M ;GET CHAR + CALL TSTEOL ;CHECK FOR EOL + JRZ TAIL1 + STAX D ;PUT CHAR + INX H ;PT TO NEXT + INX D + INR B ;INCREMENT COUNT + JR TAIL +TAIL1: + XRA A ;STORE ENDING ZERO + STAX D + POP H ;GET PTR + MOV M,B ;SAVE COUNT +; +; RUN LOADED TRANSIENT PROGRAM +; + CALL DEFDMA ;SET DMA TO 0080 +; +; EXECUTION (CALL) OF PROGRAM (SUBROUTINE) OCCURS HERE +; +EXECADR EQU $+1 ;CHANGE ADDRESS FOR IN-LINE CODE MODIFICATION + CALL TPA ;CALL TRANSIENT +; +; RETURN FROM EXECUTION +; + CALL DEFDMA ;SET DMA TO 0080, IN CASE PROG CHANGED IT + JMP RS1 ;RESTART CPR AND CONTINUE COMMAND PROCESSING +; +;Section 5J +;Command: GET +;Function: To load the specified file from disk to the specified address +;Forms: +; GET Load the specified file at the specified page; +; is in HEX +; + IF GETON ;GET ENABLED? +; +GET: +; + IF WGET ;WHEEL ON? + CALL WHLCHK ;CHECK WHEEL BYTE + ENDIF ;WGET +; + LXI H,TFCB2 ;COPY TFCB2 TO FCBDN FOR LOAD + LXI D,FCBDN + MVI B,14 ;14 BYTES (INCLUDES DU) + CALL LDIR + CALL HEXNUM ;GET LOAD ADDRESS IN HL +; +; FALL THRU TO MLOAD +; + IF CMDRUN ;COMMAND RUN FACILITY AVAILABLE? + XRA A ;NO CMDRUN IF FACILITY IS THERE (MLOAD INPUT) + ENDIF ;CMDRUN +; + ENDIF ;GETON + +; +; MEMORY LOAD SUBROUTINE +; +; LOAD MEMORY WITH THE FILE WHOSE NAME IS SPECIFIED IN THE COMMAND LINE +; ON INPUT, HL CONTAINS STARTING ADDRESS TO LOAD +; +; EXIT POINTS ARE A RETURN AND LOG IN CURRENT USER/DISK IF NO ERROR, +; A JMP TO ERROR IF COM FILE NOT FOUND OR A MESSAGE AND ABORT IF MEMORY FULL +; +MLOAD: +; + IF CMDRUN ;CMDRUN FACILITY? + STA CRFLAG ;SAVE FLAG + ENDIF ;CMDRUN +; + SHLD LOADADR ;SET LOAD ADDRESS + XCHG ;LOAD ADDRESS IN DE + CALL DMASET ;SET DMA ADDRESS +; +; MLA is a reentry point for a non-standard CP/M Modification +; The PATH command-search is implemented by this routine +; +MLA: +; +; Set attributes of COM files which match search +; + MVI A,COMATT ;CUSTOMIZER-SPECIFIED ATTRIBUTES + STA SYSTST ;SET FLAG + +; +; Analyze current path, generating a minimal, optimal absolute +; path equivalent in the buffer MPATH +; + IF MINPATH ;IF MINIMUM PATH SEARCH EMPLOYED + XRA A + STA MPATH ;SET EMPTY PATH +; + IF DRVPREFIX ;PAY ATTENTION TO DU:COM PREFIX? +; +; Convert DU in FCBDN into absolute expression in MPATH +; + LXI D,MPATH ;BUILD MPATH BUFFER + LXI H,FCBDN ;HL PTS TO FCB, DE PTS TO MPATH + MOV A,M ;GET DRIVE + ORA A ;SELECT CURRENT + JRNZ MLAMPD + LDA CURDR ;SET CURRENT DRIVE + INR A ;ADJUST FOR PATH +MLAMPD: + STAX D ;SET DRIVE + INX D ;PT TO USER + LXI B,13 ;PT TO USER + DAD B + MOV A,M ;GET USER + STAX D ;SAVE USER + INX D ;PT TO NEXT + XRA A ;A=0 + STAX D ;STORE ENDING 0 IN MPATH + ENDIF ;DRVPREFIX +; + IF SCANCUR ;SCAN CURRENT DU AT ALL TIMES? + LDA CURDR ;GET CURRENT DRIVE + INR A ;ADD 1 FOR A=1 + MOV B,A + LDA CURUSR ;GET CURRENT USER + MOV C,A ;BC=DU + LXI H,PATH ;PT TO FIRST PATH ELEMENT + JR MPATHBC ;PLACE ENTRY INTO MPATH + ENDIF ;SCANCUR +; +; Convert symbolic path at PATH into absolute path at MPATH +; + LXI H,PATH ;PT TO SYMBOLIC PATH +MPATH1: + MOV A,M ;CHECK FOR END OF SYMBOLIC PATH + ORA A ;0=END OF PATH + JRZ MPATH7 +; +; Place absolute form for current path element in BC +; + ANI 7FH ;MASK OUT SYSTEM BIT + CPI CURIND ;CHECK FOR CURRENT DRIVE + JRNZ MPATH2 + LDA CURDR ;GET CURRENT DRIVE + INR A ;ADJUST FOR A=1 +MPATH2: + MOV B,A ;DRIVE IN B (1=A) + INX H ;PT TO USER + MOV A,M ;GET USER + INX H ;PT TO NEXT ELEMENT + ANI 7FH ;MASK OUT SYSTEM BIT + CPI CURIND ;CHECK FOR CURRENT USER + JRNZ MPATH3 + LDA CURUSR ;GET CURRENT USER +MPATH3: + MOV C,A ;SET USER IN C +; +; Scan MPATH for DU element in BC +; +MPATHBC: + PUSH H ;SAVE PTR TO NEXT PATH ELEMENT + LXI H,MPATH ;PT TO MINIMUM PATH +MPATH4: + MOV A,M ;CHECK FOR END OF PATH + ORA A + JRZ MPATH6 + INX H ;PT TO USER + CMP B ;CHECK FOR DISK MATCH + JRNZ MPATH5 + MOV A,M ;GET USER + CMP C ;CHECK FOR USER MATCH + JRNZ MPATH5 + POP H ;MATCH, SO BC IS DUPLICATE + JR MPATH1 ;CONTINUE +MPATH5: + INX H ;PT TO NEXT ELEMENT + JR MPATH4 +; +; No match, so BC is a unique DU and store it in path +; +MPATH6: + MOV M,B ;STORE DRIVE + INX H + MOV M,C ;STORE USER + INX H + MVI M,0 ;STORE ENDING 0 + POP H ;PT TO NEXT ENTRY + JR MPATH1 ;CONTINUE +; +; MPATH now contains the minimal path +; +MPATH7: +; + ENDIF ;MINPATH +; +; Non-MINPATH Processing: +; If DRVPREFIX or SCANCUR are TRUE, look in DU in FCBDN +; + IF (NOT MINPATH) AND (DRVPREFIX OR SCANCUR) + LXI D,FCBDN ;LOOK FOR FILE + CALL FCBLOG ;LOG INTO FCB + CALL SEAR1 + JNZ MLA4 + ENDIF ;(NOT MINPATH) AND (DRVPREFIX OR SCANCUR) +; +; Select current disk at all times +; + XRA A + STA FCBDN ;SET CURRENT DISK +MLARUN: +; +; The following selects the path to be followed; if the Minimal Path is +; available, it is followed; else, the Symbolic Path is followed +; + IF MINPATH ;IF MINIMAL PATH USED + LXI H,MPATH ;PT TO MINIMAL PATH + + ELSE ;NOT MINPATH + LXI H,PATH ;PT TO SYMBOLIC PATH + + ENDIF ;MINPATH +; +; This is the main path search loop; HL pts to the next path element +; +MLA0: + MOV A,M ;GET DRIVE + ORA A ;0=DONE=COMMAND NOT FOUND +; + IF NOT CMDRUN ;ERROR ABORT IF NO COMMAND RUN FACILITY + JZ ERROR ;PATH EXHAUSTED +; + ELSE ;CONTINUE PROCESSING FOR COMMAND RUN +; +; CMDRUN Facility +; + JRNZ NOCRUN ;NOT READY FOR CMD RUN YET +CRFLAG EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;CHECK CRFLAG + ORA A ;0=NO + JZ ERROR ;PROCESS AS ERROR IF CMD RUN EXHAUSTED +; + IF ROOTONLY ;ONLY LOOK FOR EXT COMMAND PROCESSOR AT ROOT + PUSH H ;SAVE PTR TO PATH END + ENDIF ;ROOTONLY +; + XRA A ;DO NOT REENTER THIS CODE + STA CRFLAG ;SET ZERO FOR NO ENTRY + LXI H,CFCB ;SET CFCB AS COMMAND + LXI D,FCBDN ;... BY COPYING IT INTO FCBDN + MVI B,12 ;ONLY 12 BYTES REQUIRED + CALL LDIR + LHLD CURCMD ;GET PTR TO CURRENT COMMAND LINE + CALL PARSET ;PARSE AS COMMAND TAIL +; + IF ROOTONLY ;LOOK FOR EXT COMMAND PROCESSOR AT ROOT ONLY? + JR MLA3RT ;PROCESS FROM PATH END + ELSE ;FOLLOW PATH LOOKING FOR EXT COMMAND PROCESSOR +; + JR MLARUN ;NOW TRY THE RUN FROM THE PATH +; + ENDIF ;ROOTONLY +; +CFCB: + CMDFCB ;FCB DEFINING INITIAL COMMAND +NOCRUN: + ENDIF ;CMDRUN +; +; LOOK FOR COMMAND IN DIRECTORY PTED TO BY HL; DRIVE IN A +; + IF NOT MINPATH + CPI CURIND ;CURRENT DRIVE SPECIFIED? + JRNZ MLA1 ;SKIP DEFAULT DRIVE SELECTION IF SO + LDA CURDR ;GET CURRENT DRIVE + INR A ;SET A=1 + ENDIF ;NOT MINPATH +; +MLA1: + STA TEMPDR ;SELECT DIFFERENT DRIVE IF NOT CURRENT + INX H ;PT TO USER NUMBER + MOV A,M ;GET USER NUMBER + INX H ;PT TO NEXT ENTRY IN PATH + PUSH H ;SAVE PTR +; + IF NOT MINPATH + ANI 7FH ;MASK OUT SYSTEM BIT + CPI CURIND ;CURRENT USER SPECIFIED? + JRNZ MLA2 ;DO NOT SELECT CURRENT USER IF SO + LDA CURUSR ;GET CURRENT USER NUMBER +MLA2: + ENDIF ;NOT MINPATH +; + STA TEMPUSR ;SET TEMPORARY USER NUMBER + CMA ;FLIP BITS SO SYSTEM BIT IS 0 IF SYS-ONLY + ANI 80H ;MASK FOR ONLY NOT OF SYSTEM BIT TO SHOW + JRNZ MLA3 ;DON'T SET FLAG IF ORIGINALLY SYSTEM BIT=0 + STA SYSTST ;TEST FLAG IS 0 FOR SYS-ONLY, 1 FOR BOTH +MLA3: + CALL SLOGIN ;LOG IN PATH-SPECIFIED USER/DISK +MLA3RT: + LXI D,FCBDN ;PT TO FCB + CALL SEAR1 ;LOOK FOR FILE + POP H ;GET PTR TO NEXT PATH ENTRY + JRZ MLA0 ;CONTINUE PATH SEARCH IF SEARCH FAILED + ;LOAD IF SEARCH SUCCEEDED +; +; FILE FOUND -- PERFORM SYSTEM TEST AND PROCEED IF APPROVED +; +MLA4: + PUSH H ;SAVE PTR + CALL GETSBIT ;CHECK SYSTEM BIT + POP H ;GET PTR + JRZ MLA0 ;CONTINUE IF NO MATCH + CALL OPENF ;OPEN FILE FOR INPUT +LOADADR EQU $+1 ;MEMORY LOAD ADDRESS (IN-LINE CODE MOD) + LXI H,TPA ;SET START ADDRESS OF MEMORY LOAD +MLA5: + MVI A,ENTRY/256-1 ;GET HIGH-ORDER ADR OF JUST BELOW CPR + CMP H ;ARE WE GOING TO OVERWRITE THE CPR? + JRC PRNLE ;ERROR IF SO + PUSH H ;SAVE ADDRESS OF NEXT SECTOR + XCHG ;... IN DE + CALL DMASET ;SET DMA ADDRESS FOR LOAD + LXI D,FCBDN ;READ NEXT SECTOR + CALL READ + POP H ;GET ADDRESS OF NEXT SECTOR + JRNZ MLA6 ;READ ERROR OR EOF? + LXI D,128 ;MOVE 128 BYTES PER SECTOR + DAD D ;PT TO NEXT SECTOR IN HL + JR MLA5 +; +MLA6: + DCR A ;LOAD COMPLETE + JRNZ PRNLE ;MEMORY FULL IF NZ +; +; RETURN TO CURRENT DIRECTORY +; +DLOGIN: +CURDR EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;PREP TO LOG IN CURRENT DRIVE + CALL LOGIN ;LOGIN CURRENT DRIVE +CURUSR EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;PREP TO LOG IN CURRENT USER NUMBER + JMP SETUSR ;LOG IN NEW USER + +; +; LOAD ERROR +; +PRNLE: + CALL PRINTC + DB 'Ful','l'+80H + JMP RESTRT ;RESTART ZCPR + +;***** + +; +; DEFAULT PATH USED FOR PATH COMMAND-SEARCH +; + IF EXPATH EQ 0 ;USE THIS PATH? +; +PATH: + IPATH ;PATH DEFINED IN Z3HDR.LIB +; + ENDIF ;INTPATH +; + +;***** + +; +; INTERNAL MINIMUM PATH +; + IF MINPATH +MPATH: + DS EXPATHS+3 ;SIZE OF PATH, MAX + ; (+2 FOR DU:COM PREFIX, +1 FOR ENDING 0) + ENDIF ;MINPATH + +;***** + IF EXTSTK NE 0 ;EXTERNAL STACK + +STACK EQU EXTSTK+48 ;SET TOP-OF-STACK ADDRESS + + ELSE +; +; STACK AREA +; + DS 48 ;STACK AREA +STACK EQU $ ;TOP OF STACK +; + ENDIF ;INTSTACK +; + IF PWCHECK +PWLIN EQU STACK-48 ;PLACE LINE AT BOTTOM OF STACK + ENDIF ;PWCHECK +; +; The following will cause an error message to appear if +; the size of ZCPR3 is over 2K bytes. +; + IF ($ GT CPRLOC+800H) +ZCPR3ER EQU NOVALUE ;ZCPR3 IS LARGER THAN 2K BYTES + ENDIF + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ZCPR3.HLP b/Images/Source/hd0/s0/u15/ZCPR3.HLP new file mode 100644 index 00000000..67d3bf49 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ZCPR3.HLP @@ -0,0 +1,106 @@ +Overview of ZCPR3 Help Files and Other ZCPR3 Details +ALIAS Alias Scripts +CMDFILES SUB and ZEX Command File Processors +COMPARE Comparison Utilities +DIRS Directory Display Utilities +DU3 Disk Maniupulation Utility +HELPSYS Online Documentation System +IF Flow Commands +IO Redirectable Input/Output System +MENU MENU Shell +NDIRS Named Directory Manipulation Utilities +SH Named-Variable Shell +SYSRCP System Resident Command Package +TINIT Terminal Initialization +VFILER Screen-Oriented File Manipulation Utility +Z3RES ZCPR3 CPR-Resident Commands +Z3TCAP ZCPR3 TCAP and Utilities +Z3UTIL1 General-Purpose Utilities +Z3UTIL2 System-Oriented Utilities +:Overview of the ZCPR3 Help Files + + Alì  oæ  thå ZCPR³ utilitieó arå documenteä  onlinå  bù +meanó  oæ thå ZCPR³ Helð System®  Thió ió thå  Masteò  Helð +Filå  whicè  allowó  yoõ tï directlù accesó  alì  thå  otheò +ZCPR3-Specifiã Helð Fileó supplieä witè thå ZCPR³ System. + + + + << Zoetrope and Echelon >> + + + A Note on File References + + Filå  Referenceó  undeò ZCPR³ arå largelù oæ  thå  samå +forí  aó  undeò CP/Í excepô thaô á ¯ (slash© maù noô bå  thå +firsô  characteò  oæ  á  filå  name®  Filå  Referenceó  arå +processeä slightlù differentlù undeò ZCPR3¬ anä thå FCBó arå +slightlù differenô betweeî ZCPR³ anä CP/Í wheî thå  special¬ +disalloweä characteró arå includeä iî á filå reference. + + The following are these disallowed characters: + + < > , ; : = ? * [ ] + + This¬   oæ   course¬   applieó   tï  unambiguouó   filå +references® Ambiguouó filå referenceó maù contaiî ¿ oò *. + + Line Editing and Output Control + + The following are the line editing functions -- + + rubout Delete and echo the last character typed at the + console. + Ctrl-È   Deletå  thå  lasô  characteò  typed»   Backspacå  onå + character; CRT-oriented + Ctrl-U Delete the entire line typed at the console. + Ctrl-Ø Deletå thå entirå linå typeä aô thå console»  Backspacå + tï thå beginninç oæ thå currenô line; CRT-oriented. + Ctrl-R Retype current command line: types a "clean line" + following character deletion with rubouts. + Ctrl-E Physical end of line: carriage is returned, but + line is not sent until the carriage return key is + depressed. + Ctrl-M Terminates input (carriage return). + Ctrl-J Terminates current input (line feed); CRT-oriented + Ctrl-C CP/M system reboot (warm start). + Ctrl-Z End input from the console (used in PIP and ED). + + Other control functions affect console output -- + + Ctrl-P Copy all subsequent console output to the currently- + assigned list device (LST:). Output is sent to both + the list device and the console device until the next + Ctrl-P is typed. + Ctrl-S Stop the console output temporarily. Program execution + and output continue when the next character is typed + at the console. Typing Ctrl-C returns control to CP/M. + + Inpuô  lineó caî bå quitå long¬  thå sizå specifieä  aô +ZCPR³ installatioî time®  Theù arå noô acteä upoî untiì thå +carriagå returî keù ió typed. + + Alì  oæ theså linå editinç functionó arå  supporteä  bù +thå CP/Í BDOÓ and¬ consequently¬ useä bù ZCPR³ itself® Manù +ZCPR³  utilities¬  althï noô all¬  uså thå BDOÓ linå  editoò +also. + +::ALIAS +::CMDFILES +::COMPARE +::DIRS +::DU3 +::HELPSYS +::IF +::IO +::MENU +::NDIRS +::SH +::SYSRCP +::TINIT +::VFILER +::Z3RES +::Z3TCAP +::Z3UTIL1 +::Z3UTIL2 + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ZCPR3.INS b/Images/Source/hd0/s0/u15/ZCPR3.INS new file mode 100644 index 00000000..238ac659 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ZCPR3.INS @@ -0,0 +1,163 @@ +; +; Installation File for ZCPR3 Distribution, Phase 1 +; +; Filename.Typ Size Recs CRC Version +; 1 ALIAS .COM 4K 30 82D4 1.1 +; 2 CD .COM 1K 7 DA48 3.0 +; 3 CMDRUN .COM 1K 2 21B5 N/A +; 4 COMMENT .COM 1K 5 3C4A 2.0 +; 5 CPSEL .COM 1K 8 CCAA 1.0 +; 6 CRC .COM 6K 41 A89C 2.0 +; 7 DEV .COM 2K 14 F755 1.0 +; 8 DEVICE .COM 3K 17 153E 1.0 +; 9 DIFF .COM 4K 25 45A7 2.0 +; 10 DIR .COM 2K 16 9B8A 1.0 +; 11 ECHO .COM 1K 4 F2D6 1.0 +; 12 ERASE .COM 3K 20 E71E 5.0 +; 13 ERROR1 .COM 2K 12 5EB7 1.0 +; 14 ERROR2 .COM 3K 18 2F03 1.0 +; 15 ERROR3 .COM 1K 5 8542 1.0 +; 16 ERROR4 .COM 1K 5 86D1 1.0 +; 17 ERRORX .COM 1K 3 F941 1.0 +; 18 FINDF .COM 2K 14 D2A6 2.0 +; 19 GOTO .COM 1K 6 6ADA 1.0 +; 20 HELP .COM 3K 24 928B 5.0 +; 21 HELPCK .COM 2K 16 F3B3 1.0 +; 22 HELPPR .COM 5K 35 12E7 1.0 +; 23 IF .COM 3K 18 418D 1.1 +; 24 IFSTAT .COM 1K 3 6586 1.0 +; 25 LDR .COM 3K 20 A14E 1.0 +; 26 MCOPY .COM 4K 32 8341 4.0 +; 27 MENU .COM 4K 27 8CED 3.2 +; 28 MENUCK .COM 3K 20 3CDC 1.0 +; 29 MKDIR .COM 6K 41 014B 3.0 +; 30 NOTE .COM 1K 1 CB9E 1.0 +; 31 PAGE .COM 5K 36 DF9F 2.0 +; 32 PATH .COM 2K 10 E421 3.0 +; 33 PRINT .COM 6K 42 0492 2.0 +; 34 PROTECT .COM 4K 28 A130 3.0 +; 35 PWD .COM 1K 8 2B9B 1.0 +; 36 QUIET .COM 1K 4 DF6B 1.0 +; 37 RECORD .COM 1K 8 C2B4 3.0 +; 38 REG .COM 1K 8 1CC4 1.0 +; 39 RENAME .COM 4K 27 A2F2 3.0 +; 40 SAK .COM 1K 7 7842 2.0 +; 41 SETFILE .COM 1K 4 00B2 1.0 +; 42 SH .COM 4K 28 A89E 1.0 +; 43 SHCTRL .COM 1K 7 E37A 1.0 +; 44 SHDEFINE.COM 3K 23 0DEA 1.0 +; 45 SHFILE .COM 1K 4 634F 1.0 +; 46 SHOW .COM 8K 62 808A 1.0 +; 47 SHVAR .COM 3K 23 4D89 1.0 +; 48 SUB .COM 3K 20 59E5 3.0 +; 49 TCCHECK .COM 2K 14 7235 1.0 +; 50 TCMAKE .COM 6K 47 B3A0 1.0 +; 51 TCSELECT.COM 3K 22 7C29 1.0 +; 52 UNERASE .COM 2K 13 5057 1.0 +; 53 WHEEL .COM 2K 11 0CD0 3.0 +; 54 XD .COM 4K 28 465B 1.2 +; 55 XDIR .COM 8K 62 7248 2.0 +; 56 Z3INS .COM 2K 16 DFB7 1.0 +; 57 Z3LOC .COM 1K 7 A908 1.0 +; 58 ZEX .COM 6K 48 5E36 3.0 +; +; Installation Begins -- +; +; 1. General-Purpose Utilities +; +comment.com +crc.com +diff.com +dir.com +echo.com +erase.com +findf.com +mcopy.com +page.com +print.com +protect.com +rename.com +unerase.com +xd.com +xdir.com +; +; 2. System-Specific Utilities +; +cmdrun.com +cpsel.com +dev.com +device.com +ldr.com +path.com +quiet.com +record.com +reg.com +sak.com +setfile.com +shctrl.com +wheel.com +z3loc.com +; +; 3. Script-Oriented Utilities +; +alias.com +menu.com +menuck.com +; +; 4. Error Handlers +; +error1.com +error2.com +error3.com +error4.com +errorx.com +show.com +; +; 5. Command File Utilities +; +goto.com +sub.com +zex.com +; +; 6. Named Directory Utilities +; +cd.com +mkdir.com +pwd.com +; +; 7. HELP System +; +help.com +helpck.com +helppr.com +; +; 8. SH +; +sh.com +shdefine.com +shfile.com +shvar.com +; +; 9. TCAP +; +tccheck.com +tcmake.com +tcselect.com +; +; 10. IF +; +if.com +ifstat.com +; +; 11. NOTE is not installable due to its size, but that's OK +; since it does not use any ZCPR3-specific features +; +;note.com +; +; 12. Z3INS +; +z3ins.com +; +; End of Installation +; + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ZCPR3.IQS b/Images/Source/hd0/s0/u15/ZCPR3.IQS new file mode 100644 index 0000000000000000000000000000000000000000..2a1030106be4f93abd94d738bf4b0b13be120019 GIT binary patch literal 2816 zcmcgt`#;p_9)GecmC}WI`6)0JVWQwoL1^=w8*v>_^CDUox^ePqd` z8K$Ke&A1(xY0tQgYfLWXKFmD(eCIp*6V5L)uV&iRs$ul2Kc~rU@cGq%Ag6Z2WmhSe1%i+ z2cQmq1R6jKXo3Z}0q6j2uo2Y5P2e5e447~WxDTH|5v+q-!AsZxQ{gtC3m(EhAQ%1w zN}xW_0|tNt=iwWe1h<12XbA2>BM=LX!3SspYM?1F0|jsgFb4^+0y5wOSPOT8UEnFS z0BmRp%HVF04@===mpZkP8n0Yp@^KfJe|4 zJcm)x4*VC+!AN)r90Y0bcbEgS;A?mX{syz*5pWm&0*-=aco@8ZjqoF+K`5Dq{V)!y zHhNRfR{IY6c~=Sk%1LYAd78$(z1OmhV;TF*(k@#=sX_I!LX-DEszOP4VBLX{K3e`f zv#kWeBdwt@Az2M2VNW_1=6uR>Za!S5 zbb;0HGZUJ&H)P2O!NgcuwfIG5y5}*LpVn+J=`ocR@bxPq?CY{^`+&op$5_l8vO*_w zj-o}wvF0yHT80C35ak_4ygz67J(Nx+F&%METVQazt{=18*P0sEPZ)nNA{kGj=o%Ym zxay9n4Od>)`VB9p`mu;(+g8g_yuz!cD#nKdz9wP}gnnATj;W^Jd`;YkQJV`De3{i0 zZ$o(|4S2U;DJA#{k_gh=7omAzkfS7QZ{D6}CThMieh8WUs948an`bl4)^BEMt8V>h+uWoYyqm}xc~ zuugo!OOz;lTjMgoIn*|kfD}z&Q5+jOij`zRn_ae~*Wy|?&(KV6>^`HgSkjk3*rCK5 z(nZ9x8Vb=>WB+1J@mGgMFY%hP#$3*S^7Hj=#{eZC0*=F7FmeE=AsQCv@U~+YZAezS z;WV8~2>F7TR|Hc%r(Gr9%81`EXJ-MOJ*IkADpA&$MKTv}1&W#NG#u;o#jCAg>x(s2 zcmzzmdz^sdRDMC6nD8F!xrm!r`BU4s&R*{HCUEmfhT4euSgC&Og;pu?60GUouj)U^ z$c>&(Okwrnc#niS(|loXRX}b(vf~L>Oz3E(6c3qu*y3ieHf|x(NYH&_eX>*{YCj=+ zv&+Gog>G36Zq^Lq6g^_WRX|uHlbq$EP7O=*#5&kIr4&bX3=(d^oaaP~nB{lQN?h=$ z0A@t5zuK^LCQw!59i_~|E*T3LcrMgk>PpmIAAV3U^)=BAOBHZY|DsrNY;j(8beavb z1-M&U2efR&n&yjcxz^luo++Knv|)bSc}FjOd|*TQ%(gGGh#9LW$2omz|EiJXTo(z6 zDm;OiTraGqK6x?3vy)4om9Z|;wqlZC*=?$KxVEZ}pYC#g0f7h@u5Bn!J4*XH*nxIME4dcnm-d6>#LwJXB3u4w@@D7N#{&Ya?dqe z;=g=xFoI)Rib8Qi^sqlh#t#Xt(b5thS;=Gm>0~wR52R8XtmG{;}(>V8VXlJoR$UJK}B@m1miX#6htLG z_S!>J8fhz|dsAGVO|_@x?iydCrHyhACn%0}2w6w(9PP=PFgXcDADz14^Gq8fM35^s zK=5a}cV!|{FN05}an@8iSod!tVG`c8<<4|F~B@}f~yYppAK%(hjwsl~W>H1QIZ z(W|6@IA!zz{e|XTx|(SzANAqTbz1&)aeS+?!p(no?Pn8|4mC%H$AAY=xiv zyGIBco&P0=_0uq;!`m!yV}|@iOv3wjB`k8NiP9seg4CYDSIa}9YzR)^d?fWBMDKpt_Pmn;<{j4{) z)-1{@*Juqm zqxrQdjS4l+TS>laYg#w@m$ygd`k5lYVVhpgm3rK<=})}eiv&8 Tb$m0wYNMR0gSM*n|11CB1`o%s literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ZCPR3DIR.BQG b/Images/Source/hd0/s0/u15/ZCPR3DIR.BQG new file mode 100644 index 0000000000000000000000000000000000000000..a4f5aa07d03a14372a64953de49e19abe8d3640c GIT binary patch literal 2944 zcmYk6c|6qX7ssClLz=OUs4PQ>C`^e#DdwguSz3^!5qDJfZHCGc86!1gxk`qJatXN< zu4EZmil|#gvc|=|wh4_T%k%rXxBGhi{`&rL&Uwz~e9!xHLZSZUv*vaV`$)$f_L`lx z04KpFfC2(Q5C{P@7=*$=1Z)PPU<<$iEVvKFfH;rcB1}b1DPz7p09qa-X@HWhV>F^b-hA&_# zOonmrcUTVDuofo3$4~=kg55w1XoEdqFVF$HKo5L?PhbuF4L*f`z4Zx4Y{xY{t8XNL2w9|g2UhlFazd*1Rg;;?11f% z0h?eWY=EioEo_0$;WNmAKY^pb0vrSNun-;xmcR;F0~>Gxw81xU0QSNz_z}K?e$W=! z0ej#8R^TZ744YvI%!hX%T*umcbk%5~EA6_#(7XsR%AtmC zN2@emVzLSkJH-qtlmt};aC=(V@tZ>kEWKeGDNfZ?65~>Bm51uoc5{c7vf7jqyuCX z7ckGigL}d0i5~a1Pqv?$?VDxW&B-f7s}&%hgKp>X_6ds;XjL2W0@1#?)rAWhZsnj{#np^&>}SQ#nMta3Hb~{*cux<Pr0mzQ!1Q&~noC3NBy>lUhp)SZjtDdU_}*g=Pq^c*RfZ}G*|Xfe2uubw^HdZ1?oH(&t~RkrvC=_rcfH}mzXS!WVw)sr zo6|&W#_W%V5iZDU2bd$pgSfgTAE}dpp_YWZ(z$*3Mt6}!^IvUOcSNh1rG)v*tYGiA zn-`+USdE`lW42H(2^5Hyl0>ffSKyK`RS9b{t%$;<@S<_M5$VyR{zB)6`)7ts%{B@m zs8tQy78P$HxNQQ_VHlxonXdL91ALohi~d8YfL8y2P{9o9810 zavoRV%rYgoQ4Sx1NSF~wk!RfN8-W2?<8U_D$%%2D(AIHRl-4|^Y3It_Ukps ztQ+OFhY6>N{P?5jNAa=AEvaPVICD0G?O|Mi((0>?eVVqP_hu8RnaCW$;oZ9xSxaGvyGMbE?CdU|LwV;HP zr5ku+u(~H(na`NR9vX-=iCB$@Ty10W1`U>Ik?^VbAdhFTv@V<1XE-_KDxM}%SvHtG zne<9CiF}Vnz4LHq6Go0MdonpJTES7Yb7LK>6!MT7!tz}!TuQkRFVD_!d^NSLM0z5Y zLG6DiIO&GCP&=trx%y6?b6^-FmZ6n)tBoV*h)!($dR$^Mb4^uMeIQd-{o~&gMdcl5 zqSe)_IBpcm69t}8K|-e&f#ad1l5wWLSi3wMw^>=)45lK0zlaY>2gzxWcEI%TKaB!hRh6W372y5*vg^;dx_i{=>!Z3vHYWWK{aCni`c*(B?-MzLlCEE6^}ZPVLJVs zPr`xkrjxR%CN0dBkykt0Q>8UWeoVu$<5BfRci&V&Onfr=cedQ96GrBOd|U_NZel%h z{gT+l&(4(X9Pu74>Ol8<)b<*WvI71EVv@@3~wyp zW9>lP@^fyr==>F|o1dP+?WgATHGUEkdpMy3Yk_B&Fyrt1x1}#uzIKXNSEomI$%RsB zZO!P;dBfo^OuDRxz`~w5@1n(do9q20!W6#EO5yn1+uW{;FPm7)rA;%J7QBQpJx;vw zjPKR1;vEzH${)mO@2cORuWhD3-O)Z0U+L}5?s`EDZ*889WOrTMH%X>0u02qCR-!n$ zC$62oC)Bpw!gy$WA)U-r|@5HNc zenCCM6HAY%kKuOJxalR%k0^CaJXp{4B}9Hb>)4zBxw{pGC=Q6|!#_h#6H?YOkNPcl5uZm*wHq)?hFCto`KfqD|8g=b(Q@UR!Uk%$K_@_>`jUe*q<)!_#5>M{8s&XwPDh-5G5pR75lGMS!m+gpjn)K zK*$db2@I-&=24*~4sy%hUqy$uNg^bkzcD_nnwofzc4R5gL@~3NUHr|qE;2u(U8x2! zaOnBLORoKEwJq<$WA!hzHXCL4GoNe#d8cK>vGrj#N?THqvmG%i3NA#kb*wea9m}>Q|ow{ zU8XNLHdgJhx^ Displays the DIR files +; DIR S Displays the SYS files +; DIR A Display both DIR and SYS files +;Notes: +; The flag SYSFLG defines the letter used to display both DIR and +; SYS files (A in the above Forms section) +; The flag SOFLG defines the letter used to display only the SYS +; files (S in the above Forms section) +; The flag WIDE determines if the file names are spaced further +; apart (WIDE=TRUE) for 80-col screens +; The flag FENCE defines the character used to separate the file +; names +; + IF DIRON +DIR: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WDIR + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE ;SAVE RET ADDRESS AND SET STACK + LXI H,FCB1+1 ;MAKE FCB WILD (ALL '?') IF NO FILENAME.TYP + MOV A,M ;GET FIRST CHAR OF FILENAME.TYP + CPI ' ' ;IF , ALL WILD + CZ FILLQ + LDA FCB2+1 ;GET FIRST CHAR OF 2ND FILE NAME + MVI B,80H ;PREPARE FOR DIR-ONLY SELECTION + CPI ' ' ;ANY FLAG? + JRZ DIRPR ;THERE IS NO FLAG, SO DIR ONLY + MVI B,1 ;SET FOR BOTH DIR AND SYS FILES + CPI SYSFLG ;SYSTEM AND DIR FLAG SPECIFIER? + JRZ DIRPR ;GOT SYSTEM SPECIFIER + CPI SOFLG ;SYS ONLY? +; +; ---> the fix begins here <--- +; + JRZ BUCKY ;it was the SYS only flag, exactly! + MVI B,80H ;NOT the SYS flag either, so default to DIR only + JR DIRPR ;and do the directory as requested. +; +; ---> commented out the next two lines of original code <--- +; +; JRNZ DIRPR +; DCR B ;B=0 FOR SYS FILES ONLY +; +; ---> added the 'SYS flag ok' routine here <--- +; +BUCKY: MVI B,0 ;as described below, if SYS only=true then reg B=0 + JR DIRPR ;now go on with the dirpr routine. +; +; ---> that ends the fix <--- + + ENDIF ;DIRON +; +; DIRECTORY PRINT ROUTINE; ON ENTRY, B REG IS SET AS FOLLOWS: +; 0 FOR ONLY SYSTEM FILES, 80H FOR ONLY DIR FILES, 1 FOR BOTH +; + IF DIRON OR ERAON OR LTON OR PROTON OR CPON OR RENON +DIRPR: + MOV A,B ;GET SYSTST FLAG + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ZEX.AQM b/Images/Source/hd0/s0/u15/ZEX.AQM new file mode 100644 index 0000000000000000000000000000000000000000..799e02011f38541fb6235abeb670295e5106e54b GIT binary patch literal 30976 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 BihBS6 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ZEX.ASM b/Images/Source/hd0/s0/u15/ZEX.ASM new file mode 100644 index 00000000..9ce02a2e --- /dev/null +++ b/Images/Source/hd0/s0/u15/ZEX.ASM @@ -0,0 +1,2286 @@ +; +; PROGRAM: ZEX +; AUTHOR: RICHARD CONN (DERIVED FROM EX, WHICH WAS WRITTEN BY SOMEONE ELSE) +; VERSION: 3.1 +; DATE: 24 Oct 84 +; PREVIOUS VERSIONS: 3.0 (8 Mar 84) +; +VERS EQU 31 +Z3ENV EQU 0F400H + +; +; ZEX 3.1 -- Richard Conn +; Does not require to be reassembled for a target system; Z3INS +; installation is sufficient +; ZEX 3.0 -- Derived from ZEX 1.3 for ZCPR3 by Richard Conn +; Extensions to ZEX 1.3 are: +; ZCPR3 Message Passing Employed +; ZCPR3 Structure +; Omitted Parameters Allowed +; Print Suppression During FALSE IFs (^&) +; +; ZEX 1.0 -- EX 1.2.1 implemented for ZCPR2 by Richard Conn +; DATE: 12 NOV 82 +; Extensions to EX are: +; Multiple command buffer is preserved, and any commands +; following the ZEX command are executed after +; the ZEX command file is completed (ZEX T;DIR +; will execute commands in T.SUB and then run DIR) +; ZCPR3 Search Path is following when looking for the +; file specified to ZEX +; Command File Type may be SUB or ZEX +; Added ^* form to simply ring the bell +; Added ^/ form to act like ^? but ring bell periodically +; Added ^" form to allow user input in the middle of a +; command file operation +; Major rewrite of EX to improve readability and to impose +; a structured organization on the code for maintenance +; purposes +; Major change in the abort system so that the multiple command +; line buffer of ZCPR3 will be properly cleared on +; abort; without this change, ZEX would crash the system +; in attempting to abort out of the ^/ and ^? forms; +; EX will probably always crash a ZCPR3 system with +; multiple commands enabled if an abort from ^? is +; attempted +; +; EX12.ASM - An enhanced version of EXEC and EX. +; +; START 05-09-82 +; +; DATE 08-11-82 *LAST MAJOR CHANGE +; +; HISTORY: +; +; ZEX 1.0 11-12-82 modify for use under ZCPR2; main change is to place +; rest of multiple command line at end of SUB file +; +; 1.2.1 09-16-82 fix for MBASIC execution under EX 1.2 . +; +; 1.2 08-11-82 added '^:' EX runtime re-execute logic function, +; '^?' EX runtime wait for carriage return, +; logic to prevent input/EX buffer overlap, +; logic to insure (Xsub Already Present), +; logic to prevent EX runtime recursion loop, +; and prompt character logic [Larry Steeger] +; +; 1.1 08-06-82 added ';;' EX comment's support, +; '^.' print suppression function, +; '^<...^>' immediate display support, +; '^#' EX message suppression function, +; '^$' default parameter support, +; and '^|' cr,lf generation function [Larry Steeger] +; +; 1.0 08-03-82 corrected $^ error and ^ error [Larry Steeger] +; +; ? 06-19-82 added missing TRUE and FALSE equates [Ron Fowler] +; +; ? 05-17-82 corrected last cold boot no active message +; + +; +; EX12.COM IS AN ENHANCEMENT OF EXEC.COM AND EX.COM +; +; OPTIONS: +; +; EX cr +; +; EX cr +; +; ^ WILL GIVE CONTROL CHARACTER +; +; | WILL BE CR +; +; ^| WILL BE CR,LF +; +; ^: WILL CAUSE ZEX TO RE-EXECUTE THE .SUB FILE FROM THE BEGINNING +; +; ^? WILL CAUSE ZEX TO WAIT FOR A CARRIAGE RETURN +; (^C WILL ABORT ZEX AT THIS POINT ALSO) +; +; ^/ WILL CAUSE ZEX TO RING THE BELL AND WAIT FOR A CARRIAGE RETURN +; (^C WILL ABORT ZEX AT THIS POINT ALSO) +; +; ^* WILL CAUSE ZEX TO RING THE BELL +; +; ^" WILL CAUSE ZEX TO STOP PROVIDING INPUT UNTIL THE ZCPR3 MESSAGE +; CONTROLLING ZEX IS CHANGED TO PERMIT CONTINUATION +; +; ^$ WILL CAUSE THE REST OF THE LINE TO BE TREATED AS A +; SET OF DEFAULT PARAMETERS SEPARATED BY BLANKS TO BE +; USED IF THE USER HAS NOT PROVIDED ONE ON ZEX'S COMMAND LINE. +; +; ^# WILL TOGGLE PRINT SUPPRESSION OF ZEX MESSAGES +; +; ^. WILL START PRINT SUPPRESSION OF ALL CHARACTERS +; FROM .SUB FILE UNTIL A SUBSEQUENT ^. IS ENCOUNTERED +; +; ^& WILL INSTRUCT ZEX TO SUPPRESS PRINT IF WITHIN A FALSE IF +; +; ;; WILL INDICATE THAT THE ;; AND ALL CHARACTERS FOLLOWING IT +; UNTIL A LF IS ENCOUNTERED ARE NOT INCLUDED IN ZEX'S +; TEXT BUFFER +; (I.E. A ZEX ONLY COMMENT) +; +; ^< WILL START IMMEDIATE DISPLAY OF CHARACTERS FROM +; THE .SUB FILE UNTIL ^> IS ENCOUNTERED +; (I.E. DISPLAY ONLY .SUB INPUT) +; +; $<1-9> WILL REPLACE PARAMETER<1-9> IN TEXT FROM THE COMMAND LINE +; +; $$ WILL GIVE $ +; +; $^ WILL GIVE ^ +; +; $| WILL GIVE | +; +; |,cr,lf,1ah will eat last from | to end of buffer +; +; ^C FROM CONSOLE WILL ABORT ZEX +; + +FALSE EQU 0 +TRUE EQU NOT FALSE + +; +; OFFSETS TO ZCPR3 ENVIRONMENT DESCRIPTOR ELEMENTS +; +EPOFF EQU 9 ;EXTERNAL PATH DATA +MCOFF EQU 24 ;COMMAND LINE DATA +Z3MOFF EQU 34 ;MESSAGE BUFFER + +; +; GENERAL EQUATES +; +BELL EQU 7 +CTRLZ EQU 1AH ;^Z +DELAY EQU 6000H ;DELAY CONSTANT FOR TIMER LOOP +BS EQU 'H'-'@' ;BACKSPACE +CR EQU 0DH +LF EQU 0AH + +; +; ZEX MONITOR COMMAND BYTES +; +PSUP EQU 80H ;^. PRINT SUPPRESS FLAG +IMON EQU 81H ;^< IMMEDIATE MODE START +IMOFF EQU 82H ;^> IMMEDIATE MODE STOP +MSUP EQU 83H ;^# ZEX MESSAGE SUPPRESS FLAG +CRWAIT EQU 84H ;^? ZEX RUNTIME WAIT FOR CR FLAG +REXEC EQU 85H ;^: ZEX RUNTIME RE-EXECUTE FLAG +CRBWAIT EQU 86H ;^/ ZEX RUNTIME RING BELL AND WAIT FOR CR FLAG +RNG EQU 87H ;^* ZEX RUNTIME RING BELL +UICH EQU 88H ;^" USER INPUT COMMAND CHAR SEQUENCE +IPS EQU 89H ;^& FALSE IF PRINT SUPPRESS +; +; CP/M CONSTANTS +; +WARM EQU 0 +BDISK EQU 4 +BDOS EQU 5 +DFCB EQU 5CH +BUFF EQU 80H +; +; NOTE: ZEX30.LIB IS CREATED BY THE ZEX30.ZEX GENERATION PROCESS +; + MACLIB ZEX30 +; +$-PRINT + IF ZEXBASE +$+PRINT +; +; START OF ZEX INITIATOR CODE SEGMENT +; + ORG 100H +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env + JMP START0 +; +; INITIAL COMMAND LINE AREA +; + DB 0FFH ;SIZE OF COMMAND LINE +DBUFF EQU $ + DB 0FFH ;SIZE OF BUFFER + DS 100H ;SPACE FOR COMMAND LINE +; +; START OF ZEX +; +START0: + NOP ;REPLACED WITH RET TO PREVENT REENTRY + LDA DFCB+1 ;CHECK FOR HELP REQUEST + CPI '/' ;HELP? + JZ HELP + LXI H,0 + DAD SP + SHLD CCPSTK ;CCP STACK PTR + LXI SP,CCPSTK ;USER STACK AREA + MVI A,0C9H ; (8080 RET) + STA START ;PREVENT RE-ENTRANCE BY ZCPR + LXI H,BUFF ;COPY INPUT LINE INTO DBUFF + LXI D,DBUFF + MVI B,128 ;SIZE OF BUFFER + CALL MOVE + LXI D,SIGNON ;LOGO + CALL PRINT + CALL ZEXACTV ;CHECK FOR RECURSION + CALL ZRELOC ;RELOCATE ZEX MODULE + CALL ZPARMS ;EXTRACT PARAMETERS FROM COMMAND LINE + LDA DFCB+1 ;CHECK TO SEE IF SUB FILE PRESENT + CPI ' ' ;=NO + PUSH PSW ;SAVE FLAG + CNZ OPENSB ;OPEN AND LOAD ZEX FILE IF PRESENT OR ABORT + POP PSW ;GET FLAG + CZ INPUTSB ;INPUT COMMANDS FROM USER +; +; HL NOW POINTS TO BYTE AFTER LOADED TEXT +; + CALL ZMCL ;STORE REST OF MULTIPLE COMMAND LINE + CALL ZLINES ;COPY AND PROCESS COMMAND LINES +; +; SET UP FOR ZEX EXECUTION AND RUN; HL PTS TO BOTTOM OF DATA AREA +; + PUSH H ;SAVE PTR TO END OF DATA + LHLD RELSTRT ;GET PTR TO START OF ZEX + SHLD GOADR ;SET ADDRESS TO RUN TO + DCX H ;PT TO START OF DATA AREA + MVI B,09H ;MESSAGE OFFSET + CALL MSHLD ;STORE HL THERE (NEXT CHAR FOR ZEX) + MVI B,0BH ;MESSAGE OFFSET + CALL MSHLD ;STORE HL THERE (FIRST CHAR FOR ZEX) + MVI A,0FFH ;SET ZEX RUNNING FLAG + MVI B,08H ;MESSAGE OFFSET + CALL MSTA ;STORE A THERE (ZEX IS RUNNING) + POP H ;HL IS PTR TO END OF DATA + MOV M,A ;SET UP END OF DATA + DCX H + LDA BDOS+2 ;SET UP BDOS JUMP TO PROTECT DATA + MOV M,A + DCX H + LDA BDOS+1 + MOV M,A + DCX H + MVI M,JMP + SHLD BDOS+1 ;SET NEW BDOS ADDRESS + LXI H,0 ;ASSUME NO MULTIPLE COMMANDS + LDA MCAVAIL ;GET FLAG + ORA A ;0=NONE + JZ GOTOZEX ;NO MULTIPLE COMMANDS, SO BC=0 + LHLD MCADR ;GET ADDRESS OF MULTIPLE COMMAND BUFFER +; +; ZEX MONITOR ENTRY PARAMETERS -- +; HL ADDRESS OF MULTIPLE COMMAND BUFFER OR 0 IF NONE +; +GOTOZEX: + XCHG ;SAVE HL + LHLD Z3MSGA ;GET ADDRESS OF MESSAGES ... + XCHG ; ... IN DE + +GOADR EQU $+1 + JMP $ + +; +; INIT ZCPR3 ENVIRONMENT +; +Z3INIT: + PUSH H ;SAVE PTR TO ENVIRONMENT + PUSH H + LXI D,Z3MOFF ;OFFSET TO MESSAGE BUFFER + DAD D + MOV A,M ;GET LOW + INX H + MOV H,M ;GET HIGH + MOV L,A ;HL IS ADDRESS OF MESSAGES + SHLD Z3MSGA ;SAVE ADDRESS + POP H + LXI D,MCOFF ;OFFSET TO CL DATA + DAD D + MOV E,M ;GET CL ADDRESS + INX H + MOV D,M + INX H ;GET CL SIZE + MOV A,M + ORA D ;IF ALL THREE VALUES ARE 0, THEN NO COMMAND LINE + ORA E + STA MCAVAIL ;SET AVAILABLE FLAG + XCHG ;HL PTS TO CL + SHLD MCADR + POP H ;GET PTR TO ENVIRONMENT + LXI D,EPOFF ;OFFSET TO EXTERNAL PATH DATA + DAD D + MOV E,M ;GET EXTERNAL PATH ADDRESS + INX H + MOV D,M + MOV A,D ;CHECK FOR ANY + ORA E + STA EPAVAIL ;SET AVAILABLE FLAG + XCHG + SHLD EPADR ;SET ADDRESS + RET +; +; Z3INIT BUFFERS +; +INTPATH: ;INTERNAL PATH + DB 1,0 ;DISK A, USER 0 + DB 0,0 ;END OF PATH +Z3MSGA: ;ADDRESS OF MESSAGES + DW 0 +MCAVAIL: ;MULTIPLE COMMAND LINE DATA + DB 0 +MCADR: + DW 0 +EPAVAIL: ;EXTERNAL PATH DATA + DB 0 +EPADR: + DW 0 + +; +; PRINT HELP MESSAGE FOR ZEX +; +HELP: + LXI D,SIGNON ;PRINT BANNER + CALL PRINT + LXI H,HMSG ;PRINT MESSAGE + CALL HPRINT + MVI C,1 ;GET CHAR + CALL BDOS + CPI 'C'-'@' ;^C? + RZ + LXI D,CRLFS + CALL PRINT + LXI D,SIGNON + CALL PRINT + LXI H,HMSG1 +HPRINT: + MOV A,M ;GET CHAR + ORA A ;DONE? + RZ + INX H ;PT TO NEXT + PUSH H ;SAVE PTR + MOV E,A ;CHAR IN E + MVI C,2 ;CONSOLE OUTPUT + CALL BDOS + POP H ;GET PTR + JMP HPRINT + +HMSG: + DB CR,LF,'ZEX Syntax:' + DB CR,LF,' ZEX ' + DB CR,LF,'or' + DB CR,LF,' ZEX' + DB CR,LF + DB CR,LF,'The first form executes the indicated command file' + DB CR,LF,'( may be of type ZEX or SUB, and if a ZEX and' + DB CR,LF,'SUB both exist, the ZEX file is used), passing to it' + DB CR,LF,'the parameters, similar to the way SUBMIT is used.' + DB CR,LF + DB CR,LF,'The second form allows the user to enter commands.' + DB CR,LF,'ZEX presents the user with a prompt like "n:", where' + DB CR,LF,'n is a line number, and the user may type in a command' + DB CR,LF,'line. Input is terminated by simply striking the' + DB CR,LF,'RETURN key (empty input line).' + DB CR,LF + DB CR,LF,'ZEX can be aborted by ^C from console.' + DB CR,LF + DB CR,LF,' Strike Any Key to Continue, ^C to Abort - ',0 + +HMSG1: + DB CR,LF + DB CR,LF,'ZEX supports an enhanced command processing facility' + DB CR,LF,'which recognizes the following commands. These may be' + DB CR,LF,'embedded in the text of the command file or user' + DB CR,LF,'input and will be executed after processing begins.' + DB CR,LF + DB CR,LF,' Cmd Meaning Cmd Meaning' + DB CR,LF,' | insert ^| insert ' + DB CR,LF,' ^: rerun command file ^. suppress print of chars' + DB CR,LF,' ^# toggle ZEX msgs ^$ define default params' + DB CR,LF,' ^? wait for user ^/ ring and wait for ' + DB CR,LF,' ^* ring bell ^" allow user input' + DB CR,LF,' ^< display chars only ^> stop display' + DB CR,LF,' ;; ZEX comment $n 1<=n<=9 for param' + DB CR,LF,' $$ =$ $^ =^' + DB CR,LF,' $| =| ^c insert ctrl char c' + DB CR,LF,CR,LF,0 + + +; +; RELOCATE ZEX MODULE INTO HIGH MEMORY JUST BELOW ZCPR3 +; +ZRELOC: + LHLD RELOCL ;GET RELOC PROGRAM LENGTH + MOV B,H ;BC=HL=RELOC PROGRAM LENGTH + MOV C,L + PUSH B ;SAVE LENGTH FOR FUTURE USE + LHLD BDOS+1 ;GET BASE + LXI D,-806H ;GET BEFORE CCP + DAD D + MOV A,L ;SUBTRACT RELOC LENGTH + SUB C + MOV E,A + MOV A,H + SBB B + MOV D,A + PUSH D ;SAVE NEW TOP/START TO MOVE TO + LXI H,BEGREL ;START OF MOVE +OMOVE: + MOV A,B + ORA C + JZ MOVEND + DCX B + MOV A,M + STAX D + INX D + INX H + JMP OMOVE +; +MOVEND: + POP D ;GET START OF MOVED PROGRAM + POP B ;LENGTH OF MOVE PROGRAM + PUSH D ;SAVE PTR TO START OF PROGRAM + PUSH H ;START OF BIT MAP + MOV H,D ;MSB OFFSET + MOV L,E ;LSB OFFSET +OFFLUP: + MOV A,B ;TEST LENGTH + ORA C ;IF 0 + JZ GOTO ;JUMP TO RELOCATED PROGRAM + DCX B ;DECREMENT COUNT + LDA COUNT + INR A + STA COUNT + ANI 07H + JNZ OFFBIT ;NO + XTHL ;YES, GET BIT MAP + MOV A,M ;GET NEXT BYTE + INX H ;INCREMENT BIT MAP POINTER + XTHL ;SAVE FOR LATER + STA BITMAP ;KEEP BIT OFFSET +OFFBIT: + LDA BITMAP + RAL ;TEST FOR OFFSET + STA BITMAP ;SAVE NEW BYTE + JNC NOFSET ;NO + DCX D ;GET BACK TO LSB + LDAX D + ADD L + STAX D + INX D ;MSB + LDAX D ;YES + ADC H ;ADD IN OFFSET + STAX D ;PUT IN MOVED PLACE +NOFSET: + INX D ;INCREMENT MOVED POINTER + JMP OFFLUP ;CONTINUE WITH RELOCATE +; +GOTO: + POP D ;RESTORE STACK + POP H ;PT TO FIRST BYTE OF PROGRAM + SHLD RELSTRT ;SAVE PTR + DCX H ;RELOCATE PROGRAM-1 + SHLD OUTBUF ;SAVE PTR TO BYTE IN FRONT OF RELOCATED PROGRAM + RET +; +; GET PARAMETERS FROM COMMAND LINE +; TERMINATE EACH PARAMETER WITH A BINARY ZERO, AND SET POINTERS +; TO EACH PARAMETER +; +ZPARMS: + LXI D,DBUFF ;TERMINATE COMMAND LINE WITH CR + LDAX D ;GET CHAR COUNT + INX D ;PT TO FIRST CHAR + PUSH D + MOV L,A ;HL = NUMBER OF CHARS IN LINE + MVI H,0 + DAD D ;PT TO AFTER LAST CHAR + MVI M,CR ;STORE + LXI H,PRMDMY ;START AT DUMMY PARAMETER FOR .SUB FILE SPEC + PUSH H + LXI B,PRMPNL+2 + XRA A + CALL FILL ;CLEAR PTR AREA + POP H ;GET PTR TO POINTER FOR PARAMETER 0 + POP D ;GET PTR TO FIRST CHAR IN LINE + MVI A,(PRMPNL/2)+1 ;NUMBER OF PARAMETERS POSSIBLE, MAX + STA PRMMAX ;HIGHEST PARAMETER # + 1 for .SUB SPEC +; +; PARAMETER EXTRACTION ROUTINE; HL PTS TO FIRST PARAM PTR, DE PTS TO LINE +; +PARMS: + MVI B,0 ;CLEAR PARAMETER COUNTER + XCHG + SHLD ERRLNE ;SAVE IN CASE OF ERROR + XCHG +; +PARMSL: + LDAX D ;IGNORE LEADING SPACES + INX D + CPI CR + JZ ENDLNE + CPI ' ' + JZ PARMSL + DCX D ;BACK UP TO 1ST CHAR + MOV M,E ;SAVE ADDRESS IN TABLE + INX H + MOV M,D + INX H + INR B ;COUNT+1 + LDA PRMMAX + CMP B + JC PRMTOO ;TOO MANY ARGUMENTS +; +ENDPRM: + LDAX D ;GO TO END OF PARAMETER + INX D + CPI CR + JZ ENDLNE + CPI ' ' ;SKIP UNTIL + JNZ ENDPRM + XRA A ;A=0 TO TERMINATE PARAM + DCX D ;PT TO FOLLOWING PARAM + STAX D ;TERMINATE PARAMETER + INX D ;PT TO CHAR AFTER + JMP PARMSL ;IGNORE SPACES BETWEEN PARAMETERS +ENDLNE: + XRA A ;STORE ZERO AFTER LAST PARAMETER + DCX D ;PT TO CR + STAX D ;TERMINATE LAST PARAMETER + INX D ;PT TO AFTER LAST PARAM + MVI A,CR ;STORE ENDING CR + STAX D + RET +; +; INPUT COMMAND LINES FROM USER +; +INPUTSB: + LXI H,0 + SHLD LINES ;START LINE COUNTER + MVI A,0FFH ;SET BUFFER LENGTH + STA DBUFF-1 + LXI H,BEGREL ;SET UP OUTPUT BUFFER + SHLD INBUF +GETLIN: + CALL CRLF + LHLD LINES + INX H + SHLD LINES + CALL DECOUT ;PRINT LINE # + MVI E,':' ;GET PROMPT + CALL OUTCHR + MVI E,' ' + CALL OUTCHR + LXI D,DBUFF-1 + MVI C,10 ;READ CONSOLE BUFFER + CALL BDOS + LXI D,DBUFF + LDAX D ;GET LENGTH + MOV B,A + INX D + LHLD INBUF ;GET INPUT POINTER + ORA A ;SEE IF END + RZ ;DONE WITH INPUT + XCHG + CALL MOVE ;MOVE TO INPUT BUFFER + XCHG + MVI M,CR + INX H + MVI M,LF + INX H + SHLD INBUF + JMP GETLIN +; +; OPEN AND LOAD SUB FILE +; +OPENSB: + CALL PUTUD ;SAVE USER/DISK +; +; SET UP TO READ ZEX FILE +; + LXI D,DFCB+9 + LXI H,ZEXNAM ;MOVE 'SUB' TO DFCB FILE TYPE + MVI B,3 + CALL MOVE + XRA A ;ZERO CR FIELD + STA DFCB+32 + LXI D,BUFF ;SET DMA ADDRESS + MVI C,26 ;SET DMA + CALL BDOS + LXI D,DFCB + LXI H,INTPATH ;PT TO INTERNAL PATH + LDA EPAVAIL ;EXTERNAL PATHS AVAILABLE? + ORA A ;0=NO + JZ OSB1 ;USE INTERNAL PATH + LHLD EPADR ;PT TO EXTERNAL PATH +OSB1: + PUSH H ;SAVE PATH PTR + CALL FNDFILE ;LOOK FOR FILE ALONG PATH AND SAY IF IT IS FOUND + POP H ;GET PATH PTR + JNZ READSB +; +; ZEX FILE NOT FOUND -- SET UP TO READ SUB FILE +; + PUSH H ;SAVE PATH PTR + CALL GETUD ;RESTORE USER/DISK + LXI D,DFCB+9 ;SET TYPE TO SUB + LXI H,SUBNAM + MVI B,3 + CALL MOVE + XRA A ;ZERO CR FIELD + STA DFCB+32 + POP H ;PT TO PATH + LXI D,DFCB ;PT TO FCB + CALL FNDFILE ;LOOK FOR FILE + JNZ READSB +RSBERR: + CALL GETUD ;RESTORE USER/DISK + LXI H,NOSBF2 + LXI D,DFCB+1 + MVI B,8 ;NAME LENGTH + CALL MOVEFN ;MOVE FILE NAME + MVI B,3 ;TYPE LENGTH + MVI M,'.' + INX H + LXI D,DFCB+9;FILE TYPE POINTER + CALL MOVEFN ;MOVE FILE TYPE + MVI M,'$' ;END TERMINATER + JMP NOSUB +* +* FNDFILE -- LOOK FOR FILE ALONG ZCPR3 PATH +* INPUT PARAMETERS: HL = BASE ADDRESS OF PATH, DE = PTR TO FCB OF FILE +* OUTPUT PARAMETERS: A=0 AND ZERO FLAG SET IF NOT FOUND, NZ IF FOUND +* +FNDFILE: + SHLD PATH ;SAVE PATH BASE ADDRESS + MVI C,17 ;SEARCH FOR FIRST + CALL BENTRY ;LOOK FOR FILE + INR A ;SET FLAG + JNZ FF5 ;FOUND IT -- RETURN FOUND FLAG + XCHG ;HL=FCB PTR + SHLD FCBPTR ;SAVE IT + LHLD PATH ;PT TO PATH FOR FAILURE POSSIBILITY + MVI C,32 ;GET CURRENT USER + MVI E,0FFH + CALL BENTRY + STA TMPUSR ;SAVE IT FOR LATER +; +; MAIN SEARCH LOOP +; +FF1: + MOV A,M ;GET DRIVE + ANI 7FH ;MASK MSB + ORA A ;0=DONE=COMMAND NOT FOUND + JNZ FF2 ;NO ERROR ABORT? +; +; FILE NOT FOUND ERROR +; + XRA A ;ZERO FLAG MEANS NOT FOUND + RET +; +; LOOK FOR COMMAND IN DIRECTORY PTED TO BY HL; DRIVE IN A +; +FF2: + MOV E,A ;DISK IN E + CPI '$' ;CURRENT DISK? + JNZ FF3 ;SKIP DEFAULT DRIVE SELECTION IF SO + LDA BDISK ;GET DEFAULT USER/DISK + ANI 0FH ;MASK FOR DEFAULT DISK + INR A ;PREP FOR FOLLOWING DCR A + MOV E,A ;DISK NUMBER IN E +FF3: + DCR E ;ADJUST PATH 1 TO 0 FOR A, ETC + MVI C,14 ;SELECT DISK FCT + CALL BENTRY ;SELECT DRIVE + INX H ;PT TO USER NUMBER + MOV A,M ;GET USER NUMBER + ANI 7FH ;MASK OUT MSB + INX H ;PT TO NEXT ENTRY IN PATH + PUSH H ;SAVE PTR + MOV E,A ;SAVE IN E + CPI '$' ;MATCH? + JNZ FF4 ;DO NOT SELECT CURRENT USER IF SO + LDA TMPUSR ;GET ORIGINAL USER NUMBER + MOV E,A ;SELECT USER +FF4: + MVI C,32 + CALL BENTRY + LHLD FCBPTR ;GET PTR TO FCB + XCHG ;... IN DE + MVI C,17 ;SEARCH FOR FIRST + CALL BENTRY ;LOOK FOR FILE + POP H ;GET PTR TO NEXT PATH ENTRY + INR A ;SET FLAG + JZ FF1 ;CONTINUE PATH SEARCH IF SEARCH FAILED +; +; FILE FOUND -- PERFORM SYSTEM TEST AND PROCEED IF APPROVED +; +FF5: + MVI A,0FFH ;SET OK RETURN + ORA A + RET + +; +; BDOS ROUTINE +; +BENTRY: + PUSH H ;SAVE REGS + PUSH D + PUSH B + CALL BDOS + POP B ;GET REGS + POP D + POP H + RET + +* BUFFERS +FCBPTR: + DS 2 ;POINTER TO FCB FOR FILE SEARCH +TMPUSR: + DS 1 ;CURRENT USER NUMBER +PATH: + DS 2 ;BASE ADDRESS OF PATH +; +; PUTUD -- SAVE AWAY CURRENT USER/DISK +; GETUD -- RESTORE CURRENT USER/DISK +; +PUTUD: + MVI E,0FFH ;GET CURRENT USER + MVI C,32 ;BDOS + CALL BDOS + STA CUSER ;SAVE CURRENT USER AWAY + MVI C,25 ;GET CURRENT DISK + CALL BDOS + STA CDISK + RET +GETUD: + LDA CDISK ;GET CURRENT DISK + MOV E,A ;... IN E + MVI C,14 ;SELECT DISK + CALL BDOS + LDA CUSER ;GET CURRENT USER + MOV E,A ;... IN E + MVI C,32 ;SELECT USER + CALL BDOS + RET +CDISK: + DS 1 ;CURRENT DISK NUMBER +CUSER: + DS 1 ;CURRENT USER NUMBER +; +; OPEN AND READ SUB FILE +; +READSB: + MVI C,15 ;OPEN FILE + CALL BDOS ;BDOS + INR A ;ERROR? + JZ RSBERR +; +; READ IN AND STORE SUB FILE +; +READTX: + LHLD INBUF ;GET PTR TO NEXT BYTE + XCHG ;SET PTR IN DE + LXI H,80H ;GET SECTOR OFFSET + DAD D ;HL PTS TO FOLLOWING BLOCK TO BE READ, DE PTS TO + SHLD INBUF ; BLOCK TO READ; SAVE PTR TO FOLLOWING BLOCK + MVI C,26 ;SET DMA ADDRESS + CALL BDOS + LXI D,DFCB + MVI C,20 ;READ SEQUENTIAL + CALL BDOS + ORA A + JZ READTX ;READ COMPLETE .SUB FILE + CALL GETUD ;RESTORE CURRENT USER/DISK + LHLD INBUF ;MAKE SURE BUFFER'S TERMINATED + LXI D,-100H ;PT TO FIRST BYTE OF LAST BLOCK READ + DAD D + MVI B,80H ;LOOK AT AT MOST 80H BYTES +SKIP1A: + MOV A,M ;GET BYTE + CPI CTRLZ ;EOF? + JZ SKIP1B + INX H ;PT TO NEXT + DCR B ;COUNT DOWN + JNZ SKIP1A +; HL NOW POINTS TO AFTER LAST VALID CHAR IN FILE +SKIP1B: + SHLD INBUF ;SET PTR + RET ;DONE WITH NO ERROR + +; +; THIS PART OF THE CODE STORES THE REST OF THE COMMAND LINE AS PART OF THE +; COMMAND FILE FOR ZCPR3; ON ENTRY, HL PTS TO NEXT AVAILABLE BYTE +; +ZMCL: + XCHG ;BUFFER PTED TO BY DE + LHLD MCADR ;GET BASE ADDRESS OF MULTIPLE COMMAND LINE + MOV A,M ;GET LOW + INX H + MOV H,M ;GET HIGH + MOV L,A ;HL PTS TO NEXT CHAR IN MULTIPLE COMMAND LINE + XCHG ;DE PTS TO NEXT CHAR IN COMMAND LINE, HL PTS TO BUF END + LDA MCAVAIL ;MULTIPLE COMMANDS ENABLED? + ORA A ;0=NO + JZ ENDSTR ;TERMINATE FILE; HL PTS TO NEXT BYTE + LDAX D ;GET FIRST BYTE + MOV B,A ;SAVE FIRST BYTE IN B + XRA A ;A=0 + STAX D ;CLEAR COMMAND LINE + INX D ;PT TO NEXT BYTE + MOV A,B ;GET FIRST BYTE + CPI ';' ;SEPARATION CHAR? + JNZ CMCMD1 ;PROCESS IF NOT +; +; LOOP TO STORE REST OF MULTIPLE COMMAND LINE INTO LOADED FILE +; +CMCMD: + LDAX D ;GET BYTE FROM LINE +CMCMD1: + ORA A ;EOL IF ZERO + JZ CMEND ;READ IN FILE; HL PTS TO NEXT AVAILABLE BYTE + MOV M,A ;STORE BYTE + INX H ;PT TO NEXT + INX D + JMP CMCMD +CMEND: + MVI M,CR ;STORE + INX H + MVI M,LF + INX H ;PT TO NEXT AVAILABLE BYTE +; +; MARK END OF BUFFER AND CONTINUE +; +ENDSTR: + MVI M,1AH ;EOF CHARACTER + SHLD ENDBUF ;EOB ADDRESS + MOV A,L + SUI LOW BEGREL+1 ;SEE IF BUFFER'S EMPTY + MOV A,H + SBI HIGH BEGREL + JC BUFLOW + RET +; +; COPY AND PROCESS COMMAND LINES, PLACING FINAL COMMAND LINE FORM UNDER ZEX +; RETURN WITH HL PTING TO NEXT AVAILABLE BYTE IN MEMORY BUFFER UNDER ZEX +; +ZLINES: + XRA A + STA IMFLG1 + STA IMFLG2 + STA PRTFLG + STA OUTCNT + LXI H,1 + SHLD LINES ;SET LINE COUNT + LHLD OUTBUF ;PT TO BYTE JUST BELOW LOADED ZEX + SHLD OUTLNE + SHLD BUFSTR + LXI D,BEGREL ;PT TO FIRST BYTE OF COMMAND BUFFER +; +; MAIN COPY LOOP TO COPY BUFFER AT BEGREL TO JUST UNDER ZEX WITH PROCESSING +; +MOVSTR: + LDAX D ;GET NEXT COMMAND BYTE + INX D ;PT TO FOLLOWING + ANI 7FH ;MAKE SURE NO PARITY + CPI LF ;NEW LINE? + JNZ MOVST0 +; +; NEW LINE -- DON'T STORE AND INCREMENT LINE COUNT +; +MOVSTX: + CALL INCR ;INCREMENT LINE COUNT + JMP MOVSTR ;CONTINUE +; +; BEGIN CHARACTER PROCESSING +; A CONTAINS CHAR, DE PTS TO BYTE AFTER CHAR, HL PTS TO NEXT BUFFER POS +; +MOVST0: + CPI 1AH ;END OF INPUT? + RZ ;DONE IF SO + CPI '|' ;CARRIAGE RETURN? + JNZ MOVST1 ;NOPE +; +; PROCESS CARRIAGE RETURN FORM (|) +; + PUSH D ;SAVE OLD POINTER + INX D ;LOOK FOR EOF AFTER | (PT TO LF) + INX D ;PT TO POSSIBLE EOF + LDAX D ;GET PRESENT LOCATION+2 + POP D ;GET OLD POINTER + CPI 1AH ;END OF BUFFER + RZ ;END, SO NO FOLLOWING + MVI A,CR ;MAKE CHAR A + CALL INCR ;INCREMENT LINES FOR ERRORS + JMP MOVST4 ;STORE IN A +; +; CHECK FOR NON-CR FORMS +; AT THIS POINT, DE PTS TO NEXT CHAR IN LINE AND HL PTS TO NEXT +; BYTE IN BUFFER (MOVING DOWN) +; +MOVST1: + MOV C,A ;SAVE CHAR IN C + LDA IMFLG1 + CPI IMON ;IMMEDIATE MODE ON ? + MOV A,C ;GET CHAR BACK + JZ MOVST2 ;YES..SKIP ZEX COMMENT PROCESSING + CPI ';' ;FIRST ';'? + JZ EXCOMM ;PROCESS POSSIBLE ZEX COMMENT +MOVST2: + CPI '^' ;CONTROL CHAR? + JZ MOVST5 ;CONVERT CONTROL CHARACTERS + CPI '$' ;PARAMETER OR CONTROL CHAR? + CZ GTPARM ;SUBSTITUTE COMMAND PARAMETER OR CONTROL CHAR. +MOVST3: + STA LCHR ;SAVE LAST CHAR ENTERED + CPI CR ;=CR? + JNZ MOVST4 + MOV C,A ;SAVE CHAR TEMPORARILY + LDA OUTCNT ;GET CHAR OUTPUT FLAG + ORA A ;ANY CHAR? + MOV A,C + JZ MOVSTR ;NO..USE INPUT CR ONLY IF OTHER NON-CONTROL +; CHARACTERS IN CURRENT LINE +; PLACE CHAR IN BUFFER +; CHAR IN A, HL PTS TO BUFFER LOC +; +MOVST4: + CALL CHRSTR ;ADD TO BUFFER + CALL CNTINC ;INCREMENT COUNT + JMP MOVSTR +; +; PREFIX WAS AN UPARROW (^), SO PROCESS CONTROL CHARS +; +MOVST5: + CALL GETCMD ;VALIDATE CONTROL CHARACTERS + CPI ':' + JZ REXC ;RE-EXECUTE + CPI '?' + JZ GCRW ;CR WAIT + CPI '/' + JZ GCRBW ;RING BELL AND WAIT FOR + CPI '"' + JZ UISET ;USER INPUT + CPI '*' + JZ GRNG ;CONTINUALLY RING BELL WHILE WAITING FOR + CPI '|' + JZ GCRLF ;CR,LF GENERATION + CPI '$' + JZ PRMDEF ;DEFAULT PARAMETERS' LINE + CPI '.' + JZ PRTSUP ;PRINT SUPPRESS TOGGLE + CPI '#' + JZ MSGSUP ;MESSAGE SUPPRESS TOGGLE + CPI '<' + JZ IMPRTY ;IMMEDIATE MODE START + CPI '>' + JZ IMPRTN ;IMMEDIATE MODE STOP + CPI '&' + JZ IFPSUP ;PRINT SUPPRESS DURING FALSE IF + JMP MOVST3 ;OTHER CONTROL CODES +; +IFPSUP: + MVI A,IPS ;CONVERT '^&' TO IF PRINT SUPPRESS FLAG + JMP MOVST3 +; +REXC: + MVI A,REXEC ;CONVERT '^:' TO RE-EXECUTE FLAG + JMP MOVST3 +; +GCRW: + MVI A,CRWAIT ;CONVERT '^?' TO CRWAIT FLAG + JMP MOVST3 +; +GCRBW: + MVI A,CRBWAIT ;CONVERT '^/' TO CRBWAIT FLAG + JMP MOVST3 +; +; ALLOW USER INPUT FROM NOW ON, BUT FIRST SKIP OUT REST OF LINE +; +UISET: + LDAX D ;GET NEXT CHAR + ANI 7FH ;MASK IT + CPI LF ;DONE? + JZ UISET1 + CPI 1AH ;EOF? + JZ UISET1 + INX D ;PT TO NEXT CHAR + JMP UISET ;CONTINUE SKIPPING +UISET1: + MVI A,UICH ;CONTROL CHAR + JMP MOVST3 +; +GRNG: + MVI A,RNG ;CONVERT '^*' TO RNG FLAG + JMP MOVST3 +; +GCRLF: + MVI A,CR ;GENERATE CR & LF + CALL CHRSTR + MVI A,LF + CALL CHRSTR + STA LCHR + JMP MOVSTR +; +PRMDEF: + PUSH H + LXI H,PRMDFP + PUSH H + LXI B,PRMDFL + XRA A + CALL FILL ;CLEAR PTR TABLE + POP H + MVI A,PRMDFL/2 + STA PRMMAX ;HIGHEST PARAMETER # + CALL PARMS ;BUILD DEFAULT PARAMETERS PTRS + POP H + INX D ;SKIP CR + MVI A,LF + JMP MOVSTX ;CONTINUE AT EOL +; +; CHECK TO SEE IF PREVIOUS CHAR WAS ALSO A ; AND FLUSH AS ZEX COMMENT IF SO +; +EXCOMM: + PUSH H + LXI H,LCHR ;PT TO PREVIOUS CHAR + CMP M ; DOUBLE ;? + MOV M,A ;STORE CURRENT CHAR AS PREVIOUS CHAR + POP H + JNZ MOVST3 ;NO...CONTINUE + MOV C,A ;SAVE CHAR + LDA PRTFLG + CPI PSUP + MOV A,C + JZ MOVST3 ;PRINT SUPPRESS + LDA IMFLG1 + CPI IMON + MOV A,C + JZ MOVST3 ;IMMEDIATE MODE + INX H ;YES..IGNORE PREVIOUS ; + PUSH H + LXI H,LCHR + LDA OUTCNT + DCR A ;DROP 1 CHAR. + STA OUTCNT +EXCOML: + LDAX D ;IGNORE CHARACTERS UNTIL EOF OR LF + INX D + CPI 1AH ;EOF + JZ EXCOMX + CPI LF ;LINE FEED + JNZ EXCOML + MOV M,A + LDA OUTCNT + ORA A ;ANY CHAR. ON THIS LINE? + JZ EXCOM2 ;NO...SKIP CR +EXCOM1: + POP H ;YES..FORCE CR + MVI A,CR + CALL CHRSTR + MVI A,LF + JMP MOVSTX ;CONTINUE +; +EXCOM2: + POP H + MVI A,LF + JMP MOVSTX ;CONTINUE +; +EXCOMX: + POP H + RET ;RETURN TO MAIN FLOW, WITH HL PTING TO NEXT BYTE +; +MSGSUP: + MVI A,MSUP ;CONVERT '^#' TO MESSAGE SUPPRESS FLAG + JMP MOVST3 +; +PRTSUP: + MVI A,PSUP ;CONVERT '^.' TO PRINT SUPPRESS FLAG + PUSH H + LXI H,PRTFLG + CMP M ;ALREADY ON? + JNZ PRTSST ;NO...SET FLAG + XRA A ;YES..CLEAR FLAG +PRTSST: + MOV M,A ;SET/RESET FLAG + POP H + MVI A,PSUP + JMP MOVST3 +; +IMPRTY: + MVI A,IMON ;CONVERT '^<' TO IMMEDIATE MODE START + STA LCHR + PUSH H + LXI H,IMFLG1 + CMP M ;ALREADY ON? + POP H + JZ MOVSTR ;YES.. + STA IMFLG1 + STA IMFLG2 + JMP MOVST3 ;NO... +; +IMPRTN: + MVI A,IMOFF ;CONVERT '^>' TO IMMEDIATE MODE STOP + STA LCHR + PUSH H + LXI H,IMFLG2 + CMP M ;ALREADY OFF? + POP H + JZ MOVSTR ;YES.. + STA IMFLG2 + STA IMFLG1 + JMP MOVST3 ;NO... +; +; PLACE CHAR IN BUFFER; A=CHAR, HL PTS TO BUFFER LOC +; +CHRSTR: + PUSH PSW ;CHECK FOR INPUT/ZEX BUFFER OVERLAP + PUSH D + PUSH H + LHLD ENDBUF + XCHG + POP H + MOV A,L + CMP E + JNZ CHRSTX ;LSB<> + MOV A,H + CMP D + JZ OVERL ;MSB=, OVERLAP WILL OCCUR/ABORT ZEX +; +; ADD CHAR TO ZEX'S BUFFER +; +CHRSTX: + POP D ;ADD CHAR. TO ZEX'S BUFFER + POP PSW + MOV M,A ;STORE CHAR + DCX H ;PT TO NEXT LOCATION (MOVING DOWN) + RET +; +; CHECK TO SEE IF ZEX IS ALREADY ACTIVE, AND ABORT IF SO +; +ZEXACTV: + MVI B,08H ;MESSAGE OFFSET + CALL MLDA ;GET VALUE IN A + ORA A ;0 IF NO + RZ + LXI D,ZEXACT + CALL PRINT ;ZEX ALREADY PRESENT +; +; ABORT AND RETURN TO ZCPR3 +; +CCPRET: + LHLD CCPSTK ;RESTORE STACK + SPHL + RET ;RETURN TO CCP + +; +; ZCPR3 MESSAGE BUFFER ACCESS ROUTINES +; + +; +; GETZ3MSG RETURNS HL POINTING TO DESIRED MESSAGE (OFFSET IN B) +; +GETZ3MSG: + PUSH D ;SAVE DE + LHLD Z3MSGA ;GET ADDRESS OF MESSAGES + MOV E,B ;GET OFFSET + MVI D,0 + DAD D ;HL PTS TO MESSAGE OF INTEREST + POP D + RET + +MSHLD: + PUSH D ;SAVE DE + XCHG + CALL GETZ3MSG ;MAKE HL PT TO MESSAGE + MOV M,E ;STORE LOW + INX H + MOV M,D ;STORE HIGH + XCHG ;RESTORE HL + POP D ;RESTORE DE + RET + +MSTA: + PUSH H ;SAVE HL + CALL GETZ3MSG ;PT TO MESSAGE WITH HL + MOV M,A ;STORE MESSAGE + POP H + RET + +MLDA: + PUSH H ;SAVE HL + CALL GETZ3MSG ;PT TO MESSAGE WITH HL + MOV A,M ;GET MESSAGE + POP H + RET + +; +; END OF Z3MSG ACCESS ROUTINES +; + +; +; ERROR EXITS +; +GETERR: + LXI D,CMDER ;CONTROL CHARACTER INVALID + CALL PRINT + JMP LINE ;PRINT LINE # AND LINE AND EXIT +; +NUMERR: + LXI D,NONUM ;EXCESSIVE NUMBER + CALL PRINT + JMP LINE ;PRINT LINE # AND LINE AND EXIT +; +PRMERR: + LXI D,PMERR + CALL PRINT + JMP LINE ;PRINT LINE # AND LINE AND EXIT +; +PRMTOO: + LXI D,TOOARG;TOO MANY PARAMETER ARGUMENTS + CALL PRINT + LHLD ERRLNE + CALL EPRT ;PRINT PARAMETER LINE + JMP CCPRET +; +BUFLOW: + LXI D,BUFMTY;TEXT BUFFER EMPTY + CALL PRINT + JMP CCPRET +; +NOSUB: + LXI D,NOSBF1;.SUB FILE NOT FOUND + CALL PRINT + LXI D,NOTHER + CALL PRINT + JMP CCPRET +; +OVERL: + LXI D,OVERLP;INPUT/ZEX BUFFER OVERLAP + CALL PRINT + JMP LINE +; +; SUBROUTINES +; +; CONTROL CODES 0-1FH +; WITH SUPPORT FOR $ . # < > +; +GETCMD: + LDAX D ;GET NEXT CHARACTER + INX D ;INCREMENT POINTER + CPI '|' + RZ ;CR,LF GENERATION + CPI 'a'-1 ;LOWERCASE? + JC GETUPR ;NOPE + CPI 'z'+1 ;a-z? + JNC GETERR ;NOPE + sui 'a'-'A' ;GET TO UPPERCASE +GETUPR: + CPI '@' ;0-1FH CONTROL CODE? + JNC GETCC + CPI ':' + RZ ;RE-EXECUTE + CPI '?' + RZ ;CR WAIT + CPI '/' + RZ ;CR WAIT AND RING BELL + CPI '*' + RZ ;RING BELL + CPI '"' + RZ ;USER INPUT + CPI '$' + RZ ;DEFAULT PARAMETERS' LINE + CPI '.' + RZ ;PRINT SUPPRESS TOGGLE + CPI '#' + RZ ;MESSAGE SUPPRESS TOGGLE + CPI '<' + RZ ;IMMEDIATE MODE START + CPI '>' + RZ ;IMMEDIATE MODE STOP + CPI '&' + RZ ;FALSE IF PRINT SUPPRESS + JMP GETERR +GETCC: + SUI '@' ;GET CONTROL CODE + RNC + JMP GETERR +; +; EXTRACT PARAMETER ELEMENT WHOSE $N SPECIFICATION IS POINTED TO BY DE +; DE PTS TO CHAR AFTER THE $ +; BUFFER TO PLACE RESULTING PARAMETER IS PTED TO BY HL +; +GTPARM: + LDAX D ;GET CHAR AFTER THE $ + INX D ;PT TO NEXT CHAR + CPI '$' ;IF DOUBLE $, THEN STORE AS $ + RZ + CPI '^' ;UP ARROW + RZ + CPI '|' ;CARRIAGE RETURN + RZ + CPI '1' ;CHECK FOR VALID DIGIT (1-9) + JC PRMERR + CPI '9'+1 ;RANGE ERROR? + JNC PRMERR + SUI '1' ;GET ACTUAL # (ZERO RELATIVE) + ADD A ;DOUBLE FOR OFFSET + STA PRMNUM + PUSH D ;SAVE PTRS + PUSH H + LXI H,PRMPNT ;PT TO PARAMETER PTR TABLE + CPI PRMPNL-1 ;PARAMETER NUMBER WITHIN RANGE? + JNC NOPARM ;> HIGHEST # + MOV E,A + MVI D,0 + DAD D + MOV E,M ;GET PARAMETER POINTER + INX H + MOV D,M + POP H ;RESTORE PTR TO NEXT BYTE IN OUTPUT BUFFER BELOW ZEX + MOV A,E ;ANY PARAM? + ORA D + JZ NOPARM ;NO PARAMETER PRESENT, TRY DEFAULTS +; +; MOVE PARAMETER PTED TO BY DE INTO BUFFER BELOW ZEX, 1ST BYTE PTED TO BY HL +; +MOVPRM: + LDAX D ;GET PARAMETER CHAR + INX D ;PT TO NEXT + ORA A ;DONE? + JZ ENDPAR + CALL CHRSTR ;STORE CHARS + JMP MOVPRM +; +; PARAMETER PLACED IN MEMORY -- CONTINUE +; +ENDPAR: + POP D ;GET PTR TO NEXT CHAR IN LINE + POP PSW ;CLEAR STACK + JMP MOVSTR ;RESUME PROCESSING +; +; NO PARAMETER PTED TO +; +NOPARM: + PUSH H ;SAVE PTR TO NEXT BYTE IN BUFFER BELOW ZEX + LXI H,PRMDFP ;TRY DEFAULT PARAMETERS + LDA PRMNUM + CPI PRMDFL-1 + JNC NUMERR ;> HIGHEST # + MOV E,A + MVI D,0 + DAD D + MOV E,M ;GET PARAMETER POINTER + INX H + MOV D,M + POP H + MOV A,E + ORA D + JNZ MOVPRM ;MOVE PARAMETER INTO BUFFER + JMP ENDPAR ;RESUME WITH NO PARAMETER +; +MOVEFN: + LDAX D + CPI ' ' ;SEE IF SPACE + RZ + MOV M,A + INX D ;INCREMENT POINTERS + INX H + DCR B + JNZ MOVEFN + RET +; +; INCREMENT LINE COUNT, AND AFFECT ONLY HL (MUST NOT AFFECT A) +; +INCR: + PUSH H ;SAVE OUTPUT POINTER + LHLD LINES + INX H ;INCREMENT LINE COUNTER + SHLD LINES + LXI H,LCHR ;CLEAR LAST CHARACTER + MVI M,0 + LXI H,OUTCNT;CLEAR CHARACTER COUNT + MVI M,0 + MOV L,E ;DE=HL + MOV H,D + SHLD BEGLIN + POP H + SHLD OUTLNE ;SAVE NEW OUTPUT LINE + RET +; +CNTINC: + CPI ' ' ;CONTROL CHARACTER? + RC ;YES.. + CPI UICH ;USER INPUT CHAR? + JZ CNTIN1 + ANI 80H ;SPECIAL CONTROL? + RNZ ;YES.. + LDA PRTFLG + CPI PSUP ;PRINT SUPPRESS FLAG? + RZ ;YES.. + LDA IMFLG1 + CPI IMON ;IMMEDIATE MODE? + RZ ;YES.. +CNTIN1: + LDA OUTCNT + INR A + STA OUTCNT + RET +; +PRINT: + MVI C,9 ;PRINT STRING AT (DE) + JMP BDOS +; +EPRT: + MOV A,M ;PRINT PARAMETER LINE AT (HL) + CPI CR + RZ + CPI 0 + JNZ EPRT1 + MVI A,' ' +EPRT1: + INX H + PUSH H + MOV E,A + MVI C,2 + CALL BDOS + POP H + JMP EPRT +; +CRLF: + LXI D,CRLFS ;PRINT CR/LF + JMP PRINT +; +LINE: + LXI D,LINEM ;PRINT LINE # AND LINE IN ERROR AND EXIT + CALL PRINT + LHLD LINES + CALL DECOUT ;PRINT LINE # + CALL CRLF + LHLD BEGLIN + PUSH H ;SAVE BEGGING POINTER +FINDCR: + MOV A,M + INX H + CPI 1AH ;END OF BUFFER + JZ FOUND + CPI CR + JNZ FINDCR +FOUND: + MVI M,0 ;END OF STRING + POP H ;START OF STRING + CALL PRNTHL ;PRINT BAD LINE + JMP CCPRET ;THATS ALL FOLKS +; +PRNTHL: + MOV A,M ;PRINT LINE AT (HL) + INX H + ORA A + RZ + MOV E,A + PUSH H ;SAVE POINTER + CALL OUTCHR + POP H ;GET POINTER BACK + JMP PRNTHL +; +OUTCHR: + MVI C,2 ;PRINT CHARACTER IN E + JMP BDOS +; +DECOUT: + PUSH H ;PRINT DECIMAL LINE NUMBER + PUSH D + PUSH B + LXI B,-10 ;RADIX FOR CONVERSION + LXI D,-1 ;THIS BECOMES NO DIVIDED BY RADIX +DX: + DAD B ;SUBTRACT 10 + INX D + JC DX + LXI B,10 + DAD B ;ADD RADIX BACK IN ONCE + XCHG + MOV A,H + ORA L ;TEST FOR ZERO + CNZ DECOUT ;RECURSIVE CALL + MOV A,E + ADI '0' ;CONVERT FROM BCD TO HEX + MOV E,A ;TO E FOR OUTPUT + MVI C,2 + CALL BDOS + POP B ;RESTORE REGISTERS + POP D + POP H + RET +; +MOVE: + MOV A,M ;MOVE STRING AT (HL) TO (DE) FOR LENGTH IN B + INX H + STAX D + INX D + DCR B + JNZ MOVE + RET +; +FILL: + PUSH D ; FILL STORAGE AT (HL) WITH CHARACTER IN A + MOV E,A ; FOR LENGTH IN BC + MOV A,B + ORA C + MOV A,E + POP D + RZ + DCX B + MOV M,A + INX H + JMP FILL +; +; WORKING STORAGE AREA +; +SUBNAM: + DB 'SUB' +ZEXNAM: + DB 'ZEX' +LINEM: + DB ' Error Line # $' +ZEXACT: + DB CR,LF,' ZEX Already Present$' +BUFMTY: + DB CR,LF,'Text Buffer Empty$' +OVERLP: + DB CR,LF,'Input/ZEX Buffer Overlap$' +NONUM: + DB CR,LF,'Parameter Number out of range$' +NOPRM: + DB CR,LF,'No Parameter or Default Parameter$' +PMERR: + DB CR,LF,'Parameter$' +NOSBF1: + DB CR,LF,'File ' +NOSBF2: + DB 'filename.typ$' +NOTHER: + DB ' not there$' +CMDER: + DB CR,LF,'Control character$' +TOOARG: + DB CR,LF,'Too many arguments - $' +SIGNON: + DB 'ZEX, Version ' + DB VERS/10+'0','.',(VERS MOD 10)+'0','$' +CRLFS: + DB CR,LF,'$' +; + DS 80 ;STACK SPACE +CCPSTK: + DW 0 ;CCP STACK PTR +IMFLG1: + DB 0 ;=IMON ENCOUNTERED +IMFLG2: + DB 0 ;=IMOFF ENCOUNTERED +PRTFLG: + DB 0 ;=PSUP ON +LCHR: + DB 0 ;LAST CHARACTER READ +PRMMAX: + DB 0 ;HIGHEST PARAMETER # +PRMNUM: + DB 0 ;CURRENT $<1-9> NUMBER * 2 (ZERO RELATIVE) +ERRLNE: + DW 0 +BITMAP: + DB 0 ;PRESENT OFFSET BIT'S +COUNT: + DB 0FFH ;PRESENT OFFSET BIT COUNT +BEGLIN: + DW BEGREL ;BEGINNING OF OLD LINE POINTER +LINES: + DW 1 +INBUF: + DW BEGREL +ENDBUF: + DW 0 ;END OF INPUT BUFFER +OUTCNT: + DB 0 +OUTLNE: + DW 0 +RELSTRT: + DW 0 +OUTBUF: + DW 0 +BUFSTR: + DW 0 +RELOCL: + DW 0 ;LENGTH OF RELOC PROGRAM (FILLED IN BY SID) +PRMDFP: ;DEFAULT PARAMETER PTRS + REPT 9 + DW 0 + ENDM +PRMDFL EQU $-PRMDFP +PRMDMY: + DW 0 ;DUMMY PARAMETER FOR .SUB FILE SPEC. +PRMPNT: ;COMMAND LINE PARAMETER PTRS + REPT 9 + DW 0 + ENDM +PRMPNL EQU $-PRMPNT +PATCH: ;PATCH AREA + REPT 32 + DB 'p' + ENDM + REPT 30 + DW 0 + ENDM +; +; INSURE 8 BYTE BOUNDARY FOR REL.UTL(RELS.UTL) +; +?PLOC SET $ + IF (?PLOC MOD 8) GT 0 +?PLOC SET (?PLOC AND 0FFF8H)+8 ;GET NEXT 8 BYTE BOUNDARY + ORG ?PLOC + ENDIF +; +BEGREL: + DS 0 ;RELOC PROGRAM STARTS HERE (ALSO USED AS BUFFER) +; + ENDIF +; +; END OF ZEX INITIATOR CODE SEGMENT +; +$-PRINT + IF NOT ZEXBASE +$+PRINT +; +; START OF ZEX RELOCATED CODE SEGMENT +; HL PTS TO MULTIPLE COMMAND BUFFER +; OR HL=0 IF NO MULTIPLE COMMANDS +; + ORG ZEXREL +; +ZEX: + SHLD EXMBASE ;SAVE ADDRESS OF MCL BUFFER + XCHG ;HL=ADDRESS OF ZCPR3 MESSAGES + SHLD Z3MSGA ;SAVE ADDRESS + MVI B,09H ;MESSAGE OFFSET + CALL MLHLD ;GET ADDRESS OF NEXT CHAR + MOV A,M ;GET 1ST CHAR + CPI MSUP ;1ST CHAR=MESSAGE SUPPRESS? + JNZ ZEX1 ;NO... + DCX H ;YES..SKIP CHARACTER + MVI B,09H ;MESSAGE OFFSET + CALL MSHLD ;SET PTR TO NEXT CHAR + STA MSUPFL ;SET INITIAL FLAG +ZEX1: + LXI SP,MEMTOP + LHLD BDOS+1 ;GET WARM JUMP FOR STANDARD CCP + SHLD MEMTOP ;SET PTR TO TOP OF MEMORY + INX H + MOV E,M ;DE = ADDRESS OF ACTUAL BDOS + INX H + MOV D,M + XCHG ;HL PTS TO ACTUAL BDOS + MOV A,H ;SUBTRACT 8 FOR CCP ENTRY POINT + SUI 8 + MOV H,A + MVI L,3 ;SET UP FOR WARM CCP JUMP + SHLD CCPJMP + LHLD WARM+1 ;SAVE WARM BOOT ADDRESS + SHLD WARMPT + LXI D,BSWARM ;SAVE OLD BIOS JUMPS + MVI B,12 + CALL MOVE ;MOVE BIOS JUMPS + LHLD WARMPT + XCHG + LXI H,LOCJMP ;STORE NEW BIOS JUMPS + MVI B,12 + CALL MOVE ;MOVE NEW BIOS JUMPS TO BIOS AREA +; +; ZEX RUNTIME BIOS INTERCEPT ROUTINES +; +NWARM: + LXI SP,MEMTOP + MVI B,09H ;MESSAGE OFFSET + CALL MLHLD ;GET ADDRESS OF NEXT CHAR + MOV A,M + CPI 0FFH ;TEST IT + JZ WARMX ;WARM RETURN + LHLD WARMPT ;SET WARM BOOT ADDRESS + SHLD WARM+1 + LHLD MEMTOP ;SET BDOS ENTRY ADDRESS + SHLD BDOS+1 + LXI D,BUFF ;DMA ADDRESS + MVI C,26 ;SET DMA + CALL BDOS + LDA BDISK + MOV C,A + LHLD CCPJMP + PCHL ;GOTO CONSOLE PROCESSOR +; +; JMP TABLE TO OVERLAY BIOS WITH NEW ZEX-BASED JUMPS +; +LOCJMP: + JMP NWARM ;WARM + JMP BCONST ;CONST + JMP NCONIN ;CONIN + JMP NCONOT ;CONOT +; +; ZCPR3 MESSAGE BUFFER ACCESS ROUTINES +; + +; +; GETZ3MSG RETURNS HL POINTING TO DESIRED MESSAGE (OFFSET IN B) +; +Z3MSGA: + DW 0 ;MESSAGES ADDRESS +GETZ3MSG: + PUSH D ;SAVE DE + LHLD Z3MSGA ;GET ADDRESS OF MESSAGES + MOV E,B ;GET OFFSET + MVI D,0 + DAD D ;HL PTS TO MESSAGE OF INTEREST + POP D + RET + +MSHLD: + PUSH D ;SAVE DE + XCHG + CALL GETZ3MSG ;MAKE HL PT TO MESSAGE + MOV M,E ;STORE LOW + INX H + MOV M,D ;STORE HIGH + XCHG ;RESTORE HL + POP D ;RESTORE DE + RET + +MLHLD: + PUSH PSW ;SAVE A + CALL GETZ3MSG ;MAKE HL PT TO MESSAGE + MOV A,M ;GET LOW + INX H + MOV H,M ;GET HIGH + MOV L,A ;PUT LOW + POP PSW ;RESTORE A + RET + +MSTA: + PUSH H ;SAVE HL + CALL GETZ3MSG ;PT TO MESSAGE WITH HL + MOV M,A ;STORE MESSAGE + POP H + RET + +MLDA: + PUSH H ;SAVE HL + CALL GETZ3MSG ;PT TO MESSAGE WITH HL + MOV A,M ;GET MESSAGE + POP H + RET + +; +; END OF Z3MSG ACCESS ROUTINES +; + +; +; CONSOLE INPUT INTERCEPT ROUTINE +; +NCONIN: + MVI B,07H ;MESSAGE OFFSET + CALL GETZ3MSG ;PT TO ZEX MESSAGE BYTE + MOV A,M ;GET ZEX MESSAGE + CPI 2 ;SUSPEND INTERCEPT? + JZ BCONIN ;GET INPUT VIA BIOS IF USER INPUT ACTIVE + CPI 1 ;PROMPT JUST PRINTED? + JNZ NCONNP + MVI M,0 ;CLEAR ZEX MESSAGE + LXI H,STARTM ;PRINT MESSAGE + CALL PMSG +; LDA PMCHR ;PRINT PROMPT CHAR +; MOV C,A +; CALL BCONOT +NCONNP: + MVI B,08H ;MESSAGE OFFSET + CALL MLDA ;GET ZEX RUNNING MESSAGE + ORA A ;0=NO + JZ WARMX ;ABORT ZEX IF NOT + LXI H,0 + DAD SP ;SAVE RETURN STACK LEVEL + SHLD CONSTK + LXI SP,MEMTOP ;SET USER STACK +NCONNL: + CALL BCONST ;GET CONSOLE STATUS + ORA A + JZ GETBUF ;GET CHARACTER FROM BUFFER + CALL BCONIN ;GET CHARACTER + CPI 'C'-'@' ;SEE IF TERMINATE CHARACTER + JZ ZEXABRT + CPI 'S'-'@' ;13H + JNZ NCONEX + CALL BCONIN ;WAIT FOR NEXT CHARACTER + ANI 7FH + MVI B,09H ;MESSAGE OFFSET + CALL MLHLD ;PT TO NEXT CHAR + INX H + MOV M,A + MVI B,09H ;MESSAGE OFFSET + CALL MSHLD ;RESET PTR TO NEXT CHAR + MVI A,'S'-'@' ;13H +NCONEX: + LHLD CONSTK ;RESTORE CALLER'S STACK + SPHL + RET +; +; RETURN NEXT CHAR FROM INPUT BUFFER +; +GETBUF: + LDA IPSUPFL ;COMBINE PSUPFL AND IPSUPFL TO SET PRINT FLAG + ORA A ;0=NO SUPPRESS + JZ GBUF0 + MVI B,01H ;OFFSET TO IF FLAG + CALL GETZ3MSG ;PT TO IF FLAG + MOV A,M ;GET IF FLAG + ORA A ;NO IF? + JZ GBUF0 + INX H + ANA M ;SET IF STATE + JNZ GBUF0 ;CURRENT IF IS TRUE + MVI A,0FFH ;SUPPRESS PRINT + STA OUTFLG + JMP GBUF1 +GBUF0: + LDA PSUPFL ;SET PRINT SUPPRESS FLAG FOR NCONOT + STA OUTFLG +GBUF1: + CALL GETCHR ;GET NEXT CHARACTER + CPI UICH ;USER INPUT? + JZ UISTRT ;YES..SET USER INPUT PENDING FLAG + CPI REXEC ;RE-EXECUTE? + JZ REXECR ;YES..RESET BUFFER PTR + CPI CRWAIT ;CR WAIT? + JZ CRWRTN ;YES..WAIT FOR CR + CPI CRBWAIT ;CR WAIT WITH RING BELL? + JZ CRBWRTN ;YES..WAIT FOR CR AND RING BELL + CPI RNG ;RING BELL? + JZ RNGBELL ;YES..JUST RING THE BELL + CPI MSUP ;MESSAGE SUPPRESS FLAG? + JZ MSUPCK ;YES..TOGGLE FLAG + CPI PSUP ;PRINT SUPPRESS ? + JZ PSUPCK ;YES..TOGGLE FLAG + CPI IPS ;FALSE IF PRINT SUPPRESS? + JZ IPSUPCK + CPI IMON ;IMMEDIATE MODE START ? + JZ IMFLGS ;YES..SET FLAG + CPI IMOFF ;IMMEDIATE MODE STOP? + JZ IMFLGS ;YES..RESET FLAG + CPI CR ;CR? + JNZ GETEXT ;NO...EXIT +; +; CR, SO RESET PRINT SUPPRESSION BASED ONLY ON IPSUPFL +; + LDA IPSUPFL ;COMBINE PSUPFL AND IPSUPFL TO SET PRINT FLAG + ORA A ;0=NO SUPPRESS + JZ GBUF2 + MVI B,01H ;MESSAGE OFFSET TO IF FLAG + CALL GETZ3MSG ;PT TO IF FLAG + MOV A,M ;GET IF FLAG + ORA A ;NO IF? + JZ GBUF2 + INX H + ANA M ;SET IF STATE + JNZ GBUF2 ;CURRENT IF IS TRUE + MVI A,0FFH ;SUPPRESS PRINT + STA OUTFLG + MVI A,CR + JMP GETEXT +GBUF2: + XRA A + STA OUTFLG ;YES..RESET PRINT SUPPRESSION + MVI A,CR +GETEXT: + MOV C,A + LDA IMFLG + CPI IMON ;IMMEDIATE MODE ? + MOV A,C + JNZ NCONEX ;NO...RETURN TO CALLER WITH CHAR + CALL BCONOT ;YES..IMMEDIATE ECHO TO CONSOLE + JMP NCONNL ;...LOOP UNTIL IMOFF +; +; ^" COMMAND +; +UISTRT: + MVI A,2 ;SET MESSAGE TO SUSPEND INTERCEPT + MVI B,07H ;MESSAGE OFFSET + CALL MSTA ;SET MESSAGE + LHLD CONSTK ;RESTORE CALLER'S STACK + SPHL + JMP NCONIN ;GET CHAR FROM USER FOR NOW +; +; ^: COMMAND +; +REXECR: + MVI B,0BH ;MESSAGE OFFSET + CALL MLHLD ;PT TO FIRST CHAR IN BUFFER + MVI B,09H ;MESSAGE OFFSET + CALL MSHLD ;SET PTR TO NEXT CHAR + XRA A + STA IMFLG ;RESET ALL FLAGS + STA PSUPFL + STA IPSUPFL + STA MSUPFL + JMP NCONNL ;...LOOP UNTIL ^C +; +; ^? COMMAND +; +CRWRTN: + CALL BCONIN ;GET INPUT CHAR + CPI 'C'-'@' + JZ ZEXABRT ;=^C + CPI CR + JZ CRWRTX ;= + CPI ' ' + JZ CRWRTX ;= + MVI C,BELL + CALL BCONOT ;<>CR + JMP CRWRTN +; +; ^/ COMMAND +; +CRBWRTN: + LXI H,DELAY ;SET COUNTER +CRBWR1: + PUSH H ;SAVE COUNTER + CALL BCONST ;CHECK STATUS + POP H ;GET COUNTER + ORA A ;SET FLAGS + JNZ CRBWR2 + DCX H ;COUNT DOWN + MOV A,H ;DONE? + ORA L + JNZ CRBWR1 + MVI C,BELL ;RING BELL + CALL BCONOT + JMP CRBWRTN +CRBWR2: + CALL BCONIN ;GET CHAR + CPI 'C'-'@' ;ABORT? + JZ ZEXABRT + CPI CR ;CONT IF + JNZ CRBWRTN +; +; ^| COMMAND +; +CRWRTX: + MOV C,A ;ECHO CR/LF + CALL NCONOT + MVI C,LF + CALL NCONOT + JMP GETBUF +; +; ^* COMMAND +; +RNGBELL: + MVI C,BELL ;RING BELL + CALL NCONOT + JMP GETBUF +; +; ^. COMMAND +; +PSUPCK: + LXI H,PSUPFL + CMP M + JNZ PSUPST ;SET FLAGS IF NOT EQUAL + XRA A ;ELSE RESET FLAGS +PSUPST: + MOV M,A ;SET/RESET SAVED FLAG + JMP GETBUF ;AND GET NEXT CHARACTER (SETS EXEC FLAG) +; +; ^& COMMAND +; +IPSUPCK: + LXI H,IPSUPFL + CMP M + JNZ PSUPST ;SET FLAGS IF NOT EQUAL + XRA A ;ELSE RESET FLAGS + JMP PSUPST ;SET/RESET FLAG IN A +; +; ^# COMMAND +; +MSUPCK: + LXI H,MSUPFL + CMP M + JNZ MSUPST ;SET FLAGS IF NOT EQUAL + XRA A ;ELSE RESET FLAG +MSUPST: + MOV M,A ;SET/RESET FLAG + JMP GETBUF ;AND GET NEXT CHARACTER +; +; ^< AND ^> COMMANDS +; +IMFLGS: + STA IMFLG ;SET/RESET IMMEDIATE MODE FLAG + JMP GETBUF ;GET NEXT CHARACTER +; +; CONSOLE OUTPUT INTERCEPT ROUTINE +; +NCONOT: + LDA OUTFLG ;PRINT SUPPRESSION? + ORA A + RNZ ;YES...IGNORE ECHO + MOV A,C + STA PMCHR ;SET LAST CHAR OUTPUT + JMP BCONOT +; +; GET NEXT CHAR FROM BUFFER AND TERMINATE ZEX IF END OF BUFFER +; +GETCHR: + MVI B,09H ;MESSAGE OFFSET + CALL MLHLD ;PT TO NEXT CHAR + MOV A,M ;GET IT + DCX H ;PT TO FOLLOWING + MVI B,09H ;MESSAGE OFFSET + CALL MSHLD ;SET PTR TO NEXT CHAR + CPI 0FFH ;EOB? + RNZ ;NO...RETURN +; LHLD Z3MSG+09H ;PT TO EOB + INX H ;POINT TO EOB + MVI B,09H ;MESSAGE OFFSET + CALL MSHLD ;SET PTR TO NEXT CHAR (LAST CHAR) + CALL MOVBAK ;MOVE JUMPS BACK + CALL BDOSRST ;RESTORE BDOS ADDRESS + CALL PRDONEM + XRA A ;TURN OFF ZEX + MVI B,08H ;MESSAGE OFFSET + CALL MSTA ;TURN OFF ZEX + LHLD CONSTK ;GET OLD STACK + SPHL + MVI A,CR ;RETURN CARRIAGE RETURN + RET + +; +; PRINT DONE MESSAGE WITH FOLLOWING PROMPT CHAR +; +PRDONEM: + LXI H,DONEM ;PRINT MESSAGE + CALL PMSG + LDA PMCHR ;PRINT PROMPT CHAR + MOV C,A ;IN C FOR BIOS + JMP BCONOT + +; +; RESTORE BDOS JMP IF NECESSARY +; +BDOSRST: + LHLD MEMTOP ;SEE IF BDOS+1=MEMTOP + XCHG + LHLD BDOS+1 + MOV A,E + SUB L + MOV A,D + SBB H + RNZ ;DON'T REPLACE BDOS JUMP + INX D ;PT TO BDOS JUMP + LDAX D ;GET LOW ADDRESS + MOV L,A ;... IN L + INX D + LDAX D ;GET HIGH ADDRESS + MOV H,A ;... IN H + SHLD BDOS+1 ;RESET BDOS JUMP + RET +; +; ^C ABORT EXIT +; +ZEXABRT: + LXI SP,MEMTOP ;^C ABORTS ZEX + LXI H,ABORTD ;ABORT + CALL PMSG + JMP WARMX1 ;DON'T PRINT DONE MESSAGE +; +; ABORT ZEX AND RETURN TO ZCPR3 +; +WARMX: + CALL PRDONEM ;PRINT DONE MESSAGE +; +; ENTRY POINT TO ABORT ZEX WITHOUT MESSAGE +; +WARMX1: + XRA A ;SAY THAT ZEX IS NOT RUNNING + MVI B,08H ;MESSAGE OFFSET + CALL MSTA ;SET NOT RUNNING + CALL MOVBAK ;MOVE JUMPS BACK + CALL BDOSRST ;RESTORE BDOS JUMPS + LHLD EXMBASE ;MULTIPLE COMMAND LINES ENABLED? + MOV A,H ;ANY ON? + ORA L + JZ WARM ;NONE ON IF ADDRESS IS ZERO, SO JUST WARM BOOT +; +; THIS SECTION OF CODE CLEARS THE MULTIPLE COMMAND LINE BUFFER +; + MOV D,H ;DE PTS TO MULTIPLE COMMAND BUFFER ALSO + MOV E,L + PUSH H ;SAVE PTR + LXI H,4 ;PT TO FIRST CHAR OF LINE + DAD D + MVI M,0 ;SET FIRST CHAR OF LINE TO ZERO FOR EOL + XCHG ;DE PTS TO FIRST CHAR OF LINE + POP H ;GET PTR + MOV M,E ;STORE ADDRESS OF EMPTY COMMAND (EOL) + INX H + MOV M,D + JMP WARM +; +; SUBROUTINES +; +MOVBAK: + LHLD WARMPT ;MOVE OLD JUMP TABLE BACK TO BIOS + XCHG + LXI H,BSWARM + MVI B,12 + CALL MOVE + JMP F121 ;CALL 1.2.1 FIX FOR MBASIC 1.1.2 +; +MOVE: + MOV A,M ;MOVE STRING FROM (HL) TO (DE) FOR LENGTH IN B + INX H + STAX D + INX D + DCR B + JNZ MOVE + RET +; +PMSG: + PUSH H + LDA IPSUPFL ;COMBINE PSUPFL AND IPSUPFL TO SET PRINT FLAG + ORA A ;0=NO SUPPRESS + JZ PMSG0 + MVI B,01H ;MESSAGE OFFSET TO IF FLAG + CALL GETZ3MSG ;PT TO IF FLAG + MOV A,M ;GET IF FLAG + ORA A ;NO IF? + JZ PMSG0 + INX H + ANA M ;SET IF STATE + POP H ;IN CASE OF RETURN + RZ ;SKIP MESSAGE IF SUPPRESSED + PUSH H +PMSG0: + POP H + LDA MSUPFL ;PRINT MESSAGE AT (HL) + CPI MSUP ;MESSAGES SUPPRESSED? + RZ ;YES..EXIT +PMSGL: + MOV A,M ;GET NEXT CHAR + ORA A ;END OF MESSAGE? + RZ ;YES..EXIT + INX H ;PT TO NEXT CHAR + PUSH H ;SAVE PTR + MOV C,A ;OUTPUT CHAR + CALL BCONOT + POP H ;RESTORE PTR + JMP PMSGL +; +; REPLACE ZEX ROUTINE JUMPS WITH BIOS JUMPS +; +F121: + LXI H,BSWARM ; INSURE ONLY BIOS 1.1.2 + LXI D,NWARM ; CALLS FROM NOW ON 1.1.2 + MVI B,3 ; FOR PROGRAMS 1.1.2 + CALL MOVE ; THAT MAY HAVE 1.1.2 + LXI H,BCONIN ; COPIED OUR 1.1.2 + LXI D,NCONIN ; ADDRESSES AS 1.1.2 + MVI B,3 ; IF THEY WERE 1.1.2 + CALL MOVE ; IN THE BIOS. 1.1.2 + LXI H,BCONOT ; (MBASIC DOES THIS) 1.1.2 + LXI D,NCONOT ; 1.1.2 + MVI B,3 ; 1.1.2 + JMP MOVE ; 1.1.2 +; +; WORKING STORAGE AREA +; +ABORTD: + DB CR,LF,'[ZEX Aborted]',CR,LF,0 +STARTM: + DB ' ZEX: ',0 +DONEM: + DB 'Done',0 + +; + REPT 12 ;12 ELT STACK + DW 0 + ENDM +MEMTOP: + DW 0 +EXMBASE: + DW 0 +CCPJMP: + DW 0 +WARMPT: + DW 0 +; +; ORIGINAL BIOS JMP TABLE +; +BSWARM: + JMP $ +BCONST: + JMP $ +BCONIN: + JMP $ +BCONOT: + JMP $ +; +PMCHR: + DB 0 +PSUPFL: + DB 0 +IPSUPFL: + DB 0 +OUTFLG: + DB 0 +NUICH: + DB 0 +IMFLG: + DB 0 +MSUPFL: + DB 0 +CONSTK: + DW 0 +; +?PLEN SET $ + IF (?PLEN MOD 8) GT 0 +?PLEN SET (?PLEN AND 0FFF8H)+8;GET NEXT BOUNDARY + ENDIF +; +DRVERL EQU ?PLEN +; +DRVL8 EQU DRVERL/8 ;LENGTH OF RELOCATION BIT MAP + ORG DRVERL +; + ENDIF +; +; END OF ZEX RELOCATED CODE SEGMENT +; + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ZEX.COM b/Images/Source/hd0/s0/u15/ZEX.COM new file mode 100644 index 0000000000000000000000000000000000000000..c1df478ef00b70272b7caa68a7a86e9a3df8941a GIT binary patch literal 4992 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ZEX.ZEX b/Images/Source/hd0/s0/u15/ZEX.ZEX new file mode 100644 index 00000000..83370e7e --- /dev/null +++ b/Images/Source/hd0/s0/u15/ZEX.ZEX @@ -0,0 +1,181 @@ +; +; Command File to Assemble ZEX by Richard Conn +; +; The following files are assumed: +; ED.COM, MAC.COM, ZSID.COM +; The following resident commands are assumed: +; ERA, REN, IF, FI +; + +; +; 1. Test for Needed Files +; +if exist zex.asm +if exist a:rels.utl + +; +; 2. Erase Any Files from Previous Executions +; +ERA ZEX*.BAK +ERA ZEX*.HEX +ERA ZEX*.SYM + +; +; 3. Create ZEX30.LIB for Assembly of +; ORG 0 Relocated Code Segment +; +ED ZEX30.LIB +#A +#K +I +ZEXBASE EQU FALSE ;SUPPRESS ZEX INITIATOR CODE +ZEXREL EQU 0 ;SET RELOCATED CODE SEGMENT TO ORG 0 +^Z +E + +; +; 4. Assemble only ORG 0 Relocated Code Segment +; +MAC ZEX $$PZ + +; +; 5. Rename Files from Step 4 +; +REN ZEX300.HEX=ZEX.HEX +REN ZEX300.SYM=ZEX.SYM + +; +; 6. New ZEX30.LIB for Assembly of +; ORG 100H Relocated Code Segment +; +ED ZEX30.LIB +#A +#K +I +ZEXBASE EQU FALSE ;SUPPRESS ZEX INITIATOR CODE +ZEXREL EQU 0100H ;SET RELOCATED CODE SEGMENT TO ORG 100H +^Z +E + +; +; 7. Assemble only ORG 100H Relocated Code Segment +; +MAC ZEX $$PZ SZ + +; +; 8. Rename File from Step 7 +; +REN ZEX301.HEX=ZEX.HEX + +; +; 9. New ZEX30.LIB for Assembly of +; ZEX Initiator Code Only +; +ED ZEX30.LIB +#A +#K +I +ZEXBASE EQU TRUE ;ENABLE ZEX INITIATOR CODE +ZEXREL EQU 0 ;RESET RELOCATED CODE SEGMENT TO ORG 0 +^Z +E + +; +; 10. Assemble ZEX Initiator Code Only +; +MAC ZEX $$PZ + +; +; 11. Use ZSID and RELS.UTL to Create ZEX.COM +; +; [note: If only REL.UTL is available, comment out the lines +; starting with IZEX.COM below and change the line +; SID RELS.UTL to SID REL.UTL and a SAVE 10 ZEX.COM +; must be added at the end of this file.] +; +; ZEX.HEX contains ZEX Initiator Code +; ZEX.SYM contains symbols for SID for ZEX Initiator Code +; +; ZEX300.HEX contains ZEX ORG 0 Relocated Code Segment +; ZEX300.SYM contains symbols for SID for ZEX ORG 0 Rel Code +; +; ZEX301.HEX contains ZEX ORG 100H Rel Code Segment +; +; BEGREL is the symbol for the start of the Rel Code +; Segment in ZEX.COM +; +; DRVERL is the symbol for the length of the Rel Code +; Segment +; +; DRVL8 is the symbol for the length of the storage +; needed for the relo table bit map to be created +; by RELS.UTL +; +; RELOCL is the symbol for the DW in ZEX.COM that will +; contain the length of the Relocated Code Segment +; +; +; 11A. SID is invoked and the .SYM files for the ORG 0 Rel Code +; Segment and the Initiator Code Segment are loaded. +; +; 11B. The DW at symbol RELOCL is updated with the value of +; DRVERL from the ORG 0 Rel Code Segment. +; +; 11C. Memory for the two copies of the Relocated Code Segment +; (ORG 0 and ORG 100H) and the rel table bit map is zeroed. +; +; 11D. The ORG 0 Relocated Code Segment is loaded starting at +; location BEGREL. +; +; 11E. The ORG 100H Relocated Code Segment is loaded after the +; segment loaded in step C plus the length of the rel +; table bit map. +; +; 11F. RELS.UTL routine SETADRS sets the starting addresses of +; the two Relocated Code Segments for creation of the rel +; table bit map. +; +; 11G. RELS.UTL routine SETLEN sets the length of the Relocated +; Code Segment and builds the relocation table bit map. +; +; 11H* RELS.UTL routine SAVE saves the EX Initiator Code Segment, +; the ORG 0 Relocated Code Segment, and the rel table +; bit map created by RELS.UTL. +; +; * [note: not used if only REL.UTL is available] +; +; 11I. CP/M is returned to by G0. +; +; 11J** SAVE 10 ZEX.COM saves the ZEX Initiator Code Segment, +; the ORG 0 Relocated Code Segment, and the rel table +; bit map created by REL.UTL. +; +; ** [note: used ONLY if REL.UTL is used] +; +ZSID A:RELS.UTL +IZEX.HEX ZEX300.SYM +R +I* ZEX.SYM +R +SW.RELOCL +.DRVERL +. +F.BEGREL .BEGREL+.DRVERL+.DRVL8+.DRVERL 0 +IZEX300.HEX +R.BEGREL +IZEX301.HEX +R.BEGREL+.DRVERL+.DRVL8-100 +C.SETADRS .BEGREL .BEGREL+.DRVERL+.DRVL8 +C.SETLEN .DRVERL .BEGREL+.DRVERL +IZEX.COM +C.SAVE 100 .BEGREL+.DRVERL+.DRVL8 +G0 +; +; 12. Clean Up Files on Disk and Terminate IFs +; +ERA ZEX*.BAK +ERA ZEX*.HEX +ERA ZEX*.SYM +ERA ZEX30.LIB +fi;fi + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/ZEX2.COM b/Images/Source/hd0/s0/u15/ZEX2.COM new file mode 100644 index 0000000000000000000000000000000000000000..456ae7edab4a93661a11bcd2e5c1c88c586ec456 GIT binary patch literal 5120 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ZEX31A.COM b/Images/Source/hd0/s0/u15/ZEX31A.COM new file mode 100644 index 0000000000000000000000000000000000000000..834529966964dd83fbf6b056d277488fd88a82f7 GIT binary patch literal 4992 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 O@kR}Lz8lu(`+osP`l%TJ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ZGOLF.COM b/Images/Source/hd0/s0/u15/ZGOLF.COM new file mode 100644 index 0000000000000000000000000000000000000000..b948fd5b6ec2a42dbb4b39401a5f363619c4121a GIT binary patch literal 4224 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/ZSYSTEM.INS b/Images/Source/hd0/s0/u15/ZSYSTEM.INS new file mode 100644 index 00000000..f7b5b164 --- /dev/null +++ b/Images/Source/hd0/s0/u15/ZSYSTEM.INS @@ -0,0 +1,115 @@ +; +; Complete listing of Z-System Utilities as of July 20, 1986. +; Includes "pending" (unofficial) submissions where applicable. +; In this list filenames contain the latest version number. In some +; cases, filenames have been truncated to allow use of the version +; number, e.g., "COMMEN10" refers to COMMENT v1.0, etc. Use this +; list as a checklist to see if you possess the current versions of +; these tools. +; -D. McCord, sysop, Z-Node Central +; +; (This list may be used by Z3INS to actually install files.) +; +AC39.COM +ALIAS11.COM +ARUNZ09.COM +BALIAS13.COM +CD31.COM +CLEAN11P.COM +CMD10.COM +COMMEN20.COM +COMP28.COM +CPSEL10.COM +; CPY10.COM (not a Z3 tool, included with Z-Com and Z3-Dot-Com) +CRC20.COM +; DEBUGRCP.AQM (assemble to make DEBUG.RCP, MU3-like RCP) +DEV10.COM +DEVICE10.COM +DFA12.COM +DIFF21.COM +DIR14.COM +DOSERR10.COM +DOSVER10.COM +DPROG12.COM +DU312.COM +DUMP12.COM +ECHO10.COM +ERASE50.COM +ERROR110.COM +ERROR210.COM +ERROR310.COM +ERROR410.COM +ERRORX10.COM +FINDF24.COM +GETVAR10.COM +GOTO12.COM +HELP53.COM +HELPCK10.COM +HELPPR10.COM +HSH15.COM +IF14.COM +IFSTAT10.COM +LDR15.COM +LDSK20.COM +LGET10.COM +LHELP10.COM +LLF10.COM +LX11.COM +MCOPY43.COM +MENU40.COM +MENUCK13.COM +MKDIR32.COM +; MLOAD24.COM (not a Z3 tool, distributed by Echelon w/permission) +MOVE20.COM +MU311.COM +; NOTE10.COM (a Z3 tool, but requires no installation) +; NULU151.COM (not a Z3 tool, distributed by Echelon w/permission) +PAGE20.COM +PATH31.COM +PMOVE12.COM +PRINT20.COM +PROTEC30.COM +PRTDFL10.COM +PRTSET10.COM +PUBLIC10.COM +PWD10.COM +QUIET11.COM +RECORD30.COM +REG10.COM +RENAME30.COM +RESOLV10.COM +SAK21.COM +SETFIL10.COM +SFA25.COM +SH10.COM +SHCTRL10.COM +SHDEFI10.COM +SHFILE10.COM +SHOW10.COM +SHSET10.COM +SHVAR10.COM +SUB31.COM +; SYSFCP14.LBR (assemble to make SYS.FCP) +; SYSRCP14.LBR (assemble to make SYS.RCP) +TALIAS15.COM +TCCHEC10.COM +TCMAKE10.COM +TCSELE11.COM +UNERAS12.COM +VALIAS11.COM +VCED16.COM +VERROR16.COM +VFILER40.COM +VID01.COM +VIEW11.COM +VMENU16.COM +VMENUC13.COM +VTYPE20.COM +W20.COM +WHEEL31.COM +XD12.COM +XDIR20.COM +Z3INS13.COM +Z3LOC11.COM +; Z3TCAP20.TCP (TCAP database, not a program) +ZEX31A.COM diff --git a/Images/Source/hd0/s0/u15/xzrl.com b/Images/Source/hd0/s0/u15/xzrl.com new file mode 100644 index 0000000000000000000000000000000000000000..2d1e4e2b4caea2e94586bd918ffbb3e556bd14e3 GIT binary patch literal 5120 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 C5K3?W literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/xzrl.doc b/Images/Source/hd0/s0/u15/xzrl.doc new file mode 100644 index 00000000..ae370d02 --- /dev/null +++ b/Images/Source/hd0/s0/u15/xzrl.doc @@ -0,0 +1,51 @@ + + >>> XZRL.DOC <<< + +Overview +-------- + +XZRL (eXamine ZRL files) is a REL file reading utility for use with ZCPR. + + +Installation +------------ + +ZCPR 3.0 users must install this utility first with their favorite +installation method, whereas no installation is required for operation +in ZCPR 3.3 and 3.4 environments. + + +Syntax +------ + +The help screen for XZRL is fairly self-explanatory and is invoked +by the command : + + XZRL // + +The help screen has the following format : + +============================================================================== + XZRL 1.0 Copyright 1989 by S.Fascher + + Function : eXamine ZRL (or any REL files) generated by M80 or SLR + + Syntax : + + XZRL / - shows this help message + XZRL [du:]fname1[.ext] - examines file fname1 + XZRL [du:]fname1.LBR - shows fname1 library directory only + XZRL [du:]fname1[.LBR] fname2[.ext] - examines library member fname2 + + Note : If [.ext] is not specified, the current default file extensions + REL and ZRL will be automatically searched for. +============================================================================== + +The default extensions can be changed if desired ( see xzrl.pat ) , with +the new extensions automatically appearing in the help menu. + + + enjoy !!! + + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u2/ANAGRAM.COM b/Images/Source/hd0/s0/u2/ANAGRAM.COM new file mode 100644 index 0000000000000000000000000000000000000000..0579d843bb6d694c989a7e318c91b56eaca95482 GIT binary patch literal 1280 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 Jo&V2&{{vzjgb4ru literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u2/LOOKUP.COM b/Images/Source/hd0/s0/u2/LOOKUP.COM new file mode 100644 index 0000000000000000000000000000000000000000..460bdfa30d15c5abb7b91af832e4d2a08c1a5d23 GIT binary patch literal 2048 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ν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%0AUxi@AXbvu7`LKQs;1~90_*v=v>6gF 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

    @F4k^aY0eFwu6I0__> z(bk#N9kLDJ))L&CTS*a4{kqI$XQ<+k4PyY zbX-b=NwQ{53a}3vB9Jr)5*l7fRD@(Lx|Mka(TSy%3qFME#rT=Gxg%z>Va3Ag!lnUO zs?opTJ@dN!n_9G}_U3!Rk~nmxgx(Y3NR-q&+QA=n%GGs*qN#{tSQ@1VByy7dJkeO4 z{sTgU;{jX)huPj(TG%0_iOz)~QStU3iQ;DBQX7SKOvnN;-?PDcf8?hiWQUUoU;ROt!CE+2HN zPL6{a-5)tiIpvrW%@LkPui&Mb)3A?Te_2ztIgXcsg1^7Z!v*I%I>_);A?Kh8 zy4li$?gl$y+c?u;tKcdz3NucU4qD#bFi)wJ-3>+OK(i_s(M4`4a9l8gj0s6DZu)oP zzN#-YIM_S1O)#!`N+2cV)SJ9=TO)Q~-e|3?LVx%WyI5J46XqK;S$U8WxQF6J)!58Y z!p=CNbCgr&8DE=~ak8g`bJ{s~zo^Gu6;060i;Yt_Dve{Dz$%U!lYWU>c-NuwK=gQlNY@5cr#U{6)+Uqy;P0wqeq{W zATV}3l_s}vCp_9q&3;a~+>Ba>8waSd2-rU!jiTY;^yfXAOn}!4zzUp?afY;9Uy??j zG`l45S68iTB-HkC*59~b>sMU)678>C#6I70=`$|!(O=2MrmnR7RBdY6a&1N75-Lp$BepdbLc(_PGX(O7-oJ>ZOD zAE8*7MvF0Hg1>feFvEY%#81uS4CYte&Q-Wx=zgEa#TXUis(XGmr~lI3^FFWNL|a7&fcM+LkiFj}Z~agB5Z~~|JCE@E^ZJi@#xjV}^T7AK z%ilc@85oW*c#_AIW3b}BJz53ePKfRBV(Fl)0{HOgGctizR%CuwD0mg@9`H^ zJie;p=XZGJyL^aFzfPuK<0ERAO#GBrUgKw))?d1Hoo`fr$)8_5m0vH<@aWlY@~5!a z!n7KnNW+33^J4xh^1t)6>L?%Zr;?6ZtbylwS_{-2idOhgyYCO>G zf~t3T?6TLR)->L}T`jNnsBqBh;ML_3l`c=N9kk~;cl!>{tcr&!CCf;2vCm__qGH|M zo?pmg9x=1#4e}E0u-KHXo~xWx_IYxMLoEaUB3?2@etgeE~3a|qzL;6bqr`bGw zwwR!D`M^rcfRTzAsn3`Y`^jq1tjcjy=$SM6#nxZ1zomQgRkwcb{dIZ1?j7B`m}}#3 z{SPf&_3nOVcHzRar{3m7<%izWldAH=mg^k;yvA*zS9&p=iw?)fW24-bzHsadDFOKq zCyB$j5X5!ux$F9WJS8e`^|xK_SLXWLUZu~!?bqMxSM~?d8;tY~argOr+~2;o*ZFZj zpVc-6dsYO4JypR_r-NI^@&6!q2gQbJxg)4-3gX=zv|m>|!7JS#_XDuzlQnDFU)b8Y zwl~-F?X6jvnW^rVTb%#wt*O%OT-&ek z#{+hBe3a{Xxh1RJXla`vegBOX=;@@WC@quI80qU%s3?DzpZl@?lF2hetL3BZTmUew!-~`YSF4pAQ)anTH5)VRBlX znpteJIY#x6&ryX34ey2NNwtQ%bn9u~O65zw^UtQU@?qc4w8OsBY7>{Hkkjho8T?`9 zEdDQ09-Q)ZpULYo;dQx~*I$Cy4;Zg3cxBn&bcz@**5aez@GX%4>Rc^6 ',1,'SHOW Menu',2,' <--',0 + mvi h,7 ;begin on row 7 + mvi l,10 ;column 10 + shld infoxy + call dispxy ;position for display + call vprint + db ' ' + db ' PACKAGE DATA ',0 + call dispxy ;position for display + call vprint + db ' C -- ' + db 1,'Command Packages ',2,0 + call dispxy ;position for display + call vprint + db ' I -- ' + db 1,'Input/Output Package',2,0 + call dispxy ;position for display + call dispxy ;position for display + call vprint + db ' ' + db ' ENVIRONMENT ',0 + call dispxy ;position for display + call vprint + db ' E -- ' + db 1,'Error Handler ',2,0 + call dispxy ;position for display + call vprint + db ' M -- ' + db 1,'Memory Utility ',2,0 + call dispxy ;position for display + call vprint + db ' N -- ' + db 1,'Named Directory ',2,0 + call dispxy ;position for display + call vprint + db ' P -- ' + db 1,'Path Expression ',2,0 + call dispxy + call vprint + db ' S -- ' + db 1,'Shell Stack ',2,0 + mvi h,7 ; row 7 + mvi l,40 ; column 40 + shld infoxy + call dispxy + call vprint + db ' ' + db 'ZCPR3 SYSTEM DATA ',0 + call dispxy + call vprint + db ' 1 -- ' + db 1,'Env Descriptor ',2,0 + call dispxy + call vprint + db ' 2 -- ' + db 1,'Message Buffers ',2,0 + call dispxy + call vprint + db ' 3 -- ' + db 1,'CRT and Printer Data',2,0 + call dispxy + call vprint + db ' 4 -- ' + db 1,'System File Defns ',2,0 + call dispxy + call dispxy + call dispxy + call vprint + db ' X -- ' + db 1,'Exit',2,0 +; +; Input Command from User +; +getcmd: + call gxymsg ;print prompt + db 23,10,'SHOW Command? ',0 + call capine ;get command +getcmd1: + call ctabscan ;scan for and process command + call print ;print error message + db 7,0 ;beep + jmp getcmd +; +; Print Banner +; +banner: + call cls ;clear screen + call gxymsg ;print banner message + db 1,27 ;row/col + db '>>>> ' + db 'SHOW Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db ' <<<<',0 + ret +; +; Command Table +; +ctable: + db '1' ;Env Desc + dw envdes + db '2' ;Messages + dw msg + db '3' ;CRT and Printer + dw cpdata + db '4' ;File Names + dw fnames + db 'C' ;Command Package Status + dw command + db 'E' ;Error Handler Display + dw errorh + db 'I' ;I/O Package Display + dw iopack + db 'M' ;Memory Utility + dw memory + db 'N' ;Named Directory Data + dw namedir + db 'P' ;Path Display + dw pdisp + db 'S' ;Shell Stack Display + dw shstack + db 'X' ;Exit + dw exit + db ctrlc ;Exit + dw exit + db cr ;New Screen + dw show + db ' ' ;New Screen + dw show + db ctrlr ;New Screen + dw show + db 0 ;end of table +; +; Scan for and transfer control to command routine +; +ctabscan: + lxi h,ctable ;pt to command table + mov c,a ;command in C +ctab1: + mov a,m ;get char from table + ora a ;done? + rz + cmp c ;check for match + jz ctab2 + inx h ;skip address + inx h + inx h ;pt to next command char + jmp ctab1 +ctab2: + inx h ;pt to address + mov a,m ;get low + inx h + mov h,m ;get high + mov l,a ;HL pts to command + pop psw ;clear stack + pchl ;"goto" command +; +; **** Deinitialize Terminal and Exit to ZCPR3 **** +; +exit: + call strtzex ;resume ZEX if running + jmp dinit ;deinit terminal +; +; **** Memory Dumper **** +; +memory: + call banner + call gxymsg + db 3,25 + db '--> ',1,'Memory Display at ',0 + lhld dumpstrt ;start of dump address + call phl4hc + call vprint + db 2,' <--',cr,lf,0 + mvi b,16 +mem1: + shld cline ;set current line ptr + call crlf ;new line + call phl4hc ;print address + call vprint + db 1,' --',2,0 + mvi c,16 ;count for elements +mem2: + mov a,c ;extra space? + ani 3 + mvi a,' ' ;extra space + cz cout + mov a,m ;get next byte + call pa2hc ;print as hex + mvi a,' ' ;space + call cout + inx h ;pt to next + dcr c ;count down + jnz mem2 + call vprint + db 1,'| ',2,0 + lhld cline ;pt to current line again + mvi c,16 ;count again +mem3: + mov a,m ;get next byte + ani 7fh ;mask MSB + cpi ' ' + jnc mem4 + mvi a,'.' ;dot fill +mem4: + call cout + inx h ;pt to next + dcr c ;count down + jnz mem3 + dcr b ;count down major loop + jnz mem1 + call gxymsg ;print prompt + db 23,10 + db 1,'Command (<=last, >=next, A=adr, SHOW Cmd)? ',2,0 + call capine ;get input + cpi 'A' ;address? + jz memadr + cpi '>' ;advance? + jz memnext + cpi '.' ;advance? + jz memnext + cpi '<' ;backup? + jz memback + cpi ',' ;backup? + jz memback + jmp getcmd1 ;process otherwise +memadr: + call print + db 'ddress (Hex)? ',0 + mvi a,0ffh ;capitalize + call bbline ;get line from user +mema1: + mov a,m ;skip leading spaces + inx h ;pt to next char + cpi ' ' + jz mema1 + dcx h ;pt to first char + call eval16 ;evaluate as hex + xchg ;result in HL + shld dumpstrt ;set new start address + jmp memory ;restart +memnext: + lhld dumpstrt ;advance 1 page + inr h + shld dumpstrt + jmp memory ;restart +memback: + lhld dumpstrt ;backup 1 page + dcr h + shld dumpstrt + jmp memory ;restart +; +; **** ZCPR3 Messages **** +; +msg: + call banner + call gxymsg + db 3,25 + db '--> ',1,'ZCPR3 System Messages',2,' <--',0 + mvi h,5 ; row 5 + mvi l,5 ; column 5 + shld infoxy + mvi a,22h ; offset + call compenv ; pt to address of messages + mov a,m + inx h + mov h,m + mov l,a ; HL pts to first message + call dispxy + call vprint + db 1,'Error Handler Defined? ',2,0 + mov a,m ; get flag + call pryn + mov a,m ; get flag again + ora a ; defined? + jz msg1 + push h + lxi d,10h ; pt to error command line + dad d + call dispxy + call vprint + db 1,' Error Handler: ',2,0 + call pstr + pop h +msg1: + inx h + call dispxy + call dispxy + call vprint + db 1,'Current IF Level: ',2,0 + mvi b,8 ; set IF count + mov c,m ; get IF flag +iftst: + mov a,c ; get flag + rlc + mov c,a ; save flag + jc iftst1 + dcr b ; count down + jnz iftst +iftst1: + mov a,b ; get char + call padc + inx h ; pt to IF active flag + inx h ; pt to command status + shld cstat ; save address + inx h ; pt to error address + inx h + inx h ; pt to program error code + call dispxy + call dispxy + call vprint + db 1,'Program Error Code: ',2,0 + mov a,m + call padc + inx h ; pt to ZEX message byte + inx h ; pt to ZEX running flag + call dispxy + call dispxy + call vprint + db 1,'ZEX Running? ',2,0 + mov a,m + call pryn + mov a,m ; make sure we have char + inx h ; skip ZEX data + inx h + inx h + ora a ; ZEX running? + jz nozex + mov e,m ; get low-order + inx h + mov d,m ; get high-order + call dispxy + call vprint + db 1,'Address of ZEX Buffer: ',2,0 + xchg + call phl4hc ; print address + xchg + jmp scb ; process shell control byte now +nozex: + inx h +scb: + inx h ; pt to shell control byte + push h + mvi h,5 ; row 5 + mvi l,40 ; column 40 + shld infoxy + pop h + call dispxy + call vprint + db 1,'Shell Control --',2,0 + call dispxy + call vprint + db 1,' Enable Shell Comment? ',2,0 + mov a,m + ani 1 + call pryn + call dispxy + call vprint + db 1,' Enable Shell Echo? ',2,0 + mov a,m + ani 10b + call pryn + call dispxy + call vprint + db 1,' Enable Shell Wait? ',2,0 + mov a,m + ani 80h + call pryn + push h ; save ptr to next message byte + lhld cstat ; get ptr to command status + call dispxy + call dispxy + call vprint + db 1,'Command Status: ',2,0 + mov a,m ; get it + ani 3 ; 2 LSBs + jz csnorm + cpi 1 + jz csshell + call print + db 'Error',0 + inx h ; pt to error address + mov a,m ; get low + inx h + mov h,m ; get high + mov l,a + call dispxy + call vprint + db 1,' Error Command ',2,0 + call dispxy + call print + db ' ',0 +erprt: + mov a,m ; get char + cpi ' '+1 ; end of command with space or less? + jc csdone + cpi ';' ; end of command with new command? + jz csdone + call cout ; print char + inx h + jmp erprt +csnorm: + call print + db 'Normal',0 + jmp csdone +csshell: + call print + db 'Shell',0 +csdone: + pop h ; restore ptr + lxi d,35 ; jump to registers + dad d + push h + mvi h,17 ; row 17 + mvi l,5 ; column 5 + shld infoxy + pop h + call dispxy + call vprint + db 1,'Registers --',2,0 + call dispxy ; new line + mvi b,10 ; 10 times + mvi c,0 +regl: + call vprint + db 1,' ',0 + mvi a,10+'0' ; compute reg char + sub b ; get value + call cout + call vprint + db '=',2,0 + mov a,m ; get value + inx h ; pt to next + call padc ; print + inr c ; every 4 + mov a,c ; get count + ani 3 + cz dispxy ; new line + dcr b ; count down + jnz regl + lxi d,6 ; skip to user-defined values + dad d + push h + mvi h,17 ; row 17 + mvi l,40 ; column 40 + shld infoxy + pop h + call dispxy + call vprint + db 1,'User-Defined Area --',2,0 + call dispxy ; new line + mvi b,16 ; 16 times + mvi c,0 +regl1: + call vprint + db ' ',0 + mov a,m ; get value + inx h ; pt to next + call padc ; print + inr c ; every 4 + mov a,c ; get count + ani 3 + cz dispxy ; new line + dcr b ; count down + jnz regl1 + jmp getcmd +; +; **** System File Definitions **** +; +fnames: + call banner + call gxymsg + db 3,27 + db '--> ',1,'System File Names',2,' <--',0 + mvi h,5 ; row 5 + mvi l,24 ; column 24 + shld infoxy + call dispxy + call vprint + db 1,'Shell Variable File: ',2,0 + mvi a,47h ; offset + call compenv + xchg ; DE pts to file name + call pfn ; print file name + call dispxy + mvi b,'1' ; set counter +fnames1: + lxi h,11 ; offset to next file + dad d ; pt to next file name + xchg + call dispxy + call vprint + db 1,'File Name ',0 + mov a,b + call cout ; print number + call vprint + db ': ',2,0 + call pfn ; print file name + inr b ; next name + mov a,b ; get next + cpi '4'+1 ; done? + jnz fnames1 + jmp getcmd +; +; Print File Name for FNAMES +; +pfn: + ldax d ; get first char + cpi ' ' ; none? + jnz pfn1 ; print name + lxi h,8 ; check type + dad d + mov a,m ; get first char of type + cpi ' ' ; none? + jnz pfn1 ; print name + call print + db 'Undefined',0 + ret +; +; **** CRT and Printer Data **** +; +cpdata: + call banner + call gxymsg + db 3,26 + db '--> ',1,'CRT and Printer Data',2,' <--',0 + mvi h,5 ; row 5 + mvi l,5 ; column 5 + shld infoxy + call dispxy + call vprint + db 1,'CRT -- Selection: ',2,0 + mvi a,2fh ; offset + call prbyte ; print byte value there + call dispxy + call vprint + db 1,' CRT 0',2,0 + mvi a,31h ; print data at 31H + call cprt + call dispxy + call dispxy + call vprint + db 1,'LST -- Selection: ',2,0 + mvi a,30h ; offset + call prbyte ; print byte value there + call dispxy + call vprint + db 1,' LST 0',2,0 + mvi a,37h ; offset + call lprt + call dispxy + call dispxy + call vprint + db 1,' LST 2',2,0 + mvi a,3fh ; offset + call lprt + mvi h,6 ; row 6 + mvi l,40 ; column 40 + shld infoxy + call dispxy + call vprint + db 1,' CRT 1',2,0 + mvi a,34h ; print data at 34H + call cprt + call dispxy + call dispxy + call dispxy + call vprint + db 1,' LST 1',2,0 + mvi a,3bh ; offset + call lprt + call dispxy + call dispxy + call vprint + db 1,' LST 3',2,0 + mvi a,43h ; offset + call lprt + jmp getcmd +; +; Print CRT Data +; +cprt: + call compenv ; compute offset + call dispxy + call vprint + db 1,' Width: ',2,0 + mov a,m + call padc + call vprint + db ' Cols',0 + call dispxy + call vprint + db 1,' Lines/Text: ',2,0 + inx h + mov a,m + call padc + call vprint + db ' / ',0 + inx h + mov a,m + call padc + ret +; +; Print LST Data +; +lprt: + call compenv ; compute offset + call dispxy + call vprint + db 1,' Width: ',2,0 + mov a,m + call padc + call vprint + db ' Cols',0 + call dispxy + call vprint + db 1,' Lines/Text: ',2,0 + inx h + mov a,m + call padc + call vprint + db ' / ',0 + inx h + mov a,m + call padc + inx h + call dispxy + call vprint + db 1,' Form Feed? ',2,0 + mov a,m + call pryn + ret + +; +; **** Print Environment Descriptor Data **** +; +envdes: + call banner + call gxymsg + db 3,25 + db '--> ',1,'Environment Descriptor',2,' <--',0 + mvi h,5 ; row 5 + mvi l,5 ; column 5 + shld infoxy + call dispxy + call vprint + db 1,'>> Addresses <<',2,0 + call dispxy + call vprint + db 1,' Command Line Buffer: ',2,0 + mvi a,18h ; offset + call pradr ; print address + call dispxy + call vprint + db 1,' Command-Search Path: ',2,0 + mvi a,9 ; offset + call pradr ; print address + call dispxy + call vprint + db 1,' Environment Descriptor: ',2,0 + lhld envptr ; get ptr + call phl4hc + call dispxy + call vprint + db 1,' Externals --',2,0 + call dispxy + call vprint + db 1,' File Control Block: ',2,0 + mvi a,24h + call pradr + call dispxy + call vprint + db 1,' System Stack: ',2,0 + mvi a,26h + call pradr + call dispxy + call vprint + db 1,' Message Buffer: ',2,0 + mvi a,22h + call pradr + call dispxy + call vprint + db 1,' Named Directory Buffer: ',2,0 + mvi a,15h + call pradr + call dispxy + call vprint + db 1,' Packages --',2,0 + call dispxy + call vprint + db 1,' Flow Command: ',2,0 + mvi a,12h + call pradr + call dispxy + call vprint + db 1,' Input/Output: ',2,0 + mvi a,0fh + call pradr + call dispxy + call vprint + db 1,' Resident Command: ',2,0 + mvi a,0ch + call pradr + call dispxy + call vprint + db 1,' Shell Stack Buffer: ',2,0 + mvi a,1eh + call pradr + call dispxy + call vprint + db 1,' Wheel Byte: ',2,0 + mvi a,29h + call pradr + mvi h,5 ; row 5 + mvi l,40 ; column 40 + shld infoxy + call dispxy + call vprint + db 1,'>> Data Elements <<',2,0 + call dispxy + call vprint + db 1,' Sizes --',2,0 + call dispxy + call vprint + db 1,' Command Line: ',2,0 + mvi a,1ah + call prbyte + call vprint + db ' Chars',0 + call dispxy + call vprint + db 1,' External Path: ',2,0 + mvi a,0bh + call prbyte + call vprint + db ' Elts',0 + call dispxy + call vprint + db 1,' Named Dir Entries: ',2,0 + mvi a,17h + call prbyte + call dispxy + call vprint + db 1,' Package, FCP: ',2,0 + mvi a,14h + call prbyte + call pr128 + call dispxy + call vprint + db 1,' Package, IOP: ',2,0 + mvi a,11h + call prbyte + call pr128 + call dispxy + call vprint + db 1,' Package, RCP: ',2,0 + mvi a,0eh + call prbyte + call pr128 + call dispxy + call vprint + db 1,' Shell Stack Elts: ',2,0 + mvi a,20h + call prbyte + call dispxy + call dispxy + call vprint + db 1,' DU Form Allowed? ',2,0 + mvi a,2eh + call compenv + mov a,m ; get byte + call pryn + call dispxy + call vprint + db 1,' Max Disk and User: ',2,0 + mvi a,2ch + call compenv + mov a,m + adi '@' + call cout + inx h + mov a,m + call pafdc + call dispxy + call vprint + db 1,' Processor Speed: ',2,0 + mvi a,2bh + call prbyte + call vprint + db ' MHz',0 + call dispxy + call vprint + db 1,' Quiet Operation? ',2,0 + mvi a,28h + call compenv + mov a,m ; get byte + call pryn + jmp getcmd +; +; Print 128-Byte Block Message +; +pr128: + call vprint + db ' Blocks',0 + ret +; +; Print address pted to by A offset as 4 hex chars +; +pradr: + call compenv ; pt to address + mov e,m ; get address + inx h + mov d,m + xchg + jmp phl4hc +; +; Print byte pted to by A offset as dec chars +; +prbyte: + call compenv ; compute offset (in HL) + mov a,m ; get byte + jmp padc +; +; Add A to Base Address in ENVPTR +; Return Result in HL +; +compenv: + lhld envptr ; get base address + add l ; add offset + mov l,a + mov a,h + aci 0 + mov h,a + ret +; +; **** Display Input/Output Package Function **** +; +iopack: + call banner + call gxymsg + db 3,26 + db '--> ',1,'Input/Output Package',2,' <--',0 + call getiop ;check for initialization + mov a,h + ora l ;must NOT be zero + jnz iopack0 + call gxymsg + db 5,23,'Input/Output Packages Not Available',0 + jmp getcmd +iopack0: + call status ;check for drivers + jnz iopack1 + call gxymsg + db 5,22,'Input/Output Redirection Not Available',0 + jmp getcmd +iopack1: + call dispcon ;successive displays + call disprdr + call gxymsg + db 23,10,'Strike Any Key For Next Screen - ',0 + call capine + call banner + call gxymsg + db 3,26 + db '--> ',1,'Input/Output Package',2,' <--',0 + call disppun + call displst + jmp getcmd +dispcon: + call vprint + db cr,lf,cr,lf,1,'Console',0 + mvi a,0 ;select CON: + call disp + jmp curr +displst: + call vprint + db cr,lf,cr,lf,1,'Printer',0 + mvi a,3 ;select LST: + call disp + jmp curr +disprdr: + call vprint + db cr,lf,cr,lf,1,'Reader ',0 + mvi a,1 ;select RDR: + call disp + jmp curr +disppun: + call vprint + db cr,lf,cr,lf,1,'Punch ',0 + mvi a,2 ;select PUN: + call disp +; +; Print Name of Current Device +; +curr: + push h ;save ptr + mov b,a ;save number in B + push b ;save B + call vprint + db cr,lf,1,' Assignment is ',2,0 + push b ;save B + call status ;get status + pop b ;get B + inr b ;add 1 for offset + dcx h ;back up +curr1: + inx h ;pt to next + inx h + dcr b ;count down + jnz curr1 + pop b ;get logical number in B + mov c,m ;get physical number in C + call pname0 ;print first part of name only + pop h ;get ptr + ret +; +; Print Names of All Physical Devices for a Logical Device +; +disp: + push h ;save char ptr + push psw ;save device number + call vprint + db ' Devices --',2,0 + mov b,a ;logical device in B + push b ;save for later + push b ;save it + call status ;get status report + pop b ;get logical device number + inr b ;add 1 for offset + dcx h ;back up + dcx h +disp1: + inx h ;pt to next + inx h + dcr b ;count down + jnz disp1 + pop b ;get B back + mov c,m ;get count of devices + mov a,c ;check for none + ora a + jz disp3 +disp2: + push b ;save values + dcr c ;pt to next name + call print + db cr,lf,' ',0 + call pnamer ;print name (B=logical, C=physical) + pop b ;get count + dcr c ;count down + jnz disp2 +disp3: + pop psw + pop h + ret +; +; Routine to Print Name of Selected Device +; B=logical number, C=physical number +; +pnamer: + push b ;save BC + call pname0 ;print first part of name + call vprint ;print separator + db 1,' - ',2,0 + call pstr ;print rest as string + pop b ;restore BC + ret +; +; Print first part of selected device name +; +pname0: + call namer ;get ptr to string + mvi b,8 ;at most 8 chars +pname1: + mov a,m ;get char + inx h ;pt to next char + cpi ' ' ;end of name? + jz pname2 + call cout ;print char + dcr b ;count down + jnz pname1 + ret +pname2: + mvi a,' ' ;print spaces + call cout + dcr b ;count down + jnz pname2 + ret + +; +; Basic Interface Routines +; +status: + lxi d,0 ;Offset 0 +runit: + call getiop ;device driver base + dad d + pchl +select: + lxi d,3 ;Offset 3 + jmp runit +namer: + lxi d,6 ;Offset 6 + jmp runit + +; +; **** Display Path Function **** +; +pdisp: + call banner + call gxymsg + db 3,28 + db '--> ',1,'Path Expressions',2,' <--',0 + mvi h,6 ; row 6 + mvi l,10 ; column 10 + shld infoxy + call dispxy + call vprint + db 1,'Symbolic Form',2,0 + call dispxy + call vprint + db ' ',0 + call getpath ; pt to external path +pdisp1: + mov a,m ; get disk + ora a ; done? + jz adisp + cpi '$' ; current? + jz pdisp2 + adi '@' ; convert to letter +pdisp2: + call cout ; print disk letter + inx h ; pt to user + mov a,m ; get user number + cpi '$' ; current? + jnz pdisp3 + call cout ; print current indicator + jmp pdisp4 +pdisp3: + call pafdc ; print user number +pdisp4: + call colon + inx h ; pt to next element + mov a,m ; done? + ora a ; 0=yes + cnz arrow + jmp pdisp1 +; +; Print Absolute Path +; +adisp: + call dispxy + call dispxy + call vprint + db 1,'DU Form ',2,0 + call dispxy + call vprint + db ' ',0 + call retud ; get current user/disk + call getpath ; pt to external path +adisp1: + mov a,m ; get disk + ora a ; done? + jz ndisp + cpi '$' ; current? + jnz adisp2 + mov a,b ; get current disk + inr a ; adjust to 1 to n +adisp2: + adi '@' ; convert to letter + call cout ; print disk letter + inx h ; pt to user + mov a,m ; get user + cpi '$' ; current? + jnz adisp3 + mov a,c ; get current user +adisp3: + call pafdc ; print user + call colon + inx h ; pt to next + mov a,m ; done? + ora a + cnz arrow + jmp adisp1 +; +; Print Named Path +; +ndisp: + call dispxy + call dispxy + call vprint + db 1,'DIR Form ',2,0 + call dispxy + call vprint + db ' ',0 + call getpath ; pt to external path +ndisp1: + call retud ; get current user and disk in C and B + mov a,m ; get disk + ora a ; done? + jz getcmd + cpi '$' ; current? + jz ndisp2 + mov b,a ; disk in B + dcr b ; adjust to 0 to n-1 +ndisp2: + inx h ; pt to user + mov a,m ; get it + cpi '$' ; current? + jz ndisp3 + mov c,a ; user in C +ndisp3: + inx h ; pt to next + push h ; save ptr + call udscan ; scan dirs for user/disk and print its name + pop h ; get ptr + call colon + mov a,m ; done? + ora a + cnz arrow + jmp ndisp1 + +; +; Print Colon +; +colon: + mvi a,':' ; print colon + jmp cout + +; +; Print Arrow +; +arrow: + call vprint + db 1,' --> ',2,0 + ret + +; +; Scan directories for user and disk in C and B +; Print name if found or "Noname" if not +; +udscan: + call dutdir ; convert to name + jz udscan1 ; error return if no name + mvi b,8 ; 8 chars max +udsprn: + mov a,m ; get name char + cpi ' ' ; done? + rz + call cout ; print char + inx h ; pt to next + dcr b ; count down + jnz udsprn + ret +udscan1: + call vprint + db 'Noname',0 + ret + +; +; **** Print Named Directory Info **** +; +namedir: + call banner + call gxymsg + db 3,26 + db '--> ',1,'Named Directory Data',2,' <--',0 + call getndr ;get location of directory + jnz ndir1 + call gxymsg + db 5,22 + db 'Named Directory Buffer Not Available',0 + jmp getcmd +; +; Print Names of Directory Elements +; +ndir1: + call gxymsg + db 5,25 + db '-- Named Directory Entries --',0 + mvi d,7 ;set row + mvi e,7 ;set column + xchg + call gotoxy ;position cursor + xchg + mvi c,0 ;set entry count + mvi b,1 ;set disk 1 +; +; Print Each Resident Command Name +; +ndir2: + mov a,m ;get table entry + ora a ;end of table? + jz getcmd +; +; DE is carried over all of this as starting row/column +; + cmp b ;same disk? + jz ndir3 +; +; Advance to Next Set of Entries for New Disk +; + mvi c,0 ;reset counter + mov b,a ;set new disk + xchg ;position for new disk + inr h ;blank line + inr h + call gotoxy ;position on screen + xchg +ndir3: + push b ;save counters +; +; Print DU: +; + mov a,m ;get disk + adi '@' ;convert to letter (A to P) + call cout + inx h ;pt to user + mov a,m ;get user + call padc ;print user number + call print ;print separator + db ': ',0 + inx h ;pt to name +; +; Print DIR +; + mvi b,8 ;print name +ndir4: + mov a,m ;get char + call cout + inx h ;pt to next + dcr b ;count down + jnz ndir4 +; +; Advance to Next and Print Separator +; + lxi b,8 ;skip over password + dad b + call print ;print separator + db ' ',0 + pop b ;get counters +; +; New Line Counter +; + inr c ;increment entry counter + mov a,c ;check for done + ani 3 ;every 4 + jnz ndir2 +; +; Position in Next Line +; + xchg ;position cursor + inr h ;next row + call gotoxy + xchg + jmp ndir2 + +; +; **** Print Command Status **** +; +command: + call banner + call gxymsg + db 3,25 + db '--> ',1,'Command Package Status',2,' <--',0 + call gxymsg + db 5,25 + db '---- ',1,'FLOW COMMAND PACKAGE',2,' ----',0 + call getfcp ;get FCP data + jnz flow0 + call gxymsg + db 7,20 + db 'Flow Command Facility Not Available',0 + jmp rcp +; +; Check for Flow Command Package Loaded +; +flow0: + mov a,m ;get first byte + ora a ;0=none loaded + jnz flow1 + call gxymsg + db 7,25 + db 'No Flow Command Package Loaded',0 + jmp rcp +; +; Print Flow Command Package Info +; +flow1: + call gxymsg + db 7,20 + db 1,'Flow Commands:',2,0 + lxi d,5 ;skip to command size byte + dad d + mov b,m ;get command size + inx h ;pt to first command + call at + db 8,22 +; +; Print Flow Command Names +; +flow2: + mov a,m ;get first char + ora a ;end of table? + jz flow4 + push b ;save counter +flow3: + mov a,m ;get char + inx h ;pt to next + call cout ;print char + dcr b ;count down + jnz flow3 + call print + db ' ',0 + inx h ;skip over address + inx h + pop b ;get counter + jmp flow2 +; +; Print Flow Command Arguments +; +flow4: + call gxymsg + db 9,20 + db 1,'IF Options:',2,0 + call at + db 10,22 + inx h ;pt to first option +; +; Print Each Option +; +flow5: + mov a,m ;get next char + ora a ;done? + jz flow6 + call cout ;print char + inx h ;pt to 2nd char + mov a,m ;get it and print + call cout + call print + db ' ',0 ;space over + inx h ;skip address + inx h + inx h + jmp flow5 +; +; Print Current IF Level +; +flow6: + call gxymsg + db 11,20 + db 1,'Current IF Level: ',2,0 + call getmsg ;pt to ZCPR3 messages + inx h ;pt to IF byte + mov a,m ;get IF byte + mvi c,'0' ;assume level 0 + ora a ;see if at last IF level + jz flow8 +flow7: + inr c ;advance to next level + rrc ;rotate bits + ani 7fh ;mask out MSB + jnz flow7 ;continue looping until no 1 bits +flow8: + mov a,c ;get digit + call cout ;print it +; +; Print RCP Data +; +rcp: + call gxymsg + db 14,23 + db '---- ',1,'RESIDENT COMMAND PACKAGE',2,' ----',0 + call getrcp ;get RCP data + jnz rcp0 + call gxymsg + db 16,20 + db 'Resident Command Facility Not Available',0 + jmp getcmd +; +; Check for Resident Command Package Loaded +; +rcp0: + mov a,m ;get first byte + ora a ;0=none loaded + jnz rcp1 + call gxymsg + db 16,23 + db 'No Resident Command Package Loaded',0 + jmp getcmd +; +; Print Resident Command Package Info +; +rcp1: + call gxymsg + db 16,20 + db 1,'Resident Commands:',2,0 + lxi d,5 ;skip to command size byte + dad d + mov b,m ;get command size + mvi c,0 ;set count + inx h ;pt to first command + mvi d,17 ;set row + mvi e,22 ;set column + xchg + call gotoxy ;position cursor + xchg +; +; Print Each Resident Command Name +; +rcp2: + mov a,m ;get table entry + ora a ;end of table? + jz getcmd + push b ;save counters +rcp3: + mov a,m ;get char + inx h ;pt to next + call cout + dcr b ;count down + jnz rcp3 + call print + db ' ',0 + inx h ;pt to next command + inx h + pop b ;get counters + inr c ;increment entry counter + mov a,c ;check for done + ani 7 ;every 8 + jnz rcp2 + xchg ;position cursor + inr h ;next row + call gotoxy + xchg + jmp rcp2 + +; +; **** Print Error Handler Data **** +; +errorh: + call banner + call gxymsg + db 3,27 + db '--> ',1,'Error Handler Data',2,' <--',0 + call getmsg ;get message address + jnz errh1 + call gxymsg + db 5,20 + db 'ZCPR3 Messages Not Available on this System',0 + jmp getcmd +errh1: + call gxymsg + db 5,27 + db 1,'Error Handler Engaged? ',2,0 + call geter1 ;error handler engaged? + push psw + call pryn ;print yes/no + pop psw + jz getcmd ;exit display + call gxymsg + db 6,27 + db 1,'Error Handler Command: ',2,0 + call geterc ;get command line + call pstr + call gxymsg + db 7,30 + db 1,'Command Status: ',2,0 + mvi a,22h ; offset to message ptr + call compenv ; pt to message ptr + mov a,m + inx h + mov h,m + mov l,a ; HL pts to messages + inx h ; pt to command status message + inx h + inx h + mov a,m ; get it + ani 3 ; 2 LSBs + jz errh3 + cpi 1 + jz errh4 + call print + db 'Error',0 + inx h ; pt to error address + mov a,m ; get low + inx h + mov h,m ; get high + mov l,a + call gxymsg + db 9,5 + db 1,'Error Command --',2,0 + call vprint + db cr,lf,1,' --> ',2,0 +errh2: + mov a,m ; get char + inx h ; pt to next + ora a ; end of line? + jz errh5 + cpi ';' ; end of command with new command? + jnz errh2a + call vprint + db 1,';',2,cr,lf,1,' --> ',2,0 + jmp errh2 +errh2a: + call cout ; print char + jmp errh2 +errh3: + call print + db 'Normal',0 + jmp errh5 +errh4: + call print + db 'Shell',0 +errh5: + jmp getcmd + +; +; **** Print Shell Stack Data **** +; +shstack: + call banner + call gxymsg + db 3,28 + db '--> ',1,'Shell Stack Data',2,' <--',0 + call getsh ;get shell data + jnz shs0 + call gxymsg + db 5,20 + db 'Shell Stack NOT Available on this System',0 + jmp getcmd +; +; Print Empty/Full Messages +; +shs0: + call gxymsg + db 5,30 + db 'Shell Stack Empty? ',0 + call shempty + jz shsem + mvi a,0 ; set not empty + jmp shsnem +shsem: + mvi a,1 ; set empty +shsnem: + call pryn + call gxymsg + db 6,30 + db 'Shell Stack Full? ',0 + call shfull + jz shsfu + mvi a,0 ; set not full + jmp shsnfu +shsfu: + mvi a,1 ; set full +shsnfu: + call pryn +; +; Print Shell Stack Content Data +; + call gxymsg + db 8,27 + db '--- Shell Stack Content ---',0 + mvi h,10 ;row 10 + mvi l,20 ;col 20 + shld infoxy ;save position + call getsh ;get shell stack data + mov e,b ;get element size in DE + mvi d,0 + mov b,a ;get element count in B + mvi c,'1' ;get digit in C +shs1: + mov a,m ;check for element in stack + ora a ;0=empty + jz shs2 + call dispxy ;position for display + call vprint + db 1,'Elt ',0 + mov a,c ;get digit + call cout ;print as decimal + inr c ;next digit + call vprint + db ' -- ',2,0 + push h + call pstr ;print entry + pop h + dad d ;pt to next + dcr b ;count down + jnz shs1 +shs2: + mov a,c ;see if anything printed + cpi '1' + jnz getcmd + lhld infoxy ;position on screen + call gotoxy + call print + db ' Empty',0 + jmp getcmd + +; +; Position Display at INFOXY address and advance +; +dispxy: + push h ;save HL + lhld infoxy ;get screen position + call gotoxy ;go there + inr h ;advance to next line + shld infoxy ;set screen position + pop h ;restore HL + ret +; +; If A=0, print Yes, else print No +; +pryn: + ora a + jnz pryes + call print + db 'NO',0 + ret +pryes: + call print + db 'YES',0 + ret + +; +; Buffers +; +showcmd: + db 'SHOW ',0 +infoxy: + ds 2 ;address on screen of next line to print +cstat: + ds 2 ;command status ptr +dumpstrt: + ds 2 ;address of next byte to start memory dump +cline: + ds 2 ;address of current line + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SHSET.COM b/Images/Source/hd0/s0/u15/SHSET.COM new file mode 100644 index 0000000000000000000000000000000000000000..cd0c0c53cfcb787bf43761ab459ea222fee55768 GIT binary patch literal 896 zcmcIh&ubGw6rP>grax?oF;q=N8M~sA+Ssayw2(tfTgB2M(P9;aHQA=2NfwhWZJ-Gj z@!}7th!;VmR~1xHmfo6OQrv|R_OKolgjiFQfDka?X>leE+JC^qeDA$)zW3(6H~J3l z%E{sJNe=u9v~uJUB3DuPYIQ z{TSEfIFgL^4Ny2S5DW&{H7kOn(sVo}Ww0_M;fS0}im52hNH^!CR7ApxjBiL-#F-f> zkpKoc1IYzQ{Cwr$63DCO3MY_RNcJG}ImaA7PZX$q=0d;)$WKTOM-6QThgku9E|pQl zL_&%JnsXW$4%B|LUK`h8MU2eikvaO5Zg1mJ5 zR3WQuDR^i`Op6hPE~TD7h}No%9+$V*r&I9%E`}NtkI@|fBfm?1FL?D?ShkC0TDW9> zgyp=Tnh)T9?H1HGAtmYDPob|#TZZ}<78e&B&U{H3eFYZIcUOEYF2bgwf4+O4TU&(% z{SDJu{&~TxY6dJ=rB_CYVu(|>ENob$8fCjix{=2Xd<%Ev#Sb7>owrJc9hgF%y})-} zn6$lKzgn{XQh8xot{=6*bpaoX-&zJ4M3;Ai(JkqLdbW@kMkvPT<#Vcem_HN*RU^RvpZEU&9>Qy} literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SHSET.MAC b/Images/Source/hd0/s0/u15/SHSET.MAC new file mode 100644 index 00000000..bcb36983 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SHSET.MAC @@ -0,0 +1,207 @@ +; PROGRAM: SHSET +; VERSION: 1.0 +; DATE: 19 July 84 +; AUTHOR: Richard Conn +; PREVIOUS VERSIONS: None +; +z3env equ 0f400h +VERS EQU 10 ;version number + +; SHSET is copyright (c) 1984 by Richard Conn +; All Rights Reserved +; SHSET may be used freely by the ZCPR3 Community + +; +; SHSET is used to establish a command line as a shell. It pushes +; the command line (including semicolons) which follow the verb SHSET onto +; the shell stack if it fits. +; +; Syntax: +; SHSET cmd1;cmd2;... +; +; The sequence of commands "cmd1;cmd2;..." becomes the shell. +; + +; +; SYSLIB, Z3LIB, and VLIB References +; + ext z3init + ext shpush,getcl1,getcl2,putshm,getsh,getsh2 + ext eprint,phlfdc + ext codend + +; +; Basic Definitions +; +TRUE EQU 0FFH ;define true and.. +FALSE EQU 0 ;..false. + +; +; System Addresses +; +OS$BASE EQU 000H ;system base.. +BDOS EQU OS$BASE+05H +FCB EQU OS$BASE+5CH +FCB2 EQU OS$BASE+6CH +TBUFF EQU OS$BASE+80H +TPA EQU OS$BASE+100H + +; +; ASCII Chars +; +LF EQU 0AH ;..linefeed.. +CR EQU 0DH ;..carriage return.. + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Mainline +; + call z3init ;initialize the ZCPR3 Env + +; +; Print Prompt +; + call eprint + db 'SHSET, Version ' + db (VERS/10)+'0','.',(VERS MOD 10)+'0' + db 0 + lda fcb+1 ;check for help request + cpi '/' ;help? + jz help + cpi ' ' + jnz shinit +; +; Print Help Message +; +help: + call eprint + db cr,lf,' Syntax: SHSET cmd1;cmd2;...' + db cr,lf,' SHSET defines the command sequence to be a shell' + db 0 + ret +; +; Initialize Shell +; +shinit: + call shtest1 ;there must be a shell stack + call shtest2 ;there must be a command line buffer +; +; HL now points to the command line buffer +; + call codend ;pt to free area + xchg ;... in DE + lxi h,tbuff+1 ;pt to option input + mov a,m ;check for no input + ora a ;none if zero + jz checkcl + inx h ;pt to first good char + call copystr ;copy string +checkcl: + call getcl2 ;get address of command line + jz setsh ;set shell command + call copystr ;copy string +setsh: + call codend ;pt to string + call shpush ;push onto shell stack + jnz sherr ;error? +; +; Set Shell Messages +; + mvi a,0 ;Zero Message 0 + mvi b,0 + call putshm +; + mvi a,0 ;Zero Message 1 + mvi b,1 + call putshm +; + call eprint + db ' Shell Installed',0 +; +exit: + call getcl2 ;terminate following command + mvi m,0 ;set ending 0 + ret +; +; Error in Shell Stack Installation +; +sherr: + cpi 2 ;shell stack full + jnz sherr1 + call eprint + db ' Shell Stack Full',0 + jmp exit +sherr1: + call eprint + db ' Shell Entry too Large -- Limit is ',0 + call getsh2 ;get limit in DE + xchg + call phlfdc ;print as floating decimal + call eprint + db ' Characters',0 + jmp exit + +; +; Check for Presence of Shell Stack +; +shtest1: + call getsh ;get shell stack data + rnz + pop psw ;clear stack + call eprint + db ' No Shell Stack',0 + ret + +; +; Check for Command Line +; +shtest2: + call getcl1 ;get command line data + rnz + pop psw ;clear stack + call eprint + db ' No Command Line',0 + ret + +; +; Copy string from HL to DE +; Store ending 0 and leave pointer in DE to it +; +copystr: + mov a,m ;get char + stax d ;store it + ora a ;done? + rz + inx h ;pt to next + inx d + jmp copystr + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SHUTILS2.LBR b/Images/Source/hd0/s0/u15/SHUTILS2.LBR new file mode 100644 index 0000000000000000000000000000000000000000..7f73512f04f2062ce826b68765f34a19f374e69c GIT binary patch literal 21504 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SHVAR.COM b/Images/Source/hd0/s0/u15/SHVAR.COM new file mode 100644 index 0000000000000000000000000000000000000000..508d2448f191a915fb0a39ff9e64d61b9e6f5c7c GIT binary patch literal 2944 zcmb_deQXow89&Fq*LUX+aI&(-Ve9!W?Z}0EKu9J`;sg;Awn9=78rEqALNU}L#KJZu zUJ?UCNEKbTNk!V!ZrU`dm9~jGsG#f0VE7J~+=+L>RF*1`x>@Kl*!{6u#VV}QWzTyK z(9-=mOMc(y`MtmA50_XWZ1{CRnu1%Pxw@HGR1bcwD76;2u`!LH3f{LsXnYC(8?v<8Qqc$-VZl^RnNUZbTG^z^yQ#sBFp$+xulILc4q zCU3?HDyIpH2N3)|%saVQhdqE(8qoB=RcRDrG9vz*rIqtF-t@fl>IGIkT?4}93#Aj%16GpWB_4gH_aKnL86u!@Ge$6SZ z0%C**=jyBz5`dDCj@UyzI?xE*!&BhSgj^t#6lWS;l-L!lW?snD&L6o<@{twB6$#c7 z3%fg4@}tp2G8UiUSGBfNnvow2eb1GV^$o7~^^Go3?Q%`Zlev=C9a$G%+1k^xlc(@s zY2~=9+CtkCG4jehUXm}jQeYj8Utn+ti+{&-&%yHtj#B6-WJnHHu*yd+8wkSXzwd%N z{L!VJa*?xlnZV9P)6hp&>}ZikfJEEAZs8TKw0f|-}OklDctMT zo;D3Uyso6Sw&N%0OBuQQQ=^!#m=A(L0O26&-!dsHzeQ=Q=7!=9$C0e(5I7_eC(nTF zNs0;4kYcFbEUBlFbPx$iBuhy&{nWmhr{ZVzXWRe?X(XkQ2%8CvnK!22ym5sf!XX4y zQ#u4#eEQ9Opx?NOpe#25Orm<>Fv6`2K)^61P_DSu&ybyl;wA}#{Q)FQk(7iP!s_25 zO#yWV1?w&-qwe5e^htM}Cq1h?>$W>_WO(Z~{<(N;A{9;Wc3V;^MS)EN86=rncoJ|i z11_czxi>Q(95QPUnmMt~GkHdN!wm%DzMh1eLZV25A41KL$@Dp;*IgzPjU=elG5EHd zRHlDR37i~GgZ~`y@v&Po@E303zPkXMDcyIQ8vf8G!YFL`@q4g z5zxN`ujQ--@UaYg0PoH2dPEWFy zn=Fiem{m8iehL;J{L``yf-TLv2P4cc29FKH2q)jO*9j3WmH350eTI#+0*;&@5i~e| z1XLJl? zci;}n8o^%h^Lb2DxgYrbuvKBWvwBb}-(K+Zun(69OE7uzMUcsrZbB6PK9|!Bu-}gN zbKt5}MRx)E2-FfH>Baq=29+mPtjU@=4WHujRmt{rs%m3Qe{kb0r@YP0oQIvfD8%+{ z&d$g~`0yESZXna>H7;A5&J{wpIavc@agB7Z*TARN zmhj2;>}u3kC`t>xhIyxm6Jc3rIs=<}@T+0`afjto{;|f$OO8H6a>9S1_fDZCEcBKH zXJ1Kh^qF@&yZ5VqS`+?HudEv`aFr_+0?nO8BcEMO_o;mzHRlSWK3PB6nR9&N$m8cd zR`}}k9y0diPlx9jWk+XveyOq-R$iHawNIJq)WURM57?8vdvTX9g+J?-=hT0#08qXp zW-MkdvYFKg*8s@Yn3`8O`|3DGMa z%y{)Xo@Ti0hq`j#qgFgdet7-}Vne+5qQ2ZK(n_tDPD6`RJj;1~jOR#2`mT3I);qn8 NtyEcC>-|5)|1a(tvBLlW literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SHVAR.MAC b/Images/Source/hd0/s0/u15/SHVAR.MAC new file mode 100644 index 00000000..2a996a24 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SHVAR.MAC @@ -0,0 +1,656 @@ +; +; Program: SHVAR +; Author: Richard Conn +; Version: 1.0 +; Date: 5 Mar 84 +; +version equ 10 + +; +; SHVAR is used to define a shell variable for the Shell SH. +; It makes entries into the file SH.VAR in the ROOT directory. The +; syntax of its use is: +; SHVAR variable text <-- define/redefine variable +; SHVAR variable <-- delete variable +; SHVAR <-- list variables +; + +; +; Equates for Key Values +; +z3env SET 0f400h ;address of ZCPR3 environment +backup equ 0 ;backup old file? 1 for yes, 0 for no +ctrlz equ 'Z'-'@' ;^Z for EOF +fcb equ 5ch +tbuff equ 80h +cr equ 0dh +lf equ 0ah + +; +; External Z3LIB and SYSLIB Routines +; + ext cout,qcout,getquiet,sort,crlf + ext sksp,fillb,moveb + ext initfcb,f$open,f$read,f$close,f$make,f$delete,f$write,f$rename + ext z3init,qprint,codend,hmovb,root,logud,getwhl,print + ext getfn1,pfn1,cline + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Environment + call banner ;print banner +; +; Check for Wheel +; + call getwhl ;get wheel byte + jnz start0 + call print + db cr,lf,' Not Wheel - Aborting',0 + ret +; +; Try to Load Variables +; +start0: +; +; Check for Help +; + lda fcb+1 ;get first char of FCB + cpi '/' ;also help? + jnz start0x +; +; Print Help Message +; + call print + db cr,lf,'SHVAR - Define/Redefine/Delete a Shell Variable' + db cr,lf,'Syntax:' + db cr,lf,' SHVAR variable text <-- to Define/Redefine' + db cr,lf,' SHVAR variable <-- to Delete' + db cr,lf,' SHVAR <-- to List Variable Names' + db 0 + ret +; +; Define File to Work With +; +start0x: + call getfn1 ;get name of shell + lxi d,shvfcb+1 ;variable FCB + mvi b,11 ;11 chars + mov a,m ;any name given? + cpi ' ' ;space if none + cnz moveb ;set name +; +; Define $$$ and BAK Files +; + lxi h,shvfcb+1 + lxi d,shvtmp+1 ;set $$$ name + mvi b,8 ;8 chars + call moveb +; + if backup + lxi d,shvbak+1 ;set BAK name + call moveb + endif +; +; +; Save Command Line +; + lxi h,tbuff ;save line + call cline + shld lineptr ;set ptr to line +; +; Load Variables +; + call varload + jnz start1 +; +; Initialize Shell Variables if File Not Found +; + call print + db cr,lf,' Shell Variable File ',0 + lxi d,shvfcb+1 + call pfn1 + call print + db ' Not Found',0 + ret +; +; Process User Command +; +start1: + lda fcb+1 ;check for list option + cpi ' ' ;no args = list + jz list + call doit ;process command + call varsave ;save new shell variables + ret +; +; Print Names of Variables +; +list: + call lpack ;pack just names + xchg ;set ptr to ptr table + inx h + shld ptrbuf ;ptr buffer for sort + lhld vcount ;run sort? + mov a,h + ora l + cnz lsort ;sort names + call print + db cr,lf,' Shell Variables --',cr,lf,0 + mvi c,0 ;set counter + call codend ;pt to first variable + mov a,m ;empty? + cpi ctrlz + jnz list1 + call print + db ' -- No Variables Defined --',0 + ret +; +; Print Next Variable +; +list1: + mov a,m ;end of list? + cpi ctrlz + jz list3 + call print + db ' ',0 + mvi b,8 ;print 8 chars +list2: + mov a,m ;get char + inx h ;pt to next + call cout ;print it + dcr b ;count down + jnz list2 + inr c ;increment count + mov a,c ;new line? + ani 3 + cz crlf + jmp list1 +list3: + mov a,c ;new line to end? + ani 3 + cnz crlf + ret +; +; Sort Variables +; +lsort: + call codend ;pt to first variable + shld ssb ;set ptr + lxi d,ssb ;pt to SSB + jmp sort ;perform sort +; +; Compare Routine +; +compare: + push h ;save regs + push d + push b + mvi b,8 ;8 chars +comp1: + ldax d ;get char + cmp m ;compare + jnz comp2 + inx h ;pt to next + inx d + dcr b ;count down + jnz comp1 +comp2: + pop b ;restore regs + pop d + pop h + ret + +; +; Pack Variables Down to a Minimum (Just 8-char Names) +; +lpack: + lxi h,0 ;set count + shld vcount + call codend ;pt to first variable + mov d,h ;DE=HL + mov e,l +lpack1: + mov a,m ;get next char + stax d ;set possible EOF + cpi ctrlz ;done? + rz + push h ;increment variable count + lhld vcount + inx h + shld vcount + pop h + mvi b,8 ;save 8 chars +lpack2: + mov a,m ;get next char + stax d ;store it + inx h ;pt to next + inx d + dcr b ;count down + jnz lpack2 +lpack3: + mov a,m ;skip to next variable + inx h + ora a ;done? + jnz lpack3 + jmp lpack1 ;resume +; +; Input and Process User Commands +; +doit: + call nadd ;add/delete/redefine variable +; +; Pack Names +; +pack: + call codend ;pack entries in table + mov d,h ;HL=DE + mov e,l +; +; Check Next Entry +; +pack1: + mov a,m ;get next char + stax d ;put it + cpi ctrlz ;done? + rz + cpi ' ' ;deleted? + jz pack3 +; +; Copy Entry +; +pack2: + mov a,m ;get char + stax d ;put it + inx h ;pt to next + inx d + ora a ;done? + jnz pack2 + jmp pack1 ;resume +; +; Skip Entry +; +pack3: + mov a,m ;get char + inx h ;pt to next + ora a ;done? + jnz pack3 + jmp pack1 ;resume + +; +; Add Names to Table +; +nadd: + lhld lineptr ;pt to user line + call sksp ;skip to first non-blank + ora a ;done? + rz ;exit if no change + call qprint + db cr,lf,' Shell Variable ',0 +; +; Copy Input Name into Shell Buffer SHVAR +; + push h ;save ptr to name + lxi h,shvar ;init name buffer + mvi a,' ' ;space fill + mvi b,8 ;8 chars + call fillb + xchg ;pt to buffer in DE + pop h ;pt to name + mvi b,8 ;8 chars max +nadd1: + mov a,m ;get name char + call delck ;check for delimiter + jz nadd3 + stax d ;store char + call qcout ;print chars of variable name + inx h ;pt to next + inx d + dcr b ;count down + jnz nadd1 +nadd2: + mov a,m ;flush to delimiter + inx h + call delck ;check for delimiter + jnz nadd2 + dcx h ;pt to delimiter +; +; Search for Name +; +nadd3: + shld lineptr ;set ptr to rest of line + call codend ;pt to first element +; +; Check for End of Entries +; +nadd4: + mov a,m ;get first char of next string + cpi ctrlz + jz addit ;add name at HL +; +; Compare Names +; + lxi d,shvar ;pt to variable + mvi b,8 ;compare + shld curname ;save ptr to current name in case of delete +nadd5: + ldax d ;check for duplicate + cmp m + jnz nadd6 + inx h ;pt to next + inx d + dcr b ;count down + jnz nadd5 + jmp nadd7 +; +; No Match, so Skip Rest of String +; +nadd6: + mov a,m ;skip to end of string + inx h ;pt to next + ora a ;done? + jnz nadd6 + jmp nadd4 ;resume +; +; Match - Determine What User Wants to Do +; +nadd7: + lhld lineptr ;see if any text follows name + call sksp ;skip to text + ora a ;EOL? + jz delete ;delete name +; +; Redefine Name +; + lhld curname ;pt to name in buffer + mvi b,8 ;space fill it + mvi a,' ' + call fillb + jmp nadd6 ;resume in case another duplicate +; +; Delete Name +; +delete: + call qprint + db ' Deleted',0 + lhld curname ;pt to name in buffer + mvi b,8 ;space fill it + mvi a,' ' + call fillb + ret +; +; Add Name +; +addit: + call qprint + db ' = ',0 + shld curname ;save ptr to new name + xchg ;dest in DE + lxi h,shvar ;pt to name + mvi b,8 ;8 chars + call hmovb ;copy name into buffer + xchg ;pt to after name with HL + push h ;save ptr + mvi m,0 ;store ending 0 and ^Z in case of abort + inx h + mvi m,ctrlz ;store ^Z + lhld lineptr ;point to user text + call sksp ;skip to non-space + pop d ;pt to destination +; +; Copy User Input into Buffer +; +addit1: + mov a,m ;get char + stax d ;put char + ani 7FH ;done? + cnz qcout ;print chars of definition + inx h ;pt to next + inx d + ora a ;done? + jnz addit1 + mvi a,ctrlz ;mark end + stax d + ret + +; +; Print Banner +; +banner: + call qprint + db 'SHVAR, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db 0 + ret +; +; Check to see if char in A is a delimiter +; Return with Z if so +; +delck: + push h ;pt to table + push b ;save BC + mov b,a ;char in B + lxi h,dtable ;pt to delimiter table +delck1: + mov a,m ;get delimiter + ora a ;done? + jz notdel + cmp b ;compare + jz yesdel + inx h ;pt to next + jmp delck1 +notdel: + mov a,b ;get char + ora a ;set Z if null, else NZ +yesdel: + mov a,b ;restore char + pop b ;restore regs + pop h + ret + +; +; Delimiter Table +; +dtable: + db '<>;:,.=-_ ',0 + +; +; Save Shell Variable List +; Return with Z if Error +; +varsave: + call getquiet ;get quiet flag + jnz vars0 + call print + db cr,lf,' Writing Shell Variable File ',0 + lxi d,shvfcb+1 + call pfn1 ;print file name +vars0: + lxi d,shvtmp ;open temp + call initfcb + call f$delete ;delete if any exists + call f$make ;create new file + inr a ;error? + rz + call codend ;pt to scratch area +; +; Save Loop +; +vars1: + lxi d,tbuff ;copy into buffer + mvi b,128 ;128 bytes + call hmovb + lxi d,shvtmp ;write block + call f$write + jnz werr ;write error + lxi d,tbuff ;check for done + mvi b,128 ;128 bytes +; +; Check for Done +; +vars2: + ldax d ;look for ^Z + cpi ctrlz + jz varsx + inx d ;pt to next + dcr b ;count down + jnz vars2 + jmp vars1 +; +; Done +; +varsx: + lxi d,shvtmp ;close temp file + call f$close +; +; Delete Old Backup File SH.BAK +; + if backup +; + lxi d,shvbak ;delete any old backups + call initfcb + call f$delete +; +; Create New Backup File SH.BAK=SH.VAR +; + lxi h,shvbak ;new name + lxi d,shvfcb ;old name + call f$rename ;create backup file +; + else +; +; Delete Original File +; + lxi d,shvfcb ;pt to FCB + call initfcb + call f$delete +; + endif ;backup +; +; Create New Shell Variable File SH.VAR=SH.$$$ +; + lxi h,shvfcb ;new name + lxi d,shvtmp ;old name + call f$rename ;create new file + xra a ;return OK + dcr a ;NZ + ret +; +; File Write Error +; +werr: + call print + db cr,lf,'Error in Writing File - Aborting',0 + xra a ;error code + ret + +; +; Load Shell Variable List +; Return with Z if Error +; +varload: +; +; Look for Variable File +; + call root ;determine DU of root + call logud ;goto root + call codend ;pt to scratch area + mvi m,ctrlz ;prep for no file + lxi d,shvfcb ;try to open file + call initfcb ;init FCB + call f$open + rnz ;file not found +; +; Read in Variable File +; +varl1: + lxi d,shvfcb ;read in file + call f$read + jnz varl2 + lxi d,tbuff ;pt to data + xchg ;copy into memory + mvi b,128 ;128 bytes + call hmovb + xchg + jmp varl1 +varl2: + lxi d,shvfcb ;close file + call f$close +; +; Say List is Already Loaded +; + xra a ;return NZ for OK + dcr a + ret + +; +; Buffers +; +lineptr: + ds 2 ;ptr to next char in line +curname: + ds 2 ;ptr to current variable name +shvar: + ds 8 ;shell variable name +; + if backup +shvbak: + db 0 + db 'SH ' ;name of shell variable file + db 'BAK' + ds 24 ;36 bytes total + endif ;backup +; +shvtmp: + db 0 + db 'SH ' ;name of shell variable file + db '$$$' + ds 24 ;36 bytes total +shvfcb: + db 0 + db 'SH ' ;name of shell variable file + db 'VAR' + ds 24 ;36 bytes total +; +; Sort Specification Block +; +ssb: + ds 2 ;address of first record +vcount: + ds 2 ;number of records to sort + dw 8 ;size of each record in bytes + dw compare ;compare routine +ptrbuf: + ds 2 ;address of pointer buffer + dw 0ffh ;use pointers + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SHVAR11.LBR b/Images/Source/hd0/s0/u15/SHVAR11.LBR new file mode 100644 index 0000000000000000000000000000000000000000..433e23728d8a39d6780da5c82ba31b393d4b0faa GIT binary patch literal 13312 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%0DYYEr^Hs*lx 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SUB.COM b/Images/Source/hd0/s0/u15/SUB.COM new file mode 100644 index 0000000000000000000000000000000000000000..a57d35724323f9a471090da144e87d37f2aaebb3 GIT binary patch literal 2560 zcmbVNe@q+K9e-#0?)eUIYG|WEr1arK+2$mKxE0krFijW`q)<@Ek9KNd4!G1S_)=pE zY~YY?Ri-IXqc$N*iPH9u=AUhH*C}a@^c!T;|O7MeRKyunrD@ z?4JYe3fALtauJfva;6Bb5Vl1B#w}^H92g#FmK0b(>`dw_-m^I8eHF)(>LbFi9F;w< z;%ufuK;UW!Ht+=@f+(+WXkT$T&sm&3k%KHvy8jGLF47%hnMAr{(eMi)($h?03fXsD ziN;8?GBgy7^pn=`V2JD{h>qJ#yV_@StJqaRc?5x^wzjtD9qLEWgAJ%ziNwN@k#J;y zq5dm4X}n`wsYY|l%R48oslTvoUv~+RBB{P@+m0<&J7vpi3CYC)3{Th_&uiHKCWc`04?L~W6ROt&14?|VLc9X3ext~GQEe6)?6#X_Mwfk5rUx9Q z-}nS=x1BZeMJNu>6z#LmXJ6Fm4d=wQ#s8T!2llx9oYGp4#>^k67wmF8r@djXN*eDL z3ysPZ8~HC4^Xn^_RIv*m*{NyQKDYa4usL<}?{@eA1LOfIPz7l3R@C5|!PQf!GCrTq zCSl@cF#FaAS(^h$_g=f42WpmIoqudcF(*sp{v2z<+&3f8Ikard5ToMF=B3n_( z!Yj(eU(rB)Szh;JbY1-8$J#x<7cY^y#V7r`oheeys7EtpZIj-!=zt+;ha` z6-bcfwGhu%_z>Fy^%k#JPvdywUSxZ55jW|uUys2wc`xDBlcO@MUH4C8IGgb% z-IP9gL{N61@44T?mGJpL{k^)tC-hug)~i08W4vPUx>>hm`kQomTwvWMts{ej$a;xx z>K&n>O?~57kSCQGX;nrd{mi>77!3|F<*=fVj$mY*SO^@h;{uxqpag{+RNycJu$iJ| z=tOLsAvS%M@h=s;t0p?reGUYiI+|hp6VukyT`!_r{92wyqV$-}oG&s2F*WS>4 z$ja8H5GbvX_DC!g4fe&tFNMgE(!W`{p|$;BOMoOwK}c7B%dvKS{vyd35fgLULfvsdue@%Hod-%5LZ)EL)Z_#wv4S z_*XK%98Q#HT$Oaz>AQ=4YuH7$ud|mguCD)y8h4KW0R)g$LT92;kHhKvwG$FHG`7j{o$&U76S8(f7MK{w zR-pfK8X0GPxd3;Y`WI02ytYHkc(;h|hY>p@nTm?4WHzl^kZ3``v1zy^E#$kvj*J{V zTSOiCQ<;@QE-~sZMU}$CbVAB!)ARZ=4Dhm^Nflhy1v(|d7W_mkrE4NI^_U1(!84+X znQ$6E7PY;i3xOzu|9H{>#nM)BTflj)?Nn!g&}|a0zQi2!^J%>RHGxlF7cGTzKkyy; zzUaPfXA;gLNQueGg*u3X<>Yl2ntWZEcw^vZN-Whr5GQ}GO#EtKJgMFg-!*QC0itb_ z1T?--2hT#F459)Oh`bIQw@osU0Rl7OWI|%13`C(2=wWUPPgu@uHJx4#)t0)wQs#53 zFvDPUc;xGo;JPME>zA}1i5dKT5*rHG?0!&~&5G$F%=om6qyU+J%JQ%bsRII{uSoOy z3OF32S0(tgtZtz*fZhl7s6_`?C4Kdz8C)`d_VH@3UhpnTlSyMis;NbJ-H`sj`u_$h CvEBs$ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SUB.MAC b/Images/Source/hd0/s0/u15/SUB.MAC new file mode 100644 index 00000000..3c85e0a9 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SUB.MAC @@ -0,0 +1,1043 @@ +; +; PROGRAM NAME: SUB +; AUTHOR: RICHARD CONN (From SuperSUB Ver 1.1 by Ron Fowler) +; VERSION: 3.0 +; DATE: 18 May 84 +; PREVIOUS VERSIONS: 2.3 (6 Jan 83) - Called SUB2.ASM +; PREVIOUS VERSIONS: 2.2 (7 DEC 82), 2.1 (14 NOV 82), 2.0 (11 OCT 82) +; PREVIOUS VERSIONS: 1.4 (10 OCT 81), 1.3 (7 OCT 81) +; PREVIOUS VERSIONS: 1.2 (5 OCT 81), 1.1 (3 OCT 81), 1.0 (1 OCT 81) +; NOTE: FOR USE WITH ZCPR3 +; +VERS EQU 30 +z3env SET 0f400h + +; +; SUB is derived from Ron's SuperSUB program; it provides a different +; format for the command line, a command-search hierarchy like ZCPR3, a +; resetting of the DMA address, several additional functions, and there are +; several other additions/changes. Additionally, ZCPR3-specific enhancements, +; such as appending the rest of the multiple command line to the command file +; and allowing multiple commands on a single line, are permitted. +; +; SuperSUB, VERSION 1.1 (09/13/81) by Ron Fowler +; 2/18/81 (first written) WESTLAND, MICH. +; +; +; This program is intended as a replacement for the +; SUBMIT program provided with CP/M. It provides sev- +; eral new facilities: +; 1) Nestable SUBMIT runs +; 2) Interactive entry of SUBMIT job (no need +; to use an editor for simple SUBMIT runs) +; 3) Command line entry of small SUBMIT jobs +; 4) Ability to enter blank lines in an edited +; SUBMIT file +; 5) User customization of number of parameters +; and drive to send $$$.SUB to +; + +; +; DEFINE BOOLEANS +; +FALSE EQU 0 +TRUE EQU NOT FALSE + +; +; -- User customizable options -- +; + +FORCE$SUB EQU FALSE ;TRUE IF SUBMITTED FILE MUST BE OF TYPE .SUB +TIME$CONST EQU 0C000H ;DELAY FOR RINGING BELL +NPAR EQU 10 ;NUMBER OF ALLOWABLE PARAMETERS +CPBASE EQU 0 ;SET TO 4200H FOR HEATH CP/M +OPT EQU '/' ;OPTION DELIMITER CHAR +PDELIM EQU '$' ;PARAMETER DELIMITER + +; +; SYSLIB AND Z3LIB ROUTINES +; + EXT Z3INIT,PFIND,GETCL1 + EXT LOGUD,GETUD,PUTUD + EXT INITFCB + EXT PSTR,PRINT,QPRINT,COUT,CRLF,CAPS,PHLDC + EXT CODEND + +; +; CP/M DEFINITIONS +; +FGCHAR EQU 1 ;GET CHAR FUNCTION +DIRIOF EQU 6 ;DIRECT CONSOLE I/O +RDBUF EQU 10 ;READ CONSOLE BUFFER +LOGIN EQU 14 ;LOG IN DISK +OPENF EQU 15 ;OPEN FILE FUNCTION +CLOSEF EQU 16 ;CLOSE FILE FUNCTION +DELETF EQU 19 ;DELETE FILE FUNCTION +READF EQU 20 ;READ RECORD FUNCTION +WRITEF EQU 21 ;WRITE RECORD FUNCTION +MAKEF EQU 22 ;MAKE (CREATE) FILE FUNCTION +GETDSK EQU 25 ;RETURN CURRENT DISK +SETDMA EQU 26 ;SET DMA ADDRESS +UCODE EQU 32 ;GET/SET USER CODE +; +UDFLAG EQU CPBASE+4 +BDOS EQU CPBASE+5 +; +CURIND EQU '$' ;CURRENT USER/DISK INDICATOR +FCB EQU 5CH ;DEFAULT FILE CONTROL BLOCK +FCBEX EQU 12 ;FCB OFFSET TO EXTENT FIELD +FCBRC EQU 15 ;FCB OFFSET TO RECORD COUNT +FCBNR EQU 32 ;FCB OFFSET TO NEXT RECORD +FN EQU 1 ;FCB OFFSET TO FILE NAME +FT EQU 9 ;FCB OFFSET TO FILE TYPE +TBUF EQU CPBASE+80H ;DEFAULT BUFFER +TPA EQU CPBASE+100H ;TRANSIENT PROGRAM AREA +; +PUTCNT EQU TBUF ;COUNTER FOR OUTPUT CHARS +; +; DEFINE SOME TEXT CHARACTERS +; +CTRLC EQU 'C'-'@' +CTRLZ EQU 'Z'-'@' +BEL EQU 7 ;RING BELL +CR EQU 13 ;CARRIAGE RETURN +LF EQU 10 ;LINE FEED +TAB EQU 9 + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + LXI H,0 ;SAVE STACK IN CASE + DAD SP ; ONLY HELP REQUESTED + SHLD SPSAVE ;(NOT OTHERWISE USED) + CALL PUTUD ;SAVE HOME DIR + CALL QPRINT + DB 'SUB Version ',VERS/10+'0','.',(VERS MOD 10)+'0',0 + + CALL CODEND ;SET UP EXTERNAL BUFFERS + SHLD CLBUF ;SET PTR + MVI M,128 ;ALLOW 128 CHARS + LXI D,100H ;FREE SPACE + DAD D ;PT TO FREE AREA + SHLD FREMEM ;SET PTR TO FREE MEMORY AREA + SPHL ;SET STACK PTR + + LDA FCB+1 ;ANYTHING ON CMD LINE? + CPI ' ' + JZ HELP ;NO, GO PRINT HELP + CALL INITVAR ;INITIALIZE THE VARIABLE AREA + CALL GETPAR ;GET COMMAND LINE PARAMETERS AND EXTRACT OPTION + CALL ABORT ;PERFORM ABORT IF FLAG SET + CALL SETUP ;SET UP READ OF SUBMIT FILE + CALL RDFILE ;READ THE SUBMIT FILE + CALL WRSET ;SET UP WRITE OF "$$$.SUB" + CALL WRSUB ;WRITE "$$$.SUB" + JMP CPBASE ;GO START THE SUBMIT +; +; SETUP SETS UP THE FILE CONTROL BLOCK +; FOR READING IN THE .SUB TEXT FILE +; +SETUP: + LXI H,FCB+FT ;LOOK AT FIRST CHAR OF + MOV A,M ;FILE TYPE. IF IT IS + CPI ' ' ;BLANK, THEN GO MOVE + JZ PUTSUB ;"SUB" INTO FT FIELD + + IF FORCE$SUB ;FILE TYPE MUST BE OF .SUB + LXI D,SUBTYP ;FILE TYPE MUST BE .SUB + MVI B,3 ;3 BYTES + CALL COMPAR + JNZ NOTFND ;FILE NOT FOUND IF NO TYPE MATCH + ENDIF + + RET ; IF NOT BLANK, THEN ACCEPT ANY FILE TYPE +; +; MOVE "SUB" INTO THE FILE TYPE +; +PUTSUB: + XCHG ;BY CONVENTION, MOVE FROM + LXI H,SUBTYP ; @HL TO @DE + MVI B,3 + CALL MOVE + RET +; +; MOVE # BYTES IN B REGISTER FROM @HL TO @DE +; +MOVE: + MOV A,M ;PICK UP + STAX D ;PUT DOWN + INX H ;I'M SURE + INX D ; YOU'VE SEEN THIS + DCR B ; BEFORE... + JNZ MOVE ;100 TIMES AT LEAST + RET ;I KNOW I HAVE! +; +; GETPAR MOVES THE SUBSTITUTION PARAMETERS SPECIFIED +; IN THE COMMAND LINE INTO MEMORY, AND STORES THEIR +; ADDRESSES IN THE PARAMETER TABLE. THIS ALLOWS +; SUBSTITUTION OF $1, $2, ETC., IN THE SUBMIT COMMANDS +; WITH THEIR ACTUAL VALUES SPECIFED IN THE COMMAND +; LINE. +; +GETPAR: + XRA A ;A=0 + STA AFLAG ;TURN OFF ABORT COMMAND + LXI H,TBUF+1 ;WHERE WE FIND THE COMMAND TAIL + CALL SCANTO ;SKIP SUBMIT FILE NAME + STA OPTION ;FIRST CHAR OF CMD LINE IS OPTION + RC ;LINE ENDED? + CPI OPT ;NO, CHECK OPTION + JNZ GLP0 ;NOT KEYBOARD INP, READ FILE + INX H ;POINT PAST '/' + MOV A,M ;GET OPTION CHAR + CPI 'A' ;ABORT COMMAND + JZ GPARABT + CPI 'I' ;INTERACTIVE MODE + RZ ;RETURN IF SO + JMP HELP ;HELP OTHERWISE +GPARABT: + MVI A,0FFH ;TURN ON ABORT FLAG + STA AFLAG + INX H ;GET POSSIBLE BELL OPTION + MOV A,M + CPI 'B' ;BELL OPTION + RNZ + MVI A,0FFH ; SET BELL FLAG + STA BELL$FLAG + RET +GLP0: + MOV A,M ;INPUT IS FROM A .SUB FILE..THIS + INX H ; CODE SKIPS OVER THE NAME OF + ORA A ; THE SUB FILE TO GET TO THE + RZ ; COMMAND LINE PARAMETERS + CPI ' ' + JZ GLP + CPI TAB + JNZ GLP0 +GLP: + CALL SCANTO ;PASS UP THE BLANKS + RC ;CY RETURNED IF END OF CMD LINE + CALL PUTPAR ;NOW PUT THE PARAMETER INTO MEM + RC ;CY RETURNED IF END OF CMD LINE + JMP GLP ;GET THEM ALL +; +; SCANTO SCANS PAST BLANKS TO THE FIRST NON-BLANK. IF +; END OF COMMAND LINE FOUND, RETURNS CARRY SET. +; +SCANTO: + MOV A,M + INX H + ORA A ;SET FLAGS ON ZERO + STC ;IN CASE ZERO FOUND (END OF CMD LIN) + RZ + CPI ' ' + JZ SCANTO ;SCAN PAST BLANKS + CPI TAB ;DO TABS TOO, JUST FOR + JZ SCANTO ; GOOD MEASURE + DCX H ;FOUND CHAR, POINT BACK TO IT + ORA A ;INSURE CARRY CLEAR + RET +; +; PUTPAR PUTS THE PARAMETER POINTED TO BY HL INTO +; MEMORY POINTED TO BY "TXTPTR". ALSO STORES THE +; ADDRESS OF THE PARAMETER INTO THE PARAMETER TABLE +; FOR EASY ACCESS LATER, WHEN WE WRITE $$$.SUB +; +PUTPAR: + PUSH H ;SAVE POINTER TO PARM + LHLD TXTPTR ;NEXT FREE MEMORY + XCHG ; INTO DE + LHLD TBLPTR ;NEXT FREE AREA OF TABLE + MOV A,M ;NON-ZERO IN TABLE + ORA A ; INDICATES TABLE + JNZ PAROVF ; TABLE OVERFLOW (TOO MANY PARMS) + MOV M,E ;STORE THE PARM ADRS + INX H + MOV M,D + INX H + SHLD TBLPTR ;SAVE TABLE PNTR FOR NEXT TIME + POP H ;GET BACK PARM POINTER + PUSH D ;SAVE FREE MEM POINTER BECAUSE + ; WE WILL HAVE TO HAVE IT BACK + ; LATER TO STORE THE LENGTH + INX D ;POINT PAST LENGTH STORAGE + MVI B,0 ;INITIALIZE LENGTH OF PARM +PPLP: + MOV A,M ;GET NEXT BYTE OF PARM + INX H + ORA A ;TEST FOR END OF CMD LINE + JZ PP2 ;JUMP IF END + CPI ' ' ;TEST FOR END OF COMMAND + JZ PP2 + CPI TAB ;TAB ALSO ENDS COMMAND + JZ PP2 + STAX D ;PUT PARAMETER BYTE-BY-BYTE + INX D ;INTO FREE MEMORY + INR B ;BUMP LENGTH + JMP PPLP +PP2: + XCHG + SHLD TXTPTR ;NEW FREE MEMORY POINTER + POP H ;REMEMBER OUR LENGTH POINTER? + MOV M,B ;STORE THE LENGTH + XCHG ;HAVE TO RETN HL > CMD LINE + ORA A ;NOW RETURN END OF LINE FLAG + STC + RZ ;RETURN CY IF ZERO (EOL MARK) + CMC + RET +; +; +; ABORT CHECKS TO SEE IF THE ABORT FLAG IS SET AND +; EXECUTES THE ABORT FUNCTION IF SO +; +; +ABORT: + LDA AFLAG ;GET THE FLAG + ORA A ;0=NO + RZ + CALL PRINT + DB CR,LF,' Strike ^C to Abort Command File - ',0 + CALL CHARINB ;GET RESPONSE + CPI CTRLC ;ABORT? + JNZ ABORT1 ;RETURN TO OPSYS +ABORT0: + LXI D,SUBFCB ;DELETE SUBMIT FILE + MVI C,DELETF + CALL BDOS + CALL PRINT + DB ' ... Aborted',0 + JMP CPBASE ;RETURN TO CP/M +ABORT1: + CALL PRINT + DB ' ... Continuing',0 + JMP CPBASE ; RETURN TO CP/M +; +; INPUT CHAR FROM CON:; RING BELL EVERY SO OFTEN IF FLAG SET +; +CHARINB: + LDA BELL$FLAG ; GET FLAG + ORA A ; 0=NO + JZ CHARIN + PUSH H ; SAVE HL +CHARINB$LOOP: + LXI H,TIME$CONST ; GET TIME CONSTANT +CHARINB$LOOP1: + XTHL ; LONG DELAY + XTHL + DCX H ; COUNT DOWN + MOV A,H + ORA L + JNZ CHARINB$LOOP1 + MVI E,0FFH ; REQUEST STATUS + MVI C,DIRIOF ; DIRECT I/O + CALL BDOS + ORA A ; ANY INPUT? + JNZ CHARINB$DONE + MVI E,BEL ; RING BELL + MVI C,DIRIOF + CALL BDOS + JMP CHARINB$LOOP +CHARINB$DONE: + POP H ; RESTORE HL + JMP CAPS ; CAPITALIZE CHAR + +; +; INPUT CHAR FROM CON:; CAPITALIZE IT AND ECHO +; +CHARIN: + MVI C,FGCHAR ;GET CHAR + CALL BDOS + JMP CAPS ;CAPITALIZE +; +; RDFILE READS THE .SUB FILE SPECIFIED +; IN THE SUBMIT COMMAND INTO MEMORY +; +RDFILE: + LXI H,0 ;INIT LINE NUMBER + SHLD LINNUM + LDA OPTION ;USING A FILE? + CPI OPT ;OPT OPTION TELLS + JNZ RDFILE1 ;JUMP IF NOT + CALL PRINT + DB CR,LF,' Input Command Lines',0 + CALL CLFILL ;GET FIRST LINE + JMP LINE +RDFILE1: + CALL PRINT + DB CR,LF,' Processing SUB File',0 + +; CHECK FOR .SUB FILE IN CURRENT USER/CURRENT DISK + LXI D,FCB ;WE ARE, OPEN IT + CALL INITFCB ;INIT FCB + MVI A,0FFH ;SEARCH CURRENT ALSO + CALL PFIND ;LOOK FOR FILE + JZ NOTFND ;FILE NOT FOUND + CALL LOGUD ;LOG INTO DIRECTORY + LXI D,FCB ;PT TO FCB + MVI C,OPENF ;OPEN FILE + CALL BDOS + CALL FILL ;READ FIRST BLOCK + JNZ NOTEXT ;EMPTY FILE +LINE: + LHLD LINNUM ;BUMP LINE NUMBER + INX H + SHLD LINNUM + LHLD PREV ;GET PREV PREVIOUS LINE POINTER + XCHG + LHLD TXTPTR ;GET CURRENT FREE MEM POINTER + SHLD PREV ;MAKE IT THE PREV LINE (FOR NXT PASS) + MOV M,E ;STORE AT BEGIN OF CURRENT LINE, + INX H ; A POINTER TO THE PREVIOUS + MOV M,D + INX H + PUSH H ;LATER WE WILL PUT LENGTH HERE + INX H ;SKIP PAST LENGTH + MVI C,0 ;INITIALIZE LENGTH TO ZERO +LLP: + CALL GNB ;GET NEXT BYTE FROM INPUT SOURCE + CPI CTRLZ ;END OF FILE? + JZ EOF ;CY SET IF END OF FILE FOUND + ANI 7FH ;MASK OUT MSB + CALL CAPS ;CONVERT TO UPPER CASE + CPI LF ;IGNORE LINEFEEDS + JZ LLP + CPI CR ;IF IT'S A CARRIAGE RETURN, + JZ EOL ; THEN DO END OF LINE + MOV M,A ;STORE ALL OTHERS INTO MEMORY + INX H + CALL SIZE ;MAKE SURE NO MEMORY OVERFLOW + INR C ;BUMP CHAR COUNT + JM LENERR ;MAX OF 128 CHARS PER LINE + JMP LLP ;GO DO NEXT CHAR +; +; DO END OF LINE SEQUENCE +; +EOL: + SHLD TXTPTR ;SAVE FREE MEMORY POINTER + POP H ;CURRENT LINE'S LENGTH POINTER + MOV M,C ;STORE LENGTH AWAY + JMP LINE ;GO DO NEXT LINE +; +; END OF TEXT FILE +; +EOF: + SHLD TXTPTR ;SAVE FREE MEMORY POINTER + PUSH B ;SAVE LINE LENGTH + CALL ZMCL ;LOAD REST OF COMMAND LINE + POP B ;RESTORE LINE LENGTH + POP H ;CURRENT LINE'S LENGTH POINTER + MOV M,C ;STORE LENGTH AWAY + RET ;ALL DONE READING SUB FILE +; +; COPY COMMAND LINE INTO MEMORY BUFFER +; +ZMCL: + CALL GETCL1 ;GET ADDRESS OF COMMAND LINE BUFFER + MOV A,H ;CHECK FOR ANY + ORA L + RZ + LHLD LINNUM ;BUMP LINE NUMBER + INX H + SHLD LINNUM + LHLD PREV ;GET PREV PREVIOUS LINE POINTER + XCHG + LHLD TXTPTR ;GET CURRENT FREE MEM POINTER + SHLD PREV ;MAKE IT THE PREV LINE (FOR NXT PASS) + MOV M,E ;STORE AT BEGIN OF CURRENT LINE, + INX H ; A POINTER TO THE PREVIOUS + MOV M,D + INX H + PUSH H ;LATER WE WILL PUT LENGTH HERE + INX H ;SKIP PAST LENGTH + MVI C,0 ;INITIALIZE LENGTH TO ZERO + XCHG ;DE PTS TO NEXT PLACE TO STORE A BYTE + CALL GETCL1 ;GET ADDRESS OF COMMAND LINE BUFFER + MOV A,M ;GET LOW + INX H + MOV H,M ;GET HIGH + MOV L,A ;HL PTS TO FIRST BYTE OF MULTIPLE COMMAND LINE + MOV B,M ;GET FIRST CHAR IN LINE + MVI M,0 ;CLEAR LINE + MOV A,B ;CHECK TO SEE IF FIRST CHAR IS A SEMICOLON (CMD SEP) + CPI ';' + JNZ ZMCL0 + INX H ;PT TO 2ND CHAR + MOV A,M ;FIRST WAS A SEMICOLON, SO GET SECOND +ZMCL0: + XCHG ;HL PTS TO NEXT BUFFER SPACE, DE PTS TO MC LINE + JMP ZMCL1A ;A=FIRST CHAR IN MC LINE +; +; MAJOR LOOP TO STORE MULTIPLE COMMAND LINE +; +ZMCL1: + LDAX D ;GET NEXT BYTE FROM MULTIPLE COMMAND LINE +ZMCL1A: + ORA A ;0=EOL + JZ ZMCL2 + ANI 7FH ;MASK OUT MSB + CALL CAPS ;CONVERT TO UPPER CASE + MOV M,A ;STORE CHAR INTO MEMORY + INX H ;PT TO NEXT CHAR + INX D + CALL SIZE ;MAKE SURE NO MEMORY OVFL + INR C ;INCR CHAR COUNT + JM LENERR ;MAX OF 128 CHARS IN LINE + JMP ZMCL1 +; +; DONE WITH INPUT OF MULTIPLE COMMAND LINE -- SAVE CHAR CNT AND SET PTR +; +ZMCL2: + SHLD TXTPTR ;SAVE PTR + POP H ;PT TO CHAR COUNT POSITION + MOV M,C ;STORE CHAR COUNT + RET + +; +; GET NEXT BYTE FROM INPUT FILE OR USER +; +GNB: + PUSH H ;DON'T ALTER ANYBODY + PUSH D + PUSH B + LDA OPTION ;INPUT FROM .SUB FILE? + CPI OPT ;TOLD BY ORIG CMD LINE OPTION + JNZ GNBDISK ;GET NEXT CHAR FROM DISK BUFFER IF NOT FROM USER + CALL GNBKBD ;GET A BYTE FROM KBD INPUT + JMP GNBXIT ;THEN LEAVE +; +; GET NEXT BYTE FROM DISK FILE +; +GNBDISK: + LDA IBP ;GET BUFFER POINTER + CPI 128 ;NEED ANOTHER BLOCK FROM DISK? + JC GNBD1 ;CONTINUE + CALL FILL ;GET NEXT BLOCK + JZ GNBD1 ;CONTINUE IF NOT EMPTY + CALL GETUD ;RETURN HOME + MVI A,1AH ;FAKE EOF + JMP GNBXIT +GNBD1: + MOV E,A ;PUT OFFSET IN DE + MVI D,0 + INR A ;POINT TO NEXT BYTE + STA IBP ;SAVE FOR NEXT + LXI H,TBUF ;NOW OFFSET INTO BUFFER + DAD D + MOV A,M ;GET CHAR +GNBXIT: + POP B ;RESTORE EVERYBODY + POP D + POP H + ORA A ;TURN ON CARRY + RET +; +; FILL INPUT BUFFER FROM DISK +; +FILL: + XRA A ;CLEAR INPUT BUFFER PTR + STA IBP + LXI D,FCB ;PT TO FCB + MVI C,READF ;BDOS READ BLOCK FUNCTION + CALL BDOS + ORA A ;RETURN Z IF EOF + MVI A,0 ;SET PTR TO FIRST CHAR + RET +; +; GET NEXT BYTE FROM USER (KEYBOARD INPUT) +; +GNBKBD: + LHLD CLPTR ;PT TO NEXT CHAR + MOV A,M ;GET IT + INX H ;PT TO FOLLOWING + SHLD CLPTR ;RESET PTR + CPI CR ;END OF LINE? + RNZ + CALL CLFILL ;GET NEW LINE + JZ GKEND ;EMPTY LINE INPUT - RETURN EOF + MVI A,CR ;RETURN CR TO INDICATE END OF LINE + RET +GKEND: + MVI A,1AH ;RETURN EOF + RET +; +; FILL THE COMMAND LINE FROM THE USER +; +CLFILL: + CALL PRINT + DB CR,LF,' Command Line? ',0 + LHLD CLBUF ;NOW FILL THE BUFFER + XCHG ;...DE PTS TO IT + MVI C,RDBUF + CALL BDOS + LHLD CLBUF ;PT TO COMMAND LINE BUFFER + INX H + MOV A,M ;GET CHAR COUNT + INX H + SHLD CLPTR ;RESET THE COMMAND LINE PTR + ORA A ;SET ZERO FLAG + PUSH PSW ;SAVE A + ADD L ;PT TO AFTER LAST CHAR + MOV L,A + MOV A,H + ACI 0 + MOV H,A + MVI M,CR ;SET EOL CHAR + POP PSW ;GET CHAR COUNT + RET +; +; MAKE SURE NO MEMORY OVERFLOW +; +SIZE: + LDA BDOS+2 ;HIGHEST PAGE POINTER + SUI 9 ;MAKE IT BE UNDER CCP + CMP H ;CHECK IT AGAINST CURRENT PAGE + RNC ;NC=ALL OKAY + JMP MEMERR ;OTHERWISE ABORT +; +; SET UP THE $$$.SUB FILE +; FOR WRITING +; +WRSET: + CALL PRINT + DB CR,LF,' Writing Command File to Disk',0 + LXI D,SUBFCB + MVI C,OPENF + CALL BDOS ;OPEN THE FILE + INR A ;CHECK CPM RETURN + JZ NONE1 ;NONE EXISTS ALREADY +; +; $$$.SUB EXISTS, SO SET +; FCB TO APPEND TO IT +; + LDA SUBFCB+FCBRC ;GET RECORD COUNT + STA SUBFCB+FCBNR ;MAKE NEXT RECORD + RET +; +; COME HERE WHEN NO $$$.SUB EXISTS +; +NONE1: + LXI D,SUBFCB + MVI C,MAKEF + CALL BDOS + INR A + JZ NOMAKE ;0FFH=CAN'T CREATE FILE + RET +; +; WRITE THE "$$$.SUB" FILE +; +WRSUB: + LHLD PREV ;THIS CODE SCANS BACKWARD + MOV A,H ; THRU THE FILE STORED IN + ORA L ; MEMORY TO THE FIRST NON- + JZ NOTEXT ; NULL LINE. IF NONE IS + MOV E,M ; FOUND, ABORTS + INX H + MOV D,M ;HERE, WE PICK UP PNTR TO PREV LINE + INX H ;NOW WE POINT TO LENGTH + XCHG ;WE NEED TO STORE AWAY + SHLD PREV ; POINTER TO PREV LINE + XCHG + MOV A,M ;NOW PICK UP THE LENGTH + ORA A ;SET Z FLAG ON LENGTH + JNZ WRNTRY ;GOT LINE W/LENGTH: GO DO IT + LHLD LINNUM ;NOTHING HERE, FIX LINE NUMBER + DCX H ;(WORKING BACKWARD NOW) + SHLD LINNUM + JMP WRSUB +WRLOP: + LHLD PREV ;GET PREV LINE POINTER + MOV A,H + ORA L ;IF THERE IS NO PREV LINE + JZ CLOSE ; THEN WE ARE DONE + MOV E,M ;ELSE SET UP PREV FOR NEXT + INX H ; PASS THRU HERE + MOV D,M + INX H + XCHG ;NOW STORE IT AWAY + SHLD PREV + XCHG +WRNTRY: + CALL PUTLIN ;WRITE THE LINE TO THE FILE + LHLD LINNUM ;BUMP THE LINE NUMBER + DCX H ;DOWN (WORKING BACK NOW) + SHLD LINNUM + JMP WRLOP +; +; $$$.SUB IS WRITTEN, CLOSE THE FILE +; +CLOSE: + LXI D,SUBFCB + MVI C,CLOSEF + JMP BDOS +; +; THIS SUBROUTINE WRITES A LINE +; TO THE $$$.SUB FILE BUFFER, +; AND FLUSHES THE BUFFER AFTER +; THE LINE IS WRITTEN. +; +PUTLIN: + MOV A,M ;PICK UP LENGTH BYTE + INX H ;POINT PAST IT + STA GETCNT ;MAKE A COUNT FOR "GET" + SHLD GETPTR ;MAKE A POINTER FOR "GET" + LXI H,TBUF+1 ;TEXT GOES AFTER LENGTH + SHLD PUTPTR ;MAKE POINTER FOR "PUT" + XRA A ;INITIALIZE PUT COUNT + STA PUTCNT + MOV B,L ;COUNT FOR CLEAR LOOP +CLR: + MOV M,A ;ZERO OUT BUFFER LOC + INX H + INR B ;COUNT + JNZ CLR +; +; THIS LOOP COLLECTS CHARACTERS +; FROM THE LINE STORED IN MEMORY +; AND WRITES THEM TO THE FILE. +; IF THE "$" PARAMETER SPECIFIER +; IS ENCOUNTERED, PARAMETER SUB- +; STITUTION IS DONE +; +PUTLP: + CALL GETCHR ;PICK UP A CHARACTER + JC FLUSH ;CY = NO MORE CHAR IN LINE + CPI '^' ;CONTROL-CHAR TRANSLATE PREFIX? + JNZ NOTCX + CALL GETCHR ;YES, GET THE NEXT + JC CCERR ;ERROR: EARLY END OF INPUT + SUI '@' ;MAKE IT A CONTROL-CHAR + JC CCERR ;ERROR: TOO SMALL + CPI ' ' + JNC CCERR ;ERROR: TOO LARGE +NOTCX: + CPI PDELIM ;PARAMETER SPECIFIER? + JNZ STOBYT ;IF NOT, JUST WRITE CHAR + LDA OPTION ;CHECK OPTION: '$' DOESN'T + CPI OPT ; COUNT IN OPT MODE + MVI A,PDELIM ;(RESTORE THE '$') + JZ STOBYT + CALL LKAHED ;PEEK AT NEXT CHAR + JC PARERR ;LINE ENDING MEANS PARAM ERR + CPI PDELIM ;ANOTHER "$"? + JNZ SUBS ;IF NOT THEN GO DO SUBSTITUTION + CALL GETCHR ;GET THE 2ND "$" (WE ONLY LOOKED + ; AHEAD BEFORE) +STOBYT: + CALL PUTCHR ;WRITE CHAR TO FILE + JMP PUTLP +; +; PARAMETER SUBSTITUTION...LOOKS UP THE +; PARAMETER # AFTER THE "$" AND PLUGS IT +; IN IF IT EXISTS. +; +SUBS: + CALL NUMTST ;IT BETTER BE A NUMBER + JC PARERR ; OTHERWISE PARAM ERROR + MVI B,0 ;INITIALIZE PARM # + JMP LPNTRY ;WE JOIN LOOP IN PROGRESS... +SUBLP: + CALL LKAHED ;LOOK AT NEXT CHAR + JC DOSUBS ;IF LINE EMPTY, THEN PLUG IN PARM + CALL NUMTST ;CHECK FOR NUMERIC + JC DOSUBS ;DONE IF NOT +LPNTRY: + CALL GETCHR ;NOW REMOVE THE CHAR FROM INPUT STREAM + SUI '0' ;REMOVE ASCII BIAS + MOV C,A ;SAVE IT + MOV A,B ;OUR ACCUMULATED COUNT + ADD A ;MULTIPLY BY TEN + ADD A + ADD B + ADD A + ADD C ;THEN ADD IN NEW DIGIT + MOV B,A ;RESTORE COUNT + JMP SUBLP +; +; PERFORM THE SUBSTITUTION +; +DOSUBS: + MOV A,B ;GET PARM # + DCR A ;MAKE ZERO RELATIVE + JM PARERR ;OOPS + CALL LOOKUP ;LOOK IT UP IN PARM TABLE + JC PARERR ;IT'S NOT THERE + MOV B,A ;LENGTH IN B +SUBLP1: + INR B ;TEST B FOR ZERO + DCR B + JZ PUTLP ;DONE + MOV A,M ;GET CHAR OF REAL PARAMETER + INX H ;POINT PAST FOR NEXT TIME + PUSH H ;SAVE REAL PARM POINTER + CALL PUTCHR ;PUT IT IN THE FILE + POP H ;GET BACK REAL PARM POINTER + DCR B ;COUNTDOWN + JMP SUBLP1 +; +; COME HERE WHEN A LINE IS FINISHED, +; AND WE NEED TO WRITE THE BUFFER TO DISK +; +FLUSH: + LXI D,SUBFCB + MVI C,WRITEF + CALL BDOS + ORA A + JNZ WRERR ;CPM RETURNED A WRITE ERROR + RET +; +; GETCHR GETS ONE CHAR FROM +; LINE STORED IN MEMORY +; +GETCHR: + LXI H,GETCNT + MOV A,M ;PICK UP COUNT + DCR A ;REMOVE THIS CHAR + STC ;PRESET ERROR + RM ;RETURN CY IF OUT OF CHARS + MOV M,A ;UPDATE COUNT + LHLD GETPTR ;CURRENT CHAR POINTER + MOV A,M ;PICK UP CHAR + INX H ;BUMP POINTER + SHLD GETPTR ;PUT IT BACK + CMC ;TURN CARRY OFF + RET +; +; PUTCHR PUTS ONE CHAR TO +; THE OUTPUT BUFFER +; +PUTCHR: + LXI H,PUTCNT + INR M ;INCREMENT COUNT + JM LENERR ;LINE WENT TO > 128 CHARS + LHLD PUTPTR ;GET BUFFER POINTER + ANI 7FH ;MASK OUT MSB + MOV M,A ;PUT CHAR THERE + INX H ;BUMP POINTER + SHLD PUTPTR ;PUT IT BACK + RET ;ALL DONE +; +; LOOK AHEAD ONE CHAR IN +; THE INPUT STREAM. SET +; CARRY IF NONE LEFT. +; +LKAHED: + LDA GETCNT + ORA A ;SEE IF COUNT IS DOWN TO ZERO + STC ;PRE SET INDICATOR + RZ + MOV A,M ;PICK UP CHAR + CMC ;TURN OFF CARRY FLAG + RET +; +; LOOK UP PARAMETER WITH NUMBER IN +; A REG. RETURN A=LENGTH OF PARM, +; AND HL => PARAMETER +; +LOOKUP: + CPI NPAR + JNC PAROVF ;PARM # TOO HIGH + MOV L,A + MVI H,0 ;NOW HAVE 16 BIT NUMBER + DAD H ;DOUBLE FOR WORD OFFSET + LXI D,TABLE + DAD D ;DO THE OFFSET + MOV E,M ;GET ADDRESS OF PARM + INX H + MOV D,M + MOV A,D ;ANYTHING THERE? + ORA E + JNZ LKUPOK + XRA A ;NO, ZERO LENGTH + RET +LKUPOK: + XCHG ;NOW IN DE + MOV A,M ;PICK UP LENGTH + INX H ;POINT PAST LENGTH + RET +; +; UTILITY COMPARE SUBROUTINE +; +COMPAR: + LDAX D + CMP M + RNZ + INX H + INX D + DCR B + JNZ COMPAR + RET +; +; NUMERIC TEST UTILITY SUBROUTINE +; +NUMTST: + CPI '0' + RC + CPI '9'+1 + CMC + RET +; +; ERROR HANDLERS +; +WRERR: + CALL ERRXIT + DB 'Disk Full',0 +NOMAKE: + CALL ERRXIT + DB 'Dir Full',0 +MEMERR: + CALL ERRXIT + DB 'Mem Full',0 +NOTFND: + CALL ERRXIT + DB 'SUB File Not Found',0 +PARERR: + CALL ERRXIT + DB 'Param',0 +PAROVF: + CALL ERRXIT + DB 'Too Many Params',0 +LENERR: + CALL ERRXIT + DB 'Line too Long',0 +NOTEXT: + CALL ERRXIT + DB 'SUB File Empty',0 +CCERR: + CALL ERRXIT + DB 'Ctrl Char',0 +ERRXIT: + CALL CRLF ;NEW LINE + POP H + CALL PSTR ;PRINT MESSAGE + CALL PRINT + DB ' Error on Line ',0 + LHLD LINNUM ;TELL LINE NUMBER + CALL PHLDC + CALL CRLF + LXI D,SUBFCB ;DELETE THE $$$.SUB FILE + MVI C,DELETF + CALL BDOS + JMP CPBASE +; +; INITIALIZE ALL VARIABLES +; +INITVAR: + LXI H,VAR + LXI B,ENDVAR-VAR +INITLP: + MVI M,0 ;ZERO ENTIRE VAR AREA + INX H + DCX B + MOV A,B + ORA C + JNZ INITLP + LXI H,TABLE ;INIT PARM TABLE POINTER + SHLD TBLPTR + LXI H,0FFFFH ;MARK END OF TABLE + SHLD ENDTBL + LHLD FREMEM ;FREE MEMORY STARTS TXT AREA + SHLD TXTPTR + RET +; +; PRINT HELP WITH PROGRAM OPTIONS +; +HELP: + CALL PRINT + DB CR,LF,'Syntax:' + DB CR,LF,' SUB - Print this HELP Message' + DB CR,LF,' SUB /A - Abort of SUBMIT File' + DB CR,LF,' SUB /AB - Abort and Ring Bell' + DB CR,LF,' SUB /I - Go into Interactive mode' + DB CR,LF,' SUB - Standard SUB File' + DB 0 + LHLD SPSAVE ;RETURN TO OPSYS + SPHL + RET +; +; VARIABLE STORAGE +; +VAR EQU $ +; +AFLAG: + DB 0 ;ABORT FLAG (0=NO) +TXTPTR: + DW 0 ;FREE MEMORY POINTER +TBLPTR: + DW 0 ;POINTER TO PARM TABLE +DUSER: + DB 0 ;DEFAULT USER NUMBER +LINNUM: + DW 0 ;CURRENT LINE NUMBER +PREV: + DW 0 ;POINTER TO PREV LINE +GETCNT: + DB 0 ;COUNTER FOR 'GET' +GETPTR: + DW 0 ;POINTER FOR 'GET' +PUTPTR: + DW 0 ;POINTER FOR 'PUT' +IBP: + DB 0 ;INPUT BUFFER POINTER +CLPTR: + DW 0 ;COMMAND LINE POINTER +BELL$FLAG: + DB 0 ;RING BELL ON ABORT FLAG +OPTION: + DB 0 ;OPT OPTION FLAG STORE +TABLE: + DS NPAR*3 ;PARAMETER TABLE +ENDTBL: + DW 0FFFFH ;END OF PARAMETER TABLE +; +ENDVAR EQU $ +SPSAVE: + DW 0 ;STACK POINTER SAVE +; +; +; FCB FOR $$$.SUB +; +SUBFCB: + DB 1 ;DRIVE SPECIFIER (A SELECTED) + DB '$$$ ' +SUBTYP: + DB 'SUB' + DW 0,0,0,0 ;INITIALIZE REST OF FCB + DW 0,0,0,0 + DW 0,0,0,0 +; +CLBUF: DS 2 ;PTR TO COMMAND LINE BUFFER +FREMEM: DS 2 ;PTR TO FREE MEMORY AREA +; + END + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSENV.AQM b/Images/Source/hd0/s0/u15/SYSENV.AQM new file mode 100644 index 0000000000000000000000000000000000000000..6c7f6b165e1c43414d9ea767fdc052995e6e516c GIT binary patch literal 640 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SYSFCP.ASM b/Images/Source/hd0/s0/u15/SYSFCP.ASM new file mode 100644 index 00000000..d559fab3 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSFCP.ASM @@ -0,0 +1,945 @@ +* SYSTEM SEGMENT: SYS.FCP +* SYSTEM: ZCPR3 +* CUSTOMIZED BY: RICHARD CONN + +* +* PROGRAM: SYSFCP.ASM +* AUTHOR: RICHARD CONN +* VERSION: 1.0 +* DATE: 22 FEB 84 +* PREVIOUS VERSIONS: NONE +* +VERSION EQU 10 + +* +* Global Library which Defines Addresses for SYSTEM +* + MACLIB Z3BASE ; USE BASE ADDRESSES + MACLIB SYSFCP ; USE EQUATES FROM HEADER FILE + +; +LF EQU 0AH +CR EQU 0DH +BELL EQU 07H +; +BASE EQU 0 +WBOOT EQU BASE+0000H ;CP/M WARM BOOT ADDRESS +UDFLAG EQU BASE+0004H ;USER NUM IN HIGH NYBBLE, DISK IN LOW +BDOS EQU BASE+0005H ;BDOS FUNCTION CALL ENTRY PT +TFCB EQU BASE+005CH ;DEFAULT FCB BUFFER +FCB1 EQU TFCB ;1st and 2nd FCBs +FCB2 EQU TFCB+16 +TBUFF EQU BASE+0080H ;DEFAULT DISK I/O BUFFER +TPA EQU BASE+0100H ;BASE OF TPA +; +$-MACRO ;FIRST TURN OFF THE EXPANSIONS +; +; MACROS TO PROVIDE Z80 EXTENSIONS +; MACROS INCLUDE: +; +; JR - JUMP RELATIVE +; JRC - JUMP RELATIVE IF CARRY +; JRNC - JUMP RELATIVE IF NO CARRY +; JRZ - JUMP RELATIVE IF ZERO +; JRNZ - JUMP RELATIVE IF NO ZERO +; DJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; +; @GENDD MACRO USED FOR CHECKING AND GENERATING +; 8-BIT JUMP RELATIVE DISPLACEMENTS +; +@GENDD MACRO ?DD ;;USED FOR CHECKING RANGE OF 8-BIT DISPLACEMENTS + IF (?DD GT 7FH) AND (?DD LT 0FF80H) + DB 100H,?DD ;Displacement Range Error + ELSE + DB ?DD + ENDIF ;;RANGE ERROR + ENDM +; +; +; Z80 MACRO EXTENSIONS +; +JR MACRO ?N ;;JUMP RELATIVE + IF I8080 ;;8080/8085 + JMP ?N + ELSE ;;Z80 + DB 18H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRC MACRO ?N ;;JUMP RELATIVE ON CARRY + IF I8080 ;;8080/8085 + JC ?N + ELSE ;;Z80 + DB 38H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRNC MACRO ?N ;;JUMP RELATIVE ON NO CARRY + IF I8080 ;;8080/8085 + JNC ?N + ELSE ;;Z80 + DB 30H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRZ MACRO ?N ;;JUMP RELATIVE ON ZERO + IF I8080 ;;8080/8085 + JZ ?N + ELSE ;;Z80 + DB 28H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRNZ MACRO ?N ;;JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + JNZ ?N + ELSE ;;Z80 + DB 20H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +DJNZ MACRO ?N ;;DECREMENT B AND JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + DCR B + JNZ ?N + ELSE ;;Z80 + DB 10H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +* +* SYSTEM Entry Point +* + org fcp ; passed for Z3BASE + + db 'Z3FCP' ; Flag for Package Loader +* +* **** Command Table for FCP **** +* This table is FCP-dependent! +* +* The command name table is structured as follows: +* +* ctable: +* DB 'CMNDNAME' ; Table Record Structure is +* DW cmndaddress ; 8 Chars for Name and 2 Bytes for Adr +* ... +* DB 0 ; End of Table +* +cnsize equ 4 ; NUMBER OF CHARS IN COMMAND NAME + db cnsize ; size of text entries +ctab: + db 'IF ' + dw ifstart + db 'ELSE' + dw ifelse + db 'FI ' + dw ifend + db 'XIF ' + dw ifexit + db 0 +; +; Condition Table +; +condtab: +; + IF IFOTRUE + db 'T ' ;TRUE + dw ifctrue + db 'F ' ;FALSE + dw ifcfalse + ENDIF +; + IF IFOEMPTY + db 'EM' ;file empty + dw ifcempty + ENDIF +; + IF IFOERROR + db 'ER' ;error message + dw ifcerror + ENDIF +; + IF IFOEXIST + db 'EX' ;file exists + dw ifcex + ENDIF +; + IF IFOINPUT + db 'IN' ;user input + dw ifcinput + ENDIF +; + IF IFONULL + db 'NU' + dw ifcnull + ENDIF +; + IF IFOTCAP ;Z3 TCAP available + db 'TC' + dw ifctcap + ENDIF +; + IF IFOWHEEL ;Wheel Byte + db 'WH' + dw ifcwheel + ENDIF +; + db 0 + +* +* Print " IF" +* +prif: + call print + db 'IF',' '+80H + ret +* +* Print String (terminated in 0 or MSB Set) at Return Address +* +print: + IF NOISE + mvi a,' ' ;print leading space + call conout + ENDIF ;NOISE + xthl ; get address + call print1 + xthl ; put address + ret +* +* Print String (terminated by MSB Set) pted to by HL +* +print1: + mov a,m ; done? + inx h ; pt to next + call conout ; print char + ora a ; set MSB flag (M) + rm ; MSB terminator + jr print1 + +* +* **** FCP Routines **** +* All code from here on is FCP-dependent! +* + +; +; FCP Command: XIF +; XIF terminates all IFs, restoring a basic TRUE state +; +ifexit: + IF NOISE + call nl ;print new line + ENDIF ;NOISE + call iftest ;see if current IF is running and FALSE + jrz ifstat ;abort with status message if so + lxi h,z3msg+1 ;pt to IF flag + xra a ;A=0 + mov m,a ;zero IF flag + jr ifendmsg ;print message + +; +; FCP Command: FI +; FI decrements to the previous IF +; +; Algorithm: +; Rotate Current IF Bit (1st IF Message) Right 1 Bit Position +; +ifend: + IF NOISE + call nl ;print new line + ENDIF ;NOISE + lxi h,z3msg+1 ;pt to IF flag + mov a,m ;get it + ora a ;no IF active? + jrz ifnderr +ifendmsg: + IF NOISE + push psw ;save A + call print + db 'T','o'+80H ;prefix to status display + pop psw ;get A + ENDIF ;NOISE + rrc ;move right 1 bit + ani 7fh ;mask msb 0 + mov m,a ;store active bit + jrnz ifstat ;print status if IF still active +ifnderr: + IF NOISE + call print ;print message + db 'N','o'+80H + jmp prif + ELSE ;NOT NOISE + ret + ENDIF ;NOISE + +; +; FCP Command: ELSE +; ELSE complements the Active Bit for the Current IF +; +; Algorithm: +; If Current IF is 0 (no IF) or 1 (one IF), then toggle +; Active IF Bit associated with Current IF +; Else +; If Previous IF was Active then toggle +; Active IF Bit associated with Current IF +; Else do nothing +; +ifelse: + IF NOISE + call nl ;print new line + ENDIF ;NOISE + lxi h,z3msg+1 ;pt to IF msgs + mov a,m ;get current IF + mov b,a ;save current IF in B + inx h ;pt to active IF message + rrc ;back up to previous IF level + ani 7fh ;mask out possible carry + jrz iftog ;toggle if IF level is 0 or 1 + ana m ;determine previous IF status + jrz ifstat ;don't toggle, and just print status +iftog: + mov a,m ;get active IF message + cma ;flip bits + ana b ;look at only interested bit + mov c,a ;result in C + mov a,b ;complement IF byte + cma + mov b,a + mov a,m ;get active byte + ana b ;mask in only uninterested bits + ora c ;mask in complement of interested bit + mov m,a ;save result and fall thru to print status +; +; Indicate if current IF is True or False +; +ifstat: + IF NOISE + call prif + mvi b,'F' ;assume False + call iftest ;see if IF is FALSE (Z if so) + jrz ifst1 ;Zero means IF F or No IF + mvi b,'T' ;set True +ifst1: + mov a,b ;get T/F flag and fall thru to print it + ELSE ;NOT NOISE + ret + ENDIF ;NOISE + +; +; Console Output Routine +; +conout: + push h ; save regs + push d + push b + push psw + ani 7fh ; mask MSB + mov e,a ; char in E + mvi c,2 ; output + call bdos + pop psw ; get regs + pop b + pop d + pop h + ret + +; +; Output LF (to go with CR from ZCPR3) +; +nl: + mvi a,lf ;output LF + jr conout + +; +; FCP Command: IF +; +ifstart: + IF NOISE + call nl ;print new line + ENDIF ;NOISE + call iftest ;see if current IF is running and FALSE +; + IF NOT COMIF + jrz ifcfalse ;raise next IF level to FALSE if so + ELSE + jz ifcf + ENDIF ;NOT COMIF +; + +;**************************************************************** +;* * +;* IF.COM Processing * +;* * +;**************************************************************** + +; +; If IF.COM to be processed, goto ROOT (base of path) and load it +; + IF COMIF +; +; Get Current Disk and User in BC +; + lda udflag ;get UD + push psw ;save UD flag + ani 0fh ;get disk + sta cdisk ;set current disk + mov b,a ;B=disk (A=0) + pop psw ;get UD flag + rlc ;get user in low 4 bits + rlc + rlc + rlc + ani 0fh ;get user + sta cuser ;set current user + mov c,a ;... in C +; +; Pt to Start of Path +; + lxi h,expath ;pt to path +; +; Check for End of Path +; +fndroot: + mov a,m ;check for done + ora a ;end of path? + jrz froot2 +; +; Process Next Path Element +; + cpi '$' ;current disk? + jrnz froot0 + lda cdisk ;get current disk + inr a ;+1 for following -1 +froot0: + dcr a ;set A=0 + mov b,a ;set disk + inx h ;pt to user + mov a,m ;get user + cpi '$' ;current user? + jrnz froot1 + lda cuser ;get current user +froot1: + mov c,a ;set user + inx h ;pt to next + jr fndroot +; +; Done with Search - BC Contains ROOT DU +; +froot2: +; +; Log Into ROOT +; + call logbc ;log into root DU +; +; Set Address of Next Load and Set DMA for OPEN +; + lxi h,100h ;pt to TPA + shld nxtload ;set address for next load + xchg ;DE=100H so don't wipe out buffers + mvi c,26 ;set DMA + call bdos +; +; Try to Open File IF.COM +; + lxi d,extfcb ;pt to FCB + mvi c,15 ;open file + call bdos + inr a ;check for found + jz ifnotfnd +; +; Load File IF.COM +; +ifload: +; +; Set Load Address +; + lhld nxtload ;get address of next load + push h ;save it + lxi d,80h ;pt to following + dad d + shld nxtload + pop d ;get load address + mvi c,26 ;set DMA + call bdos +; +; Read in Block (Sector) and Loop Back if Not Done +; + lxi d,extfcb ;read file + mvi c,20 + push d ;save ptr in case of failure (done) + call bdos + pop d + ora a ;OK? + jz ifload +; +; Done - Close File +; + mvi c,16 ;close file + call bdos +; +; Reset Environment (DMA and DU) and Run IF.COM +; + call reset ;reset DMA and directory + jmp tpa ;run IF.COM +; +; Reset DMA Address and Current Disk (in CDISK) and User (in CUSER) +; +reset: + lxi d,80h ;reset DMA address + mvi c,26 + call bdos + lda cdisk ;return home + mov b,a + lda cuser + mov c,a +; +; Log Into DU in BC +; +logbc: + mov e,b ;set disk + push b + mvi c,14 ;select disk + call bdos + pop b + mov e,c ;set user + mvi c,32 ;select user + jmp bdos +; +; IF.COM not found - Process as IF F +; +ifnotfnd: + call reset ;return home + jr ifcf +; +; Buffers for COMIF +; +nxtload: + ds 2 ;address of next block (sector) to load +cuser: + ds 1 ;current user +cdisk: + ds 1 ;current disk (A=0) +; + ENDIF ;COMIF +; + + IF NOT COMIF +;**************************************************************** +;* * +;* Non-IF.COM Processing * +;* * +;**************************************************************** + +; +; Test for Equality if Enabled +; + IF IFOEQ + lxi h,tbuff+1 ;look for '=' in line +tsteq: + mov a,m ;get char + inx h ;pt to next + ora a ;EOL? + jrz ifck0 ;continue if so + cpi '=' ;'=' found? + jrnz tsteq + lxi h,fcb1+1 ;compare FCBs + lxi d,fcb2+1 + mvi b,11 ;11 bytes +eqtest: + ldax d ;compare + cmp m + jrnz ifcf + inx h ;pt to next + inx d + djnz eqtest + jr ifct + ENDIF ;IFOEQ +; +; Test Condition in FCB1 and file name in FCB2 +; Execute condition processing routine +; +ifck0: + lxi d,fcb1+1 ;pt to first char in FCB1 +; + IF IFONEG + ldax d ;get it + sta negflag ;set negate flag + cpi negchar ;is it a negate? + jrnz ifck1 + inx d ;pt to char after negchar +ifck1: + ENDIF ;IFONEG +; + IF IFOREG ;REGISTERS + call regtest ;test for register value + jrnz runreg + ENDIF ;IFOREG +; + call condtest ;test of condition match + jrnz runcond ;process condition + call print ;beep to indicate error + db bell+80H + jmp ifstat ;no condition, display current condition +; +; Process register - register value is in A +; + IF IFOREG +runreg: + push psw ;save value + call getnum ;extract value in FCB2 as a number + pop psw ;get value + cmp b ;compare against extracted value + jrz ifctrue ;TRUE if match + jr ifcfalse ;FALSE if non-match + ENDIF ;IFOREG +; +; Process conditional test - address of conditional routine is in HL +; +runcond: + pchl ;"call" routine pted to by HL +; + ENDIF ;NOT COMIF +; + +; +; Condition: NULL (2nd file name) +; + IF IFONULL +ifcnull: + lda fcb2+1 ;get first char of 2nd file name + cpi ' ' ;space = null + jrz ifctrue + jr ifcfalse + ENDIF ;IFONULL + +; +; Condition: TCAP +; + IF IFOTCAP +ifctcap: + lda z3env+80H ;get first char of Z3 TCAP Entry + cpi ' '+1 ;space or less = none + jrc ifcfalse + jr ifctrue + ENDIF ;IFOTCAP + +; +; Condition: WHEEL +; + IF IFOWHEEL +ifcwheel: + lhld z3env+29h ;get address of wheel byte + mov a,m ;get byte + ora a ;test for true + jrz ifcfalse ;FALSE if 0 + jr ifctrue + ENDIF ;IFOWHEEL +; +; Condition: TRUE +; IFCTRUE enables an active IF +; Condition: FALSE +; IFCFALSE enables an inactive IF +; +ifctrue: +; + IF IFONEG + call negtest ;test for negate + jrz ifcf + ENDIF ;IFONEG +; +ifct: + mvi b,0ffh ;active + jmp ifset +ifcfalse: +; + IF IFONEG + call negtest ;test for negate + jrz ifct + ENDIF ;IFONEG +; +ifcf: + mvi b,0 ;inactive + jmp ifset + +; +; Condition: INPUT (from user) +; + IF IFOINPUT +ifcinput: + lxi h,z3msg+7 ;pt to ZEX message byte + mvi m,10b ;suspend ZEX input + push h ;save ptr to ZEX message byte + IF NOT NOISE + call nl + ENDIF ;NOT NOISE + call prif + call print + db 'True?',' '+80H + mvi c,1 ;input from console + call bdos + pop h ;get ptr to ZEX message byte + mvi m,0 ;return ZEX to normal processing + cpi ' ' ;yes? + jrz ifctrue + ani 5fh ;mask and capitalize user input + cpi 'T' ;true? + jrz ifctrue + cpi 'Y' ;yes? + jrz ifctrue + cpi CR ;yes? + jrz ifctrue + jr ifcfalse + ENDIF ;IFOINPUT + +; +; Condition: EXIST filename.typ +; + IF IFOEXIST +ifcex: + call tlog ;log into DU + lxi d,fcb2 ;pt to fcb + mvi c,17 ;search for first + call bdos + inr a ;set zero if error + jrz ifcfalse ;return FALSE + jr ifctrue ;return TRUE + ENDIF ;IFOEXIST + +; +; Condition: EMPTY filename.typ +; + IF IFOEMPTY +ifcempty: + call tlog ;log into FCB2's DU + lxi d,fcb2 ;pt to fcb2 + mvi c,15 ;open file + push d ;save fcb ptr + call bdos + pop d + inr a ;not found? + jrz ifctrue + mvi c,20 ;try to read a record + call bdos + ora a ;0=OK + jrnz ifctrue ;NZ if no read + jr ifcfalse + ENDIF ;IFOEMPTY + +; +; Condition: ERROR +; + IF IFOERROR +ifcerror: + lda z3msg+6 ;get error byte + ora a ;0=TRUE + jrz ifctrue + jr ifcfalse + ENDIF ;IFOERROR + +; +; **** Support Routines **** +; + +; +; Convert chars in FCB2 into a number in B +; + IF IFOREG +getnum: + mvi b,0 ;set number + lxi h,fcb2+1 ;pt to first char +getn1: + mov a,m ;get char + inx h ;pt to next + sui '0' ;convert to binary + rc ;done if error + cpi 10 ;range? + rnc ;done if out of range + mov c,a ;value in C + mov a,b ;A=old value + add a ;*2 + add a ;*4 + add b ;*5 + add a ;*10 + add c ;add in new digit value + mov b,a ;result in B + jr getn1 ;continue processing + ENDIF ;IFOREG + +; +; Log into DU in FCB2 +; + IF NOT COMIF +tlog: + lda fcb2 ;get disk + ora a ;current? + jrnz tlog1 + mvi c,25 ;get disk + call bdos + inr a ;increment for following decrement +tlog1: + dcr a ;A=0 + mov e,a ;disk in E + mvi c,14 + call bdos + lda fcb2+13 ;pt to user + mov e,a + mvi c,32 ;set user + jmp bdos +; + ENDIF ;NOT COMIF + +; +; Test of Negate Flag = negchar +; + IF IFONEG +negtest: +negflag equ $+1 ;pointer for in-the-code modification + mvi a,0 ;2nd byte is filled in + cpi negchar ;test for No + ret + ENDIF ;IFONEG + +; +; Test FCB1 against a single digit (0-9) +; Return with register value in A and NZ if so +; + IF IFOREG +regtest: + ldax d ;get digit + sui '0' + jrc zret ;Z flag for no digit + cpi 10 ;range? + jrnc zret ;Z flag for no digit + lxi h,z3msg+30H ;pt to registers + add l ;pt to register + mov l,a + mov a,h ;add in H + aci 0 + mov h,a + xra a ;set NZ + dcr a + mov a,m ;get register value + ret +zret: + xra a ;set Z + ret + ENDIF ;IFOREG + +; +; Test to see if a current IF is running and if it is FALSE +; If so, return with Zero Flag Set (Z) +; If not, return with Zero Flag Clear (NZ) +; Affect only HL and PSW +; +iftest: + lxi h,z3msg+1 ;get IF flag + mov a,m ;test for active IF + ora a + jrz ifok ;no active IF + inx h ;pt to active flag + ana m ;check active flag + rz ;return Z since IF running and FALSE +ifok: + xra a ;return NZ for OK + dcr a + ret + +; +; Test FCB1 against condition table (must have 2-char entries) +; Return with routine address in HL if match and NZ flag +; + IF NOT COMIF +condtest: + lxi h,condtab ;pt to table +condt1: + mov a,m ;end of table? + ora a + rz + ldax d ;get char + mov b,m ;get other char in B + inx h ;pt to next + inx d + cmp b ;compare entries + jrnz condt2 + ldax d ;get 2nd char + cmp m ;compare + jrnz condt2 + inx h ;pt to address + mov a,m ;get address in HL + inx h + mov h,m + mov l,a ;HL = address + xra a ;set NZ for OK + dcr a + ret +condt2: + lxi b,3 ;pt to next entry + dad b ; ... 1 byte for text + 2 bytes for address + dcx d ;pt to 1st char of condition + jr condt1 +; + ENDIF ;NOT COMIF +; +; Turn on next IF level +; B register is 0 if level is inactive, 0FFH is level is active +; Return with Z flag set if OK +; +ifset: + lxi h,z3msg+1 ;get IF flag + mov a,m + ora a ;if no if at all, start 1st one + jrz ifset1 + cpi 80h ;check for overflow (8 IFs max) + jrz iferr + inx h ;pt to active IF byte + ana m ;check to see if current IF is TRUE + jrnz ifset0 ;if TRUE, proceed + mvi b,0 ;set False IF +ifset0: + dcx h ;pt to IF level + mov a,m ;get it + rlc ;advance to next level + ani 0feh ;only 1 bit on + mov m,a ;set IF byte + jr ifset2 +ifset1: + inr a ;A=1 + mov m,a ;set 1st IF + inx h ;clear active IF byte + mvi m,0 + dcx h +ifset2: + mov d,a ;get IF byte + ana b ;set interested bit + mov b,a + inx h ;pt to active flag + mov a,d ;complement IF byte + cma + mov d,a + mov a,m ;get active byte + ana d ;mask in only uninterested bits + ora b ;mask in complement of interested bit + mov m,a ;save result + call ifstat ;print status + xra a ;return with Z + ret +iferr: + call print ;beep to indicate overflow + db bell+80H + xra a ;set NZ + dcr a + ret + +; +; Test for Size Error +; + if ($ GT (FCP + FCPS*128)) +sizerr equ novalue ;FCP is too large for buffer + endif + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSFCP1.LIB b/Images/Source/hd0/s0/u15/SYSFCP1.LIB new file mode 100644 index 00000000..44404f27 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSFCP1.LIB @@ -0,0 +1,214 @@ +; SYSTEM SEGMENT: SYS1.FCP +; SYSTEM: ZCPR3 +; CUSTOMIZED BY: RICHARD CONN + +; +; PROGRAM HEADER: SYSFCP.LIB +; AUTHOR: RICHARD CONN +; + +; +; This program header defines the IF Conditions to be placed +; into the target SYS.FCP file (generated by assembling SYSFCP.ASM). +; + +; +; 1. IF NEGATION +; +; The following equate determines if leading negation is to be +; allowed. If this equate is TRUE, then forms like the following are +; permitted: +; IF ~EXIST filename.typ +; +; meaning to complement the meaning of the test (the above returns TRUE +; if filename.typ does NOT exist). +; +IFONEG EQU TRUE + +; +; Assuming IFONEG to be TRUE, the following equate defines the +; character to be placed in front of the IF option to indicate that +; negation is to be performed. In the above example, this character +; was tilde (~). +; +NEGCHAR EQU '~' + + +; +; 2. IF: T (TRUE) or F (FALSE) +; +; Setting the following equate to TRUE enables the simple T and F +; options to IF. The format of this option is: +; +; IF T or IF F +; +; and it always returns TRUE or FALSE, resp. +; +IFOTRUE EQU FALSE + + +; +; 3. IF: EM (EMPTY) +; +; Setting the following equate to TRUE enables IF to test to see if +; the indicated file is empty or not. The format of this option is: +; +; IF EM dir:filename.typ +; +; and it returns TRUE if the indicated file does not exist or is empty. +; +IFOEMPTY EQU FALSE + + +; +; 4. IF: ER (ERROR) +; +; Setting the following equate to TRUE enables IF to test the error +; code byte (program error code byte). If this byte is 0 (no error), it +; returns TRUE, else it returns FALSE. The format of this option is: +; +; IF ER +; +IFOERROR EQU TRUE + + +; +; 5. IF: EX (EXIST) +; +; Setting the following equate to TRUE enables IF to test for the +; existence of a file. The format of this option is: +; +; IF EX dir:filename.typ +; +; and it returns TRUE if the indicated file exists. +; +IFOEXIST EQU TRUE + + +; +; 6. IF: IN (INPUT) +; +; Setting the following equate to TRUE enables user input of the +; character T (or any other character for FALSE). ZEX processing is +; suspended for this single-character input. The format of this option is: +; +; IF IN +; +; and the IF FCP command responds with: +; +; IF True? +; +; to which the user types T, Y, SPACE, or CR to set the IF to TRUE and +; anything else to set the IF to FALSE. +; +IFOINPUT EQU TRUE + + +; +; 7. IF: NU (NULL) +; +; Setting the following equate to TRUE enables IF to test to see if +; the second argument which follows is NULL (not specified) or not. This +; test is particularly useful in command file processing to see if, for +; example, argument $2 exists and to include it if it does. The format of +; this option is: +; +; IF NU +; or: +; IF NU arg +; +; If the first format is encountered, IF NU returns TRUE; IF NU returns +; FALSE with the second format. +; +IFONULL EQU TRUE + + +; +; 8. IF: n (Register Value) +; +; Setting the following equate to TRUE enables IF to test to see if +; the indicated register contains the indicated value. If this is preceeded +; by the NEGCHAR and IFONEG is TRUE, then this tests to see if the indicated +; register does not contain the indicated value. Registers are one-byte +; memory buffers, and are identified by the digits 0 to 9. The format of +; this option is: +; +; IF n val +; +; Example: +; IF 0 -- if Reg 0 = 0 +; IF 0 5 -- if Reg 0 = 5 +; IF 5 2 -- if Reg 5 = 2 +; IF ~0 -- if Reg 0 <> 0 +; IF ~9 2 -- if Reg 9 <> 2 +; +IFOREG EQU TRUE + + +; +; 9. IF: WH (WHEEL) +; +; Setting the following equate to TRUE enables IF to test to see if +; the Wheel Byte is set or not. If so, IF WHEEL is TRUE. +; +IFOWHEEL EQU FALSE + + +; +; 10. IF: TC (TCAP) +; +; Setting the following equate to TRUE enables IF to test to see if +; the ZCPR3 TCAP contains a terminal definition or not. This test is +; particularly useful in command file or alias processing to see if, for +; example, a Z3TCAP entry is defined and to invoke screen-oriented routines +; if it is. The format of this option is: +; +; IF TC +; +IFOTCAP EQU FALSE + + +; +; 11. IF: fcb1=fcb2 +; +; Setting this equate to TRUE will enable IF to evaluate the +; equality condition, checking to see if the two FCBs contain the same +; values. If so, the IF is TRUE; if not, the IF is FALSE. +; +; Enabling this equate eliminates the need for the NULL test, since +; a NULL test can be performed by using the syntax: +; IF fcb1= +; +IFOEQ EQU TRUE + + +; +; 12. COMIF - Run IF.COM Instead of FCP-Internal Processing +; +; Setting this equate to TRUE will cause an IF executed during an +; IF TRUE or NO IF state to look in the ROOT directory (base of path +; starting in current directory) for the file IF.COM, and, if found, +; load IF.COM and transfer control to it. If IF.COM is not found, then +; IF F is raised. Using IF.COM provides much more power and flexibility +; but also requires IF.COM to be present and takes up disk space. +; +COMIF EQU FALSE + + +; +; 13. NOISE - Have FCP Print IF Status Messages +; +; Setting this equate to TRUE will cause any change in the IF +; status to be printed to the user. This is useful for debugging purposes, +; but in normal runs, particularly where ALIASes are concerned, it is +; usually desirable to reduce the "noise" as much as possible and have +; this equate set to FALSE. +; +NOISE EQU FALSE + + +; +; END of SYSFCP CUSTOMIZATION +; + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSFCP11.LBR b/Images/Source/hd0/s0/u15/SYSFCP11.LBR new file mode 100644 index 0000000000000000000000000000000000000000..1ad01d8d71bfc841fb64ebb8ba63edba7b30d340 GIT binary patch literal 16256 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 0 +; IF ~9 2 -- if Reg 9 <> 2 +; +IFOREG EQU FALSE + + +; +; 9. IF: WH (WHEEL) +; +; Setting the following equate to TRUE enables IF to test to see if +; the Wheel Byte is set or not. If so, IF WHEEL is TRUE. +; +IFOWHEEL EQU FALSE + + +; +; 10. IF: TC (TCAP) +; +; Setting the following equate to TRUE enables IF to test to see if +; the ZCPR3 TCAP contains a terminal definition or not. This test is +; particularly useful in command file or alias processing to see if, for +; example, a Z3TCAP entry is defined and to invoke screen-oriented routines +; if it is. The format of this option is: +; +; IF TC +; +IFOTCAP EQU FALSE + + +; +; 11. IF: fcb1=fcb2 +; +; Setting this equate to TRUE will enable IF to evaluate the +; equality condition, checking to see if the two FCBs contain the same +; values. If so, the IF is TRUE; if not, the IF is FALSE. +; +; Enabling this equate eliminates the need for the NULL test, since +; a NULL test can be performed by using the syntax: +; IF fcb1= +; +IFOEQ EQU FALSE + + +; +; 12. COMIF - Run IF.COM Instead of FCP-Internal Processing +; +; Setting this equate to TRUE will cause an IF executed during an +; IF TRUE or NO IF state to look in the ROOT directory (base of path +; starting in current directory) for the file IF.COM, and, if found, +; load IF.COM and transfer control to it. If IF.COM is not found, then +; IF F is raised. Using IF.COM provides much more power and flexibility +; but also requires IF.COM to be present and takes up disk space. +; +COMIF EQU TRUE + + +; +; 13. NOISE - Have FCP Print IF Status Messages +; +; Setting this equate to TRUE will cause any change in the IF +; status to be printed to the user. This is useful for debugging purposes, +; but in normal runs, particularly where ALIASes are concerned, it is +; usually desirable to reduce the "noise" as much as possible and have +; this equate set to FALSE. +; +NOISE EQU FALSE + + +; +; END of SYSFCP CUSTOMIZATION +; + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSIOP.AQM b/Images/Source/hd0/s0/u15/SYSIOP.AQM new file mode 100644 index 0000000000000000000000000000000000000000..6a173a0bd1aae05bf1a91ef3ee90d6d2d9f392c2 GIT binary patch literal 19328 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SYSIOP.ASM b/Images/Source/hd0/s0/u15/SYSIOP.ASM new file mode 100644 index 00000000..9b75a587 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSIOP.ASM @@ -0,0 +1,1221 @@ +* SYSTEM SEGMENT: SYSTEM.IOP +* SYSTEM: ARIES-1 +* CUSTOMIZED BY: RICHARD CONN + +* PROGRAM: SYSIOP.ASM +* AUTHOR: RICHARD CONN +* VERSION: 1.0 +* DATE: 22 FEB 84 +* PREVIOUS VERSIONS: NONE + +*---- Customize Section ----* +* Customization Performed Throughout Code +*---- End of Customize Section ----* + +***************************************************************** +* * +* SYSIO -- Standard Set of Redirectable I/O Drivers * +* for ZCPR2 configured for Richard Conn's ARIES-1 System * +* * +* Feb 2, 1984 * +* * +* Note on Assembly: * +* This device driver package is to be assembled by MAC * +* (because of the macros) and configured into a file of type * +* IO by loading it at 100H via DDT or SID/ZSID and saving the * +* result as a COM file. Care should be taken to ensure that * +* the package is not larger than the device driver area which * +* is reserved for it in memory. * +* * +***************************************************************** + + MACLIB Z3BASE ; Get Addresses + +IOBYTE equ 3 ;I/O BYTE +INTIOBY equ 100$1$1$000B ;Initial I/O Byte Value + ; LST:=TTY + ; RDR:, PUN:=Clock + ; CON:=CRT + +***************************************************************** +* * +* Disk Serial, MPU Serial, Quad I/O, and Modem Equates * +* * +***************************************************************** + +; Disk Serial -- Serial Channel on Disk Controller Board (DCE) +; Baud Rate is set at 19,200 Baud in Hardware (DIP Switches) +ustat equ djeprom+3F9H ;USART Status Address +ostat equ 8 ;Output Status Bit (TBE) +istat equ 4 ;Input Status Bit (RDA) + +; MPU Serial -- Serial Channel on CCS Z80 MPU Board (DCE) +mpubase equ 20H ;Base address of 8250 on CCS Z80 MPU Board +mpudata equ mpubase ;Data I/O Registers +mpudll equ mpubase ;Divisor Latch Low +mpudlh equ mpubase+1 ;Divisor Latch High +mpuier equ mpubase+1 ;Interrupt Enable Register +mpulcr equ mpubase+3 ;Line Control Register +mpupcr equ mpubase+4 ;Peripheral Control Register +mpustat equ mpubase+5 ;Line Status Register +mpupsr equ mpubase+6 ;Peripheral Status Register + +; MPU Serial RDA and TBE +mpurda equ 1 ; Data Available Bit (RDA) +mputbe equ 20h ; Transmit Buffer Empty Bit (TBE) + +; MPU Serial Baud Rate Values +bm00050 equ 2304 ; 50 Baud +bm00075 equ 1536 ; 75 Baud +bm00110 equ 1047 ; 110 Baud +bm00134 equ 857 ; 134.5 Baud +bm00150 equ 768 ; 150 Baud +bm00300 equ 384 ; 300 Baud +bm00600 equ 192 ; 600 Baud +bm01200 equ 96 ; 1200 Baud +bm01800 equ 64 ; 1800 Baud +bm02000 equ 58 ; 2000 Baud +bm02400 equ 48 ; 2400 Baud +bm03600 equ 32 ; 3600 Baud +bm04800 equ 24 ; 4800 Baud +bm07200 equ 16 ; 7200 Baud +bm09600 equ 12 ; 9600 Baud +bm19200 equ 6 ; 19200 Baud +bm38400 equ 3 ; 38400 Baud +bm56000 equ 2 ; 56000 Baud + +; MPU Serial Channel Baud Rate +mpbrate equ bm09600 ; 9600 Baud for TTY + +; Quad I/O Ports +qbase equ 80h ; Base address of Quad RS-232 I/O Board +q0data equ qbase ; USART 0 Data Port (DTE) +q0stat equ qbase+1 ; USART 0 Status Port +q1data equ qbase+2 ; USART 1 Data Port (DTE) +q1stat equ qbase+3 ; USART 1 Status Port +q2data equ qbase+4 ; USART 2 Data Port (DTE) +q2stat equ qbase+5 ; USART 2 Status Port +q3data equ qbase+6 ; USART 3 Data Port (DCE) +q3stat equ qbase+7 ; USART 3 Status Port +q0baud equ qbase+8 ; USART 0 Baud Rate Port +q1baud equ qbase+9 ; USART 1 Baud Rate Port +q2baud equ qbase+10 ; USART 2 Baud Rate Port +q3baud equ qbase+11 ; USART 3 Baud Rate Port + +; Quad I/O RDA and TBE +qrda equ 2 ; Read Data Available Bit (RDA) +qtbe equ 1 ; Transmit Buffer Empty Bit (TBE) + +************************************* +* Equate Values for PMMI as Modem * +************************************* +* Modem Ports (Special -- 300 or 600 Baud for PMMI) +*mods equ 0E0H ; Modem Status Byte +*modd equ 0E1H ; Modem Data Byte +* +* Modem RDA and TBE +*mrda equ 2 ; Read Data Available Bit (RDA) +*mtbe equ 1 ; Transmit Buffer Empty Bit (TBE) +************************************* + +; Modem Ports set to QUAD I/O Port 2 +mods equ q2stat ; Modem Status Port +modd equ q2data ; Modem Data Port + +; Modem RDA and TBE +mrda equ qrda +mtbe equ qtbe + +; Baud Rate Values +b00050 equ 0 ; 50 Baud +b00075 equ 1 ; 75 Baud +b00110 equ 2 ; 110 Baud +b00134 equ 3 ; 134.5 Baud +b00150 equ 4 ; 150 Baud +b00300 equ 5 ; 300 Baud +b00600 equ 6 ; 600 Baud +b01200 equ 7 ; 1200 Baud +b01800 equ 8 ; 1800 Baud +b02000 equ 9 ; 2000 Baud +b02400 equ 10 ; 2400 Baud +b03600 equ 11 ; 3600 Baud +b04800 equ 12 ; 4800 Baud +b07200 equ 13 ; 7200 Baud +b09600 equ 14 ; 9600 Baud +b19200 equ 15 ; 19200 Baud + + +***************************************************************** +* * +* Baud Rates for Quad I/O Devices * +* * +***************************************************************** + +q0brate equ b09600 ; 9600 Baud for Intersystem +q1brate equ b01200 ; 1200 Baud for Clock +q2brate equ b01200 ; 1200 Baud for Transmodem +q3brate equ b09600 ; 9600 Baud for NEC Printer + + +***************************************************************** +* * +* Miscellaneous Constants * +* * +***************************************************************** +XON equ 11h ;X-ON +XOFF equ 13h ;X-OFF +CTRLZ equ 'Z'-'@' ;^Z +djram equ djeprom+400h ;Base of DJ RAM +djcin equ djram+3 ;DJ Console Input +djcout equ djram+6 ;DJ Console Output + +***************************************************************** +* * +* The following are the Z80 Macro Definitions which are used to * +* define the Z80 Mnemonics used to implement the Z80 instruction* +* set extensions employed in CBIOSZ. * +* * +***************************************************************** +; +; MACROS TO PROVIDE Z80 EXTENSIONS +; MACROS INCLUDE: +; +$-MACRO ;FIRST TURN OFF THE EXPANSIONS +; +; JR - JUMP RELATIVE +; JRC - JUMP RELATIVE IF CARRY +; JRNC - JUMP RELATIVE IF NO CARRY +; JRZ - JUMP RELATIVE IF ZERO +; JRNZ - JUMP RELATIVE IF NO ZERO +; DJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; LDIR - MOV @HL TO @DE FOR COUNT IN BC +; LXXD - LOAD DOUBLE REG DIRECT +; SXXD - STORE DOUBLE REG DIRECT +; +; +; +; @GENDD MACRO USED FOR CHECKING AND GENERATING +; 8-BIT JUMP RELATIVE DISPLACEMENTS +; +@GENDD MACRO ?DD ;;USED FOR CHECKING RANGE OF 8-BIT DISPLACEMENTS + IF (?DD GT 7FH) AND (?DD LT 0FF80H) + DB 100H ;Displacement Range Error on Jump Relative + ELSE + DB ?DD + ENDIF + ENDM +; +; Z80 MACRO EXTENSIONS +; +JR MACRO ?N + DB 18H + @GENDD ?N-$-1 + ENDM +; +JRC MACRO ?N + DB 38H + @GENDD ?N-$-1 + ENDM +; +JRNC MACRO ?N + DB 30H + @GENDD ?N-$-1 + ENDM +; +JRZ MACRO ?N + DB 28H + @GENDD ?N-$-1 + ENDM +; +JRNZ MACRO ?N + DB 20H + @GENDD ?N-$-1 + ENDM +; +DJNZ MACRO ?N + DB 10H + @GENDD ?N-$-1 + ENDM +; +LDIR MACRO + DB 0EDH,0B0H + ENDM +; +LDED MACRO ?N + DB 0EDH,05BH + DW ?N + ENDM +; +LBCD MACRO ?N + DB 0EDH,4BH + DW ?N + ENDM +; +SDED MACRO ?N + DB 0EDH,53H + DW ?N + ENDM +; +SBCD MACRO ?N + DB 0EDH,43H + DW ?N + ENDM +; +; END OF Z80 MACRO EXTENSIONS +; + + +***************************************************************** +* * +* Terminal driver routines. Iobyte is initialized by the cold * +* boot routine, to modify, change the "intioby" equate. The * +* I/O routines that follow all work exactly the same way. Using * +* iobyte, they obtain the address to jump to in order to execute* +* the desired function. There is a table with four entries for * +* each of the possible assignments for each device. To modify * +* the I/O routines for a different I/O configuration, just * +* change the entries in the tables. * +* * +***************************************************************** + + org iop ;Base Address of I/O Drivers +offset equ 100h-iop ;Offset for load via DDT or ZSID + + jmp status ;Internal Status Routine + jmp select ;Device Select Routine + jmp namer ;Device Name Routine + + jmp tinit ;Initialize Terminal + + jmp const ;Console Input Status + jmp conin ;Console Input Char + jmp conout ;Console Output Char + + jmp list ;List Output Char + + jmp punch ;Punch Output Char + + jmp reader ;Reader Input Char + + jmp listst ;List Output Status + + jmp newio ;New I/O Driver Installation Routine + + jmp copen ;Open CON: Disk File + jmp cclose ;Close CON: Disk File + + jmp lopen ;Open LST: Disk File + jmp lclose ;Close LST: Disk File + +* +* I/O Package Identification +* + db 'Z3IOP' ;Read by Z3LOADER + +***************************************************************** +* * +* status: return information on devices supported by this * +* I/O Package. On exit, HL points to a logical device * +* table which is structured as follows: * +* Device Count Byte Current Assignment Byte * +* ------ ---------- ----------------------- * +* CON: 0 1 * +* RDR: 2 3 * +* PUN: 4 5 * +* LST: 6 7 * +* * +* If error or no I/O support, return with Zero Flag Set. * +* Also, if no error, A=Driver Module Number * +* * +***************************************************************** +status: + lxi h,cnttbl ;point to table + mvi a,81H ;Module 1 (SYSIO) with Disk Output + ora a ;Set Flags + ret + + +***************************************************************** +* * +* select: select devices indicated by B and C. B is the number * +* of the logical device, where CON:=0, RDR:=1, PUN:=2, * +* LST:=3, and C is the desired device (range 0 to dev-1). * +* Return with Zero Flag Set if Error. * +* * +***************************************************************** +ranger: + lxi h,cnttbl-2 ;check for error + inr b ;range of 1 to 4 + mov a,b ;Value in A + cpi 5 ;B out of range? + jnc rangerr + push b ;save params +rang: + inx h ;pt to next + inx h + djnz rang + mov b,m ;get count in b + mov a,c ;get selected device number + cmp b ;compare (C must be less than B) + pop b ;get params + jrnc rangerr ;range error if C >= B +rangok: + xra a ;OK + dcr a ;set flags (0FFH and NZ) + ret +rangerr: + xra a ;not OK (Z) + ret +select: + call ranger ;check for range error + rz ;abort if error + inx h ;pt to current entry number + mov m,c ;save selected number there + lxi h,cfgtbl-2 ;pt to configuration table +sel2: + inx h ;Pt to Entry in Configuration Table + inx h + djnz sel2 + mov b,m ;Get Rotate Count + inx h ;Pt to Select Mask + mov d,m ;Get Select Mask + mov a,b ;Any Rotation to do? + ora a + jz sel4 + mov a,c ;Get Selected Number +sel3: + rlc ;Rotate Left 1 Bit + djnz sel3 + mov c,a ;Place Bit Pattern Back in C +sel4: + lda iobyte ;get I/O byte + ana d ;mask out old selection + ora c ;mask in new selection + sta iobyte ;put I/O byte + jr rangok ;range OK + +***************************************************************** +* * +* namer: return text string of physical device. Logical device * +* number is in B and physical selection is in C. * +* HL is returned pointing to the first character of the * +* string. The strings are structured to begin with a * +* device name followed by a space and then a description * +* string which is terminated by a binary 0. * +* * +* Return with Zero Flag Set if error. * +* * +***************************************************************** +namer: + call ranger ;check for range error + rz ;return if so + lxi h,namptbl-2 ;pt to name ptr table + call namsel ;select ptr table entry + mov b,c ;physical selection number in B now + inr b ;Add 1 for Initial Increment + call namsel ;point to string + jr rangok ;return with HL pointing and range OK +; +; Select entry B in table pted to by HL; this entry is itself a pointer, +; and return with it in HL +; +namsel: + inx h ;pt to next entry + inx h + djnz namsel + mov a,m ;get low + inx h + mov h,m ;get high + mov l,a ;HL now points to entry + ret + +***************************************************************** +* * +* const: get the status for the currently assigned console. * +* The I/O Byte is used to select the device. * +* * +***************************************************************** +const: + lxi h,cstble ;Beginning of jump table +conmask: + lxi d,cfgtbl ;Pt to First Entry in Config Table + jr seldev ;Select correct jump + +***************************************************************** +* * +* conin: input a character from the currently assigned console. * +* The I/O Byte is used to select the device. * +* * +***************************************************************** +conin: + lxi h,citble ;Beginning of character input table + jr conmask ;Get Console Mask + +***************************************************************** +* * +* conout: output the character in C to the currently assigned * +* console. The I/O Byte is used to select the device. * +* * +***************************************************************** +conout: + lxi h,cotble ;Beginning of the character out table + call crout ;output to console recorder if set + jr conmask ;Get Console Mask + +***************************************************************** +* * +* csreader: get the status of the currently assigned reader. * +* The I/O Byte is used to select the device. * +* * +***************************************************************** +csreadr: + lxi h,csrtble ;Beginning of reader status table +rdrmask: + lxi d,cfgtbl+2 ;Pt to 2nd Entry in Config Table + jr seldev + +***************************************************************** +* * +* reader: input a character from the currently assigned reader. * +* The I/O Byte is used to select the device. * +* * +***************************************************************** +reader: + lxi h,rtble ;Beginning of reader input table + jr rdrmask ;Get the Mask and Go + +***************************************************************** +* * +* Entry at seldev will form an offset into the table pointed * +* to by H&L and then pick up the address and jump there. * +* The configuration of the physical device assignments is * +* pointed to by D&E (cfgtbl entry). * +* * +***************************************************************** +seldev: + push b ;Save Possible Char in C + ldax d ;Get Rotate Count + mov b,a ;... in B + inx d ;Pt to Mask + ldax d ;Get Mask + cma ;Flip Bits + mov c,a ;... in C + lda iobyte ;Get I/O Byte + ana c ;Mask Out Selection + inr b ;Increment Rotate Count +seld1: + dcr b ;Count down + jrz seld2 + rrc ;Rotate Right one Bit + jr seld1 +seld2: + rlc ;Double Number for Table Offset + mvi d,0 ;Form offset + mov e,a + dad d ;Add offset + mov a,m ;Pick up low byte + inx h + mov h,m ;Pick up high byte + mov l,a ;Form address + pop b ;Get Possible Char in C + pchl ;Go there ! + +***************************************************************** +* * +* punch: output char in C to the currently assigned punch * +* device. The I/O Byte is used to select the device. * +* * +***************************************************************** +punch: + lxi h,ptble ;Beginning of punch table + lxi d,cfgtbl+4 ;Get Mask + jr seldev ;Select Device and Go + +***************************************************************** +* * +* list: output char in C to the currently assigned list device. * +* The I/O Byte is used to select the device. * +* * +***************************************************************** +list: + lxi h,ltble ;Beginning of the list device routines + call lrout ;output to list recorder if set +lstmask: + lxi d,cfgtbl+6 ;Get Mask + jr seldev ;Select Device and Go + +***************************************************************** +* * +* Listst: get the output status of the currently assigned list * +* device. The I/O Byte is used to select the device. * +* * +***************************************************************** +listst: + lxi h,lstble ;Beginning of the list device status + jr lstmask ;Mask and Go + +***************************************************************** +* * +* If customizing I/O routines is being performed, the tables * +* below should be modified to reflect the changes. All I/O * +* devices are decoded out of iobyte and the jump is taken from * +* the following tables. * +* * +***************************************************************** + +***************************************************************** +* * +* I/O Driver Support Specification Tables * +* * +***************************************************************** + +* +* Device Counts +* First Byte is Number of Devices, 2nd Byte is Selected Device +* +cnttbl: + db 6,(intioby AND 7) ;CON: + db 2,(intioby AND 08h) SHR 3 ;RDR: + db 2,(intioby AND 10h) SHR 4 ;PUN: + db 6,(intioby AND 0E0h) SHR 5 ;LST: + +* +* Configuration Table +* First Byte is Rotate Count, 2nd Byte is Mask +* +cfgtbl: + db 0,111$1$1$000b ;No Rotate, Mask Out 3 LSB + db 3,111$1$0$111b ;3 Rotates, Mask Out Bit 3 + db 4,111$0$1$111b ;4 Rotates, Mask Out Bit 4 + db 5,000$1$1$111b ;5 Rotates, Mask Out 3 MSB + +* +* name text tables +* +namptbl: + dw conname-2 ;CON: + dw rdrname-2 ;RDR: + dw punname-2 ;PUN: + dw lstname-2 ;LST: + +conname: + dw namcrt ;CRT + dw namusr ;CRT and Modem in Parallel + dw namusr1 ;CRT Input and CRT/Remote Computer Output + dw namusr2 ;CRT Input and CRT/Modem Output + dw namcrtt ;CRT Input and CRT/TTY Printer Output + dw namcrtn ;CRT Input and CRT/NEC Printer Output + +lstname: + dw namtty ;TTY + dw namcrt ;CRT + dw namrem ;Remote Computer + dw nammod ;Modem + dw nammpu ;MPU + dw nammpu8 ;MPU with 8 Bits + +rdrname: + dw nammod ;Modem + dw namclk ;Clock + +punname: + dw nammod ;Modem + dw namclk ;Clock + +nammpu: + db 'TTY Toshiba P1350 Printer',0 +nammpu8: + db 'TTY8 TTY with 8th Sig Bit',0 +namtty: + db 'NEC NEC 3510 LQ Printer',0 +namcrt: + db 'CRT TVI 950 CRT',0 +namcrtn: + db 'CRTNEC CRT Input and CRT/NEC Printer Output',0 +namcrtt: + db 'CRTTY CRT Input and CRT/TTY Printer Output',0 +namusr: + db 'CRTMOD CRT and Modem in Parallel',0 +namusr1: + db 'CRTREM CRT Input and CRT/Remote Output',0 +namusr2: + db 'CRTMOD2 CRT Input and CRT/Modem Output',0 +namrem: + db 'REMOTE Remote Computer',0 +nammod: + db 'MODEM Transmodem 1200',0 +namclk: + db 'CLOCK DC Hayes Chronograph',0 + +* +* console input table +* +citble: + dw cicrt ;Input from crt (000) + dw ciusr ;Input from crt and modem (001) + dw cicrt ;Input from crt (010) + dw cicrt ;Input from crt (011) + dw cicrt ;Input from crt (100) + dw cicrt ;Input from crt (101) + +* +* console output table +* +cotble: + dw cocrt ;Output to crt (000) + dw cousr ;Output to crt and modem (001) + dw cousr1 ;Output to crt and remote system (010) + dw cousr ;Output to crt and modem (011) + dw cocrtt ;Output to crt and TTY printer (100) + dw cocrtn ;Output to crt and NEC printer (101) + +* +* list device table +* +ltble: + dw cotty ;Output to tty (000) + dw cocrt ;Output to crt (001) + dw corem ;Output to remote system (010) + dw comod ;Output to modem (011) + dw compu ;Output to mpu (100) + dw compu8 ;Output to mpu (101) + +* +* punch device table +* + +ptble: + dw comod ;Output to modem (0) + dw coclk ;Output to clock (1) + +* +* reader device table +* +rtble: + dw cimod ;Input from modem (0) + dw ciclk ;Input from clock (1) + +* +* console status table +* +cstble: + dw cscrt ;Status from crt (000) + dw csusr ;Status from crt and modem (001) + dw cscrt ;Status from crt (010) + dw cscrt ;Status from crt (011) + dw cscrt ;Status from crt (100) + dw cscrt ;Status from crt (101) + +* +* status from reader device +* +csrtble: + dw csmod ;Status from modem (0) + dw csclk ;Status from clock (1) + +* +* Status from list device +* +lstble: + dw costty ;Status from tty (000) + dw coscrt ;Status from crt (001) + dw cosrem ;Status from remote system (010) + dw cosmod ;Status from modem (011) + dw cosmpu ;Status from mpu (100) + dw cosmpu ;Status from mpu (101) + + +***************************************************************** +* * +* Tinit can be modified for different I/O setups. * +* * +***************************************************************** +tinit: ;Initialize the terminal routine + +; Initialize I/O Byte + mvi a,intioby ;Initialize IOBYTE + sta iobyte + +; Initialize MPU Serial I/O Channel Characteristics and Baud Rate + mvi a,10$00$00$11b ;Access Divisor: + ; 10 -- Set divisor latch, clear break + ; 00 -- 0 parity bit, odd parity (N/A) + ; 00 -- disable parity, 1 stop bit + ; 11 -- 8 Data Bits + out mpulcr ;To Line Control Register + lxi h,mpbrate ;HL = MPU Channel Baud Rate + mov a,l ;Set Low-Byte of Baud Rate + out mpudll ;To Divisor Latch Low + mov a,h ;Set High-Byte of Baud Rate + out mpudlh ;To Divisor Latch High + mvi a,00$00$00$11b ;Reset Divisor Access and Set Characteristics: + ; 00 -- Clear divisor latch, clear break + ; 00 -- 0 parity bit, odd parity (N/A) + ; 00 -- disable parity, 1 stop bit + ; 11 -- 8 Data Bits + out mpulcr ;To Line Control Register + xra a ;A=0 + out mpuier ;Disable All Interrupts in Interrupt Register + out mpustat ;Clear All Error Flags in Line Status Register + mvi a,0000$1111b ;3 Zeroes, No Loop, 1, Set RLSD, CTS, DSR + out mpupcr ;To Peripheral Control Register + +; Initialize Quad I/O Channel Characteristics + mvi a,10$11$01$11b ;General-Purpose Reset: + ; 10 -- 1 1/2 Stop Bits + ; 11 -- Even Parity, Enable Parity + ; 01 -- 6 Bits/Char + ; 11 -- 64x Baud Rate + call setquad ;Set All 4 Quad I/O Ports + mvi a,01$11$01$11b ;General-Purpose Reset: + ; 01 -- Disable Hunt, Internal Reset + ; 11 -- RTS High, Error Reset + ; 01 -- No Break, Enable RxRDY + ; 11 -- NOT DTR High, Enable TxEN + call setquad ;Set All 4 Quad I/O Ports + mvi a,11$00$11$10b ;Characteristics Set for All: + ; 11 -- 2 Stop Bits + ; 00 -- No Parity + ; 11 -- 8 Bits/Char + ; 10 -- 16x Baud Rate + call setquad ;Set All 4 Quad I/O Ports + mvi a,00$11$01$11b ;Characteristics Set for All: + ; 00 -- Disable Hunt, No Internal Reset + ; 11 -- RTS High, Error Reset + ; 01 -- No Break, Enable RxRDY + ; 11 -- NOT DTR High, Enable TxEN + call setquad ;Set All 4 Quad I/O Ports + +; Initialize Quad I/O Baud Rates + mvi a,q0brate ;Set USART 0 Baud Rate + out q0baud + mvi a,q1brate ;Set USART 1 Baud Rate + out q1baud + mvi a,q2brate ;Set USART 2 Baud Rate + out q2baud + mvi a,q3brate ;Set USART 3 Baud Rate + out q3baud + +; Set All Recording OFF + xra a ;A=0 + sta crecord ;console + sta lrecord ;list device + +; Clear Garbage Char from CRT + call cscrt ;Gobble up unwanted char + ora a ;A=0 if none + cnz cicrt ;Grab character + ret + +; Set All Quad I/O Control Ports +setquad: + out q0stat ;USART 0 + out q1stat ;USART 1 + out q2stat ;USART 2 + out q3stat ;USART 3 + xthl ;Long Delay + xthl + ret + + +***************************************************************** +* * +* NEWIO -- Set UC1: Device to the Device Drivers whose Jump * +* Table is Pointed to by HL * +* * +* This Jump Table is structured as follows: * +* JMP ISTAT <-- Input Status (0=No Char, 0FFH=Char) * +* JMP INPUT <-- Input Character * +* JMP OUTPUT <-- Output Character in C * +* * +* The Base Address of this Jump Table (JBASE) is passed to * +* NEWIO in the HL Register Pair. * +* * +***************************************************************** +newio: + shld cstble+6 ;Set UC1: Input Status + lxi d,3 ;Prepare for offset to next jump + dad d ;HL points to next jump + shld citble+6 ;Set UC1: Input Character + dad d ;HL points to next jump + shld cotble+6 ;Set UC1: Output Character + ret + + +***************************************************************** +* * +* Input Status, Input Character, and Output Character * +* Subroutines for CP/M * +* * +***************************************************************** +* * +* Input Status -- * +* These routines return 0 in the A Register if no input * +* data is available, 0FFH if input data is available. * +* * +* Input Character -- * +* These routines return the character (byte) in the A * +* Register. MSB is masked off. * +* * +* Output Character -- * +* These routines output the character (byte) in the C * +* Register. * +* * +***************************************************************** + +***************************************************************** +* * +* CRT Input Status, Input Character, and Output Character * +* * +***************************************************************** + +cscrt equ $ ;CRT Input Status + lda ustat ;Get Status + cma ;Inverted Logic + ani istat ;Mask for input status and fall thru to 'STAT' + jr stat ;Set Flags + +coscrt equ $ ;CRT Output Status + lda ustat ;Get USART status + cma ;Inverted Logic + ani ostat ;Mask for output status + jr stat ;Return + +cicrt equ $ ;CRT Input + jmp djcin ;Get char + +cocrt equ $ ;CRT Output + jmp djcout ;Put char + +cocrtt equ $ ;CRT and TTY Printer Output + push b ;Save char + call djcout ;CRT Output + pop b ;Get char + jmp compu ;Printer Output + +cocrtn equ $ ;CRT and NEC Printer Output + push b ;Save char + call djcout ;CRT Output + pop b ;Get char + jmp cotty ;Printer Output + +***************************************************************** +* * +* Modem Input Status, Input Character, and Output Character * +* * +***************************************************************** + +csmod equ $ ;Modem Input Status + in mods + ani mrda ;Data available? + jr stat + +cosmod equ $ ;Modem Output Status + in mods ;Get status + ani mtbe ;TBE? + jr stat + +cimod equ $ ;Modem Input Character + call csmod ;RDA? + jrz cimod + in modd ;Get data + ani 7fh ;Mask + ret + +comod equ $ ;Modem Output + call cosmod ;TBE? + jrz comod + mov a,c ;Get char + out modd ;Put data + ret + +***************************************************************** +* * +* Clock Input Status, Input Character, and Output Character * +* * +***************************************************************** + +csclk equ $ ;TTY Input Status + in q1stat ;Get Status + ani qrda ;Data available? + jr stat + +cosclk equ $ ;TTY Output Status + in q1stat ;Get Status + ani qtbe ;TBE? + jr stat + +ciclk equ $ ;TTY Input Character + call csclk ;RDA? + jrz ciclk + in q1data ;Get data + ani 7fh ;Mask + ret + +coclk equ $ ;TTY Output Character + call cosclk ;TBE? + jrz coclk + mov a,c ;Get data + out q1data ;Put data + ret + +***************************************************************** +* * +* This is a common return point to correctly set the return * +* status flags; it is centrally located for the jump * +* relative instructions * +* * +***************************************************************** +stat: + rz ;Nothing found +ready: + mvi a,0ffh ;Set A for negative status + ret + +***************************************************************** +* * +* NEC Input Status, Input Character, and Output Character * +* X-OFF Processing Added * +* * +***************************************************************** + +cstty equ $ ;TTY Input Status + in q3stat ;Get Status + ani qrda ;Data available? + jr stat + +costty equ $ ;TTY Output Status + in q3stat ;Get Status + ani qtbe ;TBE? + jr stat + +citty equ $ ;TTY Input Character + call cstty ;RDA? + jrz citty + in q3data ;Get data + ani 7fh ;Mask + ret + +cotty equ $ ;TTY Output Character + call cstty ;Any character? + jrnz cotty2 ;Process if so +cotty1: + call costty ;TBE? + jrz cotty1 + mov a,c ;Get data + out q3data ;Put data + ret +cotty2: + call citty ;X-OFF? + cpi XOFF ;Do nothing if not X-OFF + jrnz cotty1 + call citty ;Wait for next char + jr cotty1 + +***************************************************************** +* * +* Remote System Input Status, Input Character, and Output * +* Character * +* * +***************************************************************** + +csrem equ $ ;TTY Input Status + in q0stat ;Get Status + ani qrda ;Data available? + jr stat + +cosrem equ $ ;TTY Output Status + in q0stat ;Get Status + ani qtbe ;TBE? + jr stat + +cirem equ $ ;TTY Input Character + call csrem ;RDA? + jrz cirem + in q0data ;Get data + ani 7fh ;Mask + ret + +corem equ $ ;TTY Output Character + call coxoff ;Check for XOFF and process + call cosrem ;TBE? + jrz corem + mov a,c ;Get data + out q0data ;Put data + ret + +coxoff equ $ ;Remote XOFF Check and Processing + call csrem ;Input Char from LST: Device? + rz ;Zero if none + call cirem ;Get Char + cpi XOFF ;XOFF? + rnz ;Return if not + call cirem ;Wait for Any Other Char + ret + +***************************************************************** +* * +* TTY Input Status, Input Character, and Output Character * +* X-OFF Processing Added * +* * +***************************************************************** + +csmpu equ $ ;TTY Input Status + in mpustat ;Get Status + ani mpurda ;Data available? + jr stat + +cosmpu equ $ ;TTY Output Status + in mpustat ;Get Status + ani mputbe ;TBE? + jr stat + +cimpu equ $ ;TTY Input Character + call csmpu ;RDA? + jrz cimpu + in mpudata ;Get data + ani 7fh ;Mask + ret + +compu8 equ $ ;TTY Output Character (8 Sig Bits) + mvi a,0ffh ;8th Bit Allowed + jr compu0 +compu equ $ ;TTY Output Character + mvi a,07fh ;No 8th Bit +compu0: + sta mpumask + call csmpu ;Any character? + jrnz compu2 ;Process if so +compu1: + call cosmpu ;TBE? + jrz compu1 + mov a,c ;Get data + ani 0ffh ;Mask +mpumask equ $-1 ;Address of Mask + out mpudata ;Put data + ret +compu2: + call cimpu ;X-OFF? + cpi XOFF ;Do nothing if not X-OFF + jrnz compu1 + call cimpu ;Wait for next char + jr compu1 + +***************************************************************** +* * +* User-Defined (CRT and Modem) Input Status, Input Character, * +* and Output Character * +* * +***************************************************************** + +csusr equ $ ;User (CRT and Modem) Input Status + call cscrt ;Input from CRT? + rnz ;Char found + call csmod ;Input from Modem? + ret + +cosusr equ cosmod ;Output status same as modem since modem is slower + +ciusr equ $ ;Modem/CRT Input Combination + call cscrt ;Input from CRT? + jnz cicrt ;Get char from CRT + call csmod ;Input from Modem? + jnz cimod ;Get char from Modem + jr ciusr ;Continue + +cousr equ $ ;Modem/CRT Output Combination + call comod ;Output to Modem + jmp cocrt ;Output to CRT + +ciusr1 equ $ ;Modem/CRT Input w/CRT Output Combination + call ciusr ;Get char + push psw ;Save char in A + mov c,a ;Char in C + call cocrt ;Output to CRT + pop psw ;Restore char in A + ret + +cousr1 equ $ ;Remote System/CRT Output Combination + call corem ;Output to Remote System + jmp cocrt ;Output to CRT + +***************************************************************** +* * +* Record Output Routines * +* CROUT - Console Recorder * +* LROUT - List Recorder * +* * +***************************************************************** + +crout equ $ + lda crecord ;get flag + ora a ;test flag for 0 (no recording) + rz + mov a,c ;check char + ani 7fh + cpi ctrlz ;don't allow ^Z + rz + jmp corem ;remote output if flag set + +lrout equ $ + lda lrecord ;get flag + ora a ;test flag for 0 (no recording) + rz + mov a,c ;check char + ani 7fh + cpi ctrlz ;don't allow ^Z + rz + jmp corem ;remote output if flag set + +; +; COPEN -- Open Console File for Output +; LOPEN -- Open Printer File for Output +; +; Turn Appropriate Flag ON +; +copen: + mvi a,0ffh ;set flag + jr ccrset +lopen: + mvi a,0ffh ;set flag + jr lcrset + +; +; Close Disk Files +; CCLOSE -- CON file (DSK1) +; LCLOSE -- LST file (DSK2) +; +; Send ^Z to Terminate File Recording and Zero Appropriate Flag +; +cclose: + mvi c,ctrlz ;send ctrlz + call corem + xra a +ccrset: + sta crecord ;set flag off + ret +lclose: + mvi c,ctrlz ;send ctrlz + call corem + xra a +lcrset: + sta lrecord ;set flag off + ret + +; +; Recording Buffers +; +crecord: + ds 1 ;console device +lrecord: + ds 1 ;list device + +; +; Test for Size Error +; + if ($ GT (IOP + IOPS*128)) +sizerr equ novalue ;IOP is too large for buffer + endif + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSNDR.AQM b/Images/Source/hd0/s0/u15/SYSNDR.AQM new file mode 100644 index 0000000000000000000000000000000000000000..b7a400ebad35570635790224b47c605b2cb23e7e GIT binary patch literal 512 zcmbu&%S#gg00-coX3qD_wOP4JbGg*%TB-S1NDoO$3mPaoEYP5n43V~8RCHL)@=-pf z&J3a&QbB&+4 z2T7128GDg}7CP9$cl<~T_d$+Sq@j`b*~q$ znYWGm%5Dl(b+V>e>v`{$Te?f`5zmieb6o541lv#>~ zE>q2~>i$&8-R~#F_N5nR)Xi(sh$2rx?$>ig>6L^2$R~lx$2UxKD{7sfP8K6^7P_^6 t7tELAL;}a*+qG(atmw`^zZmA2%TK#r|IOzLulBZ-7caK=EQkKzzX9nS@?HP{ literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SYSNDR.ASM b/Images/Source/hd0/s0/u15/SYSNDR.ASM new file mode 100644 index 00000000..b39ef361 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSNDR.ASM @@ -0,0 +1,17 @@ +; PROGRAM: SYSNDR.ASM +; AUTHOR: RICHARD CONN +; VERSION: 1.0 +; DATE: 24 FEB 84 + +; +; SYSNDR.ASM sets up a memory-based named directory file suitable +; for loading by Z3LDR. It does this by including SYSNDR.LIB. +; + MACLIB SYSNDR + + org 100h + + SYSNDR ; Invoke macro + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSNDR.LIB b/Images/Source/hd0/s0/u15/SYSNDR.LIB new file mode 100644 index 00000000..d43d923a --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSNDR.LIB @@ -0,0 +1,83 @@ +; DATA FILE: SYSNDR.LIB +; AUTHOR: Richard Conn +; VERSION: 1.0 +; DATE: 24 Feb 84 + +; +; SYSNDR.LIB defines the structure of the memory-based named directory. +; It also defines a few elements for it and is suitable for enclosure in +; an NDR file. +; +; The general structure is: +; +; DB Disk,User ; A=1 +; DB 'NDIRNAME' ; 8 chars +; DB 'PASSWORD' ; 8 chars +; ... ; other entries +; DB 0 ; End of NDR +; +defdu macro ?disk,?user + db ?disk-'@' ; Convert Disk + db ?user ; User is OK + endm + +sysndr macro + defdu 'A',0 + db 'BASE ' + db ' ' + + defdu 'A',15 + db 'ROOT ' + db ' ' + + defdu 'A',16 + db 'HELP ' + db ' ' + + defdu 'B',0 + db 'SCRATCH ' + db ' ' + + defdu 'B',1 + db 'ASM ' + db ' ' + + defdu 'B',2 + db 'C ' + db ' ' + + defdu 'B',3 + db 'PASCAL ' + db ' ' + + defdu 'B',4 + db 'SCR ' + db ' ' + + defdu 'B',5 + db 'BASIC ' + db ' ' + + defdu 'B',7 + db 'TEXT ' + db ' ' + + defdu 'B',8 + db 'CAT ' + db ' ' + + defdu 'B',9 + db 'DATA ' + db ' ' + + defdu 'C',0 + db 'BACKUP ' + db ' ' + + db 0 ;End of List + endm + +; +; End of SYSNDR.LIB +; + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSRCP.AQM b/Images/Source/hd0/s0/u15/SYSRCP.AQM new file mode 100644 index 0000000000000000000000000000000000000000..f9fdf538d6a493449223c55817f68f893493a54a GIT binary patch literal 30080 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 B(AEF| literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/SYSRCP.ASM b/Images/Source/hd0/s0/u15/SYSRCP.ASM new file mode 100644 index 00000000..51ff718e --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSRCP.ASM @@ -0,0 +1,2306 @@ +* SYSTEM SEGMENT: SYS.RCP +* SYSTEM: ARIES-1 +* CUSTOMIZED BY: RICHARD CONN + +* +* PROGRAM: SYSRCP.ASM +* AUTHOR: RICHARD CONN +* VERSION: 1.0 +* DATE: 3 FEB 84 +* PREVIOUS VERSIONS: NONE +* +VERSION EQU 10 + +* +* SYSRCP is a resident command processor for ZCPR3. As with +* all resident command processors, SYSRCP performs the following functions: +* +* 1. Assuming that the EXTFCB contains the name of the +* command, SYSRCP looks to see if the first character +* of the file name field in the EXTFCB is a question +* mark; if so, it returns with the Zero Flag Set and +* HL pointing to the internal routine which prints +* its list of commands +* 2. The resident command list in SYSRCP is scanned for +* the entry contained in the file name field of +* EXTFCB; if found, SYSRCP returns with the Zero Flag +* Set and HL pointing to the internal routine which +* implements the function; if not found, SYSRCP returns +* with the Zero Flag Reset (NZ) +* + +* +* Global Library which Defines Addresses for SYSRCP +* + MACLIB Z3BASE ; USE BASE ADDRESSES + MACLIB SYSRCP ; USE SYSRCP HEADER + +; +CTRLC EQU 'C'-'@' +TAB EQU 09H +LF EQU 0AH +FF EQU 0CH +CR EQU 0DH +CTRLX EQU 'X'-'@' +; +WBOOT EQU BASE+0000H ;CP/M WARM BOOT ADDRESS +UDFLAG EQU BASE+0004H ;USER NUM IN HIGH NYBBLE, DISK IN LOW +BDOS EQU BASE+0005H ;BDOS FUNCTION CALL ENTRY PT +TFCB EQU BASE+005CH ;DEFAULT FCB BUFFER +FCB1 EQU TFCB ;1st and 2nd FCBs +FCB2 EQU TFCB+16 +TBUFF EQU BASE+0080H ;DEFAULT DISK I/O BUFFER +TPA EQU BASE+0100H ;BASE OF TPA +DIRBUF EQU BASE+4000H ;DIR BUFFER (MANY ENTRIES PERMITTED) +PAGCNT EQU DIRBUF-100H ;PAGE COUNT BUFFER +OLDFCB EQU PAGCNT+1 ;OLD FCB BUFFER +CPBLOCKS EQU 32 ;USE 4K FOR BUFFERING OF COPY +; +$-MACRO ;FIRST TURN OFF THE EXPANSIONS +; +; MACROS TO PROVIDE Z80 EXTENSIONS +; MACROS INCLUDE: +; +; JR - JUMP RELATIVE +; JRC - JUMP RELATIVE IF CARRY +; JRNC - JUMP RELATIVE IF NO CARRY +; JRZ - JUMP RELATIVE IF ZERO +; JRNZ - JUMP RELATIVE IF NO ZERO +; DJNZ - DECREMENT B AND JUMP RELATIVE IF NO ZERO +; +; @GENDD MACRO USED FOR CHECKING AND GENERATING +; 8-BIT JUMP RELATIVE DISPLACEMENTS +; +@GENDD MACRO ?DD ;;USED FOR CHECKING RANGE OF 8-BIT DISPLACEMENTS + IF (?DD GT 7FH) AND (?DD LT 0FF80H) + DB 100H,?DD ;Displacement Range Error on Jump Relative + ELSE + DB ?DD + ENDIF ;;RANGE ERROR + ENDM +; +; +; Z80 MACRO EXTENSIONS +; +JR MACRO ?N ;;JUMP RELATIVE + IF I8080 ;;8080/8085 + JMP ?N + ELSE ;;Z80 + DB 18H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRC MACRO ?N ;;JUMP RELATIVE ON CARRY + IF I8080 ;;8080/8085 + JC ?N + ELSE ;;Z80 + DB 38H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRNC MACRO ?N ;;JUMP RELATIVE ON NO CARRY + IF I8080 ;;8080/8085 + JNC ?N + ELSE ;;Z80 + DB 30H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRZ MACRO ?N ;;JUMP RELATIVE ON ZERO + IF I8080 ;;8080/8085 + JZ ?N + ELSE ;;Z80 + DB 28H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +JRNZ MACRO ?N ;;JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + JNZ ?N + ELSE ;;Z80 + DB 20H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +; +DJNZ MACRO ?N ;;DECREMENT B AND JUMP RELATIVE ON NO ZERO + IF I8080 ;;8080/8085 + DCR B + JNZ ?N + ELSE ;;Z80 + DB 10H + @GENDD ?N-$-1 + ENDIF ;;I8080 + ENDM +* +* SYSTEM Entry Point +* + org rcp ; passed for Z3BASE + + db 'Z3RCP' ; Flag for Package Loader +* +* **** Command Table for RCP **** +* This table is RCP-dependent! +* +* The command name table is structured as follows: +* +* ctable: +* DB 'CMNDNAME' ; Table Record Structure is +* DW cmndaddress ; 8 Chars for Name and 2 Bytes for Adr +* ... +* DB 0 ; End of Table +* +cnsize equ 4 ; NUMBER OF CHARS IN COMMAND NAME + db cnsize ; size of text entries +ctab: + db 'H ' ; Help for RCP + dw clist +ctab1: +; + IF CPON + db 'CP ' ; Copy + dw copy + ENDIF ;CPON +; + IF DIRON + db 'DIR ' ; Directory + dw dir + ENDIF ;DIRON +; + IF ECHOON + db 'ECHO' ; Echo + dw echo + ENDIF +; + IF ERAON + db 'ERA ' ; Erase + dw era + ENDIF ;ERAON +; + IF LTON AND LISTON + db 'LIST' ; List + dw list + ENDIF ;LTON AND LISTON +; + IF NOTEON + db 'NOTE' ; Note-Comment-NOP Command + dw note + ENDIF +; + IF PEEKON + db 'P ' ; Peek into Memory + dw peek + ENDIF ;PEEKON +; + IF POKEON + db 'POKE' ; Poke Values into Memory + dw poke + ENDIF ;POKEON +; + IF PROTON + db 'PROT' ; Protection Codes + dw att + ENDIF ;PROTON +; + IF REGON + db 'REG ' ; Register Command + dw regcmd + ENDIF ;RSETON +; + IF RENON + db 'REN ' ; Rename + dw ren + ENDIF ;RENON +; + IF LTON + db 'TYPE' ; Type + dw type + ENDIF ;LTON +; + IF WHLON + db 'WHL ' ; Wheel + dw whl + db 'WHLQ' ; Wheel Query + dw whlmsg + ENDIF ;WHLON +; + db 0 +* +* BANNER NAME OF RCP +* +rcp$name: + db 'SYS ' + db (version/10)+'0','.',(version mod 10)+'0' + db RCPID + db 0 + +* +* Command List Routine +* +clist: + lxi h,rcp$name ; print RCP Name + call print1 + lxi h,ctab1 ; print table entries + mvi c,1 ; set count for new line +clist1: + mov a,m ; done? + ora a + rz + dcr c ; count down + jrnz clist1a + call crlf ; new line + mvi c,4 ; set count +clist1a: + lxi d,entryname ; copy command name into message buffer + mvi b,cnsize ; number of chars +clist2: + mov a,m ; copy + stax d + inx h ; pt to next + inx d + dcr b + jnz clist2 + inx h ; skip to next entry + inx h + push h ; save ptr + lxi h,entrymsg ; print message + call print1 + pop h ; get ptr + jmp clist1 +* +* Console Output Routine +* +conout: + push h ; save regs + push d + push b + push psw + ani 7fh ; mask MSB + mov e,a ; char in E + mvi c,2 ; output + call bdos + pop psw ; get regs + pop b + pop d + pop h +; +; This simple return doubles for the NOTE Command (NOP) and CONOUT Exit +; NOTE Command: NOTE any text +; +NOTE: + ret +* +* Print String (terminated in 0 or MSB Set) at Return Address +* +print: + xthl ; get address + call print1 + xthl ; put address + ret +* +* Print String (terminated in 0 or MSB Set) pted to by HL +* +print1: + mov a,m ; done? + inx h ; pt to next + ora a ; 0 terminator + rz + call conout ; print char + rm ; MSB terminator + jmp print1 +* +* CLIST Messages +* +entrymsg: + db ' ' ; command name prefix +entryname: + ds cnsize ; command name + db 0 ; terminator + +* +* **** RCP Routines **** +* All code from here on is RCP-dependent! +* + +; +;Section 5A +;Command: DIR +;Function: To display a directory of the files on disk +;Forms: +; DIR Displays the DIR files +; DIR S Displays the SYS files +; DIR A Display both DIR and SYS files +;Notes: +; The flag SYSFLG defines the letter used to display both DIR and +; SYS files (A in the above Forms section) +; The flag SOFLG defines the letter used to display only the SYS +; files (S in the above Forms section) +; The flag WIDE determines if the file names are spaced further +; apart (WIDE=TRUE) for 80-col screens +; The flag FENCE defines the character used to separate the file +; names +; + IF DIRON +DIR: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WDIR + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE ;SAVE RET ADDRESS AND SET STACK + LXI H,FCB1+1 ;MAKE FCB WILD (ALL '?') IF NO FILENAME.TYP + MOV A,M ;GET FIRST CHAR OF FILENAME.TYP + CPI ' ' ;IF , ALL WILD + CZ FILLQ + LDA FCB2+1 ;GET FIRST CHAR OF 2ND FILE NAME + MVI B,80H ;PREPARE FOR DIR-ONLY SELECTION + CPI ' ' ;ANY FLAG? + JRZ DIRPR ;THERE IS NO FLAG, SO DIR ONLY + MVI B,1 ;SET FOR BOTH DIR AND SYS FILES + CPI SYSFLG ;SYSTEM AND DIR FLAG SPECIFIER? + JRZ DIRPR ;GOT SYSTEM SPECIFIER + CPI SOFLG ;SYS ONLY? + JRNZ DIRPR + DCR B ;B=0 FOR SYS FILES ONLY +; + ENDIF ;DIRON +; +; DIRECTORY PRINT ROUTINE; ON ENTRY, B REG IS SET AS FOLLOWS: +; 0 FOR ONLY SYSTEM FILES, 80H FOR ONLY DIR FILES, 1 FOR BOTH +; + IF DIRON OR ERAON OR LTON OR PROTON OR CPON OR RENON +DIRPR: + MOV A,B ;GET SYSTST FLAG + CALL GETDIR ;LOAD AND SORT DIRECTORY + JZ PRFNF ;PRINT NO FILE MESSAGE + MVI E,4 ;COUNT DOWN TO 0 +; +; ENTRY PRINT LOOP; ON ENTRY, HL PTS TO FILES SELECTED (TERMINATED BY 0) +; AND E IS ENTRY COUNTER +; +DIR3: + MOV A,M ;CHECK FOR DONE + ORA A + JZ EXIT ;EXIT IF DONE + MOV A,E ;GET ENTRY COUNTER + ORA A ;OUTPUT IF 4 ENTRIES PRINTED IN LINE + CZ DIRCRLF ;NEW LINE + MOV A,E ;GET ENTRY COUNT + CPI 4 ;FIRST ENTRY? + JRZ DIR4 + CALL PRINT +; + IF WIDE +; + DB ' ' ;2 SPACES + DB FENCE ;THEN FENCE CHAR + DB ' '+80H ;THEN 1 MORE SPACE +; + ELSE +; + DB ' ' ;SPACE + DB FENCE+80H ;THEN FENCE CHAR +; + ENDIF ;WIDE +; +DIR4: + CALL PRFN ;PRINT FILE NAME + CALL BREAK ;CHECK FOR ABORT + DCR E ;DECREMENT ENTRY COUNTER + JR DIR3 +; +; CRLF FOR DIR ROUTINE +; +DIRCRLF: + PUSH PSW ;DON'T AFFECT PSW + CALL CRLF ;NEW LINE + POP PSW + MVI E,4 ;RESET ENTRY COUNTER + RET +; +; AFTER A SEARCH, RETURN NZ SET IF DESIRED TYPE OF FILE FOUND, Z IF NOT +; THIS ALGORITHM LOOKS AT THE SYSTEM BIT OF THE LOCATED FILE; THIS +; BIT IS SET TO 1 IF THE FILE IS A SYSTEM FILE AND 0 IF NOT A SYSTEM +; FILE. THE FOLLOWING EXCLUSIVE OR MASKS ARE APPLIED TO RETURN Z OR NZ +; AS REQUIRED BY THE CALLING PROGRAM: +; +; SYSTEM BYTE: X 0 0 0 0 0 0 0 (AFTER 80H MASK, X=1 IF SYS, 0 IF DIR) +; +; SYS-ONLY : 0 0 0 0 0 0 0 0 (XOR 0 = 0 if X=0, = 80H if X=1) +; DIR-ONLY : 1 0 0 0 0 0 0 0 (XOR 80H = 80h if X=0, = 0 if X=1) +; BOTH : 0 0 0 0 0 0 0 1 (XOR 1 = 81H or 1H, NZ in both cases) +; +GETSBIT: + DCR A ;ADJUST TO RETURNED VALUE + RRC ;CONVERT NUMBER TO OFFSET INTO TBUFF + RRC + RRC + ANI 60H + MOV C,A ;OFFSET INTO TBUFF IN C (C=OFFSET TO ENTRY) + LXI D,TBUFF ;PT TO BUFFER + MOV A,E ;BASE ADDRESS IN A + ADD C ;ADD IN ENTRY OFFSET + MOV E,A ;RESULT IN E + PUSH D ;SAVE PTR IN DE + ADI 10 ;ADD OFFSET OF 10 TO PT TO SYSTEM BYTE + MOV E,A ;SET ADDRESS + LDAX D ;GET BYTE + POP D ;GET PTR IN DE + ANI 80H ;LOOK AT ONLY SYSTEM BIT +SYSTST EQU $+1 ;IN-THE-CODE VARIABLE + XRI 0 ; IF SYSTST=0, SYS ONLY; IF SYSTST=80H, DIR + ; ONLY; IF SYSTST=1, BOTH SYS AND DIR + RET ;NZ IF OK, Z IF NOT OK +; +; FILL FCB @HL WITH '?' +; +FILLQ: + MVI B,11 ;NUMBER OF CHARS IN FN & FT + MVI A,'?' ;STORE '?' +FILLP: + MOV M,A ;STORE BYTE + INX H ;PT TO NEXT + DJNZ FILLP ;COUNT DOWN + RET +; +; LOAD DIRECTORY AND SORT IT +; ON INPUT, A=SYSTST FLAG (0=SYS, 1=DIR, 80H=BOTH) +; DIRECTORY IS LOADED INTO DIRBUF +; RETURN WITH ZERO SET IF NO MATCH AND HL PTS TO 1ST ENTRY IF MATCH +; +GETDIR: + STA SYSTST ; SET SYSTEM TEST FLAG + CALL LOGUSR ; LOG INTO USER AREA OF FCB1 + LXI H,DIRBUF ; PT TO DIR BUFFER + MVI M,0 ; SET EMPTY + LXI B,0 ; SET COUNTER + CALL SEARF ; LOOK FOR MATCH + RZ ; RETURN IF NOT FOUND +; +; STEP 1: LOAD DIRECTORY +; +GD1: + PUSH B ; SAVE COUNTER + CALL GETSBIT ; CHECK FOR SYSTEM OK + POP B + JRZ GD2 ; NOT OK, SO SKIP + PUSH B ; SAVE COUNTER + INX D ; PT TO FILE NAME + XCHG ; HL PTS TO FILE NAME, DE PTS TO BUFFER + MVI B,11 ; COPY 11 BYTES + CALL LDIR ; DO COPY + XCHG ; HL PTS TO NEXT BUFFER LOCATION + POP B ; GET COUNTER + INX B ; INCREMENT COUNTER +GD2: + CALL SEARN ; LOOK FOR NEXT + JRNZ GD1 + MVI M,0 ; STORE ENDING 0 + LXI H,DIRBUF ; PT TO DIR BUFFER + MOV A,M ; CHECK FOR EMPTY + ORA A + RZ +; +; STEP 2: SORT DIRECTORY +; + PUSH H ; SAVE PTR TO DIRBUF FOR RETURN + CALL DIRALPHA ; SORT + POP H + XRA A ; SET NZ FLAG FOR OK + DCR A + RET + +;* +;* DIRALPHA -- ALPHABETIZES DIRECTORY IN DIRBUF; BC CONTAINS +;* THE NUMBER OF FILES IN THE DIRECTORY +;* +DIRALPHA: + MOV A,B ; ANY FILES? + ORA C + RZ + MOV H,B ; HL=BC=FILE COUNT + MOV L,C + SHLD N ; SET "N" +;* +;* SHELL SORT -- +;* THIS SORT ROUTINE IS ADAPTED FROM "SOFTWARE TOOLS" +;* BY KERNIGAN AND PLAUGHER, PAGE 106. COPYRIGHT, 1976, ADDISON-WESLEY. +;* ON ENTRY, BC=NUMBER OF ENTRIES +;* +N EQU $+1 ; POINTER FOR IN-THE-CODE MODIFICATION + LXI H,0 ; NUMBER OF ITEMS TO SORT + SHLD GAP ; SET INITIAL GAP TO N FOR FIRST DIVISION BY 2 + +;* FOR (GAP = N/2; GAP > 0; GAP = GAP/2) +SRTL0: + ORA A ; CLEAR CARRY +GAP EQU $+1 ; POINTER FOR IN-THE-CODE MODIFICATION + LXI H,0 ; GET PREVIOUS GAP + MOV A,H ; ROTATE RIGHT TO DIVIDE BY 2 + RAR + MOV H,A + MOV A,L + RAR + MOV L,A + +;* TEST FOR ZERO + ORA H + RZ ; DONE WITH SORT IF GAP = 0 + + SHLD GAP ; SET VALUE OF GAP + SHLD I ; SET I=GAP FOR FOLLOWING LOOP + +;* FOR (I = GAP + 1; I <= N; I = I + 1) +SRTL1: +I EQU $+1 ; POINTER FOR IN-THE-CODE MODIFICATION + LXI H,0 ; ADD 1 TO I + INX H + SHLD I + +;* TEST FOR I <= N + XCHG ; I IS IN DE + LHLD N ; GET N + MOV A,L ; COMPARE BY SUBTRACTION + SUB E + MOV A,H + SBB D ; CARRY SET MEANS I > N + JRC SRTL0 ; DON'T DO FOR LOOP IF I > N + + LHLD I ; SET J = I INITIALLY FOR FIRST SUBTRACTION OF GAP + SHLD J + +;* FOR (J = I - GAP; J > 0; J = J - GAP) +SRTL2: + LHLD GAP ; GET GAP + XCHG ; ... IN DE +J EQU $+1 ; POINTER FOR IN-THE-CODE MODIFICATION + LXI H,0 ; GET J + MOV A,L ; COMPUTE J - GAP + SUB E + MOV L,A + MOV A,H + SBB D + MOV H,A + SHLD J ; J = J - GAP + JRC SRTL1 ; IF CARRY FROM SUBTRACTIONS, J < 0 AND ABORT + MOV A,H ; J=0? + ORA L + JRZ SRTL1 ; IF ZERO, J=0 AND ABORT + +;* SET JG = J + GAP + XCHG ; J IN DE + LHLD GAP ; GET GAP + DAD D ; J + GAP + SHLD JG ; JG = J + GAP + +;* IF (V(J) <= V(JG)) + CALL ICOMPARE ; J IN DE, JG IN HL + +;* ... THEN BREAK + JRC SRTL1 + +;* ... ELSE EXCHANGE + LHLD J ; SWAP J, JG + XCHG +JG EQU $+1 ; POINTER FOR IN-THE-CODE MODIFICATION + LXI H,0 + CALL ISWAP ; J IN DE, JG IN HL + +;* END OF INNER-MOST FOR LOOP + JR SRTL2 + +;* +;* SWAP (Exchange) the elements whose indexes are in HL and DE +;* +ISWAP: + CALL IPOS ; COMPUTE POSITION FROM INDEX + XCHG + CALL IPOS ; COMPUTE 2ND ELEMENT POSITION FROM INDEX + MVI B,11 ; 11 BYTES TO FLIP +ISWAP1: + LDAX D ; GET BYTES + MOV C,M + MOV M,A ; PUT BYTES + MOV A,C + STAX D + INX H ; PT TO NEXT + INX D + DJNZ ISWAP1 + RET +;* +;* ICOMPARE compares the entry pointed to by the pointer pointed to by HL +;* with that pointed to by DE (1st level indirect addressing); on entry, +;* HL and DE contain the numbers of the elements to compare (1, 2, ...); +;* on exit, Carry Set means ((DE)) < ((HL)), Zero Set means ((HL)) = ((DE)), +;* and Non-Zero and No-Carry means ((DE)) > ((HL)) +;* +ICOMPARE: + CALL IPOS ; GET POSITION OF FIRST ELEMENT + XCHG + CALL IPOS ; GET POSITION OF 2ND ELEMENT + XCHG +;* +;* COMPARE DIR ENTRY PTED TO BY HL WITH THAT PTED TO BY DE; +;* NO NET EFFECT ON HL, DE; RET W/CARRY SET MEANS DE Erase Specified files and print their names +; ERA I Erase Specified files and print their names, but ask +; for verification before Erase is done +; + IF ERAON +ERA: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WERA + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE + LDA FCB2+1 ;GET ERAFLG IF IT'S THERE + STA ERAFLG ;SAVE IT AS A FLAG + MVI A,1 ;DIR FILES ONLY + CALL GETDIR ;LOAD DIRECTORY OF FILES + JZ PRFNF ;ABORT IF NO FILES +; +; MAIN ERASE LOOP +; +ERA1: + PUSH H ;SAVE PTR TO FILE + CALL PRFN ;PRINT ITS NAME + SHLD NXTFILE ;SAVE PTR TO NEXT FILE + POP H ;GET PTR TO THIS FILE + CALL ROTEST ;TEST FILE PTED TO BY HL FOR R/O + JRNZ ERA3 +ERAFLG EQU $+1 ;ADDRESS OF FLAG + MVI A,0 ;2ND BYTE IS FLAG + CPI 'I' ;IS IT AN INSPECT OPTION? + JRNZ ERA2 ;SKIP PROMPT IF IT IS NOT + CALL ERAQ ;ERASE? + JRNZ ERA3 ;SKIP IF NOT +ERA2: + LXI D,FCB1+1 ;COPY INTO FCB1 + MVI B,11 ;11 BYTES + CALL LDIR + CALL INITFCB1 ;INIT FCB + MVI C,19 ;DELETE FILE + CALL BDOS +ERA3: + LHLD NXTFILE ;HL PTS TO NEXT FILE + MOV A,M ;GET CHAR + ORA A ;DONE? + JZ EXIT + CALL CRLF ;NEW LINE + JR ERA1 +; + ENDIF ;ERAON +; +;Section 5C +;Command: LIST +;Function: Print out specified file on the LST: Device +;Forms: +; LIST Print file (NO Paging) +;Notes: +; The flags which apply to TYPE do not take effect with LIST +; + IF LTON +LIST: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WLIST + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE + MVI A,0FFH ;TURN ON PRINTER FLAG + JR TYPE0 +; +;Section 5D +;Command: TYPE +;Function: Print out specified file on the CON: Device +;Forms: +; TYPE Print file +; TYPE P Print file with paging flag +;Notes: +; The flag PGDFLG defines the letter which toggles the paging +; facility (P in the forms section above) +; The flag PGDFLT determines if TYPE is to page by default +; (PGDFLT=TRUE if TYPE pages by default); combined with +; PGDFLG, the following events occur -- +; If PGDFLT = TRUE, PGDFLG turns OFF paging +; If PGDFLT = FALSE, PGDFLG turns ON paging +; +TYPE: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WTYPE + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE + XRA A ;TURN OFF PRINTER FLAG +; +; ENTRY POINT FOR CPR LIST FUNCTION (LIST) +; +TYPE0: + STA PRFLG ;SET FLAG + LDA FCB2+1 ;GET PAGE FLAG + STA PGFLG ;SAVE IT AS A FLAG + MVI A,1 ;SELECT DIR FILES + CALL GETDIR ;ALLOW AMBIGUOUS FILES + JZ PRFNF ;NO FILES + SHLD NXTFILE ;SET PTR TO NEXT FILE + JR TYPEX2 +TYPEX: + LHLD NXTFILE ;GET PTR TO NEXT FILE + MOV A,M ;ANY FILES? + ORA A + JZ EXIT + LDA PRFLG ;CHECK FOR LIST OUTPUT + ORA A ;0=TYPE + JRZ TYPEX1 + MVI A,CR ;BOL ON PRINTER + CALL LCOUT + MVI A,FF ;FORM FEED THE PRINTER + CALL LCOUT + JR TYPEX2 +TYPEX1: + CALL PAGEBREAK ;PAGE BREAK MESSAGE +TYPEX2: + LXI D,FCB1+1 ;COPY INTO FCB1 + MVI B,11 ;11 BYTES + CALL LDIR + SHLD NXTFILE ;SET PTR TO NEXT FILE + CALL INITFCB1 ;INIT FCB1 + MVI C,15 ;OPEN FILE + CALL BDOS + INR A ;SET ERROR FLAG + JZ PRFNF ;ABORT IF ERROR + MVI A,NLINES-2 ;SET LINE COUNT + STA PAGCNT + MVI A,CR ;NEW LINE + CALL LCOUT + MVI A,LF + CALL LCOUT + LXI B,080H ;SET CHAR POSITION AND TAB COUNT + ; (B=0=TAB, C=080H=CHAR POSITION) +; +; MAIN LOOP FOR LOADING NEXT BLOCK +; +TYPE2: + MOV A,C ;GET CHAR COUNT + CPI 80H + JRC TYPE3 + PUSH H ;READ NEXT BLOCK + PUSH B + LXI D,FCB1 ;PT TO FCB + MVI C,20 ;READ RECORD + CALL BDOS + ORA A ;SET FLAGS + POP B + POP H + JRNZ TYPE7 ;END OF FILE? + MVI C,0 ;SET CHAR COUNT + LXI H,TBUFF ;PT TO FIRST CHAR +; +; MAIN LOOP FOR PRINTING CHARS IN TBUFF +; +TYPE3: + MOV A,M ;GET NEXT CHAR + ANI 7FH ;MASK OUT MSB + CPI 1AH ;END OF FILE (^Z)? + JRZ TYPE7 ;NEXT FILE IF SO +; +; OUTPUT CHAR TO CON: OR LST: DEVICE WITH TABULATION +; + CPI CR ;RESET TAB COUNT? + JRZ TYPE4 + CPI LF ;RESET TAB COUNT? + JRZ TYPE4 + CPI TAB ;TAB? + JRZ TYPE5 +; +; OUTPUT CHAR AND INCREMENT CHAR COUNT +; + CALL LCOUT ;OUTPUT CHAR + JZ TYPEX ;SKIP + INR B ;INCREMENT TAB COUNT + JR TYPE6 +; +; OUTPUT OR AND RESET TAB COUNT +; +TYPE4: + CALL LCOUT ;OUTPUT OR + JZ TYPEX ;SKIP + MVI B,0 ;RESET TAB COUNTER + JR TYPE6 +; +; TABULATE +; +TYPE5: + MVI A,' ' ; + CALL LCOUT + JZ TYPEX ;SKIP + INR B ;INCR POS COUNT + MOV A,B + ANI 7 + JRNZ TYPE5 +; +; CONTINUE PROCESSING +; +TYPE6: + INR C ;INCREMENT CHAR COUNT + INX H ;PT TO NEXT CHAR + CALL BREAK ;CHECK FOR ABORT + JZ TYPEX ;SKIP + JR TYPE2 +TYPE7: + LXI D,FCB1 ;CLOSE FILE + MVI C,16 ;BDOS FUNCTION + CALL BDOS + JMP TYPEX +; +; SEND OUTPUT TO LST: OR CON:, AS PER THE FLAG +; RETURN WITH Z IF ABORT +; +LCOUT: + PUSH H ;SAVE REGS + PUSH D + PUSH B + MOV E,A ;CHAR IN E + MVI C,2 ;OUTPUT TO CON: +PRFLG EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;2ND BYTE IS THE PRINT FLAG + ORA A ;0=TYPE + JRZ LC1 + MVI C,5 ;OUTPUT TO LST: +LC1: + PUSH D ;SAVE CHAR + CALL BDOS ;OUTPUT CHAR IN E + POP D ;GET CHAR + MOV A,E + CPI LF + JRNZ LC2 + LDA PRFLG ;OUTPUT TO LST:? + ORA A ;NZ = YES + JRNZ LC2 +; +; CHECK FOR PAGING +; + LXI H,PAGCNT ;COUNT DOWN + DCR M + JRNZ LC2 ;JUMP IF NOT END OF PAUSE + MVI M,NLINES-2 ;REFILL COUNTER +PGFLG EQU $+1 ;POINTER TO IN-THE-CODE BUFFER + MVI A,0 ;2ND BYTE IS THE PAGING FLAG + CPI PGDFLG ;PAGE DEFAULT OVERRIDE OPTION WANTED? +; + IF PGDFLT ;IF PAGING IS DEFAULT +; + JRZ LC2 ;PGDFLG MEANS NO PAGING +; + ELSE +; + JRNZ LC2 ;PGDFLG MEANS PAGE +; + ENDIF ;PGDFLT +; + CALL PAGEBREAK ;PRINT PAGE BREAK MESSAGE + JR LC3 ;Z TO SKIP +LC2: + XRA A ;SET OK + DCR A ;NZ=OK +LC3: + POP B ;RESTORE REGS + POP D + POP H + RET +; +; PRINT PAGE BREAK MESSAGE AND GET USER INPUT +; ABORT IF ^C, RZ IF ^X +; +PAGEBREAK: + PUSH H ;SAVE HL + CALL PRINT + DB cr,lf,' Typing',' '+80H + LXI H,FCB1+1 ;PRINT FILE NAME + CALL PRFN + CALL DASH ;PRINT DASH + CALL CONIN ;GET INPUT + POP H ;RESTORE HL + PUSH PSW + CALL CRLF ;NEW LINE + POP PSW + CPI CTRLC ;^C + JZ EXIT + CPI CTRLX ;SKIP? + RET +; + ENDIF ;LTON +; +;Section 5E +;Command: REN +;Function: To change the name of an existing file +;Forms: +; REN = Perform function +; + IF RENON +REN: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WREN + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE +; +; +; STEP 1: CHECK FOR FILE 2 BEING AMBIGUOUS +; + LXI H,FCB2+1 ;CAN'T BE AMBIGUOUS + CALL AMBCHK1 +; +; STEP 2: LOG INTO USER AREA +; + CALL LOGUSR ;LOG INTO USER AREA OF FCB1 +; +; STEP 3: SEE IF NEW FILE ALREADY EXISTS +; EXTEST PERFORMS A NUMBER OF CHECKS: +; 1) AMBIGUITY +; 2) R/O +; 3) IF FILE EXISTS AND NOT R/O, PERMISSION TO DELETE +; + CALL EXTEST + JZ EXIT ;R/O OR NO PERMISSION +; +; STEP 4: EXCHANGE FILE NAME FIELDS FOR RENAME +; + LXI H,FCB1 ;EXCHANGE NAMES ONLY + PUSH H ;SAVE PTR + INX H + LXI D,FCB2+1 + MVI B,11 ;11 BYTES +REN1: + LDAX D ;GET OLD + MOV C,A + MOV A,M + STAX D ;PUT NEW + MOV M,C + INX H ;PT TO NEXT + INX D + DJNZ REN1 +; +; STEP 5: SEE IF OLD FILE IS R/O +; + CALL SEARF ;LOOK FOR FILE + JZ PRFNF + CALL GETSBIT ;GET PTR TO ENTRY IN TBUFF + XCHG ;HL PTS TO ENTRY + INX H ;PT TO FN + CALL ROTEST ;SEE IF FILE IS R/O + JNZ EXIT +; +; STEP 6: RENAME THE FILE +; + POP D ;GET PTR TO FCB + MVI C,23 ;RENAME + CALL BDOS + INR A ;SET ZERO FLAG IF ERROR + JZ PRFNF ;PRINT NO SOURCE FILE MESSAGE + JMP EXIT +; + ENDIF ;RENON +; +;Section 5F +;Command: PROT +;Function: To set the attributes of a file (R/O and SYS) +; +;Form: +; PROT afn RSI +;If either R or S are omitted, the file is made R/W or DIR, resp; +;R and S may be in any order. If I is present, Inspection is enabled. +; + IF PROTON +ATT: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WPROT + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE + XRA A ;SET NO INSPECT + STA INSPECT + LXI H,0 ;SET R/O AND SYS ATTRIBUTES OFF + LXI D,FCB2+1 ;PT TO ATTRIBUTES + MVI B,3 ;3 CHARS MAX +ATT1: + LDAX D ;GET CHAR + INX D ;PT TO NEXT + CPI 'I' ;INSPECT? + JRZ ATTI + CPI 'R' ;SET R/O? + JRZ ATTR + CPI 'S' ;SET SYS? + JRZ ATTS +ATT2: + DJNZ ATT1 + JR ATT3 +ATTI: + STA INSPECT ;SET FLAG + JR ATT2 +ATTR: + MVI H,80H ;SET R/O BIT + JR ATT2 +ATTS: + MVI L,80H ;SET SYS BIT + JR ATT2 +ATT3: + SHLD FATT ;SAVE FILE ATTRIBUTES + MVI A,1 ;SELECT DIR AND SYS FILES + CALL GETDIR ;LOAD DIRECTORY + JZ PRFNF ;NO FILE ERROR + SHLD NXTFILE ;PT TO NEXT FILE + JR ATT5 +ATT4: + LHLD NXTFILE ;PT TO NEXT FILE + MOV A,M ;END OF LIST? + ORA A + JZ EXIT + CALL CRLF ;NEW LINE +ATT5: + PUSH H ;SAVE PTR TO CURRENT FILE + CALL PRFN ;PRINT ITS NAME + SHLD NXTFILE ;SAVE PTR TO NEXT FILE + CALL PRINT + DB ' Set to R','/'+80H + LHLD FATT ;GET ATTRIBUTES + MVI C,'W' ;ASSUME R/W + MOV A,H ;GET R/O BIT + ORA A + JRZ ATT6 + MVI C,'O' ;SET R/O +ATT6: + MOV A,C ;GET CHAR + CALL CONOUT + MOV A,L ;GET SYS FLAG + ORA A ;SET FLAG + JRZ ATT7 + CALL PRINT + DB ' and SY','S'+80H +ATT7: +INSPECT EQU $+1 ;PTR FOR IN-THE-CODE MODIFICATION + MVI A,0 ;GET INSPECT FLAG + ORA A ;Z=NO + POP H ;GET PTR TO CURRENT FILE + JRZ ATT8 + CALL ERAQ1 ;ASK FOR Y/N + JRNZ ATT4 ;ADVANCE TO NEXT FILE IF NOT Y +ATT8: + LXI D,FCB1+1 ;COPY INTO FCB1 + MVI B,11 ;11 BYTES + CALL LDIR +FATT EQU $+1 ;PTR FOR IN-THE-CODE MODIFICATION + LXI H,0 ;GET ATTRIBUTES + DCX D ;PT TO SYS BYTE + DCX D + MOV A,L ;GET SYS FLAG + CALL ATTSET ;SET ATTRIBUTE CORRECTLY + DCX D ;PT TO R/O BYTE + MOV A,H ;GET R/O FLAG + CALL ATTSET + LXI D,FCB1 ;PT TO FCB + MVI C,30 ;SET ATTRIBUTES + CALL BDOS + JR ATT4 +ATTSET: + ORA A ;0=CLEAR ATTRIBUTE + JRZ ATTST1 + LDAX D ;GET BYTE + ORI 80H ;SET ATTRIBUTE + STAX D + RET +ATTST1: + LDAX D ;GET BYTE + ANI 7FH ;CLEAR ATTRIBUTE + STAX D + RET +; + ENDIF ;PROTON +; +;Section 5G +;Command: CP +;Function: To copy a file from one place to another +; +;Form: +; CP new=old +; + IF CPON +COPY: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WCP + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE +; +; STEP 0: IF NEW IS BLANK, MAKE IT THE SAME NAME AND TYPE AS OLD +; + LXI D,FCB1+1 ;PT TO NEW FILE NAME + LDAX D ;GET FIRST CHAR + CPI ' ' ;NO NAME? + JRNZ COPY0 + LXI H,FCB2+1 ;MAKE SAME AS OLD + MVI B,11 ;11 BYTES + CALL LDIR +; +; STEP 1: SEE IF NEW=OLD AND ABORT IF SO +; +COPY0: + LXI H,FCB1 ;PT TO NEXT + LXI D,FCB2 ;PT TO OLD + PUSH H ;SAVE PTRS + PUSH D + INX H ;PT TO FILE NAME + INX D + MVI B,13 ;COMPARE 13 BYTES +COPY1: + LDAX D ;GET OLD + CMP M ;COMPARE TO NEW + JRNZ COPY2 + INX H ;PT TO NEXT + INX D + DJNZ COPY1 + MVI C,25 ;GET CURRENT DISK + CALL BDOS + INR A ;MAKE 1..P + MOV B,A ;CURRENT DISK IN B + POP D ;GET PTR TO DN + POP H + LDAX D ;GET DISK + MOV C,A ;... IN C + ORA A ;CURRENT? + JRNZ COPY1A + MOV C,B ;MAKE C CURRENT +COPY1A: + MOV A,M ;GET DISK + ORA A ;CURRENT? + JRNZ COPY1B + MOV A,B ;MAKE A CURRENT +COPY1B: + CMP C ;SAME DISK ALSO? + JRNZ COPY3 ;CONTINUE WITH OPERATION + JR CPERR +COPY2: + POP D ;GET PTRS + POP H +; +; STEP 2: SET USER NUMBERS +; +COPY3: + LDA FCB1+13 ;GET NEW USER + STA USRNEW + LDA FCB2+13 ;GET OLD USER + STA USROLD +; +; STEP 3: SEE IF OLD FILE EXISTS +; + LXI H,OLDFCB ;COPY OLD INTO 2ND FCB + PUSH H ;SAVE PTR TO 2ND FCB + XCHG + MVI B,14 ;14 BYTES + CALL LDIR + CALL LOGOLD ;LOG IN USER NUMBER OF OLD FCB + POP H ;GET PTR TO 2ND FCB + CALL INITFCB2 ;INIT FCB + MVI C,17 ;LOOK FOR FILE + CALL BDOS + INR A ;CHECK FOR ERROR + JZ PRFNF ;FILE NOT FOUND +; +; STEP 4: SEE IF NEW EXISTS +; + CALL LOGNEW ;LOG INTO NEW'S USER AREA + CALL EXTEST ;TEST + JZ EXIT ;ERROR EXIT +; +; STEP 5: CREATE NEW +; + LXI D,FCB1 ;PT TO FCB + MVI C,22 ;MAKE FILE + CALL BDOS + INR A ;ERROR? + JRNZ COPY4 +; +; COPY ERROR +; +CPERR: + CALL PRINT + DB ' Copy','?'+80H + JMP EXIT +; +; STEP 6: OPEN OLD +; +COPY4: + CALL LOGOLD ;GET USER + LXI H,OLDFCB ;PT TO FCB + CALL INITFCB2 ;INIT FCB + MVI C,15 ;OPEN FILE + CALL BDOS +; +; STEP 7: COPY OLD TO NEW WITH BUFFERING +; +COPY5: + CALL LOGOLD ;GET USER + MVI B,0 ;SET COUNTER + LXI H,TPA ;SET NEXT ADDRESS TO COPY INTO +COPY5A: + PUSH H ;SAVE ADDRESS AND COUNTER + PUSH B + LXI D,OLDFCB ;READ BLOCK FROM FILE + MVI C,20 + CALL BDOS + POP B ;GET COUNTER AND ADDRESS + POP D + ORA A ;OK? + JRNZ COPY5B + PUSH B ;SAVE COUNTER + LXI H,TBUFF ;COPY FROM BUFFER + MVI B,128 ;128 BYTES + CALL LDIR + XCHG ;HL PTS TO NEXT + POP B ;GET COUNTER + INR B ;INCREMENT IT + MOV A,B ;DONE? + CPI CPBLOCKS ;DONE IF CPBLOCKS LOADED + JRNZ COPY5A +COPY5B: + MOV A,B ;GET COUNT + ORA A + JRZ COPY6 ;DONE IF NOTHING LOADED + PUSH B ;SAVE COUNT + CALL LOGNEW ;GET USER + LXI H,TPA ;PT TO TPA +COPY5C: + LXI D,TBUFF ;COPY INTO TBUFF + MVI B,128 ;128 BYTES + CALL LDIR + PUSH H ;SAVE PTR TO NEXT + LXI D,FCB1 ;PT TO FCB + MVI C,21 ;WRITE BLOCK + CALL BDOS + ORA A + JRNZ CPERR ;COPY ERROR + POP H ;GET PTR TO NEXT BLOCK + POP B ;GET COUNT + DCR B ;COUNT DOWN + JRZ COPY5 ;GET NEXT + PUSH B ;SAVE COUNT + JR COPY5C +; +; STEP 8: CLOSE FILES +; +COPY6: + CALL LOGOLD ;GET USER + LXI D,OLDFCB ;PT TO FCB + MVI C,16 ;CLOSE FILE + CALL BDOS + CALL LOGNEW ;GET USER + LXI D,FCB1 ;PT TO FCB + MVI C,16 ;CLOSE FILE + CALL BDOS + CALL PRINT + DB ' Don','e'+80H + JMP EXIT +; +; LOG INTO USER NUMBER OF OLD FILE +; +LOGOLD: +USROLD EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;GET NUMBER + JMP SETUSR +; +; LOG INTO USER NUMBER OF NEW FILE +; +LOGNEW: +USRNEW EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + MVI A,0 ;GET NUMBER + JMP SETUSR +; + ENDIF ;CPON +; +;Section 5H +;Command: PEEK +;Function: Display memory +; +;Form: +; PEEK startadr - 256 bytes displayed +; PEEK startadr endadr - range of bytes displayed +; + IF PEEKON +PEEK: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WPEEK + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE + LXI H,TBUFF+1 ;FIND FIRST NUMBER +NXTPEEK EQU $+1 ;POINTER FOR IN-THE-CODE MODIFICATION + LXI D,0 ;DEFAULT PEEK ADDRESS IF NONE + CALL SKSP ;SKIP TO NON-BLANK + CNZ HEXNUM ;GET START ADDRESS IF ANY (ELSE DEFAULT) + CALL PRINT + DB ' Pee','k'+80H + CALL ADRAT ;PRINT ADDRESS MESSAGE + PUSH D ;SAVE IT + LXI B,256 ;COMPUTE END ADDRESS + XCHG + DAD B + XCHG ;END ADDRESS IN DE + CALL SKSP ;SKIP TO NON-BLANK + JRZ PEEK1 ;PROCESS + CALL HEXNUM ;GET 2ND NUMBER IN DE +PEEK1: + POP H ;HL IS START ADDRESS, DE IS END ADDRESS + CALL PEEK2 ;DO PEEK + SHLD NXTPEEK ;SET CONTINUED PEEK ADDRESS + JMP EXIT +; +; DISPLAY LOOP +; +PEEK2: + MOV A,D ;SEE IF DE<=HL + CMP H + RC ;OUT OF BOUNDS + JRNZ PEEK2A ;HL > DE + MOV A,E + CMP L + RZ + RC +PEEK2A: + CALL CRLF ;NEW LINE + MOV A,H ;PRINT ADDRESS + CALL PASHC + MOV A,L + CALL PAHC + CALL DASH ;PRINT LEADER + MVI B,16 ;16 BYTES TO DISPLAY + PUSH H ;SAVE START ADDRESS +PEEK3: + MOV A,M ;GET NEXT BYTE + CALL PASHC ;PRINT WITH LEADING SPACE + INX H ;PT TO NEXT + DJNZ PEEK3 + POP H ;PT TO FIRST + MVI B,16 ;16 BYTES + MVI A,' ' ;SPACE AND FENCE + CALL CONOUT + CALL PRINT + DB FENCE+80H +PEEK4: + MOV A,M ;GET NEXT BYTE + MVI C,'.' ;ASSUME DOT + ANI 7FH ;MASK IT + CPI ' ' ;DOT IF LESS THAN SPACE + JRC PEEK5 + CPI 7FH ;DON'T PRINT DEL + JRZ PEEK5 + MOV C,A ;CHAR IN C +PEEK5: + MOV A,C ;GET CHAR + CALL CONOUT ;SEND IT + INX H ;PT TO NEXT + DJNZ PEEK4 + CALL PRINT ;CLOSING FENCE + DB FENCE+80H + CALL BREAK ;ALLOW ABORT + JR PEEK2 +; + ENDIF ;PEEKON +; +; PRINT A AS 2 HEX CHARS +; PASHC - LEADING SPACE +; + IF PEEKON OR POKEON +PASHC: + PUSH PSW ;SAVE A + CALL PRINT + DB ' '+80H + POP PSW +PAHC: + PUSH B ;SAVE BC + MOV C,A ;BYTE IN C + RRC ;EXCHANGE NYBBLES + RRC + RRC + RRC + CALL PAH ;PRINT HEX CHAR + MOV A,C ;GET LOW + POP B ;RESTORE BC AND FALL THRU TO PAH +PAH: + ANI 0FH ;MASK + ADI '0' ;CONVERT TO ASCII + CPI '9'+1 ;LETTER? + JRC PAH1 + ADI 7 ;ADJUST TO LETTER +PAH1: + JMP CONOUT +; + ENDIF ;PEEKON OR POKEON +; +;Section 5I +;Command: POKE +;Function: Place Values into Memory +; +;Form: +; POKE startadr val1 val2 ... +; + IF POKEON +POKE: +; +; CHECK FOR WHEEL APPROVAL IF OPTION ENABLED +; + IF WPOKE + CALL WHLTST + ENDIF ;WHEEL APPROVAL +; + CALL RETSAVE + LXI H,TBUFF+1 ;PT TO FIRST CHAR + CALL SKSP ;SKIP TO NON-BLANK + JRZ NOARGS ;ARG ERROR + CALL HEXNUM ;CONVERT TO NUMBER + CALL PRINT + DB ' Pok','e'+80H + CALL ADRAT ;PRINT AT MESSAGE +; +; LOOP FOR STORING HEX VALUES SEQUENTIALLY VIA POKE +; +POKE1: + PUSH D ;SAVE ADDRESS + CALL SKSP ;SKIP TO NON-BLANK + JZ EXIT ;DONE + CPI '"' ;QUOTED TEXT? + JRZ POKE2 + CALL HEXNUM ;GET NUMBER + MOV A,E ;GET LOW + POP D ;GET ADDRESS + STAX D ;STORE NUMBER + INX D ;PT TO NEXT + JR POKE1 +; +; STORE ASCII CHARS +; +POKE2: + POP D ;GET NEXT ADDRESS + INX H ;PT TO NEXT CHAR +POKE3: + MOV A,M ;GET NEXT CHAR + ORA A ;DONE? + JZ EXIT + STAX D ;PUT CHAR + INX H ;PT TO NEXT + INX D + JR POKE3 +; +; No Argument Error +; +NOARGS: + CALL PRINT + DB ' Arg','?'+80H + JMP EXIT +; + ENDIF ;POKEON +; +;Section 5J +;Command: REG +;Function: Manipulate Memory Registers +; +;Forms: +; REG D or REG <-- Display Register Value +; REG Mreg <-- Decrement Register Value +; REG Preg <-- Increment Register Value +; REG Sreg value <-- Set Register Value +; + IF REGON +REGCMD: + LXI H,FCB1+1 ;PT TO FIRST ARG + MOV A,M ;GET FIRST CHAR + PUSH PSW ;SAVE CHAR + CPI 'A' ;ASSUME DIGIT IF LESS THAN 'A' + JRC REGC1 + INX H ;PT TO DIGIT +REGC1: + MOV A,M ;GET DIGIT + CALL REGPTR ;PT TO REGISTER + POP PSW ;GET CHAR + CPI 'S' ;SET? + JRZ RSET + CPI 'P' ;PLUS? + JRZ RINC + CPI 'M' ;MINUS? + JRZ RDEC +; +; SHOW REGISTER VALUES +; +RSHOW: + XRA A ;SELECT REGISTER 0 + MOV B,A ;COUNTER SET TO 0 IN B + CALL REGP2 ;HL PTS TO REGISTER 0 +RSHOW1: + MOV A,B ;GET COUNTER VALUE + CPI 10 + JZ CRLF ;NEW LINE AND EXIT IF DONE + CALL PRINT + DB ' Reg',' '+80H + MOV A,B ;PRINT REGISTER NUMBER + ADI '0' + CALL CONOUT + CALL PRINT + DB ' ','='+80H + PUSH B ;SAVE COUNTER + CALL REGOUT ;PRINT REGISTER VALUE + POP B ;GET COUNTER + INR B ;INCREMENT COUNTER + MOV A,B ;CHECK FOR NEW LINE + ANI 3 + CZ CRLF + INX H ;PT TO NEXT REGISTER + JR RSHOW1 +; +; INCREMENT REGISTER VALUE +; HL PTS TO MEMORY REGISTER ON INPUT +; +RINC: + INR M ;INCREMENT IT + JR REGOUT ;PRINT RESULT +; +; DECREMENT REGISTER VALUE +; HL PTS TO MEMORY REGISTER ON INPUT +; +RDEC: + DCR M ;DECREMENT VALUE + JR REGOUT ;PRINT RESULT +; +; SET REGISTER VALUE +; HL PTS TO REGISTER ON INPUT +; +RSET: + LXI D,FCB2+1 ;PT TO VALUE + MVI B,0 ;INIT VALUE TO ZERO +RSET1: + LDAX D ;GET NEXT DIGIT + INX D ;PT TO NEXT + SUI '0' ;CONVERT TO BINARY + JRC RSET2 + CPI 10 ;RANGE? + JRNC RSET2 + MOV C,A ;DIGIT IN C + MOV A,B ;MULTIPLY OLD BY 10 + ADD A ;*2 + ADD A ;*4 + ADD B ;*5 + ADD A ;*10 + ADD C ;ADD IN NEW DIGIT + MOV B,A ;RESULT IN B + JR RSET1 +RSET2: + MOV M,B ;SET VALUE +REGOUT: + CALL PRINT ;PRINT LEADING SPACE + DB ' '+80H + MOV A,M ;GET REGISTER VALUE + MVI B,100 ;PRINT 100'S + MVI C,0 ;SET LEADING SPACE FLAG + CALL DECB ;PRINT 100'S + MVI B,10 ;PRINT 10'S + CALL DECB ;PRINT 10'S + ADI '0' ;PRINT 1'S + JMP CONOUT +; +; SUBTRACT B FROM A UNTIL CARRY, THEN PRINT DIGIT COUNT +; +DECB: + MVI D,'0' ;SET DIGIT +DECB1: + SUB B ;SUBTRACT + JRC DECB2 + INR D ;ADD 1 TO DIGIT CHAR + JR DECB1 +DECB2: + ADD B ;ADD BACK IN + MOV E,A ;SAVE A IN E + MOV A,D ;GET DIGIT CHAR + CPI '0' ;LEADING ZERO CHECK + JRNZ DECB3 + MOV A,C ;ANY LEADING DIGIT YET? + ORA A + JRZ DECB4 +DECB3: + MOV A,D ;GET DIGIT CHAR + CALL CONOUT ;PRINT IT + INR C ;SET C<>0 FOR LEADING DIGIT CHECK +DECB4: + MOV A,E ;RESTORE A FOR NEXT ROUND + RET + +; +; SET HL TO POINT TO MEMORY REGISTER WHOSE INDEX IS PTED TO BY HL +; ON INPUT, A CONTAINS REGISTER CHAR +; ON OUTPUT, HL = ADDRESS OF MEMORY REGISTER (REG 0 ASSUMED IF ERROR) +; +REGPTR: + MVI B,0 ;INIT TO ZERO + SUI '0' ;CONVERT + JRC REGP1 + CPI 10 ;RANGE + JRNC REGP1 + MOV B,A ;VALUE IN B +REGP1: + MOV A,B ;VALUE IN A +REGP2: + LXI H,Z3MSG+30H ;PT TO MEMORY REGISTERS + ADD L ;PT TO PROPER REGISTER + MOV L,A + MOV A,H + ACI 0 + MOV H,A ;HL PTS TO REGISTER + RET +; + ENDIF ;REGON + +; +;Section 5K +;Command: WHL/WHLQ +;Function: Set the Wheel Byte on or off +; +;Form: +; WHL -- turn Wheel Byte OFF +; WHL password -- turn Wheel Byte ON if password is correct +; WHLQ -- find out status of Wheel Byte +; + IF WHLON +WHL: + LXI H,FCB1+1 ;PT TO FIRST CHAR + MOV A,M ;GET IT + CPI ' ' ;TURN BYTE OFF IF NO PASSWORD + JRZ WHLOFF + LXI D,WHLPASS + MVI B,8 ;CHECK 8 CHARS +WHL1: + LDAX D ;GET CHAR + CMP M ;COMPARE + JRNZ WHLMSG + INX H ;PT TO NEXT + INX D + DJNZ WHL1 +; +; TURN ON WHEEL BYTE +; + MVI A,0FFH ;TURN ON WHEEL BYTE + JR WHLSET +; +; TURN OFF WHEEL BYTE +; +WHLOFF: + XRA A ;TURN OFF WHEEL BYTE +WHLSET: + STA Z3WHL ;SET WHEEL BYTE AND PRINT MESSAGE +; +; PRINT WHEEL BYTE MESSAGE +; +WHLMSG: + CALL PRINT + DB ' Wheel Byte',' '+80H + LDA Z3WHL ;GET WHEEL BYTE + ORA A ;ZERO IS OFF + JRZ OFFM + CALL PRINT + DB 'O','N'+80H + RET +OFFM: + CALL PRINT + DB 'OF','F'+80H + RET +; +; WHEEL PASSWORD DEFINED FROM SYSRCP.LIB FILE +; + DB 'Z'-'@' ;LEADING ^Z IN CASE OF TYPE +WHLPASS: + WPASS ;USE MACRO +; + ENDIF ;WHLON + +; +;Section 5L +;Command: ECHO +;Function: Echo Text without Interpretation to Console or Printer +; +;Form: +; ECHO text <-- echo text to console +; ECHO $text <-- echo text to printer +; +; Additionally, if a form feed character is encountered in the +; output string, no further output will be done, a new line will be +; issued, and this will be followed by a form feed character. That is: +; +; ECHO $text^L +; +; will cause "text" to be printed on the printer followed by CR, LF, FF. +; +ECHO: + LXI H,TBUFF+1 ;PT TO FIRST CHAR +ECHO1: + MOV A,M ;SKIP LEADING SPACES + INX H ;PT TO NEXT + CPI ' ' + JRZ ECHO1 +; + IF ECHOLST + MOV B,A ;CHAR IN B + CPI '$' ;PRINT FLAG? + JRZ ECHO2 + ENDIF ;ECHOLST +; + DCX H ;PT TO CHAR +; +; LOOP TO ECHO CHARS +; +ECHO2: + MOV A,M ;GET CHAR + ORA A ;EOL? + JRZ ECHO4 +; + IF ECHOLST + CPI FF ;FORM FEED? + JRZ ECHO3 + ENDIF ;ECHOLST +; +ECHO2C: + CALL ECHOUT ;SEND CHAR + INX H ;PT TO NEXT + JR ECHO2 +; +; FORM FEED - SEND NEW LINE FOLLOWED BY FORM FEED IF PRINTER OUTPUT +; + IF ECHOLST +ECHO3: + MOV A,B ;CHECK FOR PRINTER OUTPUT + CPI '$' + JRNZ ECHOFF ;SEND FORM FEED NORMALLY IF NOT PRINTER + CALL ECHONL ;SEND NEW LINE + MVI A,FF ;SEND FORM FEED + JR ECHOUT +; +; SEND FORM FEED CHAR TO CONSOLE +; +ECHOFF: + MVI A,FF ;GET CHAR + JR ECHO2C + ENDIF ;ECHOLST +; +; END OF PRINT LOOP - CHECK FOR PRINTER TERMINATION +; +ECHO4: + IF NOT ECHOLST +; + RET +; + ELSE +; + MOV A,B ;CHECK FOR PRINTER OUTPUT + CPI '$' + RNZ ;DONE IF NO PRINTER OUTPUT +; +; OUTPUT A NEW LINE +; +ECHONL: + MVI A,CR ;OUTPUT NEW LINE ON PRINTER + CALL ECHOUT + MVI A,LF ;FALL THRU TO ECHOUT +; + ENDIF ;NOT ECHOLST +; +; OUTPUT CHAR TO PRINTER OR CONSOLE +; +ECHOUT: + MOV C,A ;CHAR IN C + PUSH H ;SAVE HL + PUSH B ;SAVE BC + LXI D,0CH-3 ;OFFSET FOR CONSOLE OUTPUT +; + IF ECHOLST + MOV A,B ;CHECK FOR PRINTER + CPI '$' + JRNZ ECHOUT1 + INX D ;ADD 3 FOR PRINTER OFFSET + INX D + INX D +; + ENDIF ;ECHOLST +; +; OUTPUT CHAR IN C WITH BIOS OFFSET IN DE +; +ECHOUT1: + CALL BIOUT ;BIOS OUTPUT + POP B ;RESTORE BC,HL + POP H + RET + +; +; OUTPUT CHAR IN C TO BIOS WITH OFFSET IN DE +; +BIOUT: + LHLD WBOOT+1 ;GET ADDRESS OF WARM BOOT + DAD D ;PT TO ROUTINE + PCHL ;JUMP TO IT + +; +; ** SUPPORT UTILITIES ** +; + +; +; CHECK FOR USER INPUT; IF ^C, RETURN WITH Z +; +BREAK: + PUSH H ;SAVE REGS + PUSH D + PUSH B + MVI E,0FFH ;GET CHAR IF ANY + MVI C,6 ;CONSOLE STATUS CHECK + CALL BDOS + POP B ;RESTORE REGS + POP D + POP H + CPI CTRLC ;CHECK FOR ABORT + JZ EXIT ;EXIT + CPI CTRLX ;SKIP? + RET + +; +; COPY HL TO DE FOR B BYTES +; +LDIR: + MOV A,M ;GET + STAX D ;PUT + INX H ;PT TO NEXT + INX D + DJNZ LDIR ;LOOP + RET + +; +; PRINT FILE NOT FOUND MESSAGE +; +PRFNF: + CALL PRINT + DB ' No File','s'+80H + JMP EXIT + +; +; OUTPUT NEW LINE TO CON: +; +CRLF: + MVI A,CR + CALL CONOUT + MVI A,LF + JMP CONOUT + +; +; SEARCH FOR FIRST AND NEXT +; +SEARF: + PUSH B ; SAVE COUNTER + PUSH H ; SAVE HL + MVI C,17 ; SEARCH FOR FIRST FUNCTION +SEARF1: + LXI D,FCB1 ; PT TO FCB + CALL BDOS + INR A ; SET ZERO FLAG FOR ERROR RETURN + POP H ; GET HL + POP B ; GET COUNTER + RET +SEARN: + PUSH B ; SAVE COUNTER + PUSH H ; SAVE HL + MVI C,18 ; SEARCH FOR NEXT FUNCTION + JR SEARF1 + +; +; CONSOLE INPUT +; +CONIN: + PUSH H ; SAVE REGS + PUSH D + PUSH B + MVI C,1 ; INPUT + CALL BDOS + POP B ; GET REGS + POP D + POP H + ANI 7FH ; MASK MSB + CPI 61H + RC + ANI 5FH ; TO UPPER CASE + RET + +; +; LOG INTO USER AREA CONTAINED IN FCB1 +; +LOGUSR: + LDA FCB1+13 ;GET USER NUMBER +SETUSR: + MOV E,A + MVI C,32 ;USE BDOS FCT + JMP BDOS + +; +; PRINT FILE NAME PTED TO BY HL +; +PRFN: + CALL PRINT ;LEADING SPACE + DB ' '+80H + MVI B,8 ;8 CHARS + CALL PRFN1 + MVI A,'.' ;DOT + CALL CONOUT + MVI B,3 ;3 CHARS +PRFN1: + MOV A,M ; GET CHAR + INX H ; PT TO NEXT + CALL CONOUT ; PRINT CHAR + DJNZ PRFN1 ; COUNT DOWN + RET + +; +; SAVE RETURN ADDRESS +; +RETSAVE: + POP D ; GET RETURN ADDRESS + POP H ; GET RETURN ADDRESS TO ZCPR3 + SHLD Z3RET ; SAVE IT + PUSH H ; PUT RETURN ADDRESS TO ZCPR3 BACK + PUSH D ; PUT RETURN ADDRESS BACK + RET + +; +; EXIT TO ZCPR3 +; +EXIT: +Z3RET EQU $+1 ; POINTER TO IN-THE-CODE MODIFICATION + LXI H,0 ; RETURN ADDRESS + PCHL ; GOTO ZCPR3 + +; +; TEST WHEEL BYTE FOR APPROVAL +; IF WHEEL BYTE IS 0 (OFF), ABORT WITH A MESSAGE (FLUSH RET ADR AND EXIT) +; + IF WHEEL ;IF ANY WHEEL OPTION IS RUNNING +WHLTST: + LDA Z3WHL ;GET WHEEL BYTE + ORA A ;ZERO? + RNZ + POP PSW ;CLEAR STACK + CALL PRINT + DB ' No Whee','l'+80H + RET + ENDIF ;WHEEL + +; +; PRINT A DASH +; + IF LTON OR PEEKON +DASH: + CALL PRINT + DB ' -',' '+80H + RET +; + ENDIF ;LTON OR PEEKON +; +; PRINT ADDRESS MESSAGE +; PRINT ADDRESS IN DE +; + IF PEEKON OR POKEON +ADRAT: + CALL PRINT + DB ' at',' '+80H + MOV A,D ;PRINT HIGH + CALL PAHC + MOV A,E ;PRINT LOW + JMP PAHC +; +; EXTRACT HEXADECIMAL NUMBER FROM LINE PTED TO BY HL +; RETURN WITH VALUE IN DE AND HL PTING TO OFFENDING CHAR +; +HEXNUM: + LXI D,0 ;DE=ACCUMULATED VALUE + MVI B,5 ;B=CHAR COUNT +HNUM1: + MOV A,M ;GET CHAR + CPI ' '+1 ;DONE? + RC ;RETURN IF SPACE OR LESS + INX H ;PT TO NEXT + SUI '0' ;CONVERT TO BINARY + JRC NUMERR ;RETURN AND DONE IF ERROR + CPI 10 ;0-9? + JRC HNUM2 + SUI 7 ;A-F? + CPI 10H ;ERROR? + JRNC NUMERR +HNUM2: + MOV C,A ;DIGIT IN C + MOV A,D ;GET ACCUMULATED VALUE + RLC ;EXCHANGE NYBBLES + RLC + RLC + RLC + ANI 0F0H ;MASK OUT LOW NYBBLE + MOV D,A + MOV A,E ;SWITCH LOW-ORDER NYBBLES + RLC + RLC + RLC + RLC + MOV E,A ;HIGH NYBBLE OF E=NEW HIGH OF E, + ; LOW NYBBLE OF E=NEW LOW OF D + ANI 0FH ;GET NEW LOW OF D + ORA D ;MASK IN HIGH OF D + MOV D,A ;NEW HIGH BYTE IN D + MOV A,E + ANI 0F0H ;MASK OUT LOW OF E + ORA C ;MASK IN NEW LOW + MOV E,A ;NEW LOW BYTE IN E + DJNZ HNUM1 ;COUNT DOWN + RET +; +; NUMBER ERROR +; +NUMERR: + CALL PRINT + DB ' Num','?'+80H + JMP EXIT +; +; SKIP TO NEXT NON-BLANK +; +SKSP: + MOV A,M ;GET CHAR + INX H ;PT TO NEXT + CPI ' ' ;SKIP SPACES + JRZ SKSP + DCX H ;PT TO GOOD CHAR + ORA A ;SET EOL FLAG + RET +; + ENDIF ;PEEKON OR POKEON +; +; Test File in FCB for unambiguity and existence, ask user to delete if so +; Return with Z flag set if R/O or no permission to delete +; + IF RENON OR CPON +EXTEST: + CALL AMBCHK ;AMBIGUOUS FILE NAMES NOT ALLOWED + CALL SEARF ;LOOK FOR SPECIFIED FILE + JRZ EXOK ;OK IF NOT FOUND + CALL GETSBIT ;POSITION INTO DIR + INX D ;PT TO FILE NAME + XCHG ;HL PTS TO FILE NAME + PUSH H ;SAVE PTR TO FILE NAME + CALL PRFN ;PRINT FILE NAME + POP H + CALL ROTEST ;CHECK FOR R/O + JRNZ EXER + CALL ERAQ ;ERASE? + JRNZ EXER ;RESTART AS ERROR IF NO + LXI D,FCB1 ;PT TO FCB1 + MVI C,19 ;DELETE FILE + CALL BDOS +EXOK: + XRA A + DCR A ;NZ = OK + RET +EXER: + XRA A ;ERROR FLAG - FILE IS R/O OR NO PERMISSION + RET + +; +; CHECK FOR AMBIGUOUS FILE NAME IN FCB1 +; RETURN Z IF SO +; +AMBCHK: + LXI H,FCB1+1 ;PT TO FCB +; +; CHECK FOR AMBIGUOUS FILE NAME PTED TO BY HL +; +AMBCHK1: + PUSH H + MVI B,11 ;11 BYTES +AMB1: + MOV A,M ;GET CHAR + ANI 7FH ;MASK + CPI '?' + JRZ AMB2 + INX H ;PT TO NEXT + DJNZ AMB1 + DCR B ;SET NZ FLAG + POP D + RET +AMB2: + POP H ;PT TO FILE NAME + CALL PRFN + CALL PRINT + DB ' is AF','N'+80H + JMP EXIT +; + ENDIF ;RENON OR CPON +; +; CHECK USER TO SEE IF HE APPROVES ERASE OF FILE +; RETURN WITH Z IF YES +; + IF RENON OR CPON OR ERAON OR PROTON +ERAQ: + CALL PRINT + DB ' - Eras','e'+80H +ERAQ1: + CALL PRINT + DB ' (Y/N)?',' '+80H + CALL CONIN ;GET RESPONSE + CPI 'Y' ;KEY ON YES + RET +; + ENDIF ;RENON OR CPON OR ERAON OR PROTON +; +; TEST FILE PTED TO BY HL FOR R/O +; NZ IF R/O +; + IF RENON OR ERAON OR CPON +ROTEST: + PUSH H ;ADVANCE TO R/O BYTE + LXI B,8 ;PT TO 9TH BYTE + DAD B + MOV A,M ;GET IT + ANI 80H ;MASK BIT + PUSH PSW + LXI H,ROMSG + CNZ PRINT1 ;PRINT IF NZ + POP PSW ;GET FLAG + POP H ;GET PTR + RET +ROMSG: + DB ' is R/','O'+80H +; + ENDIF ;RENON OR ERAON OR CPON +; +; INIT FCB1, RETURN WITH DE PTING TO FCB1 +; + IF ERAON OR LTON OR CPON +INITFCB1: + LXI H,FCB1 ;PT TO FCB +INITFCB2: + PUSH H ;SAVE PTR + LXI B,12 ;PT TO FIRST BYTE + DAD B + MVI B,24 ;ZERO 24 BYTES + XRA A ;ZERO FILL + CALL FILLP ;FILL MEMORY + POP D ;PT TO FCB + RET +; + ENDIF ;ERAON OR LTON OR CPON +; +; BUFFERS +; +NXTFILE: + DS 2 ;PTR TO NEXT FILE IN LIST + +; +; SIZE ERROR TEST +; + IF ($ GT (RCP + RCPS*128)) +SIZERR EQU NOVALUE ;RCP IS TOO LARGE FOR BUFFER + ENDIF + +; +; END OF SYS.RCP +; + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSRCP.HLP b/Images/Source/hd0/s0/u15/SYSRCP.HLP new file mode 100644 index 00000000..21fd7a79 --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSRCP.HLP @@ -0,0 +1,229 @@ +The Commands in SYSRCP +CP Copy a File +DIR Display Directory +ECHO Echo Command Tail +ERA Erase Files +LIST/TYPE Display a File on Printer/CRT +NOTE Comment +PEEK/POKE Display/Alter Memory +PROT Protect Files +REG ZCPR3 Register Display/Alter +REN Rename a File +WHL Set/Reset Wheel Byte +:The Commands in SYSRCP + + Thå  standarä  ZCPR³  Systeí Residenô  Commanä  Packagå +(RCP© distributeä witè thå ZCPR³ systeí containó á numbeò oæ +commandó  whicè  maù  bå enableä aô thå  discretioî  oæ  thå +installer. These commands are described in the HELP file. + + Alì  commandó anä optionó  arå  installation-dependent® +Thå  SHO×  commanä maù bå useä tï displaù thå nameó  oæ  thå +available commands in the currently-loaded RCP. + +:CP Command + Transient Counterpart: MCOPY + + Thå  CР commanä  copieó onå filå  froí  onå  DÕ  tï +anotheò  oò  intï thå samå DÕ undeò á differenô  name®  Thå +syntaø is: + + CP dir:ufn=dir:ufn + + Examples: + CP f1.txt=f2.txt + CP a15:=f1.txt + CP a15:f2.txt=c5:f1.txt + +:DIR Command + Transient Counterpart: DIR, XD, XDIR + + Thå  DIÒ commanä displayó thå directorù oæ fileó  iî +alphabeticaì ordeò acrosó thå lineó tï thå user® Thå syntaø +is: + + DIR dir:afn o + + Options are: + S - Display System Files Only + A - Display Both Non-System and System Files + + Examples: + DIR b7: + DIR root:*.com + +:ECHO Command Š Transient Counterpart: ECHO + + ECHÏ  ió  usefuì iî issuinç botè  messageó  (tï  thå +user¬ saù withiî á commanä filå durinç execution© anä escapå +sequences®  ECHÏ  caî  senä itó outpuô tï thå  consolå  (bù +default© oò tï thå printeò (iæ thå firsô non-blanë characteò +ió  á  dollaò sign)®  Iô useó BIOÓ calls¬  sï  alì  controì +characteró   arå  passeä  exactly®   Hence¬   console-leveì +programminç oæ sucè deviceó (CRTó anä Printers© ió possible. + + Examples: + + ECHO $this is a test + -- THIS IS A TEST is printed on printer + + ECHO this is a test + -- THIS IS A TEST is printed on console + +:ERA Command + Transient Counterpart: ERASE + + Thå ERÁ commanä eraseó files® Thå syntaø is: + + ERA dir:afn +or: + ERA dir:afn I -- Inspect files first + + Examples: + ERA b7:*.bak + ERA text:*.tmp i + +:LIST and TYPE Commands + Transient Counterpart: PRINT and PAGE + + Thå  TYPÅ  commanä displayó á grouð oæ fileó oî  thå +CRÔ  whilå thå LISÔ commanä printó á grouð oæ fileó  oî  thå +Printer® Thå syntaø is: + + TYPE dir:afn o -or- LIST dir:afn + + Option to TYPE: + P - Do NOT Page Output to CRT + + Examples: + TYPE b7:*.asm + LIST text:*.txt + +:NOTE Command + Transient Counterpart: NOTE + + NOTÅ ió simplù á NOÐ (dï nothing© commanä whicè  caî +bå useä tï placå commentó intï multiplå commanä lines®  Foò +instance¬ iî thå followinç line: + + dir *.comnote this is a dir displayera *.bak Š +thå  DIÒ anä ERÁ commandó perforí normally¬  anä NOTÅ simplù +doeó nothinç verù efficiently. + +:PEEK and POKE Commands + Transient Counterpart: None (Subset of DDT) + + Thå  PEEË commanä allowó thå useò tï examinå á chunë +oæ  memory®  Iæ thå useò simplù typeó "P¢ witè nï  address¬ +thå  nexô 25¶ byteó oæ memorù arå displayed®  Iæ  thå  useò +typeó  "Р address"¬  25¶  byteó oæ memorù startinç  aô  thå +indicateä addresó arå displayed® Iæ thå useò typeó "Ð addr± +addr2"¬  memorù  iî thió addresó rangå  ió  displayed®  Thå +syntax: + + P +or: + P address +or: + P addr1 addr2 + + + Thå  POKÅ  commanä  allowó thå useò  tï  changå  thå +contenô  oæ  memory®  Thå useò musô specifù aî  addresó  tï +POKE¬ anä twï basiã formó arå allowed: + + POKE address val1 val2 ... valn +and: + POKE address "character string + +Thå  twï  formó maù bå intermixeä witè leadinç valueó anä  á +trailinç characteò string: + + POKE address val1 val2 ... valn "character string + + + Examples: + P + P f400 + P f400 f425 + POKE f400 0 1 2 + POKE f400 "this is a test + POKE f400 1 2 3 "hello, world + +:PROT Command + Transient Counterpart: PROTECT + + Thå PROÔ commanä setó thå filå protectioî attributeó +foò á grouð oæ files®  Thå R/Ï anä Systeí attributeó maù bå +seô witè thå Ò anä Ó options¬  resp¬  giveî iî anù ordeò  aó +"RS¢ oò "SR"®  Omissioî oæ onå oæ theså optionó toggleó thå +oppositå  (ie¬  omissioî  oæ Ò makeó thå  fileó  R/W)®  Thå +syntax: + + PROT dir:afn +or: + PROT dir:afn R +or: + PROT dir:afn S +or: + PROT dir:afn RS -or- PROT dir:afn SR + + Examples: + PROT b7:*.com rs + PROT text:*.txt +:REG Command + Transient Counterpart: REG + + The REG command forms are: + REG D or REG = display values of all registers + REG Mreg = subtract 1 from register (Minus) + REG Preg = add 1 to register (Plus) + REG Sreg value = set value of indicated register + + Á registeò ió á ZCPR³ registeò buffer¬  indicateä bù +á digiô froí ° tï 9. + + Examples: + REG S0 4 -- reg 0 = 4 + REG S5 -- reg 5 = 0 + REG P -- reg 0 = reg 0 + 1 + REG P5 -- reg 5 = reg 5 + 1 + REG M9 -- reg 9 = reg 9 - 1 + REG D -- show values + REG -- show values +:REN Command + Transient Counterpart: RENAME + + Thå  REΠ commanä  changeó thå namå oæ onå  filå  tï +another® Thå syntax: Š + REN dir:ufn1=ufn2 + + Examples: + REN newfile.txt=oldfile.txt + REN root:sys.rcp=sys1.rcp + +:WHL Command + Transient Counterpart: WHEEL + + Thå  WHÌ commanä ió useä tï turî ofæ thå Wheeì  Bytå +(makå thå useò non-priveleged© oò tï turî oî thå Wheeì  Bytå +(makå thå useò priveleged)® Thå syntaø is: + + WHL -- make user non-priveleged +or: + WHL password -- make user priveleged + + Also¬  thió  equatå enableó thå WHLÑ command¬  whicè +displayó thå statå oæ thå Wheeì Byte® Thå syntaø is: + + WHLQ + + The Wheel password is built into the RCP. + + + Examples: + WHL + WHL mypass + WHLQ + + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSRCP1.LIB b/Images/Source/hd0/s0/u15/SYSRCP1.LIB new file mode 100644 index 00000000..dce5873b --- /dev/null +++ b/Images/Source/hd0/s0/u15/SYSRCP1.LIB @@ -0,0 +1,367 @@ +; SYSTEM SEGMENT: SYS1.RCP +; SYSTEM: ZCPR3 +; WRITTEN BY: RICHARD CONN + +; +; PROGRAM HEADER: SYSRCP.LIB +; AUTHOR: RICHARD CONN +; + +; +; This program header selects the commands to be incorporated into +; SYS.RCP. It also allows selection of some options for these commands. +; + +; +; 0. ID +; +; The following ID is a single character, displayed as a part of +; the RCP ID, which distinguishes this RCP from others made from the same +; base file (SYSRCP.ASM). +; +RCPID EQU 'A' + +; +; 1. CP COMMAND +; TRANSIENT COUNTERPART: MCOPY +; +; The following equate determines if the CP command is made available. +; Setting this equate to TRUE enables the CP command. +; +; The CP command copies one file from one DU to another or into the +; same DU under a different name. The syntax is: +; +; CP dir:ufn=dir:ufn +; +; Examples: +; CP f1.txt=f2.txt +; CP a15:=f1.txt +; CP a15:f2.txt=c5:f1.txt +; +CPON EQU TRUE + +; +; 2. DIR COMMAND +; TRANSIENT COUNTERPART: DIR, XD, XDIR +; +; The following equate determines if the DIR command is made available. +; Setting this equate to TRUE enables the DIR command. +; +; The DIR command displays the directory of files in alphabetical order +; across the lines to the user. The syntax is: +; +; DIR dir:afn +; +; Examples: +; DIR b7: +; DIR root:*.com +; +DIRON EQU FALSE + +; +; The DIR command allows two options. One is a flag to tell it +; to look at both System and Non-System files, and the other is a flag +; to tell it to look only at System files. By default, DIR looks at +; Non-System files. +; +; SYSFLG defines the character used to instruct DIR to look at +; both System and Non-System files. The recommended value is 'A' for All. +; +; SOFLG defines the character used to instruct DIR to look at +; only System files. The recommended value is 'S' for System. +; +SYSFLG EQU 'A' +SOFLG EQU 'S' + +; +; The following equate determines if the directory displays are +; sorted by filename and filetype or by filetype and filename. Set SORTNT +; to TRUE to sort by name and type, FALSE to sort by type and name. +; +SORTNT EQU TRUE + +; +; The following equates define some features of the directory display. +; If WIDE is TRUE, the file names are spaced farther abort; if WIDE is FALSE, +; they are closer together (for a 64-column display). FENCE defines the +; character used to separate the file name entries in the display. +; +WIDE EQU TRUE +FENCE EQU '|' + +; +; 3. ERA COMMAND +; TRANSIENT COUNTERPART: ERASE +; +; The following equate determines if the ERA command is made available. +; Setting this equate to TRUE enables the ERA command. +; +; The ERA command erases files. The syntax is: +; +; ERA dir:afn +; or: +; ERA dir:afn I -- Inspect +; +; Examples: +; ERA b7:*.bak +; ERA text:*.tmp i +; +ERAON EQU TRUE + +; +; 4. LIST and TYPE COMMANDS +; TRANSIENT COUNTERPART: PRINT and PAGE +; +; The following equate determines if the LIST and TYPE commands are +; made available. Setting this equate to TRUE enables these commands. +; +; The LISTON equate can disable the LIST command without affecting the +; TYPE command. +; +; The TYPE command displays a group of files on the CRT while the +; LIST command prints a group of files on the Printer. The syntax is: +; +; TYPE dir:afn -or- LIST dir:afn +; +; Examples: +; TYPE b7:*.asm +; LIST text:*.txt +; +LTON EQU TRUE +LISTON EQU TRUE + +; +; TYPE can be made to page or not page by default. If PGDFLT is +; TRUE, TYPE pages by default and does not page if the PGFLG character +; (recommended to be 'P') is used. If PGDFLT is FALSE, TYPE pages only +; when the PGDFLG character is seen in the command line. +; +PGDFLT EQU TRUE +PGDFLG EQU 'P' + +; +; NLINES defines the number of lines on the user's CRT screen. +; This is usually 24. +; +NLINES EQU 24 + + +; +; 5. PEEK and POKE COMMANDS +; TRANSIENT COUNTERPART: None (Subset of DDT) +; +; The following equates determine if the PEEK and POKE commands are +; made available. Setting these equates to TRUE enables these commands. +; +; The PEEK command allows the user to examine a chunk of memory. +; If the user simply types "P" with no address, the next 256 bytes of +; memory are displayed. If the user types "P address", 256 bytes of memory +; starting at the indicated address are displayed. If the user types +; "P addr1 addr2", memory in this address range is displayed. The syntax: +; +; P +; or: +; P address +; or: +; P addr1 addr2 +; +; The POKE command allows the user to change the content of memory. +; The user must specify an address to POKE, and two basic forms are allowed: +; +; POKE address val1 val2 ... valn +; and: +; POKE address "character string +; The two forms may be intermixed with leading values and a trailing character +; string: +; POKE address val1 val2 ... valn "character string +; +; Examples: +; P +; P f400 +; P f400 f425 +; POKE f400 0 1 2 +; POKE f400 "this is a test +; POKE f400 1 2 3 "hello, world +; +PEEKON EQU TRUE +POKEON EQU TRUE + +; +; 6. PROT COMMAND +; TRANSIENT COUNTERPART: PROTECT +; +; The following equate determines if the PROT command is made available. +; Setting this equate to TRUE enables the PROT command. +; +; The PROT command sets the file protection attributes for a group of +; files. The R/O and System attributes may be set with the R and S options, +; resp, given in any order as "RS" or "SR". Omission of one of these options +; toggles the opposite (ie, omission of R makes the files R/W). The syntax: +; +; PROT dir:afn +; or: +; PROT dir:afn R +; or: +; PROT dir:afn S +; or: +; PROT dir:afn RS -or- PROT dir:afn SR +; +; Examples: +; PROT b7:*.com rs +; PROT text:*.txt +; +PROTON EQU TRUE + +; +; 7. REN COMMAND +; TRANSIENT COUNTERPART: RENAME +; +; The following equate determines if the REN command is made available. +; Setting this equate to TRUE enables the REN command. +; +; The REN command changes the name of one file to another. The syntax: +; +; REN dir:ufn1=ufn2 +; +; Examples: +; REN newfile.txt=oldfile.txt +; REN root:sys.rcp=sys1.rcp +; +RENON EQU TRUE + +; +; 8. The REG COMMAND +; TRANSIENT COUNTERPART: REG +; +; The following equate determines if the REG command is made +; available. Setting this equate to TRUE enables the REG command. +; +; The REG command forms are: +; REG D or REG = display values of all registers +; REG Mreg = subtract 1 from register (Minus) +; REG Preg = add 1 to register (Plus) +; REG Sreg value = set value of indicated register +; +; A register is a ZCPR3 register buffer, indicated by a digit from +; 0 to 9. +; +; Examples: +; REG S0 4 -- reg 0 = 4 +; REG S5 -- reg 5 = 0 +; REG P -- reg 0 = reg 0 + 1 +; REG P5 -- reg 5 = reg 5 + 1 +; REG M9 -- reg 9 = reg 9 - 1 +; REG D -- show values +; REG -- show values +; +REGON EQU FALSE + + +; +; 9. WHL COMMAND +; TRANSIENT COUNTERPART: WHEEL +; +; The following equate determines if the WHL command is made available. +; Setting this equate to TRUE enables the WHL command. +; +; The WHL command is used to turn off the Wheel Byte (make the user +; non-priveleged) or to turn on the Wheel Byte (make the user priveleged). +; The syntax is: +; +; WHL -- make user non-priveleged +; or: +; WHL password -- make user priveleged +; +; Also, this equate enables the WHLQ command, which displays the +; state of the Wheel Byte. The syntax is: +; +; WHLQ +; +; Examples: +; WHL +; WHL mypass +; WHLQ +; +WHLON EQU FALSE + +; +; The following equate defines the password to be used by the WHL +; command. It must always be 8 bytes long (trailing spaces allowed) and +; must be upper-case. +; +WPASS MACRO + DB 'SYSTEM ' ;8 characters + ENDM + +; +; The Wheel equate table enables the WHEEL facility of ZCPR3. With this +; facility, a WHEEL BYTE, which exists somewhere in memory, is examined +; before a set of installer-selected commands are executed. +; If this byte is not zero, then the command proceeds. If it is zero, +; then the command is not allowed to proceed and is exited with an error +; message. +; +; The following set of equates make each of the indicated commands +; selectable to respond to the Wheel Byte or not. For instance, if +; WERA=TRUE, then it responds to the Wheel Byte; if WERA=FALSE, it does not. +; +; These options will only be effective if a Wheel Byte is Defined +; (Z3WHL NE 0) +; +WCP equ FALSE ;Make CP a Wheel-Oriented Command +WDIR equ FALSE ; " DIR " " " " +WERA equ FALSE ; " ERA " " " " +WLIST equ FALSE ; " LIST " " " " +WPEEK equ FALSE ; " PEEK " " " " +WPOKE equ FALSE ; " POKE " " " " +WPROT equ FALSE ; " PROT " " " " +WREG equ FALSE ; " REG " " " " +WREN equ FALSE ; " REN " " " " +WTYPE equ FALSE ; " TYPE " " " " + +WHEEL set WCP OR WDIR OR WERA OR WLIST OR WPEEK OR WPOKE +WHEEL set WHEEL OR WPROT OR WREG OR WREN OR WTYPE + + +; +; 10. NOTE COMMAND +; TRANSIENT COUNTERPART: NOTE +; +; NOTE is simply a NOP (do nothing) command which can be used +; to place comments into multiple command lines. For instance, in the +; following line: +; +; dir *.com;note this is a dir display;era *.bak +; +; the DIR and ERA commands perform normally, and NOTE simply does +; nothing very efficiently. +; +; Setting the following equate to TRUE enables the NOTE Command. +; +NOTEON EQU TRUE + + +; +; 11. ECHO COMMAND +; TRANSIENT COUNTERPART: ECHO +; +; The following equate enables the ECHO command. +; +; ECHO is useful in issuing both messages (to the user, say within +; a command file during execution) and escape sequences. ECHO can send its +; output to the console (by default) or to the printer (if the first non- +; blank character is a dollar sign). It uses BIOS calls, so all control +; characters are passed exactly. Hence, console-level programming of such +; devices (CRTs and Printers) is possible. +; +; The ECHOLST equate determines if ECHO is allowed to direct its output +; to the printer. If ECHOLST is TRUE, ECHO may direct its output to the +; printer via the $ prefix character in the text. +; +ECHOON EQU TRUE +ECHOLST EQU TRUE + +; +; END of SYS.RCP CUSTOMIZATION +; + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/SYSRCP11.LBR b/Images/Source/hd0/s0/u15/SYSRCP11.LBR new file mode 100644 index 0000000000000000000000000000000000000000..b4c48dd6fa2781db50f5908a7faad3d9ad05b917 GIT binary patch literal 33408 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 GpZ^6Kxy| AND WAIT FOR + CALL CMD$SEND1 ; SEND CHAR WITH ECHO + POP AF ; RESTORE A + RET +; +; WAIT FOR RESPONSE FROM SMARTMODEM COMMAND +; RETURN DIGIT UNLESS ERROR: +; A=0FFH if TIMEOUT +; A=0FEH if USER ABORT +; +ssresponse: + push hl + ld hl,500 ; super short delay for response (.5 sec) + jr respe +SRESPONSE: + PUSH HL + LD HL,2000 ; SHORT DELAY FOR RESPONSE (2 secs) + JR RESPE +RESPONSE: + PUSH HL ; SAVE HL + LD HL,30000 ; LARGE DELAY FOR RESPONSE (30 secs) +RESPE: + LD (RESP$DELAY),HL +RESP1: + LD HL,(RESP$DELAY) ; DELAY FOR RESPONSE +RESP2: + CALL M1$ISTAT ; INPUT CHAR FROM MODEM? + JR NZ,RESPM + LD A,FS$CST ; CONSOLE STATUS + CALL TI$FS ; USER ABORT? + JR Z,RESP3 + ld a,fs$wait1ms + call ti$fs ; wait 0.001 sec + DEC HL ; COUNT DOWN + LD A,H ; DONE? + OR L + JR NZ,RESP2 + POP HL + OR 0FFH ; TIMEOUT CODE + RET +RESP$DELAY: + DS 2 ; RESPONSE DELAY +; +; PROCESS USER CHAR +; +RESP3: + LD A,FS$CIN ; GET USER INPUT + CALL TI$FS ; USE FILER$SERVER + AND 7FH ; MASK + CP CTRLC ; ABORT? + JR NZ,RESP2 + POP HL ; RESTORE HL + LD A,0FEH ; USER ABORT + OR A + RET +; +; PROCESS MODEM CHAR +; +RESPM: + CALL M1$IN ; GET CHAR + AND 7FH ; MASK + JR Z,RESP1 ; FLUSH NULL + POP HL ; RESTORE HL + RET +; +; ATTRACT ATTENTION OF SMARTMODEM +; +ATTENTION: + CALL M1$CST ; DO NOTHING IF NO CARRIER + RET Z + CALL FLUSH ; FLUSH ANY CHAR + LD A,0 ; SEND AT LEAST ONE CHAR FIRST + CALL M1$OUT + LD A,FS$WAIT1S ; WAIT 1 SEC + CALL TI$FS ; USE FILER$SERVER + LD A,'+' ; ATTRACT MODEM'S ATTENTION + CALL M1$OUT + CALL M1$OUT + CALL M1$OUT + CALL sresponse ; WAIT FOR RESPONSE OR TIMEOUT + RET +; +; FLUSH ANY GARBAGE CHARS FROM COMMAND LINE +; +FLUSH: + CALL M1$ISTAT ; ANY CHARS? + RET Z ; RETURN IF NONE + CALL M1$IN ; GET CHAR + RET +; +; Telephone Interface Initialization +; Function: Initialize the Modem/UART Interface +; Input Parameters: None +; Output Parameters: None +; +STI$INIT: + PUSH AF ; SAVE A + CALL ATTENTION ; GET MODEM'S ATTENTION + LD A,'Z' ; RESET MODEM + CALL CMD$SEND ; SEND COMMAND + CALL CMD$END ; SEND + CALL OK ; GET OK/USER ABORT + CP 0FEH ; USER ABORT? + JR Z,STI$INI1 + LD A,'V' ; SET NON-VERBOSE MODE + CALL CMD$SEND ; SEND COMMAND + LD A,'0' ; V0 COMMAND + CALL CMD$SEND1 + LD A,'X' ; SET EXTENDED COMMAND SET + CALL CMD$SEND1 ; SEND COMMAND + LD A,'4' ; Enable result codes 0 thru 10 + CALL CMD$SEND1 + ld a,'S' ; disable auto-answer if turned on somehow + call cmd$send1 + ld a,'0' + call cmd$send1 + ld a,'=' + call cmd$send1 + ld a,'0' + call cmd$send1 + CALL CMD$END ; SEND + CALL OK1 ; GET OK/USER ABORT +STI$INI1: + CALL FLUSH ; FLUSH RESPONSES + POP AF ; RESTORE A + RET +; +; GET RESPONSE CODE OF 'OK' OR '0' +; +OK: + CALL sresponse ; GET FIRST CHAR + CP 0FEH ; USER ABORT? + RET Z + CP '0' ; DIGIT '0'? + JR Z,OK1A + CP 'O' ; LETTER 'O'? + JR NZ,OK + CALL sresponse ; GET 'K' + CP 0FEH ; USER ABORT? + RET Z + CALL sresponse ; GET + CP 0FEH ; USER ABORT? + RET Z + CALL sresponse ; GET + RET +; +; GET RESPONSE CODE OF '0' +; +OK1: + CALL sresponse ; GET FIRST CHAR + CP 0FEH ; USER ABORT? + RET Z + CP '0' ; OK? + JR NZ,OK1 +OK1A: + CALL sresponse ; GET + RET +; +; Prepare Modem to Answer Phone +; Function: To condition modem for answering phone +; Input Parameters: None +; Output Parameters: None +; +STI$PREPANS: + PUSH AF + LD A,3 ; SELECT 2400 BAUD + LD (STI$BRATE),A ; SET FLAG + CALL M1$INIT + POP AF + RET +; +; Set Modem to Answer +; Function: Set Modem to Answer Mode +; Input Parameters: None +; Output Parameters: A=0 IF NOT SUCCESSFUL, A=0FFH IF SUCCESSFUL +; +STI$ANS: + XOR A ; SET NO BAUD RATE + LD (STI$BRATE),A + ld a,'A' ; prepare to send ATA command + call cmd$send ; send it + call cmd$end +STI$ANS1: + call response + CP CR ; ? + JR Z,STI$ANS1 + cp '1' ; is it "1" or "10" (300 or 2400)? + jr z,sti$ans324 ; If Z, process further + CP '5' ; CONNECT 1200? + JR Z,STI$ans12 + xor a ; make A 0 (we didn't get a connect) + ret +sti$ans324: + call ssresponse ; we should have at least a CR or a 0 pending + cp cr ; is it CR? + jr z,sti$ans3 ; must be 300 if Z +sti$ans24: + ld a,3 ; select 2400 bps + jr sti$ansset +STI$ans3: + LD A,1 ; SELECT 300 BAUD + JR STI$ansSET +STI$ans12: + LD A,2 ; SELECT 1200 BAUD +STI$ansSET: + LD (STI$BRATE),A ; SET BAUD RATE + CALL M1$INIT ; INIT USART BAUD RATE + OR A,0ffh ; RETURN CONNECT CODE + RET +; +; Hang up telephone +; Function: Place the telephone on hook +; Input Parameters: None +; Output Parameters: None +; +STI$HANG: + PUSH AF + CALL M1$CST ; DO NOT HANG UP IF NO CARRIER + JR Z,STI$HANG1 + CALL STI$HANG3 ; HANG UP PHONE + CP 0FEH ; USER ABORT? + JR Z,STI$HANG1 + CALL M1$CST ; STILL CARRIER? + JR Z,STI$HANG1 + CALL STI$HANG3 ; TRY A SECOND TIME TO HANG UP +STI$HANG1: + POP AF ; DO NOTHING SINCE WE ARE ALREADY OFFLINE + RET +STI$HANG3: + CALL ATTENTION ; GET SMARTMODEM'S ATTENTION + LD A,'H' ; HANG UP PHONE + CALL CMD$SEND + CALL CMD$END ; END OF COMMAND + CALL sresponse ; FLUSH RESPONSE DIGIT + CP 0FEH ; USER ABORT + RET Z + CALL sresponse ; FLUSH RESPONSE + RET +; +; YES and NO Return Codes +; +STI$YES: + OR 0FFH ; SET FLAGS + RET +STI$NO: + XOR A ; NO ANSWER + RET +; +; Ring Status Detect +; Function: Determines if phone is ringing or not. +; Input Parameters: None +; Output Parameters: A=0FFH no ring, A=0 ring, A=0FEH user abort +; +STI$RST: + CALL ssresponse ; GET RETURN CODE + cp 0dh ; cr? + jr z,sti$rst + CP '2' ; RING? + JR Z,STI$RST3 + CP 0FEH ; USER ABORT? + JR Z,STI$RST2 +STI$RST1: + LD A,0FFH ; RETURN NO RING +STI$RST2: + OR A ; SET FLAGS + RET +sti$rst3: + call ssresponse ; get trailing CR + cp 0feh ; user abort? + jr z,sti$rst2 + xor a + ret +; +; Start Dialing +; Function: Initiate the dialing process +; Input Parameters: None +; Output Parameters: A=0 if no dial tone, A=0FFH if dial tone +; +STI$DSTRT: + CALL FLUSH ; FLUSH CHAR IF PRESENT + LD A,3 ; SELECT 2400 BAUD + LD (STI$BRATE),A ; SET BAUD RATE + CALL M1$INIT + LD A,'D' ; START DIALING + CALL CMD$SEND ; SEND COMMAND + LD A,'T' ; TOUCH TONE DIALING + CALL CMD$SEND1 + JP STI$YES ; fake dial tone OK, even though we aren't + ; off-hook yet +; +; Stop Dialing +; Function: Terminate the dialing process with answer or user abort, +; and set baud rate based on result code if answer. +; Input Parameters: None +; Output Parameters: A=0 and Z if answer, NZ and error code if no ans +; Error Code: 0FFH=Timeout, 0FEH=User Abort +; Other=TI Return Code +; +STI$DSTOP: + ld a,cr ; end dial string + call cmd$send1 +STI$DS1: + LD A,FS$CST ; CHECK CONSOLE STATUS + CALL TI$FS ; USE FILER$SERVER + JR Z,STI$DS2 ; NO CONNECTION IF USER ABORT +STI$DSLOOP: + CALL RESPONSE ; ANSWER? + CP 0FFH ; TIMEOUT? + JR Z,STI$DS1 + CP 0FEH ; USER ABORT + JR Z,STI$DS2E + CP '2' ; RING? + JR Z,STI$DSLOOP + CP CR ; + JR Z,STI$DSLOOP + CP '9'+1 ; CHECK RANGE + JR NC,STI$DS1 + CP '0' ; CHECK RANGE + JR C,STI$DS1 + CP '1' ; is it a "1" or "10"? + JR Z,STI$DS324 ; process more if so + CP '5' ; CONNECTED AT 1200 BAUD? + ret nz + LD A,2 ; SELECT 1200 BAUD +STI$DSB: + LD (STI$BRATE),A ; SET BAUD RATE FLAG + CALL M1$INIT ; SET BAUD RATE + XOR A ; RETURN CONNECT CODE + RET +STI$DS2: + LD A,FS$CIN ; GET CHAR + CALL TI$FS ; USE FILER$SERVER + AND 7FH + CP CTRLC ; ABORT? + JR NZ,STI$DS1 +STI$DS2E: + LD A,0FEH ; SET USER ABORT + OR A + RET +sti$ds324: + call ssresponse ; there is at least a CR or 0 pending + cp cr ; was it cr, not 0? + jr z,sti$ds3 ; if yes, go set 300 baud +sti$ds24: + ld a,3 ; select 2400 bps + jr sti$dsb +STI$DS3: + LD A,1 ; SELECT 300 BAUD + JR STI$DSB +; +; Dial Digit +; Function: Dial an individual digit +; Input Parameters: A=ASCII for digit to dial +; Output Parameters: None +; +STI$DIGIT: + PUSH AF + CP ' ' ; DON'T SEND SPACES + jr z,sti$digit1 + cp '-' ; don't send dashes + jr z,sti$digit1 + cp '(' ; don't send parenthesis + jr z,sti$digit1 + cp ')' ; other kind + jr z,sti$digit1 + CALL CMD$SEND1 ; SEND DIGIT WITH ECHO +sti$digit1: + POP AF + RET +; +; Get Baud +; Function: Return current baud rate value (from answer or dial) +; Input Parameters: None +; Output Parameters: A = Baud Rate and Z flag set +; A = 0 means undefined +; A = 1 means 300 baud +; A = 2 means 1200 baud +; +STI$GETBAUD: + LD A,(STI$BRATE) ; GET VALUE + OR A ; SET FLAGS + RET +; +; BAUD RATE FLAG +; A = 0 IF NONE +; A = 1 IF 300 BAUD +; A = 2 IF 1200 BAUD +; +STI$BRATE: + DB 0 ; FLAG BUFFER +; +; END of Telephone Interface Routines +; + DB 'End of TI-2400' + + END diff --git a/Images/Source/hd0/s0/u15/TCCHECK.COM b/Images/Source/hd0/s0/u15/TCCHECK.COM new file mode 100644 index 0000000000000000000000000000000000000000..2b8321ffbac516044cdffeaabb5b84a122b0502a GIT binary patch literal 1792 zcmbVMO>7fa5PpvLy^WpN#0jc!kkCsO2^xr@L8z4lp~!>~RZSv@Qi95lvDZIf@1pe@ zvJ!DAz4cI4;?f^g{kfE$+#V`RkXG_;jkH@J!q^dF!N5(Nhne zoi{VzH{Z@I~q~7D*=DNe=Q>_A|36Pj?!#_su_{GI8~+>MViQniOXV=Uep49mJ*l6L{Vir z<jUY307LA@& zrPMT z25PO78@9$bLj#EPmK?g%|l1?d#tk7dc1^B2Nf$hvlNpTsO zqartg&}f1Kc1F_lZuGd|ZH*;30WwW!Mh1qz*FW_NLs&oQH4b{+4)cnbkE=zv)+x{o zoNmi_3id}4fbA>pSPP<(&r0!JfyTO5j7%548K<-Hya;;-o*5}2ONDGf6(yC%Rr*f} zVq$==DPa9qCV;8@1G_xkd+0WIJ1{BFtabBsM`I!QFRF>!>A2X%vz(> zSubA;^`kJ^X7A(M&3csugInxfyz@l=2|k#L@iQ(z7Z1L$Sz(yCRSOQdN9!>zS78~o z;8r+SzsV)d*7dadv21#>x1)6%=(#Kxwjv1Fhko6 zqLo|n^^ekPw@JV8FzW#1ntLUrbYipHEQe%iGNV~Tmo*xt?Rj%n_W!n z`kl2ec>NZ?au=SZL1BntZ*>>Z$LhVM!9Ckq@HTIJ!gt0Dex+hn`JEBeHft{b|Lp%a D3v#%T literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/TCCHECK.MAC b/Images/Source/hd0/s0/u15/TCCHECK.MAC new file mode 100644 index 00000000..5563c8fd --- /dev/null +++ b/Images/Source/hd0/s0/u15/TCCHECK.MAC @@ -0,0 +1,281 @@ +; ZCPR3 TCAP Facility (Z3TCAP) +; Program Name: TCCHECK +; Author: Richard Conn +; Version: 1.0 +; Date: 10 Mar 84 +version equ 10 + +; +; TCCHECK checks the indicated (or implied) Z3TCAP.TCP file +; and displays statistics about it. +; + +; +; Basic Equates +; +z3env SET 0f400h ;ZCPR3 Environment Descriptor +fcb equ 5ch +tbuff equ 80h +ctrlc equ 'C'-'@' +cr equ 0dh +lf equ 0ah + +; +; ZCPR3 and SYSLIB References +; + ext z3init,qprint,z3log + ext codend,moveb + ext print,pfn1,cout,phldc + ext initfcb,pfind,f$open,f$read,f$close + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + +; +; Print Banner +; + call qprint + db 'TCCHECK, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db 0 + +; +; Check for Entry in FCB +; + lda fcb+1 ;get first char + cpi '/' ;none if slash + jnz start1 +; +; Print Help Info +; +help: + call print + db 'TCCHECK - Select Entry from Z3TCAP.TCP' + db cr,lf,'Syntax:' + db cr,lf,' TCCHECK infile -or- TCCHECK infile.typ' + db cr,lf + db cr,lf,'where "infile" is the file to be checked by' + db cr,lf,'the execution of TCCHECK. If no file type is' + db cr,lf,'given, a file type of TCP is the default.' + db cr,lf + db cr,lf,'Syntax:' + db cr,lf,' TCCHECK' + db cr,lf + db cr,lf,'where this alternate form may be used to check' + db cr,lf,'the Z3TCAP.TCP file.' + db 0 + ret +; +; Resume Processing +; +start1: +; +; Set Default File if None +; + lxi d,fcb+1 ;pt to file name + lxi h,deffile ;pt to default file + mvi b,11 ;11 bytes + ldax d ;get first char + cpi ' ' ;none if space + cz moveb ;set default file +; +; Set Default File Type if None +; + lxi d,fcb+9 ;pt to file type + lxi h,deftyp ;pt to default file type + mvi b,3 ;3 bytes + ldax d ;get first char + cpi ' ' ;none if space + cz moveb ;set default file type +; +; Begin Reading Z3TCAP.TCP +; + lxi d,fcb ;try to open Z3TCAP.TCP + call initfcb ;init FCB + mvi a,0ffh ;search current also + call pfind ;look for file + jnz start2 ;file found +; +; File Z3TCAP.TCP Not Found +; +fnferr: + call print + db ' File ',0 + lxi d,fcb+1 ;print file name + call pfn1 + call print + db ' Not Found - Aborting',0 + ret +; +; Extract Z3TCAP Index +; +start2: + lxi d,fcb ;pt to FCB + call f$open ;open file + jnz fnferr + call codend ;read file into buffer +; +; Load Z3TCAP Index +; +loadi: + lxi d,fcb ;pt to FCB + call f$read ;read next block + jnz rerr1 ;read error + lxi d,tbuff ;copy from TBUFF + push h ;save ptr to this block + xchg + mvi b,128 ;128 bytes + call moveb + pop h ;pt to this block + lxi d,16 ;every 16 + mvi b,8 ;8 entries possible +; +; Check for End of Index +; +loadi1: + mov a,m ;end of index if space + cpi ' ' + jz loadi2 + dad d ;pt to next + dcr b ;count down + jnz loadi1 + jmp loadi ;HL pts to next block to load +; +; Error in Reading File +; +rerr1: + call print + db cr,lf,'File Read Error During Read of Index',0 + ret +; +; Reached End of Index +; +loadi2: + shld z3tcver ;save ptr to version number +; +; Read Each Block of File +; + lxi h,0 ;set count + shld tcount + call codend ;pt to first element +check: + mov a,m ;see if done + cpi ' ' ;space if so + jz done + lxi d,fcb ;pt to FCB + call f$read ;read next record + jnz rerr + push h ;save ptr + lhld tcount ;increment count + inx h + shld tcount + pop h ;get ptr + lxi d,tbuff ;pt to name in buffer + mvi b,16 ;check 16 chars +check1: + ldax d ;compare + cmp m + jnz tnerror + inx h ;pt to next + inx d + dcr b ;count down + jnz check1 + jmp check +; +; Read Error +; +rerr: + call print + db cr,lf,'Premature End of File after ',0 + lhld tcount ;get count + call phldc + call print + db ' Terminals Checked',0 + ret +; +; Terminal Name Error +; +tnerror: + call print + db cr,lf,'Terminal Names are Inconsistent at Terminal ',0 + push h ;save ptr + lhld tcount ;get count + call phldc + pop h ;get ptr +tne1: + inx h ;advance to next + dcr b + jnz tne1 + jmp check + +; +; Check Complete +; +done: + lxi d,fcb ;close file + call f$close + call print + db cr,lf,'Z3TCAP File Check of ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' Version ',0 + lhld z3tcver + inx h ;pt to version number +done1: + mov a,m ;print it + call cout + inx h + cpi ' ' + jnz done1 + call print + db cr,lf,' File Checks with ',0 + lhld tcount ;print entry count + call phldc + call print + db ' Terminals Defined',0 + ret +; +; Buffers +; +deffile: + db 'Z3TCAP ' ;default file name +deftyp: + db 'TCP' ;default file type +tcount: + ds 2 ;terminal count +z3tcver: + ds 2 ;ptr to ZCPR3 TCAP Version Number + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/TCMAKE.COM b/Images/Source/hd0/s0/u15/TCMAKE.COM new file mode 100644 index 0000000000000000000000000000000000000000..d2cc451a5442f6dc42f3d9468bece5e56229f5ae GIT binary patch literal 6016 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 M`%%y*Jo)+m3t^His{jB1 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/TCMAKE.MAC b/Images/Source/hd0/s0/u15/TCMAKE.MAC new file mode 100644 index 00000000..00bc5ce5 --- /dev/null +++ b/Images/Source/hd0/s0/u15/TCMAKE.MAC @@ -0,0 +1,1085 @@ +; ZCPR3 TCAP Facility (Z3TCAP) +; Program Name: TCMAKE +; Author: Richard Conn +; Version: 1.0 +; Date: 10 Mar 84 +version equ 10 + +; +; TCMAKE allows the user to create a Z3T file for his particular +; terminal. +; + +; +; Basic Equates +; +z3env SET 0f400h ;ZCPR3 Environment Descriptor +qch equ '\' ;quote char +fcb equ 5ch +tbuff equ 80h +ctrlc equ 'C'-'@' +cr equ 0dh +lf equ 0ah + +; +; ZCPR3 and SYSLIB References +; + ext z3init,qprint,z3log + ext bbline,sksp,eval + ext codend,moveb,fillb,hmovb + ext print,pfn1,pstr,capine,cin,caps,crlf,cout,pafdc,pa2hc + ext initfcb,f$make,f$write,f$close + ext f$exist,gfa,f$delete + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + +; +; Print Banner +; + call qprint + db 'TCMAKE, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db cr,lf,0 + +; +; Check for Entry in FCB +; + lda fcb+1 ;get first char + cpi ' ' ;none if space + jz help + cpi '/' ;none if slash + jnz start1 +; +; Print Help Info +; +help: + call print + db 'TCMAKE - Create a Z3T File' + db cr,lf,'Syntax:' + db cr,lf,' TCMAKE outfile -or- TCMAKE outfile.typ' + db cr,lf + db cr,lf,'where "outfile" is the file to be generated by' + db cr,lf,'the execution of TCMAKE. If no file type is' + db cr,lf,'given, a file type of Z3T is the default.' + db 0 + ret +; +; Resume Processing +; +start1: +; +; Set Default File Type if None +; + lxi d,fcb+9 ;pt to file type + lxi h,deftyp ;pt to default file type + mvi b,3 ;3 bytes + ldax d ;get first char + cpi ' ' ;none if space + cz moveb ;set default file type +; +; Init the Buffers and Pointers +; + call codend ;pt to scratch area + shld scratch ;set ptr + lxi d,100h ;give space (overkill) + xra a ;init strings to empty + sta rcfirst ;clear flag + dad d + shld cladr ;CL + mov m,a ;clear + dad d + shld cmadr ;CM + mov m,a ;clear + dad d + shld ceadr ;CE + mov m,a ;clear + dad d + shld soadr ;SO + mov m,a ;clear + dad d + shld seadr ;SE + mov m,a ;clear + dad d + shld tiadr ;TI + mov m,a ;clear + dad d + shld teadr ;TE + mov m,a ;clear + dad d + shld cmbadr ;CM Beginning + mov m,a ;clear + dad d + shld cmmadr ;CM Middle + mov m,a ;clear + dad d + shld cmeadr ;CM Ending + mov m,a ;clear + dad d + shld reqn ;Row Equation + mov m,a + dad d + shld ceqn ;Column Equation + mov m,a + lxi h,ku ;clear 1-byte buffers + mvi b,7 ;7 of them + xra a ;0 fill + call fillb +; +; Create the Data Base +; +menu1: + call create ;create entry + call assemble ;assemble the entry + jz menu1 ;continue if buffer overflow +; +; Confirm Selection +; + call print + db cr,lf,' Selected Terminal is: ',0 + lhld scratch ;pt to buffer + call prent ;print name + call print + db ' -- Confirm (Y/N)? ',0 + call capine ;get input + call crlf + cpi 'Y' + jnz menu1 ;continue + call wrfile ;write file + ret +; +; Assemble Data into Z3T Format +; Return with Z if Buffer Overflow (more than 128 bytes) +; Return with NZ if OK +; +assemble: + mvi c,128-23 ;128 bytes max with 23 bytes for header + mvi b,23 ;copy 23 byte header + lhld scratch ;into scratch area + lxi d,tname ;from TNAME + xchg + call hmovb + lhld cladr ;copy CL string + call asmcopy + lxi h,crcmd ;reverse row/col to col/row? + lda rcfirst ;get flag + cpi 'C' ;reverse if C + jnz asmc0 + call asmcopy + dcx d ;don't let zero in +asmc0: + lhld cmbadr ;CM Beginning + call asmcopy + dcx d + lhld ceqn ;prepare for col first + lda rcfirst ;get row/col flag + cpi 'C' ;col/row? + jz asmc1 + lhld reqn ;row first, so store row +asmc1: + call asmcopy + dcx d ;skip 0 + lhld cmmadr ;CM Middle + call asmcopy + dcx d ;skip 0 + lhld reqn ;prepare for row first + lda rcfirst ;get row/col flag + cpi 'C' ;col/row? + jz asmc2 + lhld ceqn ;col first, so store col +asmc2: + call asmcopy + dcx d ;skip 0 + lhld cmeadr ;CM Ending + call asmcopy + lhld ceadr ;CE + call asmcopy + lhld soadr ;SO + call asmcopy + lhld seadr ;SE + call asmcopy + lhld tiadr ;TI + call asmcopy + lhld teadr ;TE + call asmcopy + xra a ;zero rest +asmzero: + stax d ;store 0 + inx d + dcr c ;count down + jnz asmzero + dcr c ;return NZ for OK + ret +; +; Copy TCAP String from HL to DE +; Check for SCRATCH Area Overflow by Counting C Down +; Allow For Quotes +; +asmcopy: + mov a,m ;get char + stax d ;store it + inx h ;pt to next + inx d + ora a ;done? + rz + dcr c ;check for overflow + jz asmovfl + cpi qch ;quote? + jnz asmcopy + mov a,m ;get quoted byte + stax d ;store it + inx h ;pt to next + inx d + dcr c ;check for overflow + jnz asmcopy +asmovfl: + pop psw ;clear stack + call print + db cr,lf,'** Buffer Overflow **',0 + xra a ;error code + ret + +; +; Create Entries +; +create: + call print + db cr,lf + db cr,lf,' ** Z3TCAP Main Menu',0 + call prfdata ;print file data + call print + db cr,lf + db cr,lf,'Define: 1. Clear Screen Sequence' + db cr,lf,' 2. Cursor Motion Sequence' + db cr,lf,' 3. Clear to End of Line Sequence' + db cr,lf,' 4. Standout Mode Sequences' + db cr,lf,' 5. Terminal Init/Deinit Sequences' + db cr,lf,' 6. Arrow Keys' + db cr,lf,' 7. Terminal Name' + db cr,lf + db cr,lf,'Status: S. Print Status (Definitions so far)' + db cr,lf + db cr,lf,'Exit: X. Exit and Write File' + db cr,lf,' Q. Quit and Abort Program without Writing File' + db cr,lf + db cr,lf,'Command? ',0 + call capine ;get response + call crlf + lxi h,ctable ;pt to command table + call tscan ;scan table + call print + db ' Invalid Command: ',0 + call cout ;print char + jmp create ;resume +; +; Print File Data +; +prfdata: + call print + db ' for File ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' **',0 + ret +; +; Define Name of Terminal +; +namedef: + lxi h,tname ;space fill terminal name buffer + mvi a,' ' + mvi b,16 + call fillb + call print + db cr,lf,' Input Name of Terminal: ',0 + xra a ;no caps + call bbline ;get line from user + call sksp ;skip over leading spaces + lxi d,tname ;save name in buffer + mvi b,16 ;16 bytes max +putname: + mov a,m ;get next char + ora a ;done? + jz pn1 + stax d ;put next char + inx h ;pt to next + inx d + dcr b ;count down + jnz putname +pn1: + jmp create +; +; Define Arrow Keys +; +arrowdef: + call print + db 'Arrow Key Definition' + db cr,lf,' Your Terminal''s Arrow Keys may be defined ONLY' + db cr,lf,' if they generate only one character each. If they' + db cr,lf,' do, type Y to continue. If not, type anything else.' + db cr,lf,' Define Arrow Keys (Y/N)? ',0 + call capine + cpi 'Y' + jnz create + call print + db cr,lf,' Strike the Appropriate Arrow Key' + db cr,lf,' 1. Arrow UP? ',0 + lxi h,ku ;pt to first entry + call cin + mov m,a ;store it + inx h ;pt to next + call ccout + call print + db cr,lf,' 2. Arrow DOWN? ',0 + call cin + mov m,a + inx h + call ccout + call print + db cr,lf,' 3. Arrow RIGHT? ',0 + call cin + mov m,a + inx h + call ccout + call print + db cr,lf,' 4. Arrow LEFT? ',0 + call cin + mov m,a + call ccout + jmp create +; +; Review Arrow Keys +; +arrowrev: + call print + db cr,lf,'Review of Arrow Key Definitions' + db cr,lf,' 1. Arrow UP = ',0 + lxi h,ku ;pt to first + mov a,m + call ccout + inx h + call print + db cr,lf,' 2. Arrow DOWN = ',0 + mov a,m + call ccout + inx h + call print + db cr,lf,' 3. Arrow RIGHT = ',0 + mov a,m + call ccout + inx h + call print + db cr,lf,' 4. Arrow LEFT = ',0 + mov a,m + call ccout + ret + +; +; Quit Create Mode and Program +; +crquit: + call print + db 'Do you really want to quit (Y/N)? ',0 + call capine ;get input from user + cpi 'Y' ;see if he typed a Y + jnz create ;resume if not + pop psw ;clear stack +; +; Exit Create Mode +; +crexit: + ret +; +; CL Definition +; +cldef: + call print + db 'Clear Screen Definition',cr,lf + db ' 1. Timing Delay',0 + call getdelay ;get delay constant + sta cld ;save delay constant + call print + db cr,lf,' 2. Clear Screen Byte Sequence',0 + lhld cladr ;pt to buffer + call getstr + jmp create + +; +; CL Review +; +clreview: + call print + db cr,lf,'Review of Clear Screen Definition' + db cr,lf,' 1. Timing Delay = ',0 + lda cld + call pafdc + call print + db ' Milliseconds' + db cr,lf,' 2. Clear Screen Sequence:',0 + lhld cladr + call prtstr + ret +; +; CE Definition +; +cedef: + call print + db 'Clear to End of Line Definition',cr,lf + db ' 1. Timing Delay',0 + call getdelay ;get delay constant + sta ced ;save delay constant + call print + db cr,lf,' 2. Clear to End of Line Byte Sequence',0 + lhld ceadr ;pt to buffer + call getstr + jmp create +; +; CE Review +; +cereview: + call print + db cr,lf,'Review of Clear to End of Line Definition' + db cr,lf,' 1. Timing Delay = ',0 + lda ced + call pafdc + call print + db ' Milliseconds' + db cr,lf,' 2. Clear to End of Line Sequence:',0 + lhld ceadr + call prtstr + ret +; +; SO Definition +; +sodef: + call print + db 'Standout Mode Definition',cr,lf + db ' 1. Begin Standout Mode Byte Sequence',0 + lhld soadr ;pt to buffer + call getstr + call print + db cr,lf,' 2. End Standout Mode Byte Sequence',0 + lhld seadr ;pt to buffer + call getstr + jmp create +; +; SO Review +; +soreview: + call print + db cr,lf,'Review of Standout Mode Definition' + db cr,lf,' 1. Begin Standout Mode Sequence:',0 + lhld soadr + call prtstr + call print + db cr,lf,' 2. End Standout Mode Sequence:',0 + lhld seadr + call prtstr + ret +; +; TI Definition +; +tidef: + call print + db 'Terminal Init/Deinit Definition',cr,lf + db ' 1. Terminal Initialization Byte Sequence',0 + lhld tiadr ;pt to buffer + call getstr + call print + db cr,lf,' 2. Terminal Deinitialization Byte Sequence',0 + lhld teadr ;pt to buffer + call getstr + jmp create +; +; TI Review +; +tireview: + call print + db cr,lf,'Review of Terminal Init/Deinit Definition' + db cr,lf,' 1. Terminal Initialization Sequence: ',0 + lhld tiadr + call prtstr + call print + db cr,lf,' 2. Terminal Deinitialization Sequence: ',0 + lhld teadr + call prtstr + ret +; +; CM Definition +; +cmdef: + call print + db 'Cursor Motion Definition',cr,lf + db ' 1. Timing Delay',0 + call getdelay ;get delay + sta cmd +cmcrdef: + call print + db cr,lf,' 2. Enter R if Row/Column or C for Column/Row: ',0 + call capine + cpi 'C' ;col/row + jz cmdef1 + cpi 'R' + jz cmdef1 + call print + db ' - Invalid',0 + jmp cmcrdef +cmdef1: + sta rcfirst ;set flag + call print + db cr,lf,' 3. Enter Equation for Row: ',0 + xra a ;no caps + call bbline ;get input + call sksp ;skip spaces + xchg + lhld reqn + xchg + call copy0 + call print + db cr,lf,' 4. Enter Equation for Column: ',0 + xra a ;no caps + call bbline ;get input + call sksp ;skip spaces + xchg + lhld ceqn + xchg + call copy0 + call print + db cr,lf,' 5. Enter Prefix Byte Sequence',0 + lhld cmbadr ;beginning + call getstr + call print + db cr,lf,' 6. Enter Middle Byte Sequence',0 + lhld cmmadr ;middle + call getstr + call print + db cr,lf,' 7. Enter Suffix Byte Sequence',0 + lhld cmeadr ;ending + call getstr + jmp create +; +; Copy HL to DE until 0 +; +copy0: + mov a,m ;copy + stax d + cpi qch ;quote? + jz copyq + ora a ;done if 0 + rz + inx h ;pt to next + inx d + jmp copy0 +copyq: + inx h ;copy quoted char + inx d + mov a,m ;copy + stax d + inx h ;advance + inx d + jmp copy0 +; +; Review CM Data +; +cmreview: + call print + db cr,lf,'Review of Cursor Motion Data' + db cr,lf,' 1. Timing Delay = ',0 + lda cmd + call pafdc + call print + db ' Milliseconds' + db cr,lf,' 2. Row or Column First: ',0 + lda rcfirst + call cout + call print + db cr,lf,' 3. Row Equation: -->',0 + lhld reqn + call pstr + call print + db '<--' + db cr,lf,' 4. Column Equation: -->',0 + lhld ceqn + call pstr + call print + db '<--' + db cr,lf,' 5. Prefix Byte Sequence: ',0 + lhld cmbadr + call prtstr + call print + db cr,lf,' 6. Middle Byte Sequence: ',0 + lhld cmmadr + call prtstr + call print + db cr,lf,' 7. Suffix Byte Sequence: ',0 + lhld cmeadr + call prtstr + ret + +; +; Status Display +; +rstatus: + call print + db cr,lf,' Strike Any Key to Continue - ',0 + call cin +status: + call print + db cr,lf,' ** Z3TCAP Status',0 + call prfdata ;file data + call print + db cr,lf + db cr,lf,'Review: 1. Clear Screen Definition' + db cr,lf,' 2. Cursor Motion Definition' + db cr,lf,' 3. Clear to End of Line Definition' + db cr,lf,' 4. Standout Mode Definition' + db cr,lf,' 5. Terminal Init/Deinit Definition' + db cr,lf,' 6. Arrow Key Definition' + db cr,lf,' 7. Terminal Name Definition' + db cr,lf + db cr,lf,'Exit: X. Exit to Main Menu' + db cr,lf + db cr,lf,'Command? ',0 + call capine + lxi h,rtable + call tscan + call print + db cr,lf,' Invalid Command: ',0 + call cout + jmp status +; +; Review Name +; +rname: + call print + db cr,lf,'Terminal Name: ',0 + lxi h,tname + mvi b,16 +rname1: + mov a,m ;get char + call cout + inx h ;pt to next + dcr b ;count down + jnz rname1 + jmp rstatus +; +; Review CL +; +rcl: + call clreview + jmp rstatus +; +; Review CE +; +rce: + call cereview + jmp rstatus +; +; Review CM +; +rcm: + call cmreview + jmp rstatus +; +; Review SO +; +rso: + call soreview + jmp rstatus +; +; Review TI +; +rti: + call tireview + jmp rstatus +; +; Review Arrow Keys +; +rarrow: + call arrowrev + jmp rstatus +; +; Status Review Commands +; +rtable: + db '1' + dw rcl + db '2' + dw rcm + db '3' + dw rce + db '4' + dw rso + db '5' + dw rti + db '6' + dw rarrow + db '7' + dw rname + db 'X' + dw create + db 0 + +; +; Scan Command Table +; +tscan: + mov b,a ;save char in B +tscan1: + mov a,m ;get char + ora a ;end of table? + jz tscanx ;exit + cmp b ;compare + jz tscanf ;found + inx h ;skip to next + inx h + inx h + jmp tscan1 +tscanx: + mov a,b ;restore char and exit - not found + ret +tscanf: + inx h ;get address + mov a,m + inx h + mov h,m + mov l,a + pop psw ;clear stack + pchl ;branch to routine +; +; Command Table +; +ctable: + db '1' ;CL + dw cldef + db '2' ;CM + dw cmdef + db '3' ;CE + dw cedef + db '4' ;SO + dw sodef + db '5' ;TI + dw tidef + db '6' ;arrows + dw arrowdef + db '7' ;name + dw namedef + db 'S' ;status + dw status + db 'Q' ;quit + dw crquit + db 'X' ;exit + dw crexit + db 0 +; +; Routine to Input Delay Constant +; +getdelay: + call print + db cr,lf,' Enter Delay Time in Milliseconds: ',0 + mvi a,0ffh ;caps + call bbline + call sksp + call eval ;convert to binary + ret +; +; Routine to Define Text String +; +getstr: + shld firstch ;set ptr to first char +getfirst: + mvi b,1 ;set count + lhld firstch ;set next char to first + shld nxtchar +getnext: + call print + db cr,lf,' Char #',0 + mov a,b ;get char number + call pafdc ;print it + inr b ;increment count + push b ;save it +; +; Prompt for Type of Input +; + call print + db ' - Type Char, .=Number, or =Done: ',0 + call cin ;get response + cpi cr ;exit + jz getx + cpi '.' ;number? + jz getnum +; +; Input Character +; + call print + db 'Char ',0 + call ccout ;echo character + jmp putch +; +; Input Number +; +getnum: + call print + db 'Enter Number: ',0 + mvi a,0ffh ;caps + call bbline ;get input + call sksp ;skip spaces + call eval ;convert +; +; Save Character with Quoting +; +putch: + lhld nxtchar ;pt to next char + ora a ;quote if null + jz quote + cpi qch ;quote if quote + jz quote +putch1: + mov m,a ;store it + inx h ;pt to next + shld nxtchar ;set ptr + pop b ;get count + jmp getnext ;get next char +; +; Quote the Character +; +quote: + mvi m,qch ;save quote char + inx h + jmp putch1 +; +; Exit +; +getx: + pop psw ;clear stack + lhld nxtchar ;store ending 0 + mvi m,0 + ret +; +; Print String Pted to by HL +; +prtstr: + mvi b,0 ;set count + call crlf ;new line + mov a,m ;empty? + ora a + jnz prts0 + call print + db ' -- Empty --',0 + ret +prts0: + mov a,m ;get next char + ora a ;done? + rz + call print + db ' (',0 + mov a,b ;print count + inr a + call pafdc + call print + db ') ',0 + mov a,m ;get next char + inx h ;pt to next + cpi qch ;check for quote + jnz prts1 + mov a,m ;get char that is quoted + inx h ;pt to next +prts1: + call ccout + call print + db ' ',0 + call pa2hc ;print as 2 hex chars + call print + db 'H ',0 + inr b ;increment count + mov a,b ;get count + ani 3 + cz crlf ;new line + jmp prts0 + +; +; Create Target File +; +wrfile: + lxi d,fcb ;pt to FCB + call z3log ;log into proper directory + call f$exist ;test of presence of file + jz make2 ;create file + call gfa ;get file attributes + ani 1 ;R/O? + jz make1 + call print + db cr,lf,'File ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' is Read/Only - Saving as $$$.Z3T',0 + lxi h,tempfcb ;set $$$.Z3T + lxi d,fcb+1 + mvi b,11 ;11 chars + call moveb + lxi d,fcb ;reinit + call initfcb ;resume +make1: + call f$delete ;delete file +make2: + call f$make ;create file + cpi 0ffh ;error + jnz writef + call print + db cr,lf,'File Create Error',0 + ret +; +; Write Block to File +; +writef: + lhld scratch ;pt to entry + lxi d,tbuff ;copy into buffer + mvi b,128 ;128 bytes + call moveb + lxi d,fcb ;pt to FCB + call f$write ;write block + jnz werr + call f$close ;close file + call print + db cr,lf,'File ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' Created',0 + ret +; +; Can't Write File +; +werr: + call print + db cr,lf,'File Write Error',0 + ret +; +; Print Entry Name Pted to by HL +; +prent: + mvi b,16 ;16 chars +prtname: + mov a,m ;get char + call cout + inx h ;advance + dcr b ;count down + jnz prtname + ret +; +; Print Char in A with Control Char Processing +; +ccout: + push psw ;save char + ani 7fh ;mask MSB + cpi 7fh ;DEL? + jz ccout2 + cpi ' ' + jnc ccout1 + push psw ;save char + mvi a,'^' + call cout + pop psw + adi '@' ;convert to char +ccout1: + call cout + pop psw + ret +ccout2: + call print + db '',0 + pop psw + ret + +; +; Buffers +; +crcmd: + db '%r',0 +tempfcb: + db '$$$ ' + db 'Z3T' +tname: + db '** Empty Name **' ;16 chars +ku: + ds 1 ;cursor up +kd: + ds 1 ;cursor down +kr: + ds 1 ;cursor right +kl: + ds 1 ;cursor left +cld: + ds 1 ;CL delay +cmd: + ds 1 ;CM delay +ced: + ds 1 ;CE delay +cladr: + ds 2 ;CL address +cmadr: + ds 2 ;CM address +ceadr: + ds 2 ;CE address +soadr: + ds 2 ;SO address +seadr: + ds 2 ;SE address +tiadr: + ds 2 ;TI address +teadr: + ds 2 ;TE address +cmbadr: + ds 2 ;CM Beginning +cmmadr: + ds 2 ;CM Middle +cmeadr: + ds 2 ;CM Ending +reqn: + ds 2 ;Row Equation +ceqn: + ds 2 ;Column Equation +rcfirst: + ds 1 ;R if Row First, C if Col First +deftyp: + db 'Z3T' ;default file type +firstch: + ds 2 ;ptr to first char in string +nxtchar: + ds 2 ;ptr to next char in string +scratch: + ds 2 ;ptr to scratch area + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/TCSEL32.COM b/Images/Source/hd0/s0/u15/TCSEL32.COM new file mode 100644 index 0000000000000000000000000000000000000000..53f5a38bd95a535428ba1f7f9015c8d032e61a1a GIT binary patch literal 5120 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 literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/TCSELECT.COM b/Images/Source/hd0/s0/u15/TCSELECT.COM new file mode 100644 index 0000000000000000000000000000000000000000..808ea4846ed86b15fbf3b7e8d1a6d9a1572ac370 GIT binary patch literal 2816 zcmcgtUu;`f89%P$d+wjutCJFuOmxR_*RFQrBrf8?OWavr8U`f}Yn0MxZRN%{tt-d3 zy1waRwe`~Rz$AF+1Dz&>K)g)b0}4Y-7VX;3*K*mt+L17-E2su2lvpYT2}^S&v~t6D zuHB?!?3GA4_dDO8-}!xi&T(0C%paJXo^zm21A>E2@YKoA#*a)Mo{Y~9kvUn-rIjoh z3yrx&6giHp5&btiXi9kOLWao^IU_G|N;Iij7Bi5;pbmEAy#ta{WC{D6JSfG6^$HHma{2nVeFKmYU%80WYC*- z@1So;9@Jf7NG}TdH=N#8w9(*J={{-QyAyGI!6IhT+3(Vycb3Y;*#uO#Xdm;k zoJ^5PRaI1E3_gp&CFLC4hfDdeA2YbG3Q7&2@p*svLq4jbsp?Bl+qa}hZ5 z8pldFJWS$Bb}8t3WLg89=fy3E%d=8wC! ztA)JBQKu;|NUU}viEJhh&6pSHUcuVbZ$051S7kP3o$9tp+f8AIBn17_F39D7g0~}6 zfVLjKDXrAA4VL^uusK_r_sTSo|H%y!*xRhtleQ z0eon6046#BEbBmEyOr!Tg5U(I+cyF(Zs+ORdiPM^S?n+PsU})P_uEYm1lY|-YvE^b zn6MFU09&f?`nS30CMY-9-PpzMhRngd9p%brnSo%Kz(F5g=R{_^%xpOh6agP*2%PAN zf#IV({RP*!_`dlz$K2lL^0!6MbT?qcUHT6=1E@d^;YmXkZl}%6rQfiLk@g=d8Ifmj z(TEUOQ0KLQw{Rx9H~i>eIXY(T)vKeCM+b}g-O=b?`aHM{ksy1v$h5qop&__bY{NQ& zg1rMbbu{MI|2ewyaP^iEENs-mLwK#H=IN)O;qWjHk6;hky~#Eq93I70x|@#-;i4&H zj~BG#`W0L#npZLX3#RX5zaI>>$_j*?^mxDykHRR31jK6j6}&c4eiN^?BEz=Xg(4x_ z2*L=Sij3k!v$}3<)GC+4LCj7H;v42C4BPLo)>f|Rw{ZSCET!uDn!%O{qhRgP|BeB0 zd}7L92*U1P7*G>{LR|>ZT6Bar`}pSlR>5D?-5?mva!Lrqc%uf3S3vzI{B!<7qgsR* zrg;wa7pm(;V-Q@rg21N5%HcxeQ`Lc@Imb`Ad~Vb~UHJ}V=t8Aqkev%PfsS$U+J~2} zGyb(+P8z7c)?*zszt8u&^ox8~)uen49&IQa@Uk{x`#tuT;E?Y!5_;jq?eT-_&*6*f zj)cFr&{JQ1&;G9E8G3ZH$Uc?YMys**s<#{Ub6=)^6r1bS5>tAfqBRkolSlBoP%QtO zU;CWi)A!h;{E*+M0F#T_@@dQad)SZGQ6TTsq ziz0K5d?2#R0+-+h2yB=DrfIDEm=UI{0-92L*la_^o^0s(*EvM%V#(M5$DwDO*gB?ErlnO$fIjgmn}rAk|}V@9Pm_lwu=%}9Dox^x}BY$jQ3OtO!b zn7^~o6MUK}=cMvCrTS}D^7qz--_}psgWquYkdX7M{;#2`$H$nntJDg-DP1a>Ka}=_ MP}6uz`hT7O9}fdkD*ylh literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/TCSELECT.MAC b/Images/Source/hd0/s0/u15/TCSELECT.MAC new file mode 100644 index 00000000..316a09d9 --- /dev/null +++ b/Images/Source/hd0/s0/u15/TCSELECT.MAC @@ -0,0 +1,607 @@ +; ZCPR3 TCAP Facility (Z3TCAP) +; Program Name: TCSELECT +; Author: Richard Conn +; Version: 1.1 +; Date: 1 Mar 85 +; Previous Versions: 1.0 (10 Mar 84) +version equ 11 + +; Version 1.1 by Richard Conn: Added FILENABLE equate to allow writing +; files to disk. If FILENABLE is FALSE, TCSELECT may only store in memory. + +; +; TCSELECT allows the user to select an entry from a Z3TCAP.TCP +; file and store it into memory or a Z3T file. TCSELECT is menu-driven. +; TCSELECT may be assembled to disable the ability to create a disk file +; (specifically for Z-NODE operation). +; + +; +; Basic Equates +; +false equ 0 +true equ not false +filenable equ true +entcnt equ 20 ;number of entries per screen +z3env SET 0f400h ;ZCPR3 Environment Descriptor +fcb equ 5ch +tbuff equ 80h +ctrlc equ 'C'-'@' +cr equ 0dh +lf equ 0ah + +; +; ZCPR3 and SYSLIB References +; + ext z3init,qprint,z3log,getenv + ext codend,moveb + ext print,pfn1,pstr,capine,crlf,cout,pafdc,comphd + ext initfcb,pfind,f$open,f$read,r$read,f$close + ext f$exist,gfa + ext putud,getud,logud +; + if filenable + ext f$make,f$write,f$delete + endif + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + +; +; Print Banner +; + call qprint + db 'TCSELECT, Version ' + db (version/10)+'0','.',(version mod 10)+'0' + db cr,lf,0 + +; +; Check for Entry in FCB +; + lda fcb+1 ;get first char + cpi '/' ;none if slash + jnz start1 +; +; Print Help Info +; +help: + call print + db 'TCSELECT - Select Entry from Z3TCAP.TCP' +; + if filenable +; + db cr,lf,'Syntax:' + db cr,lf,' TCSELECT outfile -or- TCSELECT outfile.typ' + db cr,lf + db cr,lf,'where "outfile" is the file to be generated by' + db cr,lf,'the execution of TCSELECT. If no file type is' + db cr,lf,'given, a file type of Z3T is the default.' + db cr,lf +; + endif +; + db cr,lf,'Syntax:' + db cr,lf,' TCSELECT' + db cr,lf + db cr,lf,'where this alternate form may be used to store' + db cr,lf,'the Z3TCAP entry for the selected terminal directly' + db cr,lf,'into the Z3 Environment Descriptor.' + db 0 + ret +; +; Resume Processing +; +start1: +; + if filenable +; +; Set Default File Type if None +; + lxi d,fcb+9 ;pt to file type + lxi h,deftyp ;pt to default file type + mvi b,3 ;3 bytes + ldax d ;get first char + cpi ' ' ;none if space + cz moveb ;set default file type +; + endif +; +; Begin Reading Z3TCAP.TCP +; + call putud ;save current location + lxi d,z3tfcb ;try to open Z3TCAP.TCP + call initfcb ;init FCB + mvi a,0ffh ;search current also + call pfind ;look for file + jnz start2 ;file found +; +; File Z3TCAP.TCP Not Found +; +fnferr: + call print + db 'File ',0 + lxi d,z3tfcb+1 ;print file name + call pfn1 + call print + db ' Not Found - Aborting',0 + ret +; +; Extract Z3TCAP Index +; +start2: + call logud ;log into DU in BC + lxi d,z3tfcb ;pt to FCB + call f$open ;open file + jnz fnferr + call codend ;read file into buffer + mvi c,0 ;set block counter + +; +; Load Z3TCAP Index +; +loadi: + inr c ;increment block counter + push b + lxi d,z3tfcb ;pt to FCB + call f$read ;read next block + jnz rerr ;read error + lxi d,tbuff ;copy from TBUFF + push h ;save ptr to this block + xchg + mvi b,128 ;128 bytes + call moveb + pop h ;pt to this block + lxi d,16 ;every 16 + mvi b,8 ;8 entries possible +; +; Check for End of Index +; +loadi1: + mov a,m ;end of index if space + cpi ' ' + jz loadi2 + dad d ;pt to next + dcr b ;count down + jnz loadi1 + pop b ;get count and load next + jmp loadi ;HL pts to next block to load +; +; Error in Reading File +; +rerr: + pop psw ;clear stack + call print + db cr,lf,'File Read Error',0 + ret +; +; Reached End of Index +; +loadi2: + shld z3tcver ;save ptr to version number +loadi3: + dad d ;compute address of next block after last + dcr b + jnz loadi3 + shld scratch ;scratch area + pop b ;get record number of next block + mov a,c + sta rec1 ;save count + lxi d,z3tfcb ;close file + call f$close +; +; Print menu of terminals +; +menu: + mvi a,1 ;set menu number + sta menunum + call codend ;pt to first terminal + shld curtable ;save ptr +menu1: + call prmenu ;print menu pted to by HL + call print + db cr,lf,'Enter Selection',0 + call chk1st ;first menu? + lxi h,lstmsg ;pt to last message + cz pstr + call chknth ;last menu? + lxi h,nxtmsg ;pt to next message + cz pstr + call print + db ', or ^C to Exit - ',0 + call capine ;get response + call crlf ;new line + cpi ctrlc ;abort? + rz + cpi '+' ;next? + jz nxtmenu + cpi '-' ;last? + jz lstmenu + sui 'A' ;convert to digit + jc menuerr ;print error message + mov c,a ;result in C + mvi a,entcnt-1 ;selection limit? + cmp c ;range error? + jc menuerr +; +; Set ptr to menu entry +; On input, C = offset in 20-terminal menu and MENUNUM is menu (1..) +; + lda menunum ;get menu number + dcr a ;adjust to 0 offset + mvi d,0 ;HL = number + mov e,a + lxi h,0 ;init sum + mvi b,entcnt ;multiply by number of entries +mult: + dad d ;+menunumber + dcr b ;count down + jnz mult ;B=0 on exit + dad b ;compute offset from record 1 for entry + jmp lterm ;load terminal now with offset in HL +; +; HL Now Contains Terminal Number (Zero Relative) +; +lterm: + lda rec1 ;get location of terminal data record 1 + mov c,a + dad b ;HL contains random record number of terminal +; +; HL Now Contains Random Record Number for Terminal in File (Zero Relative) +; Reopen Z3TCAP.TCP +; + lxi d,z3tfcb ;pt to FCB of file + call initfcb ;reinit it + call f$open +; +; Position to Correct Record and Read it in +; + call r$read ;read random record in HL + call f$close ;close file +; +; Copy Into Scratch Area +; + lhld scratch ;pt to scratch area + lxi d,tbuff ;pt to TBUFF + xchg + mvi b,128 ;128 bytes + call moveb + xchg ;HL pts to scratch +; +; Confirm Selection +; + call print + db cr,lf,' Selected Terminal is: ',0 + call prent ;print name + call print + db ' -- Confirm (Y/N)? ',0 + call capine ;get input + call crlf + cpi 'Y' + jnz menu1 ;continue +; +; Check for FCB and do a memory fill if no file given +; + if filenable +; + lda fcb+1 ;anything in FCB? + cpi ' ' + jz memory ;place SCRATCH into Z3 Env Descriptor +; +; Create Target File +; + call getud ;return home + lxi d,fcb ;pt to FCB + call z3log ;log into proper directory + call f$exist ;test of presence of file + jz make2 ;create file + call gfa ;get file attributes + ani 1 ;R/O? + jz make1 + call print + db cr,lf,'File ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' is Read/Only',0 + ret +make1: + call f$delete ;delete file +make2: + call f$make ;create file + cpi 0ffh ;error + jnz writef + call print + db cr,lf,'File Create Error',0 + ret +; +; Write Block to File +; +writef: + lhld scratch ;pt to entry + lxi d,tbuff ;copy into buffer + mvi b,128 ;128 bytes + call moveb + lxi d,fcb ;pt to FCB + call f$write ;write block + jnz werr + call f$close ;close file + call print + db cr,lf,'File ',0 + lxi d,fcb+1 + call pfn1 + call print + db ' Created',0 + ret +; +; Can't Write File +; +werr: + call print + db cr,lf,'File Write Error',0 + ret +; + endif ;filenable -- MEMORY follows + +; +; Place Z3TCAP Entry into Z3 Environment Descriptor +; +memory: + call getenv ;pt to env desc + lxi d,80h ;pt to TCAP entry + dad d + xchg ;DE pts to entry + lhld scratch ;pt to scratch area + mvi b,128 ;copy 128 bytes + call moveb + call print + db cr,lf,' ZCPR3 Environment Descriptor Loaded',0 + ret +; +; Invalid Selection +; +menuerr: + call print + db ' -- Error: Invalid Selection',0 + jmp menu1 +; +; Advance to next menu +; +nxtmenu: + call chknth ;at end? + jz nmenu + call print + db ' -- Error: Already at Last Menu',0 + jmp menu1 +nmenu: + lhld curtable ;pt to current table + lxi d,16*entcnt ;advance to next + dad d + shld curtable + lda menunum ;increment menu number + inr a + sta menunum + jmp menu1 +; +; Backup to last menu +; +lstmenu: + call chk1st ;at beginning? + jz lmenu + call print + db ' -- Error: Already at First Menu',0 + jmp menu1 +lmenu: + lhld curtable ;pt to current table + lxi d,-16*entcnt ;backup + dad d + shld curtable + lda menunum ;decrement menu number + dcr a + sta menunum + jmp menu1 +; +; PRMENU +; PRMENU performs the following functions: +; 1. Sets flag if at 1st menu +; 2. Sets flag if at last menu +; 3. Prints menu in 2 columns +; +prmenu: + call print + db cr,lf,'** Terminal Menu ',0 + lda menunum ;print menu number + call pafdc ;print as floating + call print + db ' for Z3TCAP Version ',0 + lhld z3tcver ;get ptr to version + inx h ;pt to version number +prmenu0: + mov a,m ;get char + inx h ;pt to next + call cout ;print char + cpi ' ' ;done if space + jnz prmenu0 + call print + db ' **',cr,lf,cr,lf,0 + xra a + sta m1flag ;set not at 1st menu + sta mnflag ;set not at nth menu +; +; Determine if at 1st menu +; + call codend ;pt to terminal table + xchg ;... in DE + lhld curtable ;set 1st menu flag + call comphd ;compare + jnz prm1 + mvi a,0ffh ;set flag + sta m1flag +; +; Determine if at nth menu +; +prm1: + push h ;save ptr to current table + lxi d,16 ;size of table entry + mvi b,entcnt ;entcnt entries per screen +prm2: + mov a,m ;end? + cpi ' ' ;no entry? + jz prm3 + dad d ;advance + dcr b ;count down + jnz prm2 + jmp prm4 +prm3: + mvi a,0ffh ;at nth menu + sta mnflag ;set flag +; +; Determine menu bounds +; +prm4: + lxi h,0 ;clear ptr to col2 + shld col2 + pop h ;get ptr to current table + mvi b,entcnt/2 ;try to advance entcnt/2 entries +prm5: + mov a,m ;no next entry? + cpi ' ' + jz prm6 + dad d ;advance to next + dcr b ;count down + jnz prm5 + shld col2 ;save ptr to column 2 +; +; Print menu +; +prm6: + lhld col2 ;get ptr to column 2 + xchg ;... in DE + lhld curtable ;get ptr to column 1 + mvi b,entcnt/2 ;entcnt/2 lines max + mvi c,'A' ;current letter +prm7: + mov a,m ;get first char? + cpi ' ' ;done? + rz + mov a,c ;output letter + call prentry ;print entry + xchg ;HL pts to col 2 + mov a,h ;done? + ora l + jz prm8 + mov a,m ;empty? + cpi ' ' + jz prm8 + mov a,c ;get char + adi 10 ;add offset + call prentry +prm8: + inr c ;increment menu letter + xchg ;restore HL/DE + call crlf + dcr b ;count down + jnz prm7 + ret +; +; Print entry whose letter is in A and whose text is pted to by HL +; Advance HL +; +prentry: + call cout ;output char + call print + db '. ',0 +prent: + push b ;save regs + mvi b,16 ;16 chars +prent1: + mov a,m ;get char + inx h ;pt to next + call cout ;print char + dcr b + jnz prent1 + call print + db ' ',0 ;separator + pop b + ret +; +; Check to see if this is the first menu +; +chk1st: + lda m1flag ;get flag + ora a + ret +; +; Check to see if this is the last menu +; +chknth: + lda mnflag ;get flag + ora a + ret +; +; Buffers +; +z3tfcb: + db 0 + db 'Z3TCAP TCP' + ds 24 ;36 bytes total +; + if filenable +; +deftyp: + db 'Z3T' ;default file type +; + endif +; +nxtmsg: + db ', + for Next',0 +lstmsg: + db ', - for Last',0 +m1flag: + ds 1 ;1st menu flag +mnflag: + ds 1 ;nth menu flag +col2: + ds 2 ;pointer to column 2 entries +rec1: + ds 1 ;number of 1st data record +menunum: + ds 1 ;number of current menu +z3tcver: + ds 2 ;ptr to ZCPR3 TCAP Version Number +scratch: + ds 2 ;ptr to scratch area +curtable: + ds 2 ;current table ptr + + end + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/TCSRC14.COM b/Images/Source/hd0/s0/u15/TCSRC14.COM new file mode 100644 index 0000000000000000000000000000000000000000..246db63541037fc16fa223a10bbe2f094d01a36e GIT binary patch literal 4864 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 VEvW+WMgCyie)Qx;xWiBH`wv9ICjkHe literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/UNERASE.COM b/Images/Source/hd0/s0/u15/UNERASE.COM new file mode 100644 index 0000000000000000000000000000000000000000..748557a7be65477bdf240473420036861a74e146 GIT binary patch literal 1664 zcmb_cO>7fa5PrMs9ft%P8R)@L)jWGk1)JCnZiN&BcK+Nz2^a;ELI?q4Z-Q0JrfY{1 zH8Iets#KM>H%_S6-hx^oOGTi>CY5*9cQ8_l{Rktjo7gUjg4WQj{7W=k^hK7K}RkmS16K`C7x* zM!ZHH2^~P!qGWdIYg{LyMfNpcHHY3VI zqyQX9e7R^g%AG>PW{y;c8Y|0ePFSkdbr4=uKrBDuE1iPfmrh|H37-aYUH1u%SJvGW z8&-cmvJK-QwInQgDDjHrM|?Pi?Hd*3X*fE_`ao7-@F;s3*dVZ@*xy4Ac>+596BZz0 z4-7d0(%g58^LH2Vh~%Gs(HqS_36kM%YhS&3zx0{cQ-(CmvX z3IC;(0MYEL*?3G%oSYaLyzd@7VQ&o$z1M^>!e!S;#a33ATuwp2Mm z;y_pg=I-c2;-oZY_|u@dI}pMT$?zw@kfdVhJV=sc!4mTT^7DzrTa>19$Y?{Cef{x~ zlc?XAs^(NWIHRIu>0mnlE`3K$7ZieHgSkrOd57DJ!4Dh^O%N@7mYA>WHyqeio5qRR zY$0(a>}sWyZcbQYD%-XB1cO1EbG2>=F~8wAj7f*n`2uGCy9Rk0&t_)rFvk%-o|wri z6i11stP3SCCbH9tjgDJrCXqxGhl-}NIBSYZyXo$fGL@Lg6lgk6lQXKSWD9$UJO$ZRklQQn(T@&zSju}5Ld-KqYYaNdSh?sraW zc(xL6_&nUN|7eG#lt?%>3t}XQ(}rWSdex*4yiUxzAZp=pC{=C00h`W7#sEE(F3`yV zTFBA93pusWMff9QMH!^t~ec8QiW4YGWrX%ymr9cjPoV z4F)@bBG=TMRcPY-WxdCc_w=$Gu7^9{3_p*S@Nemtdi}e4<)_iI)Qwo@fzb2lLg>$E zNbEJ_j^0--=Sa8Ve;Ukq7xrq^ITUI6a_D+ILa|I@xn?=8E!DJU z#DyD?Ry1pxNgsNhCehJ2Ez@F|R?E21G@Fr0%kBGK+qt>C(uiZ9gIhhjoh!fAYfEcd WQ{L~KFX=tbSA%3tJLvo$^8W?Z`&lUf literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/UNERASE.MAC b/Images/Source/hd0/s0/u15/UNERASE.MAC new file mode 100644 index 00000000..3f9dd2c0 --- /dev/null +++ b/Images/Source/hd0/s0/u15/UNERASE.MAC @@ -0,0 +1,727 @@ +; PROGRAM: UNERASE for ZCPR3 +; AUTHOR: RICHARD CONN +; VERSION: 1.0 +; DATE: 18 May 84 +; DERIVATION: UNERA 2.2 (25 July 83) for ZCPR2 +; DERIVATION: UNERA BY GENE COTTON +; +VERS EQU 10 ;version number +z3env SET 0f400h + +; +; PROGRAM TO RECOVER ERASED FILES, BY GENE COTTON +; +; From Interface Age December 1981 pg 146 +; +; v2.0 - 07/23/83 Modified to be consistent in the ZCPR2 tool set. +; - Rick Conn +; v1.0 - 05/18/84 Modified to be consistent in the ZCPR3 tool set. +; - Rick Conn +; +; Contributors: +; v1.6 - Dave Rand +; v1.5 - Irv Hoff +; v1.4 - Paul Traina +; v1.3 - Irv Hoff +; v1.2 - Charlie Strom +; v1.1 - Bruce Blakeslee +; v1.0 - Retyped from Interface Age (Dec 81). - Henry Rothberg +; + +; +; SYSLIB AND Z3LIB ROUTINES +; + EXT Z3INIT,CODEND + EXT PRINT,COUT,CRLF + +; +; System equates: +; +BOOT EQU 0000H ;CP/M WARM BOOT JUMP VECTOR +BDOS EQU BOOT+05H ;CP/M BDOS CALL JUMP VECTOR +TBUFF EQU BOOT+80H ;DISK I/O BUFFER +FCB EQU BOOT+5CH ;DEFAULT FILE CONTROL BLOCK +FCB2 EQU BOOT+6CH ;SECONDARY FILE CONTROL AREA +CR EQU 'M'-'@' ;CTL-M FOR CARRIAGE RETURN +LF EQU 'J'-'@' ;CTL-J FOR LINE FEED +CTRLC EQU 'C'-'@' ;ABORT + +; +; Environment Definition +; + if z3env ne 0 +; +; External ZCPR3 Environment Descriptor +; + jmp start + db 'Z3ENV' ;This is a ZCPR3 Utility + db 1 ;External Environment Descriptor +z3eadr: + dw z3env +start: + lhld z3eadr ;pt to ZCPR3 environment +; + else +; +; Internal ZCPR3 Environment Descriptor +; + MACLIB Z3BASE.LIB + MACLIB SYSENV.LIB +z3eadr: + jmp start + SYSENV +start: + lxi h,z3eadr ;pt to ZCPR3 environment + endif + +; +; Start of Program -- Initialize ZCPR3 Environment +; + call z3init ;initialize the ZCPR3 Env and the VLIB Env + LXI H,0 ;SAVE STACK PTR + DAD SP + SHLD STACK + CALL CODEND ;DETERMINE FREE SPACE + SHLD FNTAB ;SET PTR TO FILE NAME TABLE + LXI D,512 ;1/2 K + DAD D + SPHL ;NEW STACK + CALL HELLO ;SIGN ON MESSAGE + CALL HELPCHK ;CHECK FOR AND PRINT HELP MESSAGE + CALL PCHECK ;CHECK PARAMETERS + LDA FNCOUNT ;NUMBER OF FILES SPECIFIED + ORA A ;0=NONE + CNZ TRYFIX ;DO THE RECOVERY + CALL BYE ;SIGN OFF MESSAGE + JMP BOOT ;RETURN TO CP/M +; +; ** Main Routines ** +; + +; +; SAY WHO WE ARE +; +HELLO: + CALL PRINT + DB 'UNERASE Version ' + DB (VERS/10)+'0','.',(VERS MOD 10)+'0',0 + RET +; +; CHECK FOR VALID PARAMETERS AND SAY WHICH CP?M VERSION +; +PCHECK: + CALL OPTCHK ;CHECK FOR OPTIONS AND SET FLAGS + CALL FCBCHK ;MAKE SURE FILE SPECIFIED + CALL CPMCHK ;ESTABLISH CP/M PARAMETERS + CALL PUSCHK ;CHECK IF USER WANTS TO CHANGE DISK + RET +; +; LOOK THROUGH DIRECTORY +; +TRYFIX: + CALL NXTSEC ;GET A DIRECTORY SECTOR + RZ ;RETURNS ZERO FLAG IF NO MORE + CALL CHKENT ;CHECK IT OUT AND MAYBE FIX + JMP TRYFIX ;KEEP IT UP TILL DONE +; +; SIGN OFF AND RESET SYSTEM +; +BYE: + MVI C,13 ;SYSTEM RESET + CALL BDOS + LDA LISTFL ;LIST ONLY? + ORA A ;0=NO + JNZ PRNF + LDA FIXCNT ;CHECK FOR ACTIVITY + ORA A + JZ PRNF ;SAY NONE FOUND + CALL PRINT + DB CR,LF,'File(s) Recovered - DOUBLE CHECK Before Using',0 + RET +PRNF: + CALL PRINT + DB CR,LF,'NO Files Recovered',0 + RET +; +; CHECKS FOR P AND 0 OPTIONS IN COMMAND LINE +; +OPTCHK: + XRA A ;TURN OFF FLAGS + STA CURUSR + STA PAUSE + STA FIXCNT + STA LISTFL + STA FNCOUNT ;NO FILE NAMES + LXI H,1 ;SET SECTOR 1 + SHLD SECTOR + LXI H,TBUFF ;SCAN THRU TBUFF, BUILDING A FILE NAME TABLE + MOV A,M ;GET CHAR COUNT + INX H ;PT TO FIRST CHAR + PUSH H ;SAVE PTR + ADD L ;PT TO AFTER LAST CHAR + MOV L,A + MVI M,0 ;STORE ENDING ZERO + LHLD FNTAB ;PT TO TABLE + XCHG ;... IN DE + POP H ;GET PTR TO FIRST CHAR + CALL SBLANK ;SKIP BLANKS +FNLOOP: + PUSH D ;SAVE TABLE PTR + CALL GETFN ;EXTRACT FILE NAME + POP D + PUSH H + LXI H,11 ;PT TO NEXT TABLE ENTRY + DAD D + XCHG + POP H + LDA FNCOUNT ;INCREMENT COUNT + INR A + STA FNCOUNT + MOV A,M ;GET TERMINATING CHAR + INX H ;PT TO NEXT + CPI ',' ;ANOTHER FOLLOWS? + JZ FNLOOP + DCX H ;POINT BACK TO DELIM + CALL SBLANK ;SKIP TO NON-BLANK +OPTCK1: + MOV A,M ;GET OPTION + CALL DELCHK ;DONE IF DELIM + RZ + CPI 'L' ;LIST ONLY? + JZ OPTCKL + CPI 'P' ;PAUSE? + JZ OPTCKP + CPI 'Z' ;USER 0? + JZ OPTCKZ + CALL PRINT + DB CR,LF,'Invalid Option -- ',0 + MOV A,M + CALL COUT + JMP HCK1 +OPTCKL: + MVI A,0FFH ;SET FLAG + STA LISTFL + INX H ;PT TO NEXT + JMP OPTCK1 +OPTCKP: + MVI A,0FFH ;SET FLAG + STA PAUSE + INX H ;PT TO NEXT + JMP OPTCK1 +OPTCKZ: + MVI A,0FFH ;SET FLAG + STA CURUSR + INX H + JMP OPTCK1 +GETFN: + PUSH D ;FILL TARGET FCB + MVI B,11 ;11 BYTES + MVI A,' ' ;SPACE FILL +GETFN0: + STAX D ;PUT SPACE + INX D + DCR B + JNZ GETFN0 + POP D ;PT TO ENTRY AGAIN + CALL SCANCOL ;SCAN FOR COLON + MVI B,8 ;8 CHARS MAX + CALL GETFN1 ;GET AND FILL ENTRY + MOV A,M ;GET CHAR + CPI '.' ;DELIM? + RNZ ;DONE + INX H ;PT TO AFTER PERIOD + MVI B,3 ;3 CHARS MAX AND DO IT AGAIN +GETFN1: + MOV A,M ;GET CHAR + CPI '.' ;END OF FIELD? + JZ GETFN3 + CALL DELCHK ;CHECK DELIMITER + RZ + CPI '*' ;WILD? + JZ GETFNQ + STAX D ;STORE CHAR + INX H ;PT TO NEXT + INX D + DCR B ;COUNT DOWN + JNZ GETFN1 +GETFN2: + MOV A,M ;FLUSH CHARS TO DELIM + CALL DELCHK ;CHECK FOR DELIMITER + RZ + INX H ;PT TO NEXT + JMP GETFN2 +GETFN3: + INX D ;PT TO AFTER FIELD + DCR B ;COUNT DOWN + JNZ GETFN3 + RET +GETFNQ: + MVI A,'?' ;FILL WITH QUESTION MARKS + STAX D + INX D + DCR B + JNZ GETFNQ + JMP GETFN2 ;SKIP TO DELIM +DELCHK: + ORA A ;END OF LINE? + RZ + CPI '.' ;END OF FIELD? + RZ + CPI ',' ;END OF ENTRY? + RZ + CPI ' ' + RET +SBLANK: + MOV A,M ;SKIP TO NON-BLANK + CPI ' ' + RNZ + INX H + JMP SBLANK +SCANCOL: + PUSH D ;SAVE TABLE PTR + PUSH H ;SAVE PTR +SCOL1: + MOV A,M ;GET CHAR + INX H ;PT TO NEXT + CPI ':' ;COLON? + JZ SCOLX + CALL DELCHK ;CHECK FOR DELIMITER + JNZ SCOL1 +SCOL2: + POP H ;RESTORE + POP D + RET +SCOLX: + XCHG ;DE PTS TO AFTER COLON + POP H ;GET OLD PTR + XCHG ;REPLACE IT + POP D ;GET TABLE PTR + RET +; +; CHECKS THE CURRENT 4 DIRECTORY ENTRIES AGAINST ARGUMENT +; IF MATCH, REWRITES SECTOR WITH REACTIVATED 1ST BYTES +; +CHKENT: + XRA A ;ASSUME NO REWRITE + STA REWRT + MVI B,4 ;NUMBER OF ENTRIES PER SECTOR + LXI H,TBUFF ;BEGINNING OF BUFFER +CKLUP: + PUSH B + MOV A,M + CPI 0E5H ;CHECK FOR UNUSED + JNZ CKINC + PUSH H + LHLD FNTAB ;PT TO POTENTIAL FILES + XCHG + POP H + LDA FNCOUNT ;NUMBER OF ENTRIES TO COUNT + MOV B,A ;... IN B +CKLUP0: + PUSH H ;SAVE BEGINNING ADDRESS + PUSH D ;SAVE PTR + PUSH B ;SET NAME COUNT + CALL COMPAR ;COMPARE WITH ARGUMENT + POP B ;GET NAME COUNT + POP D ;GET PTR + POP H + JZ CKLUP1 ;MATCH! + PUSH H ;SAVE PTR + LXI H,11 ;PT TO NEXT ENTRY + DAD D + XCHG + POP H + DCR B ;COUNT DOWN + JNZ CKLUP0 + JMP CKINC +CKLUP1: + LDA LISTFL ;LIST ONLY? + ORA A ;0=NO + JNZ CKINC + MVI M,0 ;SET USER 0 + LDA CURUSR ;CHECK FOR CURRENT USER + CPI 0FFH + JZ CKLUP2 + PUSH H ;SAVE HL + MVI E,0FFH ;GET USER VALUE + MVI C,32 ;GET USER AREA FUNCTION + CALL BDOS ;BDOS RETURNS CURRENT AREA IN 'A' REG. + POP H ;RESTORE HL + MOV M,A ;POKE IN CURRENT USER AREA +CKLUP2: + MVI A,0FH ;SAY NEED REWRITE + STA REWRT + MVI A,0FFH ;SET COUNT FLAG + STA FIXCNT +CKINC: + POP B + LXI D,32 ;LENGTH OF ENTRY + DAD D + DCR B + JNZ CKLUP + LDA REWRT ;SEE IF NEED REWRITE + ORA A + JZ CKDONE ;NO - DONE +; +; WRITE THE DIRECTORY SECTOR BACK TO THE DISK +; + LHLD TRACK ;SET TRACK + MOV C,L + MOV B,H + CALL SETTRK + LHLD SECTOR ;SET SECTOR + MOV B,H + MOV C,L + CALL TRNSLT + CALL SETSEC + CALL WRITE ;WRITE THE SECTOR BACK + ORA A + JNZ ERRWRT ;ABORT IF ERROR +CKDONE: + LHLD DIRMAX + DCX H ;REDUCE SECTORS LEFT + SHLD DIRMAX + LHLD SECTOR ;POINT TO NEXT SECTOR + INX H + SHLD SECTOR + XCHG + LHLD MAXSEC ;REACHED LIMIT? + INX H ;ONE MORE + MOV A,H ;CHECK HIGH + CMP D + RNZ + MOV A,L ;CHECK LOW + CMP E + RNZ + LHLD TRACK ;NEXT TRACK + INX H + SHLD TRACK + LXI H,1 ;FIRST SECTOR OF NEXT TRACK + SHLD SECTOR + RET +; +; COMPARE 11 BYTES OF DIRECTORY ENTRY AGAINST ARGUMENT +; +COMPAR: + SHLD TEMP ;Hold pointer in case of match + INX H + XCHG + MVI C,11 +CMPR1: + LDAX D ;GET DIRECTORY ENTRY CHARACTER + ANI 7FH ;STRIP ANY FLAGS + CMP M + JNZ CMPCKAM +CMPR2: + INX D + INX H ;BUMP TO NEXT CHARACTER + DCR C + JNZ CMPR1 ;LOOP FOR 11 CHARACTERS + LDA FIXCNT ;CHECK FLAG + ORA A ;0=FIRST TIME + CZ PRFIX + LHLD TEMP + CALL PRINTFCB + XRA A + RET ;RETURNS 'ZERO' FLAG SET FOR MATCH +PRFIX: + LDA LISTFL ;LIST ONLY? + ORA A ;0=NO + JNZ PRFIX1 + CALL PRINT + DB CR,LF,'File(s) Recovered --',0 + RET +PRFIX1: + MVI A,0FFH ;DON'T PRINT THIS AGAIN + STA FIXCNT + CALL PRINT + DB CR,LF,'Erased File(s) --',0 + RET +CMPCKAM: + LDAX D + CPI 0E5H ;NON-ALLOCATED ENTRY? + JZ SKIP + MOV A,M + CPI '?' + RNZ + JMP CMPR2 +SKIP: + ORA A + RET ;SET NZ FLAG +; +; CHECK FOR CP/M VERSION AND SET THINGS +; +CPMCHK: + LXI D,80H ;SET DMA TO TBUFF + MVI C,26 + CALL BDOS + CALL CPM22 ;IF 2.2 GO SET THINGS + CALL GTBIOS ;ESTABLISH BIOS JUMP VECTOR +; +; SELECT DISK AND SETUP DISK PARAMETER HEADER +; + LDA FCB ;GET THE DISK + MOV E,A + MVI C,14 + CALL BDOS + LDA FCB + MOV C,A + MVI B,0 + CALL SELDSK ;MAKE SURE DRIVE IS + MOV A,H ; SELECTED + ORA L + JZ ILDISK + MOV E,M ;GET THE ADDRESS + INX H ; OF THE XLTO + MOV D,M + XCHG + SHLD DPH ;SAVE THE ADDRESS + RET +; +; DETERMINE NUMBER OF DIRECTORY ENTRIES +; +CPM22: + MVI C,31 ;GET DISK PARAMETERS ADDRESS + CALL BDOS ;DPB ADDRESS IN 'HL' ON RETURN + MOV E,M ;NUMBER OF SECTORS/TRACK + INX H ;AS 2-BYTE QUANTITY IN DE + MOV D,M + INX H + XCHG + SHLD MAXSEC ;SET MAX SECTORS/TRACK + XCHG + INX H + INX H + MOV A,M ;GET EXM + STA EXTENT + INX H ;PT TO DRM + INX H + INX H + MOV E,M ;GET NUMBER OF + INX H ; DIRECTORY ENTRIES + MOV D,M + XCHG + INX H ;ACCOUNT FOR - 1 + CALL SHFHL2 ;SHIFT 'HL' RIGHT 2 + SHLD DIRMAX ;SAVE NUMBER DIRECTORY SECTORS + LXI H,5 ;NOW POINT TO SYSTEM + DAD D ; TRACK OFFSET + MOV A,M ;PICK UP NUMBER OF + INX H + MOV H,M + MOV L,A + SHLD TRACK + RET +; +; ERROR OCCURED DURING DISK WRITE - ABORT +; +ERRWRT: + CALL PRINT + DB CR,LF,'ABORT - Error During Disk Write',0 + JMP BOOT ;ABORT +; +; MAKE SURE A LEGAL DISK IS SPECIFIED AND CHECK FOR HELP +; +FCBCHK: + LDA FCB ;GET DRIVE SPECIFICATION + ORA A ;SEE IF DEFAULT + JNZ FCBCK1 ;NO, GO CHECK FILENAME + MVI C,25 ;ASK FOR CURRENT DRIVE + CALL BDOS + INR A ;OFFSET FOR NEXT INSTRUCTION +FCBCK1: + DCR A ;CURRENT DRIVE NUMBER + STA FCB ;SAVE IT + RET +; +; CHECK FOR HELP REQUEST +; +HELPCHK: + LDA FCB+1 ;GET 1ST BYTE OF FILENAME + CPI '/' ;HELP? + JZ HCK1 + CPI ' ' ;MAKE SURE IT IS NON-BLANK + RNZ ;OK - KEEP GOING +; +; IF NO FILE NAME IS SPECIFIED, ABORT WITH NOTICE +; +HCK1: + CALL PRINT + db cr,lf,'Syntax:' + DB CR,LF,' UNERASE afn,afn,afn,... o' + db cr,lf,'Options:' + DB CR,LF,' L - List Erased Files Only' + DB CR,LF,' P - Pause for disk change' + DB CR,LF,' Z - Place file in User 0 ' + DB '(default is current)' + DB 0 +CLEANRET: + LHLD STACK ;QUIET RETURN + SPHL + RET +; +; GET BIOS JUMPS VECTORS FOR EASY REFERENCE +; +GTBIOS: + LHLD BOOT+1 ;POINTS TO BIOS JUMP TABLE+3 + LXI D,WBOOT ;WHERE WE WILL KEEP A COPY + MVI B,16*3 ;MOVE 48 BYTES AND FALL THRU TO MOVE +; +; GENERAL PURPOSE MOVE ROUTINE +; FROM 'HL' TO 'DE' FOR COUNT OF 8 +; +MOVE: + MOV A,M ;GET A BYTE + STAX D ;PUT A BYTE + INX D ;INCREMENT TO NEXT + INX H + DCR B ;COUNT DOWN + JNZ MOVE + RET +; +;SPECIFIED AN ILLEGAL DISK DRIVE - ABORT +; +ILDISK: + CALL PRINT + DB CR,LF,'ABORT - Illegal Disk Requested',0 + JMP BOOT ;ABORT +; +; READS NEXT SECTOR (GROUP OF FOUR DIRECTORY ENTRIES) +; RETURNS WITH ZERO FLAG SET IF NO MORE +; +NXTSEC: + LHLD DIRMAX ;SEE IF MORE SECTORS + MOV A,H + ORA L + RZ ;RETURNS ZERO FLAG IF NO MORE + LHLD TRACK ;SET TRACK + MOV C,L + MOV B,H + CALL SETTRK + LHLD SECTOR ;SET SECTOR + MOV B,H + MOV C,L + CALL TRNSLT + CALL SETSEC + CALL READ ;READ A SECTOR + ANI 1 ;REVERSE SENSE OF ERROR FLAG + XRI 1 ;RETURNS WITH ZERO FLAG SET + RET ;IF BAD READ +; +; FCB PRINTING ROUTINE +; +PRINTFCB: + PUSH H + LXI D,1+8+3 + DAD D + LDA EXTENT ;GET EXTENT MASK + CMP M ;COMPARE TO TARGET + POP H + RC ;PRINT ONLY FIRST EXTENT + CALL PRINT ;NEW LINE WITH 2 LEADING SPACES + DB CR,LF,' ',0 + INX H + MVI B,8 + CALL PR1 + MVI A,'.' + CALL COUT + MVI B,3 +PR1: + MOV A,M + ANI 7FH + CPI ' ' ;Check for blanks + CNZ COUT + INX H + DCR B + JNZ PR1 + RET +; +; DOES USER WANT TO PAUSE TO CHANGE DISKS OR SELECT USER 0? +; +PUSCHK: + LDA PAUSE ;GET OPTION + ORA A + RZ ;NOPE, SO RETURN + CALL PRINT ;PRINT PAUSE MESSAGE + DB CR,LF,'Change Disk - Hit ^C to Abort, Anything Else to Cont - ' + DB 0 + MVI C,01 + CALL BDOS ;INPUT A CHAR + CPI CTRLC ;ABORT? + JZ CLEANRET + CALL CRLF + MVI C,0DH + JMP BDOS ;RESET THE DISK +; +; SHIFT REGS 'HL' RIGHT 2 BITS LOGICAL +; +SHFHL2: + CALL SHFHL ;ROTATE RIGHT 1 BIT AND FALL THRU +SHFHL: + XRA A ;CLEAR CARRY + MOV A,H + RAR ;SHIFTED BIT IN CARRY + MOV H,A + MOV A,L + RAR + MOV L,A + RET +; +; TRANSLATE REG 'BC' FROM LOGICAL TO PHYSICAL SECTOR NUMBER +; +TRNSLT: + LHLD DPH ;GET ADDRESS OF XLTO + XCHG + CALL SECTRAN ;USE BIOS ROUTINE + MOV C,L ;RETURN VALUE IN BC + MOV B,H + RET +; +; THIS IS THE WORKING COPY OF THE BIOS JUMP TABLE +; +WBOOT: DS 3 +CONST: DS 3 +CONIN: DS 3 +CONOUT: DS 3 +LIST: DS 3 +PUNCH: DS 3 +READER: DS 3 +HOME: DS 3 +SELDSK: DS 3 +SETTRK: DS 3 +SETSEC: DS 3 +SETDMA: DS 3 +READ: DS 3 +WRITE: DS 3 +LISTST: DS 3 +SECTRAN: DS 3 +; +STACK: + DS 2 ;LOCATION OF STACK +; +; DATA AREAS +; +FNCOUNT: + DS 1 ;NUMBER OF FILE NAMES IN COMMAND LINE +CURUSR: DS 1 ;0 IF NOT IN CURRENT USER +PAUSE: DS 1 ;0 IF NO PAUSE FOR DISK CHANGE +LISTFL: DS 1 ;0 IF NOT LIST ONLY +DIRMAX: DS 2 ;NUMBER OF SECTORS IN DIRECTORY = +; ; MAXIMUM NUMBER OF DIRECTORY ENTRIES +; ; DIVIDED BY 4 (ENTRIES PER SECTOR) +TEMP: DS 2 ;TEMP STORAGE FOR FCB PRINT +EXTENT: DS 1 ;EXTENT MASK +MAXSEC: DS 2 ;MAXIMUM NUMBER OF SECTORS/TRACK +FIXCNT: DS 1 ;CHANGE FLAG +REWRT: DS 1 ;REWRITE FLAG 0=NO, F=YES +SECTOR: DS 2 ;CURRENT SECTOR NUMBER +TRACK: DS 2 ;TRACK NUMBER OF DIRECTORY +; +; ADDRESS OF THE TRANSLATE TABLE +; +DPH: DS 16 + +FNTAB: DS 2 ;FILE NAME BUFFER + + END + \ No newline at end of file diff --git a/Images/Source/hd0/s0/u15/VF-BOX11.LBR b/Images/Source/hd0/s0/u15/VF-BOX11.LBR new file mode 100644 index 0000000000000000000000000000000000000000..55c5cfe658562787563b3596cffaa0347953ec3e GIT binary patch literal 33536 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 iDSCGwIcT6|Yzx;DEnZ|NjA4;!^4W literal 0 HcmV?d00001 diff --git a/Images/Source/hd0/s0/u15/VF41.IQF b/Images/Source/hd0/s0/u15/VF41.IQF new file mode 100644 index 0000000000000000000000000000000000000000..1940f8b610c0ea4b22470036a8cb9070bceaef13 GIT binary patch literal 11008 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